blob: b2530561d8e09459d42f5121a058dc7d6e8f88f9 [file] [log] [blame]
2019-10-18 Jer Noble <jer.noble@apple.com>
Add experimental HDR MediaCapabilities support.
https://bugs.webkit.org/show_bug.cgi?id=203113
Reviewed by Eric Carlson.
Tests: media/mediacapabilities/mock-decodingInfo-hdr.html
platform/mac/media/mediacapabilities/hevc-decodingInfo-hdr.html
Add support for MediaCapabilities.decodeInfo() HDR support detection.
Add new enum IDL types to MediaCapabilities and remove old unused ones. Add
mock implementation for HDR detection. Add Cocoa platform implementation.
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Modules/mediacapabilities/ColorGamut.idl:
* Modules/mediacapabilities/HdrMetadataType.idl:
* Modules/mediacapabilities/ScreenLuminance.h:
* Modules/mediacapabilities/TransferFunction.idl:
* Modules/mediacapabilities/VideoConfiguration.idl:
* Scripts/GenerateSettings.rb:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/scripts/CodeGenerator.pm:
(WK_ucfirst):
* bindings/scripts/CodeGeneratorJS.pm:
(ToMethodName):
* page/Settings.yaml:
* platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp:
(WebCore::createMediaPlayerDecodingConfigurationCocoa):
* platform/mediacapabilities/ColorGamut.h:
* platform/mediacapabilities/HdrMetadataType.h:
* platform/mediacapabilities/TransferFunction.h:
* platform/mediacapabilities/VideoConfiguration.h:
* platform/mock/MediaEngineConfigurationFactoryMock.cpp:
(WebCore::canDecodeMedia):
(WebCore::canEncodeMedia):
2019-10-18 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthn] Implement AuthenticatorCancel
https://bugs.webkit.org/show_bug.cgi?id=191523
<rdar://problem/55920204>
Reviewed by Brent Fulgham.
Covered by new tests in existing test files.
* Modules/credentialmanagement/CredentialsContainer.cpp:
(WebCore::CredentialsContainer::get):
(WebCore::CredentialsContainer::isCreate):
* Modules/webauthn/AuthenticatorCoordinator.cpp:
(WebCore::AuthenticatorCoordinator::create const):
(WebCore::AuthenticatorCoordinator::discoverFromExternalSource const):
* Modules/webauthn/AuthenticatorCoordinator.h:
* Modules/webauthn/AuthenticatorCoordinatorClient.cpp: Removed.
* Modules/webauthn/AuthenticatorCoordinatorClient.h:
* Modules/webauthn/PublicKeyCredential.cpp:
(WebCore::PublicKeyCredential::tryCreate):
* Modules/webauthn/PublicKeyCredential.h:
* Modules/webauthn/PublicKeyCredentialData.h:
* Modules/webauthn/fido/DeviceRequestConverter.h:
* Modules/webauthn/fido/FidoHidMessage.cpp:
(fido::FidoHidMessage::FidoHidMessage):
* Modules/webauthn/fido/FidoHidPacket.cpp:
(fido::FidoHidInitPacket::getSerializedData const):
(fido::FidoHidContinuationPacket::getSerializedData const):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* testing/MockWebAuthenticationConfiguration.h:
(WebCore::MockWebAuthenticationConfiguration::HidConfiguration::encode const):
(WebCore::MockWebAuthenticationConfiguration::HidConfiguration::decode):
* testing/MockWebAuthenticationConfiguration.idl:
Adds a new option to test AuthenticatorCancel.
2019-10-18 Simon Fraser <simon.fraser@apple.com>
Add TextStream dumping for BasicShape types
https://bugs.webkit.org/show_bug.cgi?id=203150
Reviewed by Zalan Bujtas.
Add dumping for the classes, and make the BasicShape enum an enum class.
* css/BasicShapeFunctions.cpp:
(WebCore::valueForBasicShape):
* rendering/shapes/Shape.cpp:
(WebCore::Shape::createShape):
* rendering/style/BasicShapes.cpp:
(WebCore::BasicShapeCircle::dump const):
(WebCore::BasicShapeEllipse::dump const):
(WebCore::BasicShapePolygon::dump const):
(WebCore::BasicShapePath::dump const):
(WebCore::BasicShapeInset::dump const):
(WebCore::operator<<):
* rendering/style/BasicShapes.h:
(WebCore::BasicShapeCenterCoordinate::BasicShapeCenterCoordinate):
2019-10-18 Antti Koivisto <antti@apple.com>
ElementRuleCollector function signature cleanups
https://bugs.webkit.org/show_bug.cgi?id=203153
<rdar://problem/56412684>
Unreviewed followup.
* css/ElementRuleCollector.cpp:
(WebCore::ElementRuleCollector::transferMatchedRules):
Try to appease MSVC.
2019-10-18 Said Abou-Hallawa <sabouhallawa@apple.com>
Load event must be fired only for the SVG structurally external elements and the outermost SVG element
https://bugs.webkit.org/show_bug.cgi?id=203044
Reviewed by Simon Fraser.
The SVG1.1 spec for SVGLoad event is:
https://www.w3.org/TR/SVG11/interact.html
The SVG2 spec for the load event is:
https://www.w3.org/TR/SVG/changes.html#interact
https://www.w3.org/TR/SVG/interact.html
SVG2 removes the SVGExternalResourcesRequired interface. It also simplifies
the rules for firing the load event and made them consistent with the HTML
specs. The plan is to remove SVGExternalResourcesRequired in a following
patch. This patch makes SVGExternalResourcesRequired have no effect on the
load event firing rules. It moves all the functionalities to SVGURIReference
as a step towards removing the SVGExternalResourcesRequired interface.
Test: svg/custom/image-load-event.html
* dom/Document.cpp:
(WebCore::Document::implicitClose):
Do not use the SVGLoad term. It has been removed from the specs.
* dom/ScriptElement.cpp:
(WebCore::ScriptElement::ScriptElement):
* dom/ScriptElement.h:
(WebCore::ScriptElement::errorOccurred const):
(WebCore::ScriptElement::setErrorOccurred):
Add a method to track the occurrence of loading error. errorOccurred()
|| haveFiredLoadEvent() means no pending loading activity.
* svg/SVGDocumentExtensions.cpp:
(WebCore::SVGDocumentExtensions::dispatchLoadEventToOutermostSVGElements):
(WebCore::SVGDocumentExtensions::dispatchSVGLoadEventToOutermostSVGElements): Deleted.
* svg/SVGDocumentExtensions.h:
Do not use the SVGLoad term.
* svg/SVGElement.cpp:
(WebCore::SVGElement::sendLoadEventIfPossible):
(WebCore::SVGElement::loadEventTimerFired):
(WebCore::SVGElement::loadEventTimer):
(WebCore::SVGElement::finishParsingChildren):
(WebCore::SVGElement::sendSVGLoadEventIfPossible): Deleted.
(WebCore::SVGElement::sendSVGLoadEventIfPossibleAsynchronously): Deleted.
(WebCore::SVGElement::svgLoadEventTimerFired): Deleted.
(WebCore::SVGElement::svgLoadEventTimer): Deleted.
* svg/SVGElement.h:
finishParsingChildren() won't fire 'load' event anymore. The 'load' event
will be fired explicitly for the outermost SVG element from Document::implicitClose().
* svg/SVGExternalResourcesRequired.cpp:
(WebCore::SVGExternalResourcesRequired::svgAttributeChanged):
(WebCore::SVGExternalResourcesRequired::dispatchLoadEvent): Deleted.
(WebCore::SVGExternalResourcesRequired::insertedIntoDocument): Deleted.
(WebCore::SVGExternalResourcesRequired::finishParsingChildren): Deleted.
(WebCore::SVGExternalResourcesRequired::haveLoadedRequiredResources const): Deleted.
* svg/SVGExternalResourcesRequired.h:
(WebCore::SVGExternalResourcesRequired::setHaveFiredLoadEvent): Deleted.
(WebCore::SVGExternalResourcesRequired::isParserInserted const): Deleted.
(WebCore::SVGExternalResourcesRequired::haveFiredLoadEvent const): Deleted.
* svg/SVGImageElement.cpp:
(WebCore::SVGImageElement::haveLoadedRequiredResources):
* svg/SVGImageLoader.cpp:
(WebCore::SVGImageLoader::dispatchLoadEvent):
The value of externalResourcesRequired() no longer controls firing the
'load' event.
* svg/SVGScriptElement.cpp:
(WebCore::SVGScriptElement::SVGScriptElement):
(WebCore::SVGScriptElement::insertedIntoAncestor):
(WebCore::SVGScriptElement::dispatchErrorEvent):
(WebCore::SVGScriptElement::finishParsingChildren): Deleted.
* svg/SVGScriptElement.h:
dispatchErrorEvent() is now a virtual function. Let SVGScriptElement
overrides it so it can track when the loader finishes its activity.
* svg/SVGStyleElement.cpp:
(WebCore::SVGStyleElement::SVGStyleElement):
* svg/SVGStyleElement.h:
* svg/SVGURIReference.cpp:
(WebCore::SVGURIReference::contextElement const):
(WebCore::SVGURIReference::parseAttribute):
(WebCore::SVGURIReference::haveLoadedRequiredResources const):
(WebCore::SVGURIReference::dispatchLoadEvent):
* svg/SVGURIReference.h:
(WebCore::SVGURIReference::haveFiredLoadEvent const):
(WebCore::SVGURIReference::setHaveFiredLoadEvent):
(WebCore::SVGURIReference::errorOccurred const):
(WebCore::SVGURIReference::setErrorOccurred):
SVGURIReference will decide whether the 'load' event can be fired or not.
* svg/SVGUseElement.cpp:
(WebCore::SVGUseElement::SVGUseElement):
(WebCore::SVGUseElement::insertedIntoAncestor):
(WebCore::SVGUseElement::notifyFinished):
(WebCore::SVGUseElement::finishParsingChildren): Deleted.
(WebCore::SVGUseElement::isValid const): Deleted.
(WebCore::SVGUseElement::haveLoadedRequiredResources): Deleted.
(WebCore::SVGUseElement::setHaveFiredLoadEvent): Deleted.
(WebCore::SVGUseElement::haveFiredLoadEvent const): Deleted.
(WebCore::SVGUseElement::svgLoadEventTimer): Deleted.
* svg/SVGUseElement.h:
SVGUseElement needs to track firing the load event or error occurrence
the same way SVGImageElement and SVGScriptElement do.
2019-10-18 Antti Koivisto <antti@apple.com>
ElementRuleCollector function signature cleanups
https://bugs.webkit.org/show_bug.cgi?id=203153
Reviewed by Zalan Bujtas.
Many functions in ElementRuleCollector take repetitive arguments that can be removed:
- Make includeEmptyRules argument a class member
- Remove RuleRange argument, update the ranges in rule transfer step.
* css/ElementRuleCollector.cpp:
(WebCore::MatchRequest::MatchRequest):
(WebCore::ElementRuleCollector::addMatchedRule):
(WebCore::ElementRuleCollector::collectMatchingRules):
(WebCore::ElementRuleCollector::sortAndTransferMatchedRules):
(WebCore::ElementRuleCollector::transferMatchedRules):
(WebCore::ElementRuleCollector::matchAuthorRules):
(WebCore::ElementRuleCollector::matchesAnyAuthorRules):
(WebCore::ElementRuleCollector::collectMatchingAuthorRules):
(WebCore::ElementRuleCollector::matchAuthorShadowPseudoElementRules):
(WebCore::ElementRuleCollector::matchHostPseudoClassRules):
(WebCore::ElementRuleCollector::matchSlottedPseudoElementRules):
(WebCore::ElementRuleCollector::matchPartPseudoElementRules):
(WebCore::ElementRuleCollector::matchPartPseudoElementRulesForScope):
(WebCore::ElementRuleCollector::collectMatchingShadowPseudoElementRules):
(WebCore::ElementRuleCollector::collectSlottedPseudoElementRulesForSlot):
(WebCore::ElementRuleCollector::matchUserRules):
(WebCore::ElementRuleCollector::matchUARules):
(WebCore::ElementRuleCollector::collectMatchingRulesForList):
(WebCore::ElementRuleCollector::matchAllRules):
(WebCore::ElementRuleCollector::hasAnyMatchingRules):
* css/ElementRuleCollector.h:
(WebCore::ElementRuleCollector::setIncludeEmptyRules):
(WebCore::ElementRuleCollector::transferMatchedRules):
Range update happens now here based on the supplied argument.
* css/StyleResolver.cpp:
(WebCore::StyleResolver::pseudoStyleForElement):
(WebCore::StyleResolver::pseudoStyleRulesForElement):
x
2019-10-18 Antti Koivisto <antti@apple.com>
[CSS Shadow Parts] :part rules should be able to override style attribute
https://bugs.webkit.org/show_bug.cgi?id=202919
Reviewed by Zalan Bujtas.
Element inline style was simply appended to the matching declaration list and not sorted with the rest of the author style.
This used to work because before CSS Shadow Parts feature inline style would always win.
Fixing this involves refactoring the rule collection code to remove this assumption.
* css/ElementRuleCollector.cpp:
(WebCore::ElementRuleCollector::addMatchedRule):
Both initialize and update ranges here.
(WebCore::ElementRuleCollector::clearMatchedRules):
(WebCore::ElementRuleCollector::addElementStyleProperties):
Both initialize and update ranges here.
(WebCore::ElementRuleCollector::sortAndTransferMatchedRules):
Split out transfering to a separate function.
(WebCore::ElementRuleCollector::transferMatchedRules):
Add a parameter to limit transfer to rules from a scope.
(WebCore::ElementRuleCollector::matchAuthorRules):
(WebCore::ElementRuleCollector::matchesAnyAuthorRules):
Replace hasMatchedRules() with a more specific function. This can use collectMatchingAuthorRules and avoids unnecessary sorting step.
(WebCore::ElementRuleCollector::collectMatchingAuthorRules):
Split out collecting the rules from matchAuthorRules. Like other collect functions, this doesn't do any sorting.
(WebCore::ElementRuleCollector::matchAllRules):
Add element inline style before transfering rules from the containing host scope.
(WebCore::ElementRuleCollector::addElementInlineStyleProperties):
Factor adding inline style into a function.
] * css/ElementRuleCollector.h:
(WebCore::ElementRuleCollector::hasMatchedRules const): Deleted.
* css/StyleProperties.h:
(WebCore::StylePropertiesBase::deref const):
(WebCore::StylePropertiesBase::deref): Deleted.
Make const to allow RefPtr<const StyleProperties>
* css/StyleResolver.cpp:
(WebCore::StyleResolver::CascadedProperties::addImportantMatches):
Sort !important properties taking into account that the host scope has lower priority.
* style/StyleInvalidator.cpp:
(WebCore::Style::Invalidator::invalidateIfNeeded):
2019-10-18 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Include horizontal spacing when checking for the extra horizontal space
https://bugs.webkit.org/show_bug.cgi?id=203154
<rdar://problem/56408032>
Reviewed by Antti Koivisto.
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace):
2019-10-18 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Fix table's total horizontal spacing computation
https://bugs.webkit.org/show_bug.cgi?id=203151
<rdar://problem/56406930>
Reviewed by Antti Koivisto.
The horizontal spacing value sets the gaps between
1. first column and the left edge of the table's content box
2. between 2 columns
3. last column and the right edge of the table's content box
In case of 'n' columns, the number of gaps is 'n + 1'.
* layout/tableformatting/TableGrid.h:
(WebCore::Layout::TableGrid::totalHorizontalSpacing const):
2019-10-18 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Cache table's width constraint values.
https://bugs.webkit.org/show_bug.cgi?id=203135
<rdar://problem/56396352>
Reviewed by Antti Koivisto.
This patch ensures that when computedIntrinsicWidthConstraints is called from both the preferred width and the actual layout codepaths during a layout frame, we don't
end up building up the grid twice.
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns):
(WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace):
* layout/tableformatting/TableGrid.cpp:
(WebCore::Layout::TableGrid::widthConstraints):
(WebCore::Layout::TableGrid::widthConstraints const): Deleted.
* layout/tableformatting/TableGrid.h:
(WebCore::Layout::TableGrid::hasComputedWidthConstraints const):
2019-10-18 Zalan Bujtas <zalan@apple.com>
[LFC][BFC] TableFormattingContext::computedIntrinsicWidthConstraints should not expect a valid containing block's width
https://bugs.webkit.org/show_bug.cgi?id=203131
<rdar://problem/56394676>
Reviewed by Antti Koivisto.
When TableFormattingContext::computedIntrinsicWidthConstraints is called by the preferred width computation (<div style="float: left"><table>)
the containing block's width is not yet set (it gets computed based on the preferred width) so computedIntrinsicWidthConstraints should not be relying
on it. Let's move that logic out to TableFormattingContext::layoutInFlowContent() where it belongs.
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::layoutInFlowContent):
(WebCore::Layout::TableFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::TableFormattingContext::ensureTableGrid):
(WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace):
(WebCore::Layout::TableFormattingContext::computedTableWidth): Deleted.
(WebCore::Layout::TableFormattingContext::distributeExtraHorizontalSpace): Deleted.
* layout/tableformatting/TableFormattingContext.h:
2019-10-18 Zalan Bujtas <zalan@apple.com>
[LFC][BFC] Fix block level formatting root inflow box height computation
https://bugs.webkit.org/show_bug.cgi?id=203085
<rdar://problem/56372306>
Reviewed by Antti Koivisto.
Section 10.6.7 (https://www.w3.org/TR/CSS22/visudet.html#root-height) defines the height computation for block level formatting context roots.
We already use it for floats, out-of-flow and block level boxes when overflow computes to not "visible".
This patch makes generic in-flow non-replaced BFC roots (e.g. principal block container box for <table>) compute their heights according to 10.6.7.
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
2019-10-17 Wenson Hsieh <wenson_hsieh@apple.com>
[Clipboard API] Support navigator.clipboard.read()
https://bugs.webkit.org/show_bug.cgi?id=203021
Reviewed by Ryosuke Niwa.
Add support for navigator.clipboard.read(), which returns a promise that resolves to a list of ClipboardItems.
See below for more details.
Tests: editing/async-clipboard/clipboard-change-data-while-reading.html
editing/async-clipboard/clipboard-read-basic.html
* Modules/async-clipboard/Clipboard.cpp:
(WebCore::Clipboard::read):
Implement read(). This makes two calls to the platform pasteboard: the first to get the current change count,
and if the change count is different from the changeCount used for the last read() call (or there are no
existing clipboard items being tracked), then we request pasteboard item information for all items on the
pasteboard, and use this information to create new clipboard items. Otherwise, if the changeCount is still valid
for the current list of clipboard items, simply return these clipboard items.
If the changeCount ends up being different in between the initial changeCount request and when the pasteboard
item information is received, we immediately bail with a NotAllowedError. The new layout test
clipboard-change-data-while-reading.html exercises this scenario.
(WebCore::Clipboard::getType):
(WebCore::Clipboard::frame const):
* Modules/async-clipboard/Clipboard.h:
* Modules/async-clipboard/ClipboardItem.cpp:
(WebCore::ClipboardItem::blobFromString):
(WebCore::ClipboardItem::ClipboardItem):
(WebCore::ClipboardItem::create):
(WebCore::ClipboardItem::navigator):
Refactor this so that each clipboard item itself has a WeakPtr to its Navigator. This avoids having to follow
the weak pointer to the Clipboard to get to the Clipboard's navigator during garbage collection when computing
reachability from opaque roots, since this may happen on a background (GC) thread.
(WebCore::ClipboardItem::clipboard):
* Modules/async-clipboard/ClipboardItem.h:
* Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:
(WebCore::ClipboardItemBindingsDataSource::getType):
(WebCore::blobFromString): Deleted.
Move this to ClipboardItem, and make it a static method.
* Modules/async-clipboard/ClipboardItemPasteboardDataSource.cpp:
(WebCore::ClipboardItemPasteboardDataSource::ClipboardItemPasteboardDataSource):
(WebCore::ClipboardItemPasteboardDataSource::getType):
* Modules/async-clipboard/ClipboardItemPasteboardDataSource.h:
Move a couple of member variables (index and changeCount) out of ClipboardItem. Instead of having each
ClipboardItem keep track of this information, have the Clipboard that owns the ClipboardItem keep this
information. This means that reading data from ClipboardItem will (in a future patch) work by having the item
ask its Clipboard object to read data on its behalf.
* platform/Pasteboard.cpp:
(WebCore::Pasteboard::allPasteboardItemInfo const):
(WebCore::Pasteboard::pasteboardItemInfo const):
(WebCore::Pasteboard::readString):
(WebCore::Pasteboard::readBuffer):
(WebCore::Pasteboard::readURL):
Add some null checks to handle the case where there is no pasteboard strategy.
2019-10-17 Chris Dumez <cdumez@apple.com>
Don't put pages that have not reached the non-visually empty layout milestone in the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=203108
<rdar://problem/56375671>
Reviewed by Geoff Garen.
We don't want to go back to a visually empty page on back/forward navigation.
* history/BackForwardCache.cpp:
(WebCore::canCacheFrame):
* page/DiagnosticLoggingKeys.cpp:
(WebCore::DiagnosticLoggingKeys::visuallyEmptyKey):
* page/DiagnosticLoggingKeys.h:
2019-10-17 Simon Fraser <simon.fraser@apple.com>
Only include "deep color" in layer tree dumps if a tests requests it
https://bugs.webkit.org/show_bug.cgi?id=203125
Reviewed by Tim Horton.
Layer tree dumping tests can fail when run on different devices because the "deep color"
property on layers is device-dependent. Stop dumping this by default, and have one test
that sets the bit. iphone-7 is the only device we test that has deep color support.
Tests: compositing/contents-format/deep-color-backing-store.html
compositing/contents-format/ipad/deep-color-backing-store.html
compositing/contents-format/iphone-7/deep-color-backing-store.html
* page/Frame.h:
* platform/graphics/GraphicsLayerClient.h:
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::layerTreeAsText):
* testing/Internals.cpp:
(WebCore::toLayerTreeFlags):
* testing/Internals.h:
* testing/Internals.idl:
2019-10-17 Dean Jackson <dino@apple.com>
ctx.font = "" asserts in CSS parser
https://bugs.webkit.org/show_bug.cgi?id=203127
<rdar://problem/56391016>
Reviewed by Devin Rousso.
The HTML specification says:
"values that cannot be parsed as CSS font values are ignored", so
return early if we get an empty string, otherwise the CSS parser
will assert. This was the only case I could find where we sidestepped
most of the parsing infrastructure and injected a raw string.
Test: http/wpt/2dcontext/text-styles/2d.text.font.parse.invalid.html
* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::setFont):
2019-10-17 Ryosuke Niwa <rniwa@webkit.org>
Integrate resize event with HTML5 event loop
https://bugs.webkit.org/show_bug.cgi?id=202964
Reviewed by Geoffrey Garen.
Dispatch resize events in "run the resize steps" during the "update the rendering":
https://html.spec.whatwg.org/multipage/webappapis.html#update-the-rendering
Exisitng code in WebCore which was dispatching or scheduling dispatching of resize events now simply sets
a flag on document and schedules a rendering update. In Page::updateRendering, we fire resize events on
any documents with this flag set.
Test: fast/events/resize-subframe-in-rendering-update.html
* dom/Document.cpp:
(WebCore::Document::setNeedsDOMWindowResizeEvent): Added.
(WebCore::Document::setNeedsVisualViewportResize): Added.
(WebCore::Document::runResizeSteps): Added. https://drafts.csswg.org/cssom-view/#run-the-resize-steps
* dom/Document.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::resizeTo const):
* page/FrameView.cpp:
(WebCore::FrameView::sendResizeEventIfNeeded): Now sets m_needsDOMWindowResizeEvent on Document instead of
enqueuing a resize event.
* page/Page.cpp:
(WebCore::Page::updateRendering): Call runResizeSteps on each document.
(WebCore::Page::collectDocuments): Added.
* page/Page.h:
* page/VisualViewport.cpp:
(WebCore::VisualViewport::enqueueResizeEvent):
2019-10-17 Chris Dumez <cdumez@apple.com>
Unreviewed, rolling out r251255.
This is causing the existing back/forward tests to be flaky
Reverted changeset:
"Don't put pages that have not reached the non-visually empty
layout milestone in the back/forward cache"
https://bugs.webkit.org/show_bug.cgi?id=203108
https://trac.webkit.org/changeset/251255
2019-10-17 Mark Lam <mark.lam@apple.com>
Use constexpr in more places and remove some unnecessary external linkage.
https://bugs.webkit.org/show_bug.cgi?id=203115
Reviewed by Yusuke Suzuki.
No new tests because this patch adds no new functionality.
* html/track/TextTrackCueGeneric.cpp:
* html/track/VTTCue.cpp:
* page/EventHandler.cpp:
(WebCore::SyntheticTouchPoint::SyntheticTouchPoint):
* page/FrameTree.h:
* page/scrolling/ScrollingMomentumCalculator.cpp:
(WebCore::projectedInertialScrollDistance):
* platform/graphics/FontTaggedSettings.h:
* platform/graphics/Region.cpp:
* platform/graphics/filters/FELighting.cpp:
* rendering/TableLayout.h:
* rendering/svg/SVGRenderingContext.h:
2019-10-17 Simon Fraser <simon.fraser@apple.com>
[ Mojave+ ] Layout Test compositing/fixed-with-main-thread-scrolling.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=198757
Reviewed by Tim Horton.
WheelEventTestMonitor depends on "deferral reasons" getting added and removed, such that there is always
at least one reason active until scrolling quiesces.
WheelEventTestMonitor made the incorrect assumption that every call into ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent()
would result in a scroll change making it to the main thread, so it would defer "ScrollingThreadSyncNeeded" there,
and rely on AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll() to remove that deferral reason.
That assumption is wrong, because wheel events may coalesce, or have no impact on scroll position if already scrolled
to the max/min extent (e.g. when rubber banding).
Fix by adding a new "HandlingWheelEvent" deferral reason for the duration that the scrolling thread is processing an wheel event,
and then having ScrollingThreadSyncNeeded just represent the phase where any resulting scroll is being sent to the UI process.
These phases should always overlap.
This required moving isMonitoringWheelEvents() from the root scrolling node to the ScrollingTree.
* page/WheelEventTestMonitor.cpp:
(WebCore::operator<<):
* page/WheelEventTestMonitor.h:
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::commitTreeState):
* page/scrolling/ScrollingTree.h:
(WebCore::ScrollingTree::isMonitoringWheelEvents const):
* page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):
* page/scrolling/ScrollingTreeScrollingNode.h:
* page/scrolling/ThreadedScrollingTree.cpp:
(WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):
* page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:
(WebCore::ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::deferWheelEventTestCompletionForReason const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::removeWheelEventTestCompletionDeferralForReason const):
2019-10-17 Ryosuke Niwa <rniwa@webkit.org>
Make requestIdleCallback suspendable
https://bugs.webkit.org/show_bug.cgi?id=203023
Reviewed by Chris Dumez.
Make requestIdleCallback suspendable by making WindowEventLoop itself suspendable.
Because WindowEventLoop can be shared across documents, we don't want to make it an ActiveDOMObject.
Instead, we would make CachedFrameBase::restore and CachedFrame manually invoke suspend & resume.
Test: requestidlecallback/requestidlecallback-in-page-cache.html
* dom/Document.h:
(WebCore::Document::eventLoopIfExists): Added. This should probably go away once most of the event loop
is implemented since we're almost always going to have this object then.
* dom/WindowEventLoop.cpp:
(WebCore::WindowEventLoop::queueTask): Because m_tasks may contain tasks of suspended documents,
we check m_activeTaskCount, which is only positive when there is a task for non-suspended documents,
to decide whether we schedule a callback or not.
(WebCore::WindowEventLoop::suspend): Added. No-op for now.
(WebCore::WindowEventLoop::resume): Added. Schedule a callback if there is a task associated with
this document.
(WebCore::WindowEventLoop::run): Skip a task for a suspended document, and add it back to m_tasks along
with other tasks that got scheduled by running the current working set of tasks.
* dom/WindowEventLoop.h:
* history/CachedFrame.cpp:
(WebCore::CachedFrameBase::restore):
(WebCore::CachedFrame::CachedFrame):
2019-10-17 Chris Dumez <cdumez@apple.com>
Don't put pages that have not reached the non-visually empty layout milestone in the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=203108
Reviewed by Geoffrey Garen.
We don't want to go back to a visually empty page on back/forward navigation.
* history/BackForwardCache.cpp:
(WebCore::canCacheFrame):
* page/DiagnosticLoggingKeys.cpp:
(WebCore::DiagnosticLoggingKeys::visuallyEmptyKey):
* page/DiagnosticLoggingKeys.h:
2019-10-17 Dirk Schulze <krit@webkit.org>
transform-box: content-box, stroke-box missing
https://bugs.webkit.org/show_bug.cgi?id=201892
Reviewed by Simon Fraser.
Added the keywords content-box and stroke-box to the
transform-box CSS property.
Those keywords were added to the spec after the implementation
in WebKit.
Test: transforms/transform-box.html
* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator TransformBox const):
* css/CSSProperties.json:
* css/CSSValueKeywords.in:
* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::parseSingleValue):
* rendering/RenderLayer.cpp:
(WebCore::computeReferenceBox):
(WebCore::transformBoxToCSSBoxType):
(WebCore::RenderLayer::currentTransform const):
* rendering/style/RenderStyleConstants.h:
* svg/SVGGraphicsElement.cpp:
(WebCore::SVGGraphicsElement::animatedLocalTransform const):
2019-10-17 Youenn Fablet <youenn@apple.com>
SincResampler does not need to create a new AudioBus for each consumeSource call
https://bugs.webkit.org/show_bug.cgi?id=202983
Reviewed by Eric Carlson.
Allocate an internal AudioBus once and for all.
No observable change of behavior.
* platform/audio/SincResampler.cpp:
(WebCore::SincResampler::consumeSource):
* platform/audio/SincResampler.h:
2019-10-17 Chris Dumez <cdumez@apple.com>
Deprecate ActiveDOMObject::canSuspendForDocumentSuspension()
https://bugs.webkit.org/show_bug.cgi?id=203086
Reviewed by Geoffrey Garen.
Rename ActiveDOMObject::canSuspendForDocumentSuspension() to shouldPreventEnteringBackForwardCache_DEPRECATED()
to make it clear that no new overrides should be added and that it is no longer OK to prevent the page from
entering the back/forward cache. Also provide a default implementation that returns false so that well-behaved
classes no longer need to override this.
* Modules/applepay/ApplePaySession.cpp:
(WebCore::ApplePaySession::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::ApplePaySession::canSuspendForDocumentSuspension const): Deleted.
* Modules/applepay/ApplePaySession.h:
* Modules/cache/DOMCache.cpp:
(WebCore::DOMCache::canSuspendForDocumentSuspension const): Deleted.
* Modules/cache/DOMCache.h:
* Modules/cache/DOMCacheStorage.cpp:
(WebCore::DOMCacheStorage::canSuspendForDocumentSuspension const): Deleted.
* Modules/cache/DOMCacheStorage.h:
* Modules/encryptedmedia/MediaKeySession.cpp:
(WebCore::MediaKeySession::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::MediaKeySession::canSuspendForDocumentSuspension const): Deleted.
* Modules/encryptedmedia/MediaKeySession.h:
* Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp:
(WebCore::WebKitMediaKeySession::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::WebKitMediaKeySession::canSuspendForDocumentSuspension const): Deleted.
* Modules/encryptedmedia/legacy/WebKitMediaKeySession.h:
* Modules/entriesapi/FileSystemDirectoryReader.cpp:
(WebCore::FileSystemDirectoryReader::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::FileSystemDirectoryReader::canSuspendForDocumentSuspension const): Deleted.
* Modules/entriesapi/FileSystemDirectoryReader.h:
* Modules/entriesapi/FileSystemEntry.cpp:
(WebCore::FileSystemEntry::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::FileSystemEntry::canSuspendForDocumentSuspension const): Deleted.
* Modules/entriesapi/FileSystemEntry.h:
* Modules/fetch/FetchRequest.cpp:
(WebCore::FetchRequest::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::FetchRequest::canSuspendForDocumentSuspension const): Deleted.
* Modules/fetch/FetchRequest.h:
* Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::FetchResponse::canSuspendForDocumentSuspension const): Deleted.
* Modules/fetch/FetchResponse.h:
* Modules/geolocation/Geolocation.cpp:
(WebCore::Geolocation::page const):
(WebCore::Geolocation::canSuspendForDocumentSuspension const): Deleted.
* Modules/geolocation/Geolocation.h:
* Modules/indexeddb/IDBDatabase.cpp:
(WebCore::IDBDatabase::canSuspendForDocumentSuspension const): Deleted.
* Modules/indexeddb/IDBDatabase.h:
* Modules/indexeddb/IDBIndex.cpp:
(WebCore::IDBIndex::canSuspendForDocumentSuspension const): Deleted.
* Modules/indexeddb/IDBIndex.h:
* Modules/indexeddb/IDBObjectStore.cpp:
(WebCore::IDBObjectStore::canSuspendForDocumentSuspension const): Deleted.
* Modules/indexeddb/IDBObjectStore.h:
* Modules/indexeddb/IDBRequest.cpp:
(WebCore::IDBRequest::canSuspendForDocumentSuspension const): Deleted.
* Modules/indexeddb/IDBRequest.h:
* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::canSuspendForDocumentSuspension const): Deleted.
* Modules/indexeddb/IDBTransaction.h:
* Modules/mediarecorder/MediaRecorder.cpp:
(WebCore::MediaRecorder::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::MediaRecorder::canSuspendForDocumentSuspension const): Deleted.
* Modules/mediarecorder/MediaRecorder.h:
* Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::canSuspendForDocumentSuspension const): Deleted.
* Modules/mediasource/MediaSource.h:
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::canSuspendForDocumentSuspension const): Deleted.
* Modules/mediasource/SourceBuffer.h:
* Modules/mediasource/SourceBufferList.cpp:
(WebCore::SourceBufferList::canSuspendForDocumentSuspension const): Deleted.
* Modules/mediasource/SourceBufferList.h:
* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::canSuspendForDocumentSuspension const): Deleted.
* Modules/mediastream/MediaDevices.h:
* Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::MediaStream::canSuspendForDocumentSuspension const): Deleted.
* Modules/mediastream/MediaStream.h:
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::MediaStreamTrack::canSuspendForDocumentSuspension const): Deleted.
* Modules/mediastream/MediaStreamTrack.h:
* Modules/mediastream/RTCDTMFSender.cpp:
(WebCore::RTCDTMFSender::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::RTCDTMFSender::canSuspendForDocumentSuspension const): Deleted.
* Modules/mediastream/RTCDTMFSender.h:
* Modules/mediastream/RTCDataChannel.h:
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::RTCPeerConnection::canSuspendForDocumentSuspension const): Deleted.
* Modules/mediastream/RTCPeerConnection.h:
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::UserMediaRequest::canSuspendForDocumentSuspension const): Deleted.
* Modules/mediastream/UserMediaRequest.h:
* Modules/notifications/Notification.cpp:
(WebCore::Notification::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::Notification::canSuspendForDocumentSuspension const): Deleted.
* Modules/notifications/Notification.h:
* Modules/paymentrequest/PaymentRequest.cpp:
(WebCore::PaymentRequest::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::PaymentRequest::canSuspendForDocumentSuspension const): Deleted.
* Modules/paymentrequest/PaymentRequest.h:
* Modules/paymentrequest/PaymentResponse.cpp:
(WebCore::PaymentResponse::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::PaymentResponse::canSuspendForDocumentSuspension const): Deleted.
* Modules/paymentrequest/PaymentResponse.h:
* Modules/pictureinpicture/PictureInPictureWindow.cpp:
(WebCore::PictureInPictureWindow::canSuspendForDocumentSuspension const): Deleted.
* Modules/pictureinpicture/PictureInPictureWindow.h:
* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::AudioContext::canSuspendForDocumentSuspension const): Deleted.
* Modules/webaudio/AudioContext.h:
* Modules/webdatabase/DatabaseContext.cpp:
(WebCore::DatabaseContext::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::DatabaseContext::canSuspendForDocumentSuspension const): Deleted.
* Modules/webdatabase/DatabaseContext.h:
* Modules/webgpu/GPUCanvasContext.h:
* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::canSuspendForDocumentSuspension const): Deleted.
* Modules/websockets/WebSocket.h:
* Modules/webvr/VRDisplay.cpp:
(WebCore::VRDisplay::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::VRDisplay::canSuspendForDocumentSuspension const): Deleted.
* Modules/webvr/VRDisplay.h:
* animation/WebAnimation.cpp:
(WebCore::WebAnimation::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::WebAnimation::canSuspendForDocumentSuspension const): Deleted.
* animation/WebAnimation.h:
* css/FontFaceSet.cpp:
(WebCore::FontFaceSet::canSuspendForDocumentSuspension const): Deleted.
* css/FontFaceSet.h:
* dom/ActiveDOMObject.h:
* dom/GenericEventQueue.cpp:
(WebCore::GenericEventQueueBase<T>::canSuspendForDocumentSuspension const): Deleted.
* dom/GenericEventQueue.h:
* dom/MessagePort.cpp:
(WebCore::MessagePort::canSuspendForDocumentSuspension const): Deleted.
* dom/MessagePort.h:
* dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::canSuspendActiveDOMObjectsForDocumentSuspension):
* fileapi/FileReader.cpp:
(WebCore::FileReader::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::FileReader::canSuspendForDocumentSuspension const): Deleted.
* fileapi/FileReader.h:
* html/HTMLMarqueeElement.cpp:
(WebCore::HTMLMarqueeElement::canSuspendForDocumentSuspension const): Deleted.
* html/HTMLMarqueeElement.h:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::canSuspendForDocumentSuspension const): Deleted.
* html/HTMLMediaElement.h:
* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::canSuspendForDocumentSuspension const): Deleted.
* html/HTMLSourceElement.h:
* html/ImageBitmap.cpp:
* html/PublicURLManager.cpp:
(WebCore::PublicURLManager::canSuspendForDocumentSuspension const): Deleted.
* html/PublicURLManager.h:
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::canSuspendForDocumentSuspension const): Deleted.
* html/canvas/WebGLRenderingContextBase.h:
* html/track/TrackListBase.cpp:
(WebCore::TrackListBase::canSuspendForDocumentSuspension const): Deleted.
* html/track/TrackListBase.h:
* page/EventSource.cpp:
(WebCore::EventSource::canSuspendForDocumentSuspension const): Deleted.
* page/EventSource.h:
* page/IntersectionObserver.cpp:
(WebCore::IntersectionObserver::canSuspendForDocumentSuspension const): Deleted.
* page/IntersectionObserver.h:
* page/ResizeObserver.cpp:
(WebCore::ResizeObserver::canSuspendForDocumentSuspension const): Deleted.
* page/ResizeObserver.h:
* page/SuspendableTimer.cpp:
(WebCore::SuspendableTimerBase::canSuspendForDocumentSuspension const): Deleted.
* page/SuspendableTimer.h:
* platform/SuspendableTaskQueue.cpp:
(WebCore::SuspendableTaskQueue::canSuspendForDocumentSuspension const): Deleted.
* platform/SuspendableTaskQueue.h:
* testing/Internals.cpp:
* workers/Worker.cpp:
(WebCore::Worker::canSuspendForDocumentSuspension const): Deleted.
* workers/Worker.h:
* workers/service/ServiceWorker.cpp:
(WebCore::ServiceWorker::canSuspendForDocumentSuspension const): Deleted.
* workers/service/ServiceWorker.h:
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::canSuspendForDocumentSuspension const): Deleted.
* workers/service/ServiceWorkerContainer.h:
* workers/service/ServiceWorkerRegistration.cpp:
(WebCore::ServiceWorkerRegistration::canSuspendForDocumentSuspension const): Deleted.
* workers/service/ServiceWorkerRegistration.h:
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::XMLHttpRequest::canSuspendForDocumentSuspension const): Deleted.
* xml/XMLHttpRequest.h:
2019-10-17 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Table formatting context accesses geometry information from parent BFC
https://bugs.webkit.org/show_bug.cgi?id=203082
<rdar://problem/56370827>
Reviewed by Antti Koivisto.
Tables are wrapped in a 2 level formatting context structure. A <table> element initiates a block formatting context for its principal table box
where the caption and the table content live. It also initiates a table wrapper box which establishes the table formatting context.
In many cases the TFC needs access to the parent (generated) BFC.
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::geometryForBox const):
* layout/FormattingContext.h:
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::computedTableWidth):
2019-10-17 Zalan Bujtas <zalan@apple.com>
[LFC][Painting] Add support for image/background image painting
https://bugs.webkit.org/show_bug.cgi?id=203054
<rdar://problem/56347733>
Reviewed by Antti Koivisto.
In addition to image rendering, this patch also addresses various run/decoration painting issues.
* layout/displaytree/DisplayPainter.cpp:
(WebCore::Display::paintBoxDecoration):
(WebCore::Display::paintInlineContent):
(WebCore::Display::absoluteDisplayBox):
(WebCore::Display::paintBoxDecorationAndChildren):
(WebCore::Display::Painter::paint):
* layout/displaytree/DisplayRun.h:
(WebCore::Display::Run::setImage):
(WebCore::Display::Run::image const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendReplacedInlineBox):
* layout/layouttree/LayoutReplaced.h:
(WebCore::Layout::Replaced::setCachedImage):
(WebCore::Layout::Replaced::cachedImage const):
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutBox):
2019-10-17 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Add Display::Run/LineBox mapping
https://bugs.webkit.org/show_bug.cgi?id=203051
<rdar://problem/56342487>
Reviewed by Antti Koivisto.
Mapping enables us to paint baseline aligned runs on the current line. This is temporary until after we figure out the final run/line structure.
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):
* layout/Verification.cpp:
(WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
(WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
* layout/displaytree/DisplayPainter.cpp:
(WebCore::Display::paintInlineContent):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):
* layout/inlineformatting/InlineFormattingContextQuirks.cpp:
(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):
* layout/inlineformatting/InlineFormattingState.h:
(WebCore::Layout::InlineFormattingState::addLineBox):
(WebCore::Layout::InlineFormattingState::lineBoxForRun const):
(WebCore::Layout::InlineFormattingState::addInlineRun):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Run::Run):
(WebCore::Layout::Line::alignContentVertically):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Run::displayRun const):
(WebCore::Layout::Line::Run::logicalRect const):
(WebCore::Layout::Line::Run::adjustLogicalTop):
(WebCore::Layout::Line::Run::moveVertically):
(WebCore::Layout::Line::Run::moveHorizontally):
(WebCore::Layout::Line::Run::expand):
* layout/inlineformatting/InlineLineBox.h:
* layout/inlineformatting/InlineLineLayout.h:
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::outputInlineRuns):
2019-10-17 Antoine Quint <graouts@apple.com>
[Web Animations] Enable the Web Animations JavaScript API by default
https://bugs.webkit.org/show_bug.cgi?id=203075
Reviewed by Antti Koivisto.
* page/RuntimeEnabledFeatures.h:
2019-10-17 Wenson Hsieh <wenson_hsieh@apple.com>
Unreviewed, fix watchOS and tvOS builds after r251224
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::shouldTreatAtLeastOneTypeAsFile):
Move the `shouldTreatAtLeastOneTypeAsFile` helper function out of the `PASTEBOARD_SUPPORTS_ITEM_PROVIDERS`
section, and into generic iOS-family code so that it can be used in `pasteboardMayContainFilePaths`.
2019-10-17 Youenn Fablet <youenn@apple.com>
MultiChannelResampler does not need to recreate a ChannelProvider for every process call
https://bugs.webkit.org/show_bug.cgi?id=202982
Reviewed by Eric Carlson.
We no longer allocate a new ChannelProvider for every process call.
No observable change of behavior.
* platform/audio/MultiChannelResampler.cpp:
(WebCore::MultiChannelResampler::ChannelProvider::ChannelProvider):
(WebCore::MultiChannelResampler::ChannelProvider::setProvider):
(WebCore::MultiChannelResampler::MultiChannelResampler):
(WebCore::MultiChannelResampler::process):
* platform/audio/MultiChannelResampler.h:
2019-10-17 Devin Rousso <drousso@apple.com>
Web Inspector: rework frontend agent construction to allow commands/events to be controlled by the related target's type
https://bugs.webkit.org/show_bug.cgi?id=200384
<rdar://problem/53850352>
Reviewed by Joseph Pecoraro.
* inspector/InspectorFrontendClient.h:
(WebCore::InspectorFrontendClient::backendCommandsURL): Deleted.
(WebCore::InspectorFrontendClient::debuggableType): Deleted.
* inspector/InspectorFrontendClientLocal.h:
* page/PageDebuggable.h:
(WebCore::PageDebuggable::type const):
* testing/Internals.cpp:
(WebCore::InspectorStubFrontend::debuggableType const): Added.
Split the `Web` debuggable type into `Page` (WebCore::Page) and `WebPage` (WebKit::WebPageProxy).
2019-10-16 Wenson Hsieh <wenson_hsieh@apple.com>
[Clipboard API] [iOS] Refactor logic for suppressing URL data when the pasteboard may contain files
https://bugs.webkit.org/show_bug.cgi?id=203065
Reviewed by Tim Horton.
Platform-specific pasteboard refactoring before tackling webkit.org/b/203021. See below for details. No new
tests, as there is no change in behavior.
* platform/Pasteboard.h:
(WebCore::Pasteboard::changeCount const):
Add a stub for Pasteboard::changeCount() on non-Cocoa platforms.
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::safeTypeForDOMToReadAndWriteForPlatformType):
Move this helper function farther up the file, so it can be used in more places.
(WebCore::webSafeTypes):
Add a separate helper to compute the list of web-safe MIME types (for instance, "text/plain") given a list of
platform types, and a function to determine whether to avoid exposing a given URL to the DOM.
(WebCore::shouldTreatAtLeastOneTypeAsFile):
Split this out into a separate helper function, so that it can be invoked when determining whether a given
NSItemProvider is suspected to contain file paths. In the case where we're getting the full list of types that
are safe for the DOM to read, we want to pass in the entire pasteboard object and iterate through all of the
available types in search for something that could feasibly accompany a file URL.
In the case of computing the web-safe types per item, we only have an item provider, in which case we only
iterate through the types in that NSItemProvider. See call sites below for examples.
(WebCore::PlatformPasteboard::informationForItemAtIndex):
Invoke the new `webSafeTypes` helper method.
(WebCore::pasteboardMayContainFilePaths):
(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):
Invoke the new `webSafeTypes` helper method.
2019-10-16 Brent Fulgham <bfulgham@apple.com>
[FTW] Correct radial gradient handling of various radius orderings
https://bugs.webkit.org/show_bug.cgi?id=202815
Reviewed by Per Arne Vollan.
Revise the 'generateGradient' implementation to recognize that the
radius arguments might not be in increasing order. Direct2D's
implementation does expect this, so we need to swap order and
revise the gradient range to match.
Drive-by fix: Stop building unused image decoders if building with
the Apple stack.
* PlatformFTW.cmake: Stop building unused image decoders.
* platform/graphics/win/GradientDirect2D.cpp:
(WebCore::Gradient::generateGradient):
2019-10-16 Chris Dumez <cdumez@apple.com>
Rename PageCache to BackForwardCache
https://bugs.webkit.org/show_bug.cgi?id=203048
Reviewed by Alex Christensen.
Rename PageCache to BackForwardCache for clarity and consistency with the UIProcess's WebBackForwardCache.
* Modules/geolocation/Geolocation.cpp:
(WebCore::Geolocation::suspend):
* Modules/mediarecorder/MediaRecorder.cpp:
(WebCore::MediaRecorder::canSuspendForDocumentSuspension const):
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::suspend):
* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::suspend):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* animation/WebAnimation.cpp:
(WebCore::WebAnimation::canSuspendForDocumentSuspension const):
* bindings/js/WindowProxy.cpp:
(WebCore::WindowProxy::clearJSWindowProxiesNotMatchingDOMWindow):
* bindings/js/WindowProxy.h:
* dom/ActiveDOMObject.h:
* dom/Document.cpp:
(WebCore::Document::~Document):
(WebCore::Document::scheduleStyleRecalc):
(WebCore::Document::needsStyleRecalc const):
(WebCore::Document::invalidateMatchedPropertiesCacheAndForceStyleRecalc):
(WebCore::Document::createRenderTree):
(WebCore::Document::didBecomeCurrentDocumentInFrame):
(WebCore::Document::attachToCachedFrame):
(WebCore::Document::detachFromCachedFrame):
(WebCore::Document::prepareForDestruction):
(WebCore::Document::adjustFocusedNodeOnNodeRemoval):
(WebCore::Document::setFocusedElement):
(WebCore::Document::takeDOMWindowFrom):
(WebCore::Document::setBackForwardCacheState):
(WebCore::Document::suspend):
(WebCore::Document::resume):
(WebCore::Document::topDocument const):
* dom/Document.h:
(WebCore::Document::backForwardCacheState const):
* dom/FullscreenManager.cpp:
(WebCore::FullscreenManager::willEnterFullscreen):
(WebCore::FullscreenManager::didEnterFullscreen):
(WebCore::FullscreenManager::willExitFullscreen):
(WebCore::FullscreenManager::didExitFullscreen):
* dom/FullscreenManager.h:
* dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::suspendActiveDOMObjects):
(WebCore::ScriptExecutionContext::resumeActiveDOMObjects):
* history/BackForwardCache.cpp: Renamed from Source/WebCore/history/PageCache.cpp.
(WebCore::logBackForwardCacheFailureDiagnosticMessage):
(WebCore::canCacheFrame):
(WebCore::canCachePage):
(WebCore::BackForwardCache::singleton):
(WebCore::BackForwardCache::BackForwardCache):
(WebCore::BackForwardCache::dump const):
(WebCore::BackForwardCache::canCache const):
(WebCore::BackForwardCache::pruneToSizeNow):
(WebCore::BackForwardCache::setMaxSize):
(WebCore::BackForwardCache::frameCount const):
(WebCore::BackForwardCache::markPagesForDeviceOrPageScaleChanged):
(WebCore::BackForwardCache::markPagesForContentsSizeChanged):
(WebCore::BackForwardCache::markPagesForCaptionPreferencesChanged):
(WebCore::setBackForwardCacheState):
(WebCore::BackForwardCache::addIfCacheable):
(WebCore::BackForwardCache::take):
(WebCore::BackForwardCache::removeAllItemsForPage):
(WebCore::BackForwardCache::get):
(WebCore::BackForwardCache::remove):
(WebCore::BackForwardCache::prune):
* history/BackForwardCache.h: Renamed from Source/WebCore/history/PageCache.h.
* history/CachedFrame.cpp:
(WebCore::CachedFrameBase::restore):
(WebCore::CachedFrame::CachedFrame):
(WebCore::CachedFrame::clear):
(WebCore::CachedFrame::destroy):
* history/CachedFramePlatformData.h:
* history/HistoryItem.cpp:
(WebCore::HistoryItem::setCachedPage):
(WebCore::HistoryItem::setURL):
* history/HistoryItem.h:
(WebCore::HistoryItem::isInBackForwardCache const):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::suspend):
(WebCore::HTMLMediaElement::resume):
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::createElementRenderer):
* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::suspend):
* html/MediaElementSession.cpp:
(WebCore::MediaElementSession::autoplayPermitted const):
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::addSubresourceLoader):
* loader/DocumentLoader.h:
* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::closeURL):
(WebCore::FrameLoader::clear):
(WebCore::FrameLoader::stopAllLoaders):
(WebCore::FrameLoader::stopForBackForwardCache):
(WebCore::FrameLoader::commitProvisionalLoad):
(WebCore::FrameLoader::open):
(WebCore::FrameLoader::frameDetached):
(WebCore::FrameLoader::detachFromParent):
(WebCore::FrameLoader::receivedMainResourceError):
(WebCore::FrameLoader::shouldPerformFragmentNavigation):
(WebCore::FrameLoader::dispatchUnloadEvents):
(WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
(WebCore::FrameLoader::loadProvisionalItemFromCachedPage):
(WebCore::FrameLoader::loadDifferentDocumentItem):
* loader/FrameLoader.h:
* loader/FrameLoaderClient.h:
* loader/HistoryController.cpp:
(WebCore::HistoryController::saveScrollPositionAndViewStateToItem):
(WebCore::HistoryController::restoreScrollPositionAndViewState):
(WebCore::HistoryController::invalidateCurrentItemCachedPage):
(WebCore::HistoryController::updateForReload):
* loader/appcache/ApplicationCacheHost.cpp:
(WebCore::ApplicationCacheHost::canCacheInBackForwardCache):
* loader/appcache/ApplicationCacheHost.h:
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::load):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::suspendForBackForwardCache):
(WebCore::DOMWindow::resumeFromBackForwardCache):
(WebCore::DOMWindow::decrementScrollEventListenersCount):
* page/DOMWindow.h:
* page/DOMWindowExtension.cpp:
(WebCore::DOMWindowExtension::suspendForBackForwardCache):
(WebCore::DOMWindowExtension::resumeFromBackForwardCache):
* page/DOMWindowExtension.h:
* page/DiagnosticLoggingKeys.cpp:
(WebCore::DiagnosticLoggingKeys::backForwardCacheKey):
(WebCore::DiagnosticLoggingKeys::backForwardCacheFailureKey):
* page/DiagnosticLoggingKeys.h:
* page/EventSource.cpp:
(WebCore::EventSource::scheduleReconnect):
(WebCore::EventSource::didReceiveResponse):
(WebCore::EventSource::didReceiveData):
(WebCore::EventSource::didFinishLoading):
(WebCore::EventSource::didFail):
(WebCore::EventSource::abortConnectionAttempt):
(WebCore::EventSource::suspend):
(WebCore::EventSource::resume):
(WebCore::EventSource::dispatchMessageEvent):
* page/EventSource.h:
* page/Frame.cpp:
(WebCore::Frame::setView):
(WebCore::Frame::setDocument):
(WebCore::Frame::willDetachPage):
* page/FrameView.cpp:
(WebCore::FrameView::didRestoreFromBackForwardCache):
(WebCore::FrameView::setContentsSize):
* page/FrameView.h:
* page/FrameViewLayoutContext.cpp:
(WebCore::FrameViewLayoutContext::layout):
(WebCore::FrameViewLayoutContext::scheduleLayout):
* page/MemoryRelease.cpp:
(WebCore::releaseCriticalMemory):
(WebCore::releaseMemory):
* page/MemoryRelease.h:
* page/Page.cpp:
(WebCore::Page::~Page):
(WebCore::Page::setViewScaleFactor):
(WebCore::Page::setDeviceScaleFactor):
* page/Page.h:
* page/PageGroup.cpp:
(WebCore::PageGroup::captionPreferencesChanged):
* page/PerformanceLogging.cpp:
(WebCore::PerformanceLogging::memoryUsageStatistics):
* page/Settings.yaml:
* page/SettingsBase.cpp:
(WebCore::SettingsBase::usesBackForwardCacheChanged):
* page/SettingsBase.h:
* page/animation/AnimationBase.cpp:
(WebCore::AnimationBase::setNeedsStyleRecalc):
* page/animation/CSSAnimationController.cpp:
(WebCore::CSSAnimationControllerPrivate::updateAnimations):
(WebCore::CSSAnimationControllerPrivate::addElementChangeToDispatch):
(WebCore::CSSAnimationController::cancelAnimations):
(WebCore::CSSAnimationController::updateAnimations):
* page/animation/ImplicitAnimation.cpp:
(WebCore::ImplicitAnimation::sendTransitionEvent):
* page/animation/KeyframeAnimation.cpp:
(WebCore::KeyframeAnimation::sendAnimationEvent):
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
* platform/mac/ScrollAnimatorMac.mm:
(WebCore::ScrollAnimatorMac::notifyContentAreaScrolled):
(WebCore::ScrollAnimatorMac::updateScrollerStyle):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::paintIntoLayer):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateCompositingLayers):
(WebCore::RenderLayerCompositor::willRemoveScrollingLayerWithBacking):
(WebCore::RenderLayerCompositor::didAddScrollingLayer):
* rendering/RenderLayerCompositor.h:
* rendering/RenderObject.h:
* rendering/SimpleLineLayoutCoverage.cpp:
(WebCore::SimpleLineLayout::collectNonEmptyLeafRenderBlockFlowsForCurrentPage):
* style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::createAnimatedElementUpdate):
* testing/Internals.cpp:
(WebCore::Internals::clearBackForwardCache):
(WebCore::Internals::backForwardCacheSize const):
(WebCore::Internals::preventDocumentForEnteringBackForwardCache):
* testing/Internals.h:
* testing/Internals.idl:
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::suspend):
2019-10-16 John Wilander <wilander@apple.com>
Resource Load Statistics (experimental): Block all third-party cookies on websites without prior user interaction
https://bugs.webkit.org/show_bug.cgi?id=203017
<rdar://problem/56262708>
Reviewed by Alex Christensen.
NetworkStorageSession::shouldBlockCookies() now checks if the first-party website has
received user interaction and if not, blocks all third-party cookies, regardless of the
status of those third-party domains (prevalent or not).
Bundled cleanup task: Remove the two month old feature flag for NSURLSession switching.
Tests: http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction-database.html
http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction.html
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setIsITPSessionSwitchingEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::isITPSessionSwitchingEnabled const): Deleted.
* page/Settings.yaml:
* platform/network/NetworkStorageSession.cpp:
(WebCore::NetworkStorageSession::hasHadUserInteractionAsFirstParty const):
(WebCore::NetworkStorageSession::shouldBlockCookies const):
(WebCore::NetworkStorageSession::setDomainsWithUserInteractionAsFirstParty):
* platform/network/NetworkStorageSession.h:
(WebCore::NetworkStorageSession::setIsThirdPartyCookieBlockingOnSitesWithoutUserInteractionEnabled):
2019-10-16 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Add style and text content to Display::Run
https://bugs.webkit.org/show_bug.cgi?id=203045
<rdar://problem/56340105>
Reviewed by Antti Koivisto.
Painting Display::Runs requires style and text content. Currently there's no mapping structure to connect Display::Runs to Display::Boxes to access style and content.
* layout/displaytree/DisplayRun.h:
(WebCore::Display::Run::TextContext::content const):
(WebCore::Display::Run::style const):
(WebCore::Display::Run::Run):
(WebCore::Display::Run::TextContext::TextContext):
(WebCore::Display::Run::TextContext::expand):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendHardLineBreak):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Run::expand):
2019-10-16 Simon Fraser <simon.fraser@apple.com>
Add dumping for BorderData and StyleBackgroundData
https://bugs.webkit.org/show_bug.cgi?id=203038
Reviewed by Zalan Bujtas.
As part of adding dumping for all RenderStyle data, add dumping support for
BorderData and StyleBackgroundData.
For large classes it's beneficial to avoid dumping default values; those classes
get a dump() function that can take an argument to say whether values which are default
should be printed.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/LengthSize.h:
(WebCore::LengthSize::isZero const):
* rendering/style/BorderData.cpp: Added.
(WebCore::operator<<):
(WebCore::BorderData::dump const):
* rendering/style/BorderData.h:
* rendering/style/RenderStyleConstants.h:
* rendering/style/StyleBackgroundData.cpp:
(WebCore::StyleBackgroundData::dump const):
(WebCore::operator<<):
* rendering/style/StyleBackgroundData.h:
2019-10-16 Chris Dumez <cdumez@apple.com>
[WK2] Handle back/forward cache entry expiration in the UIProcess instead of the WebProcess
https://bugs.webkit.org/show_bug.cgi?id=203034
<rdar://problem/56332453>
Reviewed by Antti Koivisto.
Use Seconds type for backForwardCacheExpirationInterval setting instead of
double, for clarity.
* history/CachedPage.cpp:
(WebCore::CachedPage::CachedPage):
(WebCore::CachedPage::hasExpired const):
* page/Settings.yaml:
2019-10-16 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Fix various vertical alignment issues.
https://bugs.webkit.org/show_bug.cgi?id=203041
Reviewed by Antti Koivisto.
This patch fixes both regular inline box and inline-block baseline aligment. It also addresses a few related vertical positioning issues.
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::alignContentVertically):
(WebCore::Layout::Line::appendInlineContainerStart):
(WebCore::Layout::Line::appendInlineContainerEnd):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendHardLineBreak):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
(WebCore::Layout::Line::inlineItemContentHeight const):
* layout/inlineformatting/InlineLine.h:
* layout/inlineformatting/InlineLineBox.h:
(WebCore::Layout::LineBox::resetDescent):
(WebCore::Layout::LineBox::setLogicalHeightIfGreater):
(WebCore::Layout::LineBox::setBaselineOffsetIfGreater):
(WebCore::Layout::LineBox::setAscentIfGreater):
(WebCore::Layout::LineBox::setDescentIfGreater):
(WebCore::Layout::LineBox::resetBaseline):
(WebCore::
Layout::LineBox::setBaseline): Deleted.
(WebCore::Layout::LineBox::baseline): Deleted.
(WebCore::Layout::LineBox::setBaselineOffset): Deleted.
(WebCore::Layout::LineBox::Baseline::setAscentIfGreater): Deleted.
(WebCore::Layout::LineBox::Baseline::setDescentIfGreater): Deleted.
2019-10-16 Chris Dumez <cdumez@apple.com>
Drop unused WKPageSetResourceCachingDisabled() SPI
https://bugs.webkit.org/show_bug.cgi?id=203035
Reviewed by Alex Christensen.
* history/PageCache.cpp:
(WebCore::canCachePage):
(WebCore::PageCache::take):
(WebCore::PageCache::get):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaPlayerShouldUsePersistentCache const):
* inspector/agents/page/PageNetworkAgent.cpp:
(WebCore::PageNetworkAgent::setResourceCachingDisabled):
* inspector/agents/worker/WorkerNetworkAgent.cpp:
(WebCore::WorkerNetworkAgent::setResourceCachingDisabled):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::subresourceCachePolicy const):
(WebCore::FrameLoader::addExtraFieldsToRequest):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::cachePolicy const):
* page/Page.h:
(WebCore::Page::isResourceCachingDisabledByWebInspector const):
(WebCore::Page::setResourceCachingDisabledByWebInspector):
(WebCore::Page::isResourceCachingDisabled const): Deleted.
(WebCore::Page::setResourceCachingDisabled): Deleted.
(WebCore::Page::setResourceCachingDisabledOverride): Deleted.
* workers/WorkerDebuggerProxy.h:
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::setResourceCachingDisabledByWebInspector):
(WebCore::WorkerMessagingProxy::setResourceCachingDisabled): Deleted.
* workers/WorkerMessagingProxy.h:
* workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::setResourceCachingDisabledByWebInspector):
(WebCore::ServiceWorkerThreadProxy::setResourceCachingDisabled): Deleted.
* workers/service/context/ServiceWorkerThreadProxy.h:
2019-10-16 Fujii Hironori <Hironori.Fujii@sony.com>
DumpRenderTree should clear WTFLogChannelState::OnWithAccumulation state set by testRunner.accummulateLogsForChannel
https://bugs.webkit.org/show_bug.cgi?id=203024
Reviewed by Alex Christensen.
* platform/LogInitialization.h:
* platform/Logging.cpp:
(WebCore::clearAllLogChannelsToAccumulate): Added.
* platform/Logging.h:
* testing/js/WebCoreTestSupport.cpp:
(WebCoreTestSupport::clearAllLogChannelsToAccumulate): Added.
* testing/js/WebCoreTestSupport.h:
2019-10-16 Youenn Fablet <youenn@apple.com>
WebAudioSourceProviderAVFObjC::provideInput should set its WebAudioBufferList parameters correctly
https://bugs.webkit.org/show_bug.cgi?id=202930
<rdar://problem/56006776>
Reviewed by Eric Carlson.
There is a time where the bus channel number and audio source channel numbers may be different.
In case the bus channel number is less than the audio source channel number, initialization of
the WebAudioBufferList might not be fully done.
In that case, output silence and return early.
Reduce the number of frames to process based on the number of frames the output audio bus plans to process.
Partially covered by new API test (this a race so we cannot reproduce the crash easily).
* Modules/webaudio/MediaStreamAudioSourceNode.cpp:
(WebCore::MediaStreamAudioSourceNode::process):
Make sure to process the number of frames the output bus expect.
* platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm:
(WebCore::WebAudioSourceProviderAVFObjC::provideInput):
2019-10-16 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] TableFormattingContext::distributeExtraHorizontalSpace should not ignore fixed width columns
https://bugs.webkit.org/show_bug.cgi?id=203010
Reviewed by Antti Koivisto.
Fixed width columns (e.g. <col width=100px>) don't participate in the extra horizontal space distribution.
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::computedTableWidth):
(WebCore::Layout::TableFormattingContext::distributeExtraHorizontalSpace):
(WebCore::Layout::TableFormattingContext::distributeAvailableWidth): Deleted.
* layout/tableformatting/TableFormattingContext.h:
* layout/tableformatting/TableGrid.cpp:
(WebCore::Layout::TableGrid::Column::hasFixedWidth const):
(WebCore::Layout::TableGrid::widthConstraints const):
* layout/tableformatting/TableGrid.h:
(WebCore::Layout::TableGrid::totalHorizontalSpacing const):
(WebCore::Layout::TableGrid::columnsContext const):
2019-10-16 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK][WPE] ASSERTION FAILED: blob in SQLiteStatement.cpp(163) : int WebCore::SQLiteStatement::bindBlob()
https://bugs.webkit.org/show_bug.cgi?id=202976
Reviewed by Adrian Perez de Castro.
This is because IconDatabases passes a nullptr blob to store emtpty icons. sqlite3_bind_blob() allows nullptr as
blob, so we shouldn't assert.
* platform/sql/SQLiteStatement.cpp:
(WebCore::SQLiteStatement::bindBlob): Update the assert to only fail when blob is nullptr and size > 0.
2019-10-16 Fujii Hironori <Hironori.Fujii@sony.com>
Unreviewed build fix for Windows ports
https://bugs.webkit.org/show_bug.cgi?id=203016
<rdar://problem/56317774>
* page/DOMTimer.h: Added WEBCORE_EXPORT to ~DOMTimer().
2019-10-15 Carlos Alberto Lopez Perez <clopez@igalia.com>
image/apng not recognized in source tag
https://bugs.webkit.org/show_bug.cgi?id=202785
Reviewed by Dean Jackson.
Add image/apng as supported mime type for images on Mac/iOS and
on all the other platforms that enable apng support.
This fixes the test imported/w3c/web-platform-tests/apng/supported-in-source-type.html
* platform/MIMETypeRegistry.cpp:
(WebCore::MIMETypeRegistry::supportedImageMIMETypes):
2019-10-15 Ryosuke Niwa <rniwa@webkit.org>
adoptRef DOMTimer in install instead of its constructor
https://bugs.webkit.org/show_bug.cgi?id=203016
Reviewed by Simon Fraser.
Moved the code to add DOMTimer to ScriptExecutionContext's map to DOMTimer::install
instead of its constructor so that we can adoptRef there instead for clarity & simplicity.
* dom/ScriptExecutionContext.h:
(WebCore::ScriptExecutionContext::addTimeout):
* page/DOMTimer.cpp:
(WebCore::DOMTimer::DOMTimer):
(WebCore::DOMTimer::install):
(WebCore::DOMTimer::fired):
2019-10-15 Simon Fraser <simon.fraser@apple.com>
ScrollingTreeScrollingNodeDelegateMac::stretchAmount() should not have side effects
https://bugs.webkit.org/show_bug.cgi?id=203009
Reviewed by Dean Jackson.
Calling ScrollingTreeScrollingNodeDelegateMac::stretchAmount() had the side effect of calling
setMainFrameIsRubberBanding() on the scrolling tree.
Remove this badness and replace it by modifying updateMainFramePinState() (which is called every time
the scroll position changes) to also compute if we're rubber-banding.
Also make a bunch of methods on ScrollControllerClient const, which makes it clear that
they don't have side effects.
* page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
* page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
(WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateAfterChildren):
(WebCore::ScrollingTreeFrameScrollingNodeMac::currentScrollPositionChanged):
(WebCore::ScrollingTreeFrameScrollingNodeMac::updateMainFramePinAndRubberbandState):
(WebCore::ScrollingTreeFrameScrollingNodeMac::updateMainFramePinState): Deleted.
* page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h:
* page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:
(WebCore::ScrollingTreeScrollingNodeDelegateMac::isAlreadyPinnedInDirectionOfGesture const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::allowsHorizontalStretching const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::allowsVerticalStretching const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::stretchAmount const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::pinnedInDirection const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::canScrollHorizontally const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::canScrollVertically const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::shouldRubberBandInDirection const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::isAlreadyPinnedInDirectionOfGesture): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateMac::allowsHorizontalStretching): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateMac::allowsVerticalStretching): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateMac::stretchAmount): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateMac::pinnedInDirection): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateMac::canScrollHorizontally): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateMac::canScrollVertically): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateMac::shouldRubberBandInDirection): Deleted.
* platform/cocoa/ScrollController.h:
* platform/mac/ScrollAnimatorMac.h:
* platform/mac/ScrollAnimatorMac.mm:
(WebCore::ScrollAnimatorMac::shouldForwardWheelEventsToParent const):
(WebCore::ScrollAnimatorMac::pinnedInDirection const):
(WebCore::ScrollAnimatorMac::isAlreadyPinnedInDirectionOfGesture const):
(WebCore::ScrollAnimatorMac::allowsVerticalStretching const):
(WebCore::ScrollAnimatorMac::allowsHorizontalStretching const):
(WebCore::ScrollAnimatorMac::stretchAmount const):
(WebCore::ScrollAnimatorMac::canScrollHorizontally const):
(WebCore::ScrollAnimatorMac::canScrollVertically const):
(WebCore::ScrollAnimatorMac::shouldRubberBandInDirection const):
(WebCore::ScrollAnimatorMac::shouldForwardWheelEventsToParent): Deleted.
(WebCore::ScrollAnimatorMac::pinnedInDirection): Deleted.
(WebCore::ScrollAnimatorMac::isAlreadyPinnedInDirectionOfGesture): Deleted.
(WebCore::ScrollAnimatorMac::allowsVerticalStretching): Deleted.
(WebCore::ScrollAnimatorMac::allowsHorizontalStretching): Deleted.
(WebCore::ScrollAnimatorMac::stretchAmount): Deleted.
(WebCore::ScrollAnimatorMac::canScrollHorizontally): Deleted.
(WebCore::ScrollAnimatorMac::canScrollVertically): Deleted.
(WebCore::ScrollAnimatorMac::shouldRubberBandInDirection): Deleted.
* platform/mock/ScrollAnimatorMock.h:
2019-10-15 Simon Fraser <simon.fraser@apple.com>
WheelEventTestMonitor doesn't need to be threadsafe
https://bugs.webkit.org/show_bug.cgi?id=203012
Reviewed by Dean Jackson.
WheelEventTestMonitor is only called on the main thread, so doesn't need a lock to protect
m_deferCompletionReasons, and add main thread assertions.
* page/WheelEventTestMonitor.cpp:
(WebCore::WheelEventTestMonitor::clearAllTestDeferrals):
(WebCore::WheelEventTestMonitor::setTestCallbackAndStartNotificationTimer):
(WebCore::WheelEventTestMonitor::deferForReason):
(WebCore::WheelEventTestMonitor::removeDeferralForReason):
(WebCore::WheelEventTestMonitor::triggerTestTimerFired):
* page/WheelEventTestMonitor.h:
2019-10-15 Andres Gonzalez <andresg_22@apple.com>
AX: Make AXIsolatedTree compile again
https://bugs.webkit.org/show_bug.cgi?id=202702
<rdar://problem/56084968>
Reviewed by Joanmarie Diggs.
Re-submitting r251045 with a fix for internal builds.
* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::remove):
(WebCore::AXObjectCache::createIsolatedAccessibilityTreeHierarchy):
* accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::treePageCache):
(WebCore::AXIsolatedTree::nodeForID const):
(WebCore::AXIsolatedTree::applyPendingChanges):
(WebCore::AXIsolatedTree::initializePageTreeForID): Deleted.
(WebCore::AXIsolatedTree::setInitialRequestInProgress): Deleted.
* accessibility/isolatedtree/AXIsolatedTree.h:
* accessibility/isolatedtree/AXIsolatedTreeNode.cpp:
(WebCore::AXIsolatedTreeNode::setTreeIdentifier):
(WebCore::AXIsolatedTreeNode::rectAttributeValue const):
* accessibility/isolatedtree/AXIsolatedTreeNode.h:
* accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
(convertToNSArray):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper childrenVectorArray]):
2019-10-15 Ryosuke Niwa <rniwa@webkit.org>
[iOS] Crash in WebCore::DOMWindow::incrementScrollEventListenersCount
https://bugs.webkit.org/show_bug.cgi?id=202878
Unreviewed. Addressed Darin's post-commit review comment.
* dom/Node.cpp:
(WebCore::tryAddEventListener):
2019-10-15 Chris Dumez <cdumez@apple.com>
[macOS] Simplify main thread initialization
https://bugs.webkit.org/show_bug.cgi?id=203001
Reviewed by Geoff Garen.
* bridge/objc/WebScriptObject.mm:
(+[WebScriptObject initialize]):
* platform/cocoa/SharedBufferCocoa.mm:
(+[WebCoreSharedBufferData initialize]):
2019-10-15 Peng Liu <peng.liu6@apple.com>
[Picture-in-Picture Web API] Implement HTMLVideoElement.requestPictureInPicture() / Document.exitPictureInPicture()
https://bugs.webkit.org/show_bug.cgi?id=201024
Reviewed by Eric Carlson.
Implement the support to enter and exit PiP mode with the Picture-in-Picture API.
Majority work of this patch was done by Carlos Eduardo Ramalho <cadubentzen@gmail.com>.
Also, fix a build error of Modules/webaudio/OfflineAudioContext.cpp because of this patch (due to unified build).
Tests: imported/w3c/web-platform-tests/picture-in-picture/css-selector.html
imported/w3c/web-platform-tests/picture-in-picture/disable-picture-in-picture.html
imported/w3c/web-platform-tests/picture-in-picture/enter-picture-in-picture.html
imported/w3c/web-platform-tests/picture-in-picture/exit-picture-in-picture.html
imported/w3c/web-platform-tests/picture-in-picture/idlharness.window.html
imported/w3c/web-platform-tests/picture-in-picture/leave-picture-in-picture.html
imported/w3c/web-platform-tests/picture-in-picture/mediastream.html
imported/w3c/web-platform-tests/picture-in-picture/picture-in-picture-element.html
imported/w3c/web-platform-tests/picture-in-picture/picture-in-picture-window.html
imported/w3c/web-platform-tests/picture-in-picture/request-picture-in-picture-twice.html
imported/w3c/web-platform-tests/picture-in-picture/request-picture-in-picture.html
imported/w3c/web-platform-tests/picture-in-picture/shadow-dom.html
* CMakeLists.txt:
* Configurations/FeatureDefines.xcconfig:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Modules/pictureinpicture/DocumentPictureInPicture.cpp: Added.
(WebCore::DocumentPictureInPicture::exitPictureInPicture):
(WebCore::DocumentPictureInPicture::from):
* Modules/pictureinpicture/DocumentPictureInPicture.h: Added.
(WebCore::DocumentPictureInPicture::pictureInPictureEnabled):
(WebCore::DocumentPictureInPicture::supplementName):
* Modules/pictureinpicture/DocumentPictureInPicture.idl: Added.
* Modules/pictureinpicture/EnterPictureInPictureEvent.cpp: Added.
(WebCore::EnterPictureInPictureEvent::create):
(WebCore::EnterPictureInPictureEvent::EnterPictureInPictureEvent):
* Modules/pictureinpicture/EnterPictureInPictureEvent.h: Added.
* Modules/pictureinpicture/EnterPictureInPictureEvent.idl: Added.
* Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp: Added.
(WebCore::HTMLVideoElementPictureInPicture::HTMLVideoElementPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::~HTMLVideoElementPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::from):
(WebCore::HTMLVideoElementPictureInPicture::requestPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::autoPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::setAutoPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::disablePictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::setDisablePictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::exitPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::didEnterPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::didExitPictureInPicture):
* Modules/pictureinpicture/HTMLVideoElementPictureInPicture.h: Added.
(WebCore::HTMLVideoElementPictureInPicture::supplementName):
* Modules/pictureinpicture/HTMLVideoElementPictureInPicture.idl: Added.
* Modules/pictureinpicture/PictureInPictureWindow.cpp: Added.
(WebCore::PictureInPictureWindow::create):
(WebCore::PictureInPictureWindow::PictureInPictureWindow):
(WebCore::PictureInPictureWindow::activeDOMObjectName const):
(WebCore::PictureInPictureWindow::canSuspendForDocumentSuspension const):
(WebCore::PictureInPictureWindow::eventTargetInterface const):
(WebCore::PictureInPictureWindow::scriptExecutionContext const):
* Modules/pictureinpicture/PictureInPictureWindow.h: Added.
* Modules/pictureinpicture/PictureInPictureWindow.idl: Added.
* Modules/webaudio/OfflineAudioContext.cpp:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* dom/Document.cpp:
(WebCore::Document::pictureInPictureElement const):
(WebCore::Document::setPictureInPictureElement):
* dom/Document.h:
* dom/DocumentOrShadowRoot.idl:
* dom/EventNames.h:
* dom/EventNames.in:
* dom/EventTargetFactory.in:
* dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::pictureInPictureElement const):
* dom/ShadowRoot.h:
* html/HTMLVideoElement.cpp:
(WebCore::HTMLVideoElement::fullscreenModeChanged):
(WebCore::HTMLVideoElement::setPictureInPictureObserver):
* html/HTMLVideoElement.h:
* page/Settings.yaml:
* platform/PictureInPictureObserver.h: Added.
(WebCore::PictureInPictureObserver::~PictureInPictureObserver):
* testing/InternalSettings.h:
2019-10-15 Simon Fraser <simon.fraser@apple.com>
Add TextStream dumping for ThemeTypes enums
https://bugs.webkit.org/show_bug.cgi?id=202972
Reviewed by Dean Jackson.
Make ControlPart, SelectionPart, ThemeFont and ThemeColor dumpable.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/ThemeTypes.cpp: Added.
(WebCore::operator<<):
* platform/ThemeTypes.h:
2019-10-15 Simon Fraser <simon.fraser@apple.com>
Add dumping for Animation and AnimationList
https://bugs.webkit.org/show_bug.cgi?id=202973
Reviewed by Dean Jackson.
Make Animation, AnimationList and related enums dumpable.
* platform/animation/Animation.cpp:
(WebCore::operator<<):
* platform/animation/Animation.h:
* platform/animation/AnimationList.cpp:
(WebCore::operator<<):
* platform/animation/AnimationList.h:
2019-10-15 Simon Fraser <simon.fraser@apple.com>
Don't mutate a NinePieceImage to create a mask default image
https://bugs.webkit.org/show_bug.cgi?id=202967
Reviewed by Dean Jackson.
For every StyleRareNonInheritedData, the maskBoxImage undergoes copy-on-write
via maskBoxImage.setMaskDefaults(). Fix by giving NinePieceImage a constructor
argument that cna make the mask flavor of image.
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertBorderMask):
(WebCore::StyleBuilderConverter::convertReflection):
* rendering/style/NinePieceImage.cpp:
(WebCore::NinePieceImage::defaultMaskData):
(WebCore::NinePieceImage::NinePieceImage):
* rendering/style/NinePieceImage.h:
(WebCore::NinePieceImage::setMaskDefaults): Deleted.
* rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
* rendering/style/StyleReflection.h:
(WebCore::StyleReflection::StyleReflection):
2019-10-15 youenn fablet <youenn@apple.com>
Move headers to keep from a HTTPHeaderNameSet to an OptionSet
https://bugs.webkit.org/show_bug.cgi?id=202977
Reviewed by Anders Carlsson.
Covered by existing tests.
New representation is smaller and more efficient to process.
* loader/CrossOriginAccessControl.cpp:
(WebCore::httpHeadersToKeepFromCleaning):
(WebCore::cleanHTTPRequestHeadersForAccessControl):
* loader/CrossOriginAccessControl.h:
(WebCore::cleanHTTPRequestHeadersForAccessControl): Deleted.
* loader/ResourceLoaderOptions.h:
2019-10-15 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Use <col> to adjust the preferred column width.
https://bugs.webkit.org/show_bug.cgi?id=202997
<rdar://problem/56300345>
Reviewed by Antti Koivisto.
The <col> elment can set the preferred width on the table column. Let's take these values into account while computing the preferred width for columns.
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns):
* layout/tableformatting/TableFormattingContext.h:
* layout/tableformatting/TableFormattingContextGeometry.cpp:
(WebCore::Layout::TableFormattingContext::Geometry::computedColumnWidth const):
* layout/tableformatting/TableGrid.h:
(WebCore::Layout::TableGrid::Column::columnBox const):
2019-10-15 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Add support for colgroup/col
https://bugs.webkit.org/show_bug.cgi?id=202991
<rdar://problem/56294715>
Reviewed by Antti Koivisto.
This patch sets up the column context when <colgroup> is present. This is in preparation for using <col>'s width to adjust the preferred width on table columns.
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutBox):
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::ensureTableGrid):
* layout/tableformatting/TableGrid.cpp:
(WebCore::Layout::TableGrid::Column::Column):
(WebCore::Layout::TableGrid::ColumnsContext::addColumn):
* layout/tableformatting/TableGrid.h:
2019-10-15 Alex Christensen <achristensen@webkit.org>
Unreviewed, rolling out r251138.
Broke API tests
Reverted changeset:
"Pass CORS-enabled schemes through WebProcess instead of
having them NetworkProcess-global"
https://bugs.webkit.org/show_bug.cgi?id=202891
https://trac.webkit.org/changeset/251138
2019-10-15 Chris Dumez <cdumez@apple.com>
Stop using inheritance for WebBackForwardCacheEntry
https://bugs.webkit.org/show_bug.cgi?id=202989
Reviewed by Alex Christensen.
* history/BackForwardItemIdentifier.h:
(WebCore::BackForwardItemIdentifier::operator bool const):
2019-10-15 Alex Christensen <achristensen@webkit.org>
Pass CORS-enabled schemes through WebProcess instead of having them NetworkProcess-global
https://bugs.webkit.org/show_bug.cgi?id=202891
Reviewed by Youenn Fablet.
* platform/LegacySchemeRegistry.cpp:
(WebCore::LegacySchemeRegistry::registerURLSchemeAsCORSEnabled):
(WebCore::LegacySchemeRegistry::shouldTreatURLSchemeAsCORSEnabled):
(WebCore::LegacySchemeRegistry::allURLSchemesRegisteredAsCORSEnabled):
* platform/LegacySchemeRegistry.h:
2019-10-15 Zalan Bujtas <zalan@apple.com>
[LFC] Adjust computed width value when box sizing is border-box
https://bugs.webkit.org/show_bug.cgi?id=202966
<rdar://problem/56277954>
Reviewed by Antti Koivisto.
box-sizing: border-box; means the width value sets the size of the border box (and not the content box).
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry):
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::computedContentWidth const):
(WebCore::Layout::FormattingContext::Geometry::computedMinWidth const):
(WebCore::Layout::FormattingContext::Geometry::computedMaxWidth const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin const):
2019-10-15 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Add <col> element's width attribute value to Layout::Box rare data
https://bugs.webkit.org/show_bug.cgi?id=202988
<rdar://problem/56291048>
Reviewed by Antti Koivisto.
Sadly RenderStyle does not have this value.
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::setColumnWidth):
(WebCore::Layout::Box::columnWidth const):
* layout/layouttree/LayoutBox.h:
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutBox):
(WebCore::Layout::outputLayoutBox):
2019-10-15 Zalan Bujtas <zalan@apple.com>
[LFC] Adjust computed height value when box sizing is border-box
https://bugs.webkit.org/show_bug.cgi?id=202965
<rdar://problem/56276771>
Reviewed by Antti Koivisto.
box-sizing: border-box; means the height value sets the size of the border box (and not the content box).
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::computedContentHeight const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases const):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):
* layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::displayBoxForLayoutBox):
* layout/LayoutUnits.h:
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
* layout/blockformatting/BlockFormattingContextQuirks.cpp:
(WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):
* layout/displaytree/DisplayBox.cpp:
(WebCore::Display::Box::Box):
(WebCore::Display::Box::Style::Style): Deleted.
* layout/displaytree/DisplayBox.h:
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computeWidthAndMargin):
(WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin const):
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::layoutTableCellBox):
* layout/tableformatting/TableFormattingContext.h:
* layout/tableformatting/TableFormattingContextGeometry.cpp:
(WebCore::Layout::TableFormattingContext::Geometry::tableCellHeightAndMargin const):
2019-10-15 Wenson Hsieh <wenson_hsieh@apple.com>
[Clipboard API] Implement getType() for ClipboardItems created from bindings
https://bugs.webkit.org/show_bug.cgi?id=202943
Reviewed by Tim Horton.
Adds basic support for ClipboardItem.getType(), in the case where the ClipboardItems are created by the page. To
achieve this, we introduce ClipboardItemDataSource, which represents the data source backing a given clipboard
item. This backing may either consist of a list of types and their corresponding DOMPromises (for ClipboardItems
that come from the page), or may consist of a list of items that will ask the platformr pasteboard for their
data (to be supported in a future patch).
See below for more details.
Test: editing/async-clipboard/clipboard-item-basic.html
* Modules/async-clipboard/Clipboard.h:
* Modules/async-clipboard/ClipboardItem.cpp:
(WebCore::clipboardItemPresentationStyle):
(WebCore::ClipboardItem::ClipboardItem):
Pass in the parent Clipboard object for ClipboardItems that are backed by the platform pasteboard (which are
returned by Clipboard.read()). (Note that this doesn't make any difference until this codepath is actually
exercised when we add support for Clipboard.read()).
(WebCore::ClipboardItem::create):
(WebCore::ClipboardItem::types const):
(WebCore::ClipboardItem::getType):
Plumb types() and getType() to the clipboard item's datasource.
(WebCore::ClipboardItem::navigator):
Make navigator() return the parent Clipboard object's navigator.
* Modules/async-clipboard/ClipboardItem.h:
* Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp: Added.
(WebCore::blobFromString):
(WebCore::ClipboardItemBindingsDataSource::ClipboardItemBindingsDataSource):
Store the given list of types and DOM promises.
(WebCore::ClipboardItemBindingsDataSource::types const):
(WebCore::ClipboardItemBindingsDataSource::getType):
Implement getType() by finding the matching promised type in the item's array of types, and waiting for the
promise to either resolve or reject. If the promise resolves to either a string or blob, we deliver the result
back to the page by resolving the promise returned by getType(). Otherwise, we reject it.
* Modules/async-clipboard/ClipboardItemBindingsDataSource.h:
* Modules/async-clipboard/ClipboardItemDataSource.h:
(WebCore::ClipboardItemDataSource::ClipboardItemDataSource):
* Modules/async-clipboard/ClipboardItemPasteboardDataSource.cpp:
Add a stub implementation of a clipboard item data source that is backed by data in the platform pasteboard. In
a future patch, this will implement getType() by calling out to the platform pasteboard.
(WebCore::ClipboardItemPasteboardDataSource::ClipboardItemPasteboardDataSource):
(WebCore::ClipboardItemPasteboardDataSource::types const):
(WebCore::ClipboardItemPasteboardDataSource::getType):
* Modules/async-clipboard/ClipboardItemPasteboardDataSource.h:
* Modules/mediastream/RTCRtpReceiver.cpp:
* Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.cpp:
Unrelated build fixes, due to changes in unified source groupings.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/network/mac/UTIUtilities.mm:
More build fixes, due to changes in unified source groupings.
2019-10-15 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Add support for text-transform: uppercase/lowercase
https://bugs.webkit.org/show_bug.cgi?id=202968
<rdar://problem/56278141>
Reviewed by Antti Koivisto.
The text content on the layout box should be in its final state (This might change if we actually need the original content for some reason though).
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::applyTextTransform):
(WebCore::Layout::TreeBuilder::createLayoutBox):
2019-10-14 Youenn Fablet <youenn@apple.com>
Handle service worker loads through NetworkResourceLoader
https://bugs.webkit.org/show_bug.cgi?id=202309
Reviewed by Alex Christensen.
Allow to serialize HTTP header names as enumeration.
Updated SWServer ability to handle schemes by adding built-in support for HTTP and HTTPS as done in LegacySchemeRegistry.
Covered by existing tests.
* loader/ResourceLoaderOptions.h:
* platform/network/create-http-header-name-table:
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::canHandleScheme const):
* workers/service/server/SWServer.h:
* workers/service/server/SWServerJobQueue.cpp:
(WebCore::SWServerJobQueue::runRegisterJob):
2019-10-14 Tim Horton <timothy_horton@apple.com>
Unify sources for bindings more densely
https://bugs.webkit.org/show_bug.cgi?id=202918
Reviewed by Simon Fraser.
No new tests, just a build time speedup.
For me, this is a reliable 17% boost on the WebCore Build Time Benchmark.
* Scripts/generate-unified-sources.sh:
Use dense bundles for JS* and bindings/js/*.
This seems acceptable for a few reasons:
- most of the time building these files is spent parsing the exact
same set of JSC headers, because the generated bindings code ends
up including the same set of things
- the incremental build cost of bundling more bindings sources together
is small, because the JSC headers dominate the time
- folks will frequently have to rebuild all of the bindings (on every
pull, for example, because they indirectly include most JSC headers),
but rarely end up rebuilding only a single one (in my experience)
* bindings/js/ReadableStreamDefaultController.cpp:
(WebCore::readableStreamCallFunction):
(WebCore::ReadableStreamDefaultController::invoke):
(WebCore::callFunction): Deleted.
Deduplicate static functions that now get bundled together.
* platform/graphics/ca/PlatformCALayer.cpp:
(WebCore::PlatformCALayer::currentTimeToMediaTime):
* platform/graphics/ca/PlatformCALayer.h:
In older macOS SDKs, CABase.h included ApplicationServices.h, which
causes lots of trouble.
2019-10-14 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] White pages in AC mode: Cannot get default EGL display: EGL_BAD_PARAMETER
https://bugs.webkit.org/show_bug.cgi?id=202362
Reviewed by Carlos Alberto Lopez Perez.
The problem is that PlatformDisplayLibWPE::initialize() is failing to initialize the EGL display for some
reason. We need to understand why, but we should also handle the case of failing to initialize the EGL display
and simply disable accelerated compositing mode to avoid white pages and crashes in websites using WebGL. This
patch doesn't actually fix the bug, it just handles the EGL display initialization failure.
* platform/graphics/PlatformDisplay.cpp:
(WebCore::PlatformDisplay::~PlatformDisplay): Set s_sharedDisplayForCompositing to nullptr when the shared
display for compositing is destroyed.
* platform/graphics/libwpe/PlatformDisplayLibWPE.cpp:
(WebCore::PlatformDisplayLibWPE::initialize): Return false when EGL display initialization fails.
* platform/graphics/libwpe/PlatformDisplayLibWPE.h:
2019-10-14 Chris Dumez <cdumez@apple.com>
[WK2] Have WebBackForwardCache class coordinate page caching in all WebProcesses
https://bugs.webkit.org/show_bug.cgi?id=202929
<rdar://problem/56250421>
Reviewed by Alex Christensen.
Drop FrameLoaderClient::didSaveToPageCache() function as it is no longer needed.
Instead, we now call HistoryItem::notifyChanged() whenever HistoryItem::m_cachedPage
changes. This communicates to the UIProcess whether or not a HistoryItem has an
associated CachedPage.
I also added more release logging to the PageCache and renamed its logging channel
from PageCache to WebBackForwardCache to match the UIProcess's channel.
* history/BackForwardItemIdentifier.h:
(WebCore::BackForwardItemIdentifier::string const):
* history/CachedFrame.cpp:
(WebCore::CachedFrame::CachedFrame):
* history/HistoryItem.cpp:
(WebCore::HistoryItem::setCachedPage):
(WebCore::HistoryItem::takeCachedPage):
* history/HistoryItem.h:
* history/PageCache.cpp:
(WebCore::PageCache::addIfCacheable):
(WebCore::PageCache::take):
(WebCore::PageCache::removeAllItemsForPage):
(WebCore::PageCache::get):
(WebCore::PageCache::remove):
(WebCore::PageCache::prune):
* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::commitProvisionalLoad):
(WebCore::FrameLoader::loadProvisionalItemFromCachedPage):
* loader/FrameLoaderClient.h:
* platform/Logging.h:
2019-10-14 Said Abou-Hallawa <sabouhallawa@apple.com>
Outsets for referenced SVG filters are always zero
https://bugs.webkit.org/show_bug.cgi?id=202826
Reviewed by Simon Fraser.
Sometimes the filter is applied only to a part of the image, so we need
to enlarge the source rectangle such that the border of the result image
looks like as if the filter were applied to the whole image.
The filter outsets should only be calculated for the blur and the drop
shadow filters. The problem is FilterOperations::outsets() was returning
empty outsets always for the referenced filters.
Since the referenced filters must be software filters, the fix is to rely
on CSSFilter in calculating the filter outsets for software filters.
By adding a virtual function called outset() to the FilterEffect class,
we can loop through the CSSFilter::m_effects asking every FilterEffect
to return its outset(). This function is only overridden by FEDropShadow
and FEGaussianBlur.
This should work because RenderLayer builds the CSSFilter when the styleChanged()
happens through its updateFilterPaintingStrategy(). This will guarantee
that m_filters->filter()->outsets() will return the correct outsets for
the referenced and the non-referenced software filters.
We should keep FilterOperations::outsets() because it has be used for
the hardware non-referenced filters. In that case, RenderLayer does not
build the the filter effects. Therefore m_filters can't be used because
it is null in this case.
For accuracy, hasOutsets() implementation is deleted. Having a blur or
drop shadow filter effect is not enough to say hasOutsets() is true. We
need to calculate the outsets first and then ask if it isZero() or not.
Test: css3/filters/svg-blur-filter-clipped.html
* platform/graphics/IntRectExtent.h:
(WebCore::operator==):
(WebCore::operator+=):
(WebCore::IntRectExtent::expandRect const): Deleted.
IntRectExtent is only used as a filter outsets. So add the definition of
IntOutsets in IntRectExtent.h.
* platform/graphics/filters/FEDropShadow.cpp:
(WebCore::FEDropShadow::outsets const):
* platform/graphics/filters/FEDropShadow.h:
* platform/graphics/filters/FEGaussianBlur.cpp:
(WebCore::FEGaussianBlur::calculateOutsetSize):
(WebCore::FEGaussianBlur::outsets const):
* platform/graphics/filters/FEGaussianBlur.h:
* platform/graphics/filters/FilterEffect.h:
(WebCore::FilterEffect::outsets const):
* platform/graphics/filters/FilterOperations.cpp:
(WebCore::FilterOperations::outsets const):
(WebCore::outsetSizeForBlur): Deleted.
(WebCore::FilterOperations::hasOutsets const): Deleted.
* platform/graphics/filters/FilterOperations.h:
(WebCore::FilterOperations::hasOutsets const):
* platform/graphics/texmap/TextureMapperLayer.cpp:
(WebCore::TextureMapperLayer::computeOverlapRegions):
* rendering/CSSFilter.cpp:
(WebCore::CSSFilter::build):
(WebCore::CSSFilter::computeSourceImageRectForDirtyRect):
(WebCore::CSSFilter::outsets const):
Calculate m_outsets once and cache its value for later uses.
* rendering/CSSFilter.h:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::setFilterBackendNeedsRepaintingInRect):
(WebCore::RenderLayer::hasAncestorWithFilterOutsets const):
(WebCore::transparencyClipBox):
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayer.h:
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::filterOutsets const):
(WebCore::RenderStyle::hasFilterOutsets const): Deleted.
2019-10-14 Wenson Hsieh <wenson_hsieh@apple.com>
[Clipboard API] Refactor custom pasteboard writing codepaths to handle multiple items
https://bugs.webkit.org/show_bug.cgi?id=202916
Reviewed by Tim Horton.
Adjusts the `Pasteboard::write` codepath for writing PasteboardCustomData to the platform pasteboard, such that
it accepts multiple PasteboardCustomDatas. No new tests, since there is no behavior change.
* dom/DataTransfer.cpp:
(WebCore::DataTransfer::commitToPasteboard):
Pass in the PasteboardCustomData as a single-item vector.
* platform/Pasteboard.h:
* platform/PasteboardStrategy.h:
* platform/PlatformPasteboard.h:
* platform/StaticPasteboard.h:
* platform/cocoa/PasteboardCocoa.mm:
(WebCore::Pasteboard::writeCustomData):
* platform/gtk/PasteboardGtk.cpp:
(WebCore::Pasteboard::writeCustomData):
* platform/gtk/PlatformPasteboardGtk.cpp:
(WebCore::PlatformPasteboard::write):
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::write):
Adjust this method to return the updated change count.
* platform/libwpe/PasteboardLibWPE.cpp:
(WebCore::Pasteboard::writeCustomData):
* platform/libwpe/PlatformPasteboardLibWPE.cpp:
(WebCore::PlatformPasteboard::write):
* platform/mac/PlatformPasteboardMac.mm:
(WebCore::PlatformPasteboard::write):
Add logic to fall back to writing legacy pasteboard types in the case where there is only one item.
* platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::writeCustomData):
2019-10-14 Ryosuke Niwa <rniwa@webkit.org>
Deploy smart pointers in RadioButtonGroups and RadioButtonGroup
https://bugs.webkit.org/show_bug.cgi?id=202942
Reviewed by Zalan Bujtas.
Use Ref & WeakPtr instead of raw pointers in RadioButtonGroups and RadioButtonGroup.
Also made RadioButtonGroups::m_nameToGroupMap a HashMap instead of a unique_ptr of HashMap
since RadioButtonGroups is lazily created in TreeScope as of r250708.
No new tests since there should be no observable behavioral change.
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::addRadioButtonGroupMembers const):
* dom/RadioButtonGroups.cpp:
(WebCore::RadioButtonGroup): Use WeakHashSet and WeakPtr instead of raw pointers.
(WebCore::RadioButtonGroup::isEmpty const):
(WebCore::RadioButtonGroup::checkedButton const):
(WebCore::RadioButtonGroup::members const):
(WebCore::RadioButtonGroup::setCheckedButton):
(WebCore::RadioButtonGroup::updateCheckedState):
(WebCore::RadioButtonGroup::requiredStateChanged):
(WebCore::RadioButtonGroup::remove):
(WebCore::RadioButtonGroup::setNeedsStyleRecalcForAllButtons):
(WebCore::RadioButtonGroup::updateValidityForAllButtons):
(WebCore::RadioButtonGroup::contains const):
(WebCore::RadioButtonGroups::addButton):
(WebCore::RadioButtonGroups::groupMembers const):
(WebCore::RadioButtonGroups::updateCheckedState):
(WebCore::RadioButtonGroups::requiredStateChanged):
(WebCore::RadioButtonGroups::checkedButtonForGroup const):
(WebCore::RadioButtonGroups::hasCheckedButton const):
(WebCore::RadioButtonGroups::isInRequiredGroup const):
(WebCore::RadioButtonGroups::removeButton):
* dom/RadioButtonGroups.h:
(WebCore::RadioButtonGroups):
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::radioButtonGroup const):
(WebCore::HTMLInputElement::checkedRadioButtonForGroup const):
* html/HTMLInputElement.h:
2019-10-14 David Quesada <david_quesada@apple.com>
Remove WebCore::IOSApplication::isWebApp()
https://bugs.webkit.org/show_bug.cgi?id=181259
Reviewed by Alex Christensen.
As of iOS 11, the Web.app process no longer uses WebKit directly, so IOSApplication::isWebApp()
is never true. Since it's no longer needed, remove it.
* platform/RuntimeApplicationChecks.h:
* platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::IOSApplication::isWebApp): Deleted.
2019-10-14 Andy Estes <aestes@apple.com>
REGRESSION (r243682): Quick Look previews loaded from the memory cache render with the wrong content type
https://bugs.webkit.org/show_bug.cgi?id=202935
<rdar://problem/54318133>
Reviewed by Tim Horton.
When loading a Quick Look preview after deciding content policy, PreviewLoader would update
DocumentLoader with the preview response (the response that contains the preview's
Content-Type). It would not update the CachedResource representing the preview main
resource, however, which caches the underlying ResourceResponse in m_response.
When loading from the memory cache, it's the CachedResource's response that's used to
synthesize DocumentLoader::responseReceived. When loading Quick Look previews *before*
deciding content policy, this response would be the preview response, but as described
above, when loading after deciding content policy it's the underlying response.
This patch updates a Quick Look preview's CachedResource with the preview response along
with updating DocumentLoader so that there is not a mismatch between the resource's content
type and its underlying data.
Added a new API test.
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::previewResponseReceived):
* loader/DocumentLoader.h:
* loader/ResourceLoader.h:
(WebCore::ResourceLoader::didReceivePreviewResponse):
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::didReceivePreviewResponse):
* loader/SubresourceLoader.h:
* loader/cache/CachedRawResource.cpp:
(WebCore::CachedRawResource::previewResponseReceived):
* loader/cache/CachedRawResource.h:
* loader/cache/CachedRawResourceClient.h:
(WebCore::CachedRawResourceClient::previewResponseReceived):
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::previewResponseReceived):
* loader/cache/CachedResource.h:
* loader/ios/PreviewLoader.mm:
(-[WebPreviewLoader _loadPreviewIfNeeded]):
2019-10-14 Youenn Fablet <youenn@apple.com>
A response body promise should be rejected in case of a failure happening after the HTTP response
https://bugs.webkit.org/show_bug.cgi?id=202792
Reviewed by Chris Dumez.
Test: imported/w3c/web-platform-tests/service-workers/service-worker/fetch-error.https.html
* Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::BodyLoader::didFail):
Propagate error to fetch body consumer if any.
2019-10-14 Wenson Hsieh <wenson_hsieh@apple.com>
[Clipboard API] Support writing multiple PasteboardCustomData with SharedBuffers to the pasteboard
https://bugs.webkit.org/show_bug.cgi?id=202851
Reviewed by Darin Adler.
This patch refactors some logic around WebCore::PasteboardCustomData, in preparation for implementing the async
clipboard API. There are two main goals of this refactoring:
1. Enable writing multiple items (each backed by PasteboardCustomData) to the platform pasteboard.
2. Enable writing platform data in the form of SharedBuffers to the platform pasteboard.
See below for more details; no tests, as there is no change in behavior yet.
* Headers.cmake:
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
Move PasteboardCustomData out of Pasteboard.h and into its own file.
* dom/DataTransfer.cpp:
(WebCore::DataTransfer::commitToPasteboard):
* editing/cocoa/EditorCocoa.mm:
(WebCore::Editor::getPasteboardTypesAndDataForAttachment):
* platform/Pasteboard.cpp:
(WebCore::PasteboardCustomData::createSharedBuffer const): Deleted.
(WebCore::PasteboardCustomData::fromSharedBuffer): Deleted.
Moved these method implementations to PasteboardCustomData.cpp.
* platform/Pasteboard.h:
Refactor PasteboardCustomData so that its member variables are now private, and encapsulated behind methods
Additionally, make it so that the only way to set data on PasteboardCustomData is to use the writeString,
writeData, and writeStringInCustomData methods, which ensure that the PasteboardCustomData is always in a
consistent state.
* platform/PasteboardCustomData.cpp: Added.
(WebCore::copyPlatformData):
(WebCore::PasteboardCustomData::Entry::Entry):
(WebCore::PasteboardCustomData::Entry::operator=):
Refactor the implementation of PasteboardCustomData, so that it contains a list of PasteboardCustomData entries
instead of individual Vectors and HashMaps.
(WebCore::PasteboardCustomData::PasteboardCustomData):
(WebCore::PasteboardCustomData::createSharedBuffer const):
(WebCore::PasteboardCustomData::fromSharedBuffer):
(WebCore::PasteboardCustomData::writeString):
(WebCore::PasteboardCustomData::writeData):
(WebCore::PasteboardCustomData::writeStringInCustomData):
(WebCore::PasteboardCustomData::addOrMoveEntryToEnd):
Move logic from StaticPasteboard into PasteboardCustomData, and refactor these methods to handle
Vector<PasteboardCustomData::Entry>.
(WebCore::PasteboardCustomData::clear):
(WebCore::PasteboardCustomData::operator=):
(WebCore::PasteboardCustomData::orderedTypes const):
(WebCore::PasteboardCustomData::hasData const):
(WebCore::PasteboardCustomData::hasSameOriginCustomData const):
(WebCore::PasteboardCustomData::sameOriginCustomStringData const):
(WebCore::PasteboardCustomData::readBuffer const):
(WebCore::PasteboardCustomData::readString const):
(WebCore::PasteboardCustomData::readStringInCustomData const):
(WebCore::PasteboardCustomData::forEachType const):
(WebCore::PasteboardCustomData::forEachPlatformString const):
(WebCore::PasteboardCustomData::forEachCustomString const):
(WebCore::PasteboardCustomData::forEachPlatformStringOrBuffer const):
Moved these method implementations from StaticPasteboard to PasteboardCustomData, and also introduced some new
methods to help iterate through types and data.
* platform/PasteboardCustomData.h: Added.
(WebCore::PasteboardCustomData::origin const):
(WebCore::PasteboardCustomData::setOrigin):
(WebCore::PasteboardCustomData::data const):
* platform/PasteboardStrategy.h:
* platform/PlatformPasteboard.h:
* platform/SharedBuffer.cpp:
(WebCore::SharedBuffer::decoder const):
* platform/SharedBuffer.h:
* platform/StaticPasteboard.cpp:
(WebCore::StaticPasteboard::hasData):
(WebCore::StaticPasteboard::typesSafeForBindings):
(WebCore::StaticPasteboard::typesForLegacyUnsafeBindings):
(WebCore::StaticPasteboard::readString):
(WebCore::StaticPasteboard::readStringInCustomData):
(WebCore::StaticPasteboard::writeString):
(WebCore::StaticPasteboard::writeData):
(WebCore::StaticPasteboard::writeStringInCustomData):
(WebCore::StaticPasteboard::clear):
(WebCore::StaticPasteboard::takeCustomData):
(WebCore::StaticPasteboard::StaticPasteboard): Deleted.
Refactor StaticPasteboard to now contain a PasteboardCustomData; additionally, adjust several methods in
StaticPasteboard to simply call into PasteboardCustomData to write, read, or clear data.
(WebCore::updateTypes): Deleted.
* platform/StaticPasteboard.h:
* platform/cocoa/PasteboardCocoa.mm:
(WebCore::Pasteboard::readStringInCustomData):
(WebCore::Pasteboard::readOrigin):
(WebCore::PasteboardCustomData::cocoaType): Deleted.
Moved the implementation of PasteboardCustomData::cocoaType from PasteboardCocoa.mm to
PasteboardCustomDataCocoa.mm.
* platform/cocoa/PasteboardCustomDataCocoa.mm: Added.
(WebCore::PasteboardCustomData::cocoaType):
* platform/ios/AbstractPasteboard.h:
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::changeCount const):
(WebCore::registerItemsToPasteboard):
(WebCore::registerItemToPasteboard):
(WebCore::PlatformPasteboard::write):
Support writing multiple PasteboardCustomData objects to the platform pasteboard on iOS, by generating
NSItemProviders for each one. This refactors the existing `registerItemToPasteboard` helper to handle multiple
registration lists, renames it to `registerItemsToPasteboard` (plural), and then reimplements
`registerItemToPasteboard` in terms of `registerItemsToPasteboard`.
(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):
(WebCore::createItemProviderRegistrationList):
Adjust these to use getters on PasteboardCustomData instead of accessing the member variables directly.
* platform/ios/WebItemProviderPasteboard.mm:
(-[WebItemProviderPasteboard init]):
(-[WebItemProviderPasteboard stageRegistrationLists:]):
(-[WebItemProviderPasteboard clearRegistrationLists]):
(-[WebItemProviderPasteboard takeRegistrationLists]):
Refactor registration list staging on WebItemProviderPasteboard to support multiple registration lists, each
representing a single item provider.
(-[WebItemProviderPasteboard stageRegistrationList:]): Deleted.
(-[WebItemProviderPasteboard takeRegistrationList]): Deleted.
* platform/mac/PasteboardMac.mm:
(WebCore::Pasteboard::write):
* platform/mac/PasteboardWriter.mm:
(WebCore::createPasteboardWriter):
* platform/mac/PlatformPasteboardMac.mm:
(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):
(WebCore::PlatformPasteboard::write):
Support writing multiple PasteboardCustomData objects to the platform pasteboard on macOS, by creating and
setting NSPasteboardItems for each custom data. This means that instead of using legacy macOS pasteboard types,
we need to use the "modern" NSPasteboardTypes when writing each item. This is because NSPasteboardItem quietly
fails when attempting to set data for a legacy pasteboard type.
(WebCore::createPasteboardItem):
2019-10-14 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r251081.
Broke macOS and iOS builds
Reverted changeset:
"transform-box: content-box, stroke-box missing"
https://bugs.webkit.org/show_bug.cgi?id=201892
https://trac.webkit.org/changeset/251081
2019-10-14 Dean Jackson <dino@apple.com>
Reset maxCanvasPixelMemory between tests
https://bugs.webkit.org/show_bug.cgi?id=202941
<rdar://problem/56260865>
Reviewed by Wenson Hsieh.
Reset the maximum canvas memory between tests.
* testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
2019-10-14 Myles C. Maxfield <mmaxfield@apple.com>
[Cocoa] font-family:system-ui on Chinese systems don't get Chinese quote marks
https://bugs.webkit.org/show_bug.cgi?id=202778
Unreviewed.
Addressing post-review comment.
* platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:
(WebCore::SystemFontDatabaseCoreText::createSystemUIFont):
2019-10-14 Alex Christensen <achristensen@webkit.org>
REGRESSION: [iOS 13?] TestWebKitAPI.SharedBufferTest.tryCreateArrayBufferLargeSegments is failing
https://bugs.webkit.org/show_bug.cgi?id=201902
Reviewed by Ryosuke Niwa.
* Modules/webauthn/fido/U2fResponseConverter.cpp:
(fido::WebCore::createAttestedCredentialDataFromU2fRegisterResponse):
2019-10-14 Russell Epstein <russell_e@apple.com>
Unreviewed, rolling out r251081.
Broke macOS and iOS builds.
Reverted changeset:
"transform-box: content-box, stroke-box missing"
https://bugs.webkit.org/show_bug.cgi?id=201892
https://trac.webkit.org/changeset/251081
2019-10-14 Dirk Schulze <krit@webkit.org>
transform-box: content-box, stroke-box missing
https://bugs.webkit.org/show_bug.cgi?id=201892
Reviewed by Simon Fraser.
Added the keywords content-box and stroke-box to the
transform-box CSS property.
Those keywords were added to the spec after the implementation
in WebKit.
Test: transforms/transform-box.html
* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator TransformBox const):
* css/CSSProperties.json:
* css/CSSValueKeywords.in:
* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::parseSingleValue):
* rendering/RenderLayer.cpp:
(WebCore::computeReferenceBox):
(WebCore::transformBoxToCSSBoxType):
(WebCore::RenderLayer::currentTransform const):
* rendering/style/RenderStyleConstants.h:
* svg/SVGGraphicsElement.cpp:
(WebCore::SVGGraphicsElement::animatedLocalTransform const):
2019-10-14 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r251045.
Broke internal builds
Reverted changeset:
"AX: Make AXIsolatedTree compile again"
https://bugs.webkit.org/show_bug.cgi?id=202702
https://trac.webkit.org/changeset/251045
2019-10-14 youenn fablet <youenn@apple.com>
Reuse existing web processes for running service workers
https://bugs.webkit.org/show_bug.cgi?id=202195
Reviewed by Chris Dumez.
Update implementation to be able to run service workers jointly with page.
Add internals API to get the process ID.
This allows writing tests to check whether a service worker is in the same process as its client or not.
Test: http/wpt/service-workers/service-worker-different-process.https.html
* testing/Internals.cpp:
(WebCore::Internals::processIdentifier const):
* testing/Internals.h:
* testing/Internals.idl:
* testing/ServiceWorkerInternals.cpp:
(WebCore::ServiceWorkerInternals::processIdentifier const):
* testing/ServiceWorkerInternals.h:
* testing/ServiceWorkerInternals.idl:
* workers/service/ServiceWorkerProvider.cpp:
(WebCore::ServiceWorkerProvider::registerServiceWorkerClients):
Do not register dummy documents whose sole purpose is to do loading for service workers.
* workers/service/context/SWContextManager.cpp:
(WebCore::SWContextManager::setConnection):
Now that connections might be created more than once on a given process,
Make sure that the replaced connection is stopped or there is no replaced connection.
(WebCore::SWContextManager::stopAllServiceWorkers):
Add routine to stop all service workers running in a given web process.
* workers/service/context/SWContextManager.h:
(WebCore::SWContextManager::Connection::isClosed const):
(WebCore::SWContextManager::Connection::setAsClosed):
2019-10-13 Tim Horton <timothy_horton@apple.com>
Stop 'using namespace *Names' in files generated by make_names.pl
https://bugs.webkit.org/show_bug.cgi?id=202907
Reviewed by Geoffrey Garen.
* dom/make_names.pl:
(printFunctionTable):
(printFactoryCppFile):
(printWrapperFactoryCppFile):
Stop 'using namespace SVGNames' and 'using namepace HTMLNames' in
files generated by make_names.pl. Just use fully-qualified names.
There is some overlap between the two namespaces, so this is a
prerequsite for doing more aggressive unified source bundling in bindings.
2019-10-13 Tim Horton <timothy_horton@apple.com>
Don't include ApplicationServices in npapi.h
https://bugs.webkit.org/show_bug.cgi?id=202911
Reviewed by Sam Weinig.
* plugins/npapi.h:
Just include CoreGraphics.h, not ApplicationServices.h.
ApplicationServices.h pulls in all sorts of crazy things like
QuickDraw headers that have symbol conflicts with JSC (like Handle).
2019-10-13 Stephan Szabo <stephan.szabo@sony.com>
Wincairo build broken: EventLoop.h: No such file or directory
https://bugs.webkit.org/show_bug.cgi?id=202893
Reviewed by Fujii Hironori.
Remove include of EventLoop.h.
* platform/network/curl/SynchronousLoaderClientCurl.cpp:
2019-10-13 Konstantin Tokarev <annulen@yandex.ru>
Fix compilation of Crypto.cpp on macOS with !WEB_CRYPTO
https://bugs.webkit.org/show_bug.cgi?id=202895
Reviewed by Alexey Proskuryakov.
Crypto.cpp does not use getCommonCryptoDigestAlgorithm(), defined in
CommonCryptoUtilities.h, but requires CommonCrypto includes which are
coming with it. However, when WEB_CRYPTO is disabled necessary
transitive includes are missing.
* page/Crypto.cpp:
2019-10-13 Simon Fraser <simon.fraser@apple.com>
Convert ENinePieceImageRule into an enum class and rename
https://bugs.webkit.org/show_bug.cgi?id=202889
Reviewed by Alex Christensen.
Enum classify ENinePieceImageRule.
The bitfield in NinePieceImage isn't saving anything so don't use one there.
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::valueForRepeatRule):
* css/CSSToStyleMap.cpp:
(WebCore::CSSToStyleMap::mapNinePieceImageRepeat):
* css/StyleBuilderCustom.h:
(WebCore::ApplyPropertyBorderImageModifier::applyInitialValue):
* rendering/style/NinePieceImage.cpp:
(WebCore::NinePieceImage::NinePieceImage):
(WebCore::NinePieceImage::computeMiddleTileScale):
(WebCore::NinePieceImage::computeTileScales):
(WebCore::NinePieceImage::Data::Data):
(WebCore::NinePieceImage::Data::create):
* rendering/style/NinePieceImage.h:
(WebCore::NinePieceImage::horizontalRule const):
(WebCore::NinePieceImage::setHorizontalRule):
(WebCore::NinePieceImage::verticalRule const):
(WebCore::NinePieceImage::setVerticalRule):
2019-10-13 Simon Fraser <simon.fraser@apple.com>
Clarify the naming of the radius-related functions on BorderData
https://bugs.webkit.org/show_bug.cgi?id=202888
Reviewed by Alex Christensen.
BorderData had some confusingly named data members and functions ("topLeft"'"). Renamed
to include the term "radius".
* platform/graphics/PathUtilities.cpp:
(WebCore::PathUtilities::pathWithShrinkWrappedRectsForOutline):
* rendering/style/BorderData.h:
(WebCore::BorderData::BorderData):
(WebCore::BorderData::hasBorderRadius const):
(WebCore::BorderData::operator== const):
(WebCore::BorderData::topLeftRadius const):
(WebCore::BorderData::topRightRadius const):
(WebCore::BorderData::bottomLeftRadius const):
(WebCore::BorderData::bottomRightRadius const):
(WebCore::BorderData::topLeft const): Deleted.
(WebCore::BorderData::topRight const): Deleted.
(WebCore::BorderData::bottomLeft const): Deleted.
(WebCore::BorderData::bottomRight const): Deleted.
* rendering/style/RenderStyle.cpp:
(WebCore::calcRadiiFor):
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::borderTopLeftRadius const):
(WebCore::RenderStyle::borderTopRightRadius const):
(WebCore::RenderStyle::borderBottomLeftRadius const):
(WebCore::RenderStyle::borderBottomRightRadius const):
(WebCore::RenderStyle::resetBorderTopLeftRadius):
(WebCore::RenderStyle::resetBorderTopRightRadius):
(WebCore::RenderStyle::resetBorderBottomLeftRadius):
(WebCore::RenderStyle::resetBorderBottomRightRadius):
(WebCore::RenderStyle::setBorderTopLeftRadius):
(WebCore::RenderStyle::setBorderTopRightRadius):
(WebCore::RenderStyle::setBorderBottomLeftRadius):
(WebCore::RenderStyle::setBorderBottomRightRadius):
2019-10-13 Simon Fraser <simon.fraser@apple.com>
Convert LineBoxContain to use an OptionSet<>
https://bugs.webkit.org/show_bug.cgi?id=202890
Reviewed by Alex Christensen.
Use OptionSet<LineBoxContain>.
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::createLineBoxContainValue):
* css/CSSLineBoxContainValue.cpp:
(WebCore::CSSLineBoxContainValue::CSSLineBoxContainValue):
(WebCore::CSSLineBoxContainValue::customCSSText const):
* css/CSSLineBoxContainValue.h:
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertLineBoxContain):
* css/parser/CSSPropertyParser.cpp:
(WebCore::consumeLineBoxContain):
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::minLineHeightForReplacedRenderer const):
* rendering/RootInlineBox.cpp:
(WebCore::RootInlineBox::ascentAndDescentForBox const):
(WebCore::RootInlineBox::includeLeadingForBox const):
(WebCore::RootInlineBox::includeFontForBox const):
(WebCore::RootInlineBox::includeGlyphsForBox const):
(WebCore::RootInlineBox::includeInitialLetterForBox const):
(WebCore::RootInlineBox::includeMarginForBox const):
(WebCore::RootInlineBox::fitsToGlyphs const):
(WebCore::RootInlineBox::includesRootLineBoxFontOrLeading const):
* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseForFontAndText):
(WebCore::SimpleLineLayout::canUseForStyle):
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::lineBoxContain const):
(WebCore::RenderStyle::setLineBoxContain):
(WebCore::RenderStyle::initialLineBoxContain):
* rendering/style/StyleRareInheritedData.cpp:
(WebCore::StyleRareInheritedData::StyleRareInheritedData):
* rendering/style/StyleRareInheritedData.h:
* rendering/updating/RenderTreeBuilderFirstLetter.cpp:
(WebCore::styleForFirstLetter):
2019-10-12 Ryosuke Niwa <rniwa@webkit.org>
[iOS] Crash in WebCore::DOMWindow::incrementScrollEventListenersCount
https://bugs.webkit.org/show_bug.cgi?id=202878
Reviewed by Alex Christensen.
Added the missing null check in tryAddEventListener and tryRemoveEventListener for scroll event.
Test: fast/events/scroll-event-on-document-without-window.html
* dom/Node.cpp:
(WebCore::tryAddEventListener):
(WebCore::tryRemoveEventListener):
2019-10-12 Simon Fraser <simon.fraser@apple.com>
Move CSSReflectionDirection into RenderStyleConstants as ReflectionDirection
https://bugs.webkit.org/show_bug.cgi?id=202886
Reviewed by Sam Weinig.
Make CSSReflectionDirection an enum class ReflectionDirection, and fix the usage sites.
* Headers.cmake:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::valueForReflection):
* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator ReflectionDirection const):
(WebCore::CSSPrimitiveValue::operator CSSReflectionDirection const): Deleted.
* css/CSSReflectionDirection.h: Removed.
* rendering/RenderBox.cpp:
(WebCore::RenderBox::reflectionOffset const):
(WebCore::RenderBox::reflectedRect const):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
* rendering/style/RenderStyleConstants.cpp:
(WebCore::operator<<):
* rendering/style/RenderStyleConstants.h:
* rendering/style/StyleReflection.h:
(WebCore::StyleReflection::direction const):
(WebCore::StyleReflection::setDirection):
(WebCore::StyleReflection::StyleReflection):
2019-10-12 Simon Fraser <simon.fraser@apple.com>
Fix the spelling of ThreeDDarkDhasowColor and unwrap the ThemeType enums
https://bugs.webkit.org/show_bug.cgi?id=202887
Reviewed by Wenson Hsieh.
ThreeDDarkDhasowColor was misspelled, and one enum value per line please.
* platform/ThemeTypes.h:
2019-10-12 Chris Dumez <cdumez@apple.com>
Add [ActiveDOMObject] to IDLs of ActiveDOMObjects
https://bugs.webkit.org/show_bug.cgi?id=202869
Reviewed by Ryosuke Niwa.
Add [ActiveDOMObject] to IDLs of ActiveDOMObjects, this is necessary so that the wrapper
stays alive as long as ActiveDOMObject::hasPendingActivity() returns true. We may have
subtle lifetime bugs otherwise.
* Modules/encryptedmedia/MediaKeySession.h:
* Modules/encryptedmedia/MediaKeySession.idl:
* Modules/entriesapi/FileSystemDirectoryReader.idl:
* Modules/entriesapi/FileSystemEntry.idl:
* Modules/geolocation/Geolocation.idl:
* Modules/indexeddb/IDBObjectStore.h:
* Modules/indexeddb/IDBObjectStore.idl:
* Modules/paymentrequest/PaymentResponse.idl:
* Modules/webvr/VRDisplay.h:
* Modules/webvr/VRDisplay.idl:
* workers/service/ServiceWorkerContainer.idl:
2019-10-12 Simon Fraser <simon.fraser@apple.com>
Implement TextStream-based dumping for all the RenderStyle and SVGRenderStyle enum classes
https://bugs.webkit.org/show_bug.cgi?id=202877
Reviewed by Dean Jackson.
Make style-related enum classes dumpable with TextStream, and make some SVG style-related
classes dumpable.
* rendering/style/RenderStyleConstants.cpp:
(WebCore::operator<<):
* rendering/style/RenderStyleConstants.h:
* rendering/style/SVGRenderStyleDefs.cpp:
(WebCore::operator<<):
* rendering/style/SVGRenderStyleDefs.h:
* rendering/style/ShadowData.cpp:
(WebCore::operator<<):
* rendering/style/ShadowData.h:
2019-10-12 Chris Dumez <cdumez@apple.com>
Unreviewed, rolling out r251040.
Broke IDB tests in Debug
Reverted changeset:
"Add [ActiveDOMObject] to IDLs of ActiveDOMObjects"
https://bugs.webkit.org/show_bug.cgi?id=202869
https://trac.webkit.org/changeset/251040
2019-10-12 Ryosuke Niwa <rniwa@webkit.org>
Invoke callbacks registered by requestIdleCallback
https://bugs.webkit.org/show_bug.cgi?id=202824
Reviewed by Antti Koivisto.
Invoke callbacks registered by requestIdleCallback unless it's canceled.
To do this, this patch introduces WindowEventLoop class, which represents the HTML5 event loop:
https://html.spec.whatwg.org/multipage/webappapis.html#window-event-loop
Because each and only each agent cluster is meant to have its own window event loop, this class will be shared
across multiple documents of the same registrable domain:
https://html.spec.whatwg.org/multipage/webappapis.html#integration-with-the-javascript-agent-cluster-formalism
Tests: requestidlecallback/requestidlecallback-is-called.html
requestidlecallback/requestidlecallback-is-not-called-when-canceled.html
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/Document.cpp:
(WebCore::Document::eventLoop): Added.
(WebCore::Document::requestIdleCallback): Associate IdleCallbackController with this document.
* dom/Document.h:
(WebCore::Document::idleCallbackController): Added. Used for release assertions.
* dom/IdleCallbackController.cpp:
(WebCore::IdleCallbackController::IdleCallbackController): Keeps a weak pointer to Document.
(WebCore::IdleCallbackController::queueIdleCallback):
(WebCore::IdleCallbackController::removeIdleCallback):
(WebCore::IdleCallbackController::queueTaskToStartIdlePeriod): Added.
(WebCore::IdleCallbackController::startIdlePeriod): Added. Implements the start an idle period algorithm:
https://w3c.github.io/requestidlecallback/#start-an-idle-period-algorithm
(WebCore::IdleCallbackController::queueTaskToInvokeIdleCallbacks): Added.
(WebCore::IdleCallbackController::invokeIdleCallbacks): Added. The invoke idle callback timeout algorithm:
https://w3c.github.io/requestidlecallback/#invoke-idle-callback-timeout-algorithm
* dom/IdleCallbackController.h:
* dom/IdleDeadline.h:
* dom/WindowEventLoop.cpp: Added.
(WebCore::WindowEventLoop::create): Added.
(WebCore::WindowEventLoop::WindowEventLoop): Added.
(WebCore::WindowEventLoop::queueTask): Added.
(WebCore::WindowEventLoop::run): Added.
* dom/WindowEventLoop.h: Added.
* page/Page.cpp:
(WebCore::Page::updateRendering): Added comments for the missing pieces.
2019-10-12 Chris Dumez <cdumez@apple.com>
Back/Forward cache does not work after doing a favorite navigation
https://bugs.webkit.org/show_bug.cgi?id=202762
<rdar://problem/56126911>
Reviewed by Antti Koivisto.
When a subframe goes into the page cache, make sure we null out the opener
link of any windows that were opened by this frame. This matches what would
happened if this frame were closed.
Covered by the following API tests:
ProcessSwap.PageCacheAfterProcessSwapByClient
ProcessSwap.OpenerLinkAfterAPIControlledProcessSwappingOfOpener
* history/CachedFrame.cpp:
(WebCore::CachedFrame::CachedFrame):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::~FrameLoader):
(WebCore::FrameLoader::detachFromAllOpenedFrames):
* loader/FrameLoader.h:
2019-10-12 Chris Fleizach <cfleizach@apple.com>
AX: Make AXIsolatedTree compile again
https://bugs.webkit.org/show_bug.cgi?id=202702
<rdar://problem/56084968>
Reviewed by Joanmarie Diggs.
Fix compilation and runtime issues when building with ACCESSIBILITY_ISOLATED_TREE.
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored const):
* accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::treePageCache):
(WebCore::AXIsolatedTree::nodeForID const):
- Remove release assert here because the initial request that comes through happens on the main thread.
We need to handle that case specific case.
(WebCore::AXIsolatedTree::applyPendingChanges):
(WebCore::AXIsolatedTree::initializePageTreeForID): Deleted.
(WebCore::AXIsolatedTree::setInitialRequestInProgress): Deleted.
* accessibility/isolatedtree/AXIsolatedTree.h:
* accessibility/isolatedtree/AXIsolatedTreeNode.cpp:
(WebCore::AXIsolatedTreeNode::rectAttributeValue const):
* accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
(convertToNSArray):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper childrenVectorArray]):
2019-10-11 Ryosuke Niwa <rniwa@webkit.org>
Windows build fix attempt after r251043.
* dom/ShadowRoot.cpp:
2019-10-11 Ryosuke Niwa <rniwa@webkit.org>
Add the support for ShadowRoot.delegateFocus
https://bugs.webkit.org/show_bug.cgi?id=166484
<rdar://problem/29816058>
Reviewed by Antti Koivisto.
Implement delegatesFocus as specified in https://github.com/whatwg/html/pull/4796
When the shadow root of an element has delegates focus flag set, focusing on the shadow host would automatically
"delegates" focus to the first focusable element in the shadow tree instead.
The first focusable element is determined as the first element that is programatically focusable or mouse focusable
in the flat tree (composed tree in WebKit's terminology) in the case of the element getting focused via DOM API,
Element.prototype.focus, by via mouse down. In the case of sequential focus navigation (via tab key), it's the
first keyboard focusable element in the tabIndex order.
Tests: imported/w3c/web-platform-tests/shadow-dom/focus/click-focus-delegatesFocus-click-method.html
imported/w3c/web-platform-tests/shadow-dom/focus/click-focus-delegatesFocus-tabindex-varies.html
imported/w3c/web-platform-tests/shadow-dom/focus/click-focus-delegatesFocus-tabindex-zero.html
imported/w3c/web-platform-tests/shadow-dom/focus/focus-method-delegatesFocus.html
imported/w3c/web-platform-tests/shadow-dom/focus/focus-tabindex-order-shadow-negative-delegatesFocus.html
imported/w3c/web-platform-tests/shadow-dom/focus/focus-tabindex-order-shadow-varying-delegatesFocus.html
imported/w3c/web-platform-tests/shadow-dom/focus/focus-tabindex-order-shadow-zero-delegatesFocus.html
* dom/Element.cpp:
(WebCore::Element::isKeyboardFocusable const): A shadow host with the delegates focus flag is not considered as
keyboard focusable. The rest is taken care of by the existing logic in FocusController.
(WebCore::isProgramaticallyFocusable): Extracted from Element::focus.
(WebCore::findFirstProgramaticallyFocusableElementInComposedTree): Added.
(WebCore::Element::focus): Added the support for delegatesFocus.
* dom/Element.h:
(WebCore::ShadowRootInit::delegatesFocus): Added.
* dom/Element.idl: Ditto.
* dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::ShadowRoot): Added delegatesFocus to the constructor.
* dom/ShadowRoot.h:
* page/EventHandler.cpp:
(WebCore::findFirstMouseFocusableElementInComposedTree): Added.
(WebCore::EventHandler::dispatchMouseEvent): Added the support for delegatesFocus. Uses the first mouse focusable
element in the flat tree (composed tree) order.
* page/FocusController.cpp:
(WebCore::FocusController::findFirstFocusableElementInShadowRoot):
* page/FocusController.h:
2019-10-11 Rob Buis <rbuis@igalia.com>
Cleanup RuntimeEnabledFeatures includes
https://bugs.webkit.org/show_bug.cgi?id=202857
Reviewed by Eric Carlson.
These classes must have had made use of runtime flags before
but are not using them anymore.
* Modules/mediastream/MediaDevices.cpp:
* Modules/mediastream/RTCRtpSender.cpp:
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
* accessibility/AccessibilityObject.cpp:
* css/CSSComputedStyleDeclaration.cpp:
* css/MediaQueryEvaluator.cpp:
* css/MediaQueryExpression.cpp:
* css/parser/CSSParser.cpp:
* dom/ContainerNode.cpp:
* dom/EventTarget.cpp:
* dom/Position.cpp:
* dom/PseudoElement.cpp:
* dom/TreeScope.cpp:
* dom/ViewportArguments.cpp:
* history/CachedFrame.cpp:
* html/HTMLPlugInElement.cpp:
* html/HTMLStyleElement.cpp:
* html/HTMLTrackElement.cpp:
* inspector/agents/InspectorNetworkAgent.cpp:
* loader/ResourceLoadNotifier.cpp:
* page/DOMWindow.cpp:
* page/EventHandler.cpp:
* page/PointerLockController.cpp:
* page/csp/ContentSecurityPolicy.cpp:
* page/scrolling/ScrollingCoordinator.cpp:
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
* rendering/RenderFlexibleBox.cpp:
* rendering/style/RenderStyle.cpp:
* rendering/updating/RenderTreeUpdater.cpp:
2019-10-11 Chris Dumez <cdumez@apple.com>
Add [ActiveDOMObject] to IDLs of ActiveDOMObjects
https://bugs.webkit.org/show_bug.cgi?id=202869
Reviewed by Ryosuke Niwa.
Add [ActiveDOMObject] to IDLs of ActiveDOMObjects, this is necessary so that the wrapper
stays alive as long as ActiveDOMObject::hasPendingActivity() returns true. We may have
subtle lifetime bugs otherwise.
* Modules/encryptedmedia/MediaKeySession.h:
* Modules/encryptedmedia/MediaKeySession.idl:
* Modules/entriesapi/FileSystemDirectoryReader.idl:
* Modules/entriesapi/FileSystemEntry.idl:
* Modules/geolocation/Geolocation.idl:
* Modules/indexeddb/IDBObjectStore.h:
* Modules/indexeddb/IDBObjectStore.idl:
* Modules/paymentrequest/PaymentResponse.idl:
* Modules/webvr/VRDisplay.h:
* Modules/webvr/VRDisplay.idl:
* workers/service/ServiceWorkerContainer.idl:
2019-10-11 Devin Rousso <drousso@apple.com>
Web Inspector: Elements: Computed: show shorthand properties in addition to longhand ones
https://bugs.webkit.org/show_bug.cgi?id=200554
Reviewed by Matt Baker.
Test: inspector/css/getComputedStyleForNode.html
Include additional `CSS.CSSComputedStyleProperty` items for shorthand CSS properties when
calling `CSS.getComputedStyleForNode`.
* inspector/InspectorStyleSheet.h:
* inspector/InspectorStyleSheet.cpp:
(WebCore::InspectorStyle::buildArrayForComputedStyle const):
(WebCore::InspectorStyle::collectProperties const): Added.
(WebCore::InspectorStyle::styleWithProperties const):
(WebCore::InspectorStyle::populateAllProperties const): Deleted.
2019-10-08 Ryosuke Niwa <rniwa@webkit.org>
Make WebInspector's remote debug EventLoop code into RunLoop
https://bugs.webkit.org/show_bug.cgi?id=202716
Reviewed by Joseph Pecoraro.
Use RunLoop::cycle.
* PlatformFTW.cmake:
* PlatformPlayStation.cmake:
* PlatformWin.cmake:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* inspector/PageScriptDebugServer.cpp:
(WebCore::PageScriptDebugServer::runEventLoopWhilePausedInternal):
* platform/SourcesGLib.txt:
* platform/glib/EventLoopGlib.cpp: Removed.
* platform/playstation/EventLoopPlayStation.cpp: Removed.
* platform/win/EventLoopWin.cpp: Removed.
2019-10-11 Dean Jackson <dino@apple.com>
REGRESSION (r244239) Layout Test fast/canvas/canvas-too-large-to-draw.html is failing
https://bugs.webkit.org/show_bug.cgi?id=202870
Reviewed by Simon Fraser.
Add an internal method to specify a fake limit of canvas pixel memory
so our tests produce reproducible results.
* html/HTMLCanvasElement.cpp:
(WebCore::maxActivePixelMemory):
(WebCore::HTMLCanvasElement::setMaxPixelMemoryForTesting):
* html/HTMLCanvasElement.h:
* testing/Internals.cpp:
(WebCore::Internals::setMaxCanvasPixelMemory):
* testing/Internals.h:
* testing/Internals.idl:
2019-10-11 Chris Dumez <cdumez@apple.com>
API Test TestWebKitAPI.WebKit.DefaultQuota is very flaky on High Sierra
https://bugs.webkit.org/show_bug.cgi?id=202850
Reviewed by Alex Christensen.
Make sure the DOMCache / DOMCacheStorage objects stay alive while they have pending
promises to be resolved.
* Modules/cache/DOMCache.cpp:
(WebCore::DOMCache::hasPendingActivity const):
* Modules/cache/DOMCache.h:
* Modules/cache/DOMCache.idl:
* Modules/cache/DOMCacheStorage.cpp:
(WebCore::DOMCacheStorage::hasPendingActivity const):
* Modules/cache/DOMCacheStorage.h:
* Modules/cache/DOMCacheStorage.idl:
2019-10-11 Chris Dumez <cdumez@apple.com>
Unreviewed, address post-landing feedback from Darin for r251019.
Added a new comment for clarity.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::stopForPageCache):
2019-10-11 Alex Christensen <achristensen@webkit.org>
Only use CFNetwork SPI for metrics where needed
https://bugs.webkit.org/show_bug.cgi?id=202825
Reviewed by Joseph Pecoraro.
* platform/network/NetworkLoadMetrics.h:
2019-10-11 Chris Dumez <cdumez@apple.com>
Pages frequently fail to enter the back/forward cache due to frames with a quick redirect coming
https://bugs.webkit.org/show_bug.cgi?id=202768
<rdar://problem/56132022>
Reviewed by Alex Christensen.
When a quick redirect is scheduled with the navigation scheduler, we set the m_quickRedirectComing flag.
This flag is supposed to get unset if the navigation gets cancelled and when the navigation actually
happens. However, for a navigation to a javascript: URL, we would return early after executing the JS
and fail to reset the m_quickRedirectComing flag. Later on, we would fail to enter the page cache because
we would think that the iframe still has a quick redirect scheduled.
Test: fast/history/page-cache-iframe-js-url.html
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::urlSelected):
Reset the m_quickRedirectComing flag if we return early after executing
the javascript URL.
(WebCore::FrameLoader::stopForPageCache):
Stop policy checks & cancel scheduled navigations after stopping loads. Stopping loads may
run script which may in theory schedule new navigations. This is hardening.
2019-10-11 Antti Koivisto <antti@apple.com>
Position::upstream/downstream should not need to call ensureLineBoxes
https://bugs.webkit.org/show_bug.cgi?id=202203
Reviewed by Zalan Bujtas.
This avoids forced switch to complex text layout path by Position constructor and will allow future cleanups.
Currently simple line path strips end of line whitespace when white-space:pre-wrap is set.
These are don't affect rendering but they are needed for editing positions.
This patch makes simple line path match the complex path by generating runs for these whitespaces.
* dom/Position.cpp:
(WebCore::Position::upstream const):
(WebCore::Position::downstream const):
(WebCore::ensureLineBoxesIfNeeded): Deleted.
* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::LineState::appendFragmentAndCreateRunIfNeeded):
Create a new run if isLineBreak bit is set.
(WebCore::SimpleLineLayout::LineState::removeTrailingWhitespace):
(WebCore::SimpleLineLayout::LineState::trailingWhitespaceWidth const):
(WebCore::SimpleLineLayout::computeLineLeft):
Also compute width of the hanging whitespace when aligning the line. This matches the code
in updateLogicalWidthForLeft/Right/CenterAlignedBlock in the complex path.
(WebCore::SimpleLineLayout::preWrap):
breakSpaces implies preWrap is off.
(WebCore::SimpleLineLayout::firstFragment):
(WebCore::SimpleLineLayout::createLineRuns):
Crete runs also for soft linebreaks in pre-wrap.
Add whitespace runs to the end of the line in pre-wrap.
(WebCore::SimpleLineLayout::closeLineEndingAndAdjustRuns):
Hang the whitespace run when wrapping.
(WebCore::SimpleLineLayout::removeTrailingWhitespace): Deleted.
Remainging logic moved to the callsite.
2019-10-11 Jonathan Bedard <jbedard@apple.com>
Unreviewed, rolling out r250945.
Broke 18 Debug API tests
Reverted changeset:
"Add support for CompactPointerTuple<..., OptionSet<...>>"
https://bugs.webkit.org/show_bug.cgi?id=201316
https://trac.webkit.org/changeset/250945
2019-10-11 Bjorn Melinder <bjornm@spotify.com>
OfflineAudioContext does not validate allocation of destination buffer
https://bugs.webkit.org/show_bug.cgi?id=177259
Reviewed by Eric Carlson.
Moved the allocation of the destination buffer to the static
OfflineAudioContext::create method where we are able to handle a failed
allocation properly and return an Exception. This change handles both
negative lengths as well as too large lengths where the memory cannot
be allocated.
* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::AudioContext):
* Modules/webaudio/AudioContext.h:
* Modules/webaudio/OfflineAudioContext.cpp:
(WebCore::OfflineAudioContext::OfflineAudioContext):
(WebCore::OfflineAudioContext::create):
* Modules/webaudio/OfflineAudioContext.h:
2019-10-10 Konstantin Tokarev <annulen@yandex.ru>
Guard GCrypt-specific code with USE(GCRYPT) instead of PLATFORM macros
https://bugs.webkit.org/show_bug.cgi?id=202829
Reviewed by Jiewen Tan.
* crypto/keys/CryptoKeyEC.h:
* crypto/keys/CryptoKeyRSA.h:
2019-10-10 Yury Semikhatsky <yurys@chromium.org>
Web Inspector: use more C++ keywords for defining agents
https://bugs.webkit.org/show_bug.cgi?id=200959
<rdar://problem/54735374>
Reviewed by Joseph Pecoraro.
Add override annotation to overrided virtual methods in inspector code. This
change is automatically generated by the following command:
clang-tidy -checks='-*,modernize-use-override' -header-filter='.*inspector.*' -fix -p WebKitBuild/Release/
WebKitBuild/Release/DerivedSources/JavaScriptCore/unified-sources/UnifiedSource-84c9f43f-*.cpp
WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource-84c9f43f-*.cpp
No new tests. No behavior changes.
* inspector/InspectorController.h:
* inspector/InspectorFrontendClientLocal.h:
* inspector/InspectorFrontendHost.cpp:
* inspector/PageScriptDebugServer.h:
* inspector/WebInjectedScriptManager.h:
* inspector/WorkerInspectorController.h:
* inspector/WorkerScriptDebugServer.h:
* inspector/WorkerToPageFrontendChannel.h:
* inspector/agents/InspectorApplicationCacheAgent.h:
* inspector/agents/InspectorCPUProfilerAgent.h:
* inspector/agents/InspectorCSSAgent.h:
* inspector/agents/InspectorCanvasAgent.h:
* inspector/agents/InspectorDOMAgent.h:
* inspector/agents/InspectorDOMDebuggerAgent.h:
* inspector/agents/InspectorDOMStorageAgent.h:
* inspector/agents/InspectorDatabaseAgent.h:
* inspector/agents/InspectorIndexedDBAgent.cpp:
* inspector/agents/InspectorIndexedDBAgent.h:
* inspector/agents/InspectorLayerTreeAgent.h:
* inspector/agents/InspectorMemoryAgent.h:
* inspector/agents/InspectorNetworkAgent.cpp:
* inspector/agents/InspectorNetworkAgent.h:
* inspector/agents/InspectorPageAgent.h:
* inspector/agents/InspectorTimelineAgent.h:
* inspector/agents/InspectorWorkerAgent.h:
* inspector/agents/WebConsoleAgent.h:
* inspector/agents/WebDebuggerAgent.h:
* inspector/agents/WebHeapAgent.h:
* inspector/agents/page/PageAuditAgent.h:
* inspector/agents/page/PageConsoleAgent.h:
* inspector/agents/page/PageDOMDebuggerAgent.h:
* inspector/agents/page/PageDebuggerAgent.h:
* inspector/agents/page/PageHeapAgent.h:
* inspector/agents/page/PageNetworkAgent.h:
* inspector/agents/page/PageRuntimeAgent.h:
* inspector/agents/worker/ServiceWorkerAgent.h:
* inspector/agents/worker/WorkerAuditAgent.h:
* inspector/agents/worker/WorkerConsoleAgent.h:
* inspector/agents/worker/WorkerDOMDebuggerAgent.h:
* inspector/agents/worker/WorkerDebuggerAgent.h:
* inspector/agents/worker/WorkerNetworkAgent.h:
* inspector/agents/worker/WorkerRuntimeAgent.h:
2019-10-10 Tim Horton <timothy_horton@apple.com>
Use HAVE(IOSURFACE_RGB10) instead of PLATFORM(IOS_FAMILY) where appropriate
https://bugs.webkit.org/show_bug.cgi?id=202823
Reviewed by Wenson Hsieh.
* platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(WebCore::layerContentsFormat):
* platform/ios/LegacyTileGridTile.mm:
(WebCore::LegacyTileGridTile::LegacyTileGridTile):
2019-10-10 Jer Noble <jer.noble@apple.com>
[Catalina] LayoutTest fast/canvas/webgl/texImage2D-mse-flip-{true,false}.html failing
https://bugs.webkit.org/show_bug.cgi?id=202771
<rdar://problem/49441298>
Reviewed by Eric Carlson.
Catalina no longer creates IOSurface-backed CVPixelBuffers by default for certain
codecs; make the CVPixelBuffers generated by WebCoreDecompressionSession IOSurface-backed
explicitly by passing in the correct attributes when creating the VTDecompressionSession.
* platform/graphics/cocoa/WebCoreDecompressionSession.mm:
(WebCore::WebCoreDecompressionSession::ensureDecompressionSessionForSample):
2019-10-10 Myles C. Maxfield <mmaxfield@apple.com>
[Cocoa] font-family:system-ui on Chinese systems don't get Chinese quote marks
https://bugs.webkit.org/show_bug.cgi?id=202778
<rdar://problem/52594556>
Reviewed by Simon Fraser.
This was caught by fast/text/international/system-language/han-quotes.html,
but we didn't have time to fix it until now.
Test: fast/text/international/system-language/han-quotes.html
* platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:
(WebCore::SystemFontDatabaseCoreText::createSystemUIFont):
2019-10-10 Myles C. Maxfield <mmaxfield@apple.com>
FontFaceSet's ready promise is not always resolved
https://bugs.webkit.org/show_bug.cgi?id=202548
Reviewed by Youenn Fablet.
When we do layout on an element, FontRanges::glyphDataForCharacter() will cause the first
available font to start loading, but will continue looking at subsequent fonts to see if
there's a good one we can render while the load is happening. When looking for a fallback
font, it calls FontRanges::Range::font() with a ExternalResourceDownloadPolicy set to
Forbid. This is fine, except that a side effect of calling this function is that the
CSSFontFace marks itself as Loading, which means document.fonts.ready is deferred. Then,
the load finishes, and the subsequent CSSFontFace is never actually used, meaning it never
exits the Loading state, which means document.fonts.ready never fires.
The solution to this is to just only allow the font to enter the Loading state if it's not
one of these "subsequent" fonts.
Test: fast/text/fontfaceset-ready-not-fired.html
* css/CSSFontFace.cpp:
(WebCore::CSSFontFace::pump):
2019-10-10 youenn fablet <youenn@apple.com>
MockRealtimeVideoSource::setFrameRateWithPreset should not use preset after moving it
https://bugs.webkit.org/show_bug.cgi?id=202800
Reviewed by Alexey Proskuryakov.
This does not affect behavior right now since clients typically get the intrinsic size through media samples.
But this could create some inconsistencies.
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::setFrameRateWithPreset):
2019-10-10 Devin Rousso <drousso@apple.com>
Web Inspector: Timelines: don't call willDispatchEvent/didDispatchEvent unless there is a listener for the event
https://bugs.webkit.org/show_bug.cgi?id=202713
Reviewed by Joseph Pecoraro.
Fixes failing inspector/timeline/timeline-recording.html after r250672. This was because the
`InspectorTimelineAgent` expected a corresponding `willDispatchEvent` before it was told
about the `didDispatchEvent`, which wasn't happening since only `willDispatchEvent` would
early-return if the `DOMWindow` didn't have any event listeners for the dispatched event. By
making the `DOMWindow::dispatchEvent` itself early-return in that case, it now handles both
`willDispatchEvent` and `didDispatchEvent`, ensuring that they are always called in pairs.
* page/DOMWindow.cpp:
(WebCore::DOMWindow::dispatchEvent):
* dom/EventTarget.cpp:
(WebCore::EventTarget::innerInvokeEventListeners):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::willDispatchEvent):
(WebCore::InspectorInstrumentation::didDispatchEvent):
(WebCore::InspectorInstrumentation::willDispatchEventOnWindow):
(WebCore::InspectorInstrumentation::didDispatchEventOnWindow):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::willDispatchEventImpl):
(WebCore::InspectorInstrumentation::didDispatchEventImpl):
(WebCore::InspectorInstrumentation::willDispatchEventOnWindowImpl):
(WebCore::InspectorInstrumentation::didDispatchEventOnWindowImpl):
`InspectorInstrumentation::willDispatchEventImpl` was always called with `hasEventListeners`
as `true`, so there's no reason to keep that parameter around. Similarly, the change inside
`DOMWindow::dispatchEvent` will make it so that the same is true for
`InspectorInstrumentation::willDispatchEventOnWindowImpl` as well.
2019-10-10 Chris Dumez <cdumez@apple.com>
Flaky Test: media/media-source/media-source-page-cache.html
https://bugs.webkit.org/show_bug.cgi?id=202775
Reviewed by Eric Carlson.
SourceBufferList should never prevent entering the page cache, even if it has
pending events in its queue. Its queue is a MainThreadGenericEventQueue, which
is Page Cache-aware and will properly suspend the firing of events when needed.
No new tests, covered by flaky test which should no longer be.
* Modules/mediasource/SourceBufferList.cpp:
(WebCore::SourceBufferList::canSuspendForDocumentSuspension const):
2019-10-10 Sihui Liu <sihui_liu@apple.com>
Add a unit test for StorageQuotaManager
https://bugs.webkit.org/show_bug.cgi?id=202755
Reviewed by Youenn Fablet.
Expose state of StorageQuotaManager for newly added unit test.
* storage/StorageQuotaManager.h:
(WebCore::StorageQuotaManager::state const):
2019-10-10 Wenson Hsieh <wenson_hsieh@apple.com>
Support programmatic paste requests on macOS
https://bugs.webkit.org/show_bug.cgi?id=202773
<rdar://problem/48957166>
Reviewed by Tim Horton.
Adds support for programmatic paste requests on macOS. See below for more details.
Tests: editing/pasteboard/dom-paste/dom-paste-confirmation.html
editing/pasteboard/dom-paste/dom-paste-consecutive-confirmations.html
editing/pasteboard/dom-paste/dom-paste-rejection.html
editing/pasteboard/dom-paste/dom-paste-requires-user-gesture.html
editing/pasteboard/dom-paste/dom-paste-same-origin.html
* editing/EditorCommand.cpp:
(WebCore::defaultValueForSupportedPaste):
(WebCore::supportedPaste):
(WebCore::allowPasteFromDOM):
(WebCore::enabledPaste):
Fixes an existing bug uncovered by the layout test editing/execCommand/clipboard-access.html, which tests the
results of `document.queryCommandEnabled("copy")` and `document.queryCommandEnabled("paste")`. The problem here
is that document.queryCommandEnabled("paste") returns true if DOM paste access requests are enabled, regardless
of whether or not there is an active user gesture. This is inconsistent with the behavior of "copy" and "cut",
which return false in the case where there is no user gesture (and the clipboard access policy is also equal to
ClipboardAccessPolicy::RequiresUserGesture -- refer to `allowCopyCutFromDOM`).
When pasting, we only DOM paste access requests to be triggered only in the case where there is a user gesture.
This means that enabledPaste should additionally be gated on a user gesture check. For consistency with the
implementation of `enabledCopy`, we introduce a `allowPasteFromDOM` helper that is similar to
`allowCopyCutFromDOM`, and additionally check this constraint when the paste command's source is the DOM (as
opposed to a menu or key binding).
This adjustment also adds a missing canDHTMLPaste() check prior to consulting canPaste(). This ensures that when
evaluating document.queryCommandEnabled("Paste"), we'll dispatch a "beforepaste" event, similar to how
evaluating document.queryCommandEnabled("Copy") dispatches a "beforecopy" event.
* platform/LocalizedStrings.h:
Mark a function as WEBCORE_EXPORT.
2019-10-10 Eric Carlson <eric.carlson@apple.com>
[GTK][WPE] Lots of media related tests crashing or flaky after r250918 - [ Mac WK2 ] Layout Test fast/mediastream/MediaStreamTrack-getSettings.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=202784
Unreviewed, fix GTK and WPE test crashes.
* platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:
(WebCore::WrappedMockRealtimeAudioSource::render): Reconfigure if necessary.
(WebCore::WrappedMockRealtimeAudioSource::reconfigure): New, setup for rendering.
(WebCore::WrappedMockRealtimeAudioSource::settingsDidChange): Call reconfigure.
2019-10-10 youenn fablet <youenn@apple.com>
Remove unified plan runtime flag
https://bugs.webkit.org/show_bug.cgi?id=202721
Reviewed by Geoffrey Garen.
Covered by existing tests.
* Modules/mediastream/RTCRtpSender.cpp:
(WebCore::RTCRtpSender::RTCRtpSender):
* Modules/mediastream/RTCRtpTransceiver.idl:
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::setConfiguration):
(WebCore::LibWebRTCMediaEndpoint::addTrack):
(WebCore::LibWebRTCMediaEndpoint::doCreateOffer):
(WebCore::LibWebRTCMediaEndpoint::collectTransceivers):
(WebCore::LibWebRTCMediaEndpoint::removeRemoteTrack):
(WebCore::LibWebRTCMediaEndpoint::OnTrack):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::addTrack):
(WebCore::LibWebRTCPeerConnectionBackend::addTransceiverFromTrackOrKind):
(WebCore::LibWebRTCPeerConnectionBackend::addTransceiver):
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
(WebCore::LibWebRTCRtpSenderBackend::replaceTrack):
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setWebRTCVP8CodecEnabled):
* testing/Internals.cpp:
(WebCore::Internals::useMockRTCPeerConnectionFactory):
2019-10-10 Chris Dumez <cdumez@apple.com>
DOMCacheStorage should not prevent pages from entering the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=202608
Reviewed by Youenn Fablet.
Make DOMCacheStorage fully suspendable by queueing all its asynchronous promise resolutions
to a SuspendableTaskQueue. This makes sure that no promises are resolved while suspended
in the page cache.
Test: http/tests/navigation/page-cache-domcachestorage-pending-promise.html
* Modules/cache/DOMCacheStorage.cpp:
(WebCore::DOMCacheStorage::DOMCacheStorage):
(WebCore::DOMCacheStorage::doSequentialMatch):
(WebCore::DOMCacheStorage::match):
(WebCore::DOMCacheStorage::has):
(WebCore::DOMCacheStorage::open):
(WebCore::DOMCacheStorage::doOpen):
(WebCore::DOMCacheStorage::remove):
(WebCore::DOMCacheStorage::doRemove):
(WebCore::DOMCacheStorage::keys):
(WebCore::DOMCacheStorage::canSuspendForDocumentSuspension const):
* Modules/cache/DOMCacheStorage.h:
2019-10-10 youenn fablet <youenn@apple.com>
Add asserts to MediaStreamPrivate observer routines
https://bugs.webkit.org/show_bug.cgi?id=202724
Reviewed by Alex Christensen.
These methods are only to be called in main thread.
Add asserts to validate this.
No change of behavior.
* platform/mediastream/MediaStreamPrivate.cpp:
(WebCore::MediaStreamPrivate::addObserver):
(WebCore::MediaStreamPrivate::removeObserver):
(WebCore::MediaStreamPrivate::forEachObserver const):
2019-10-09 youenn fablet <youenn@apple.com>
A service worker process should not be created when enqueuing a service worker job
https://bugs.webkit.org/show_bug.cgi?id=202578
<rdar://problem/55979690>
Reviewed by Chris Dumez.
Ask for a service worker context connection when planning to install or run a service worker.
This allows to not spin unnecessarily service worker processes for jobs that do not end up installing a service worker.
Covered by existing tests.
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::tryInstallContextData):
(WebCore::SWServer::runServiceWorkerIfNecessary):
2019-10-09 Wenson Hsieh <wenson_hsieh@apple.com>
Unreviewed, fix the internal iOS build
* page/PointerCaptureController.h: Add some missing forward declarations.
2019-10-09 Sihui Liu <sihui_liu@apple.com>
Unreviewed, fix an asserition after r250937.
Space increase tasks will be finished once it's started.
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::finishSpaceIncreaseTask):
(WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete):
2019-10-09 Wenson Hsieh <wenson_hsieh@apple.com>
[Clipboard API] Refactor Pasteboard item reading functions to work on both iOS and macOS
https://bugs.webkit.org/show_bug.cgi?id=202647
Reviewed by Tim Horton.
Moves some pasteboard helper functions out of iOS-specific code, and into platform-agnostic code. See below for
more details. There is no change in behavior, as nothing exercises these new pasteboard functions on macOS yet.
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/Pasteboard.cpp:
(WebCore::Pasteboard::allPasteboardItemInfo const):
(WebCore::Pasteboard::pasteboardItemInfo const):
(WebCore::Pasteboard::readString):
(WebCore::Pasteboard::readBuffer):
(WebCore::Pasteboard::readURL):
Add some new helpers on Pasteboard to read Strings, data, and URLs from the platform pasteboard. These forward
to the platform strategy which, in WebKit2, are currently implemented using sync IPC, but could be changed in
the future to be fully asynchronous.
* platform/Pasteboard.h:
(WebCore::Pasteboard::name const):
Expose a cross-platform name() getter on Pasteboard. On non-Cocoa platforms, this simply returns the empty
string, but on macOS and iOS, this returns the platform pasteboard name, which is stored in m_pasteboardName.
* platform/PasteboardItemInfo.h:
(WebCore::PasteboardItemInfo::pathForContentType const):
(WebCore::PasteboardItemInfo::contentTypeForHighestFidelityItem const):
(WebCore::PasteboardItemInfo::encode const):
(WebCore::PasteboardItemInfo::decode):
Adds a couple of new members to PasteboardItemInfo (which represents metadata about a given item in the platform
pasteboard). These are changeCount (which is self explanatory), and webSafeTypesByFidelity, which is a list of
types in fidelity order which contains the list of pasteboard types that are safe to expose to bindings. These
may include types such as "text/plain", "text/html", "text/uri-list", and "image/png".
To distinguish this list from the existing contentTypesByFidelity list, I've also renamed contentTypesByFidelity
to platformTypesByFidelity, to make it more obvious that this other list of types are platform-specific, and not
generally safe to expose to the web.
* platform/PasteboardStrategy.h:
* platform/PlatformPasteboard.h:
Move several helpers out into platform-agnostic code.
* platform/cocoa/PasteboardCocoa.mm:
(WebCore::Pasteboard::fileContentState):
* platform/cocoa/PlatformPasteboardCocoa.mm: Added.
Add a new file to contain the implementation of PlatformPasteboard::allPasteboardItemInfo, which is the same
across Cocoa platforms.
(WebCore::PlatformPasteboard::allPasteboardItemInfo):
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::readRespectingUTIFidelities):
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::informationForItemAtIndex):
(WebCore::PlatformPasteboard::readBuffer const):
(WebCore::PlatformPasteboard::readString const):
(WebCore::PlatformPasteboard::readURL const):
Additionally refactor all methods on PlatformPasteboard that take pasteboard item indices as signed integers
(`int`) to receive `size_t` values instead.
(WebCore::PlatformPasteboard::allPasteboardItemInfo): Deleted.
* platform/libwpe/PasteboardLibWPE.cpp:
(WebCore::Pasteboard::readString):
(WebCore::Pasteboard::read):
* platform/libwpe/PlatformPasteboardLibWPE.cpp:
(WebCore::PlatformPasteboard::readString const):
Add an implementation stub for WPE.
* platform/mac/PlatformPasteboardMac.mm:
(WebCore::modernPasteboardTypeForWebSafeMIMEType):
(WebCore::webSafeMIMETypeForModernPasteboardType):
Add helpers to convert between modern NSPasteboardTypes and web-safe types. While some logic exists today on
macOS to convert between legacy pasteboard types and web-safe types, conversion between the modern pasteboard
types and web-safe types are needed since NSPasteboardItem's types only support NSPasteboardTypes and
dynamically declared types that match the format of a universal type identfier (for instance, "com.foo.bar").
(WebCore::PlatformPasteboard::readBuffer const):
(WebCore::PlatformPasteboard::readString const):
(WebCore::PlatformPasteboard::readURL const):
(WebCore::PlatformPasteboard::count const):
(WebCore::PlatformPasteboard::informationForItemAtIndex):
Implement all of these helpers by looking up the NSPasteboardItem at the given item index and querying it for
data for non-legacy pasteboard types.
(WebCore::PlatformPasteboard::itemAtIndex const):
2019-10-09 Daniel Bates <dabates@apple.com>
Add support for CompactPointerTuple<..., OptionSet<...>>
https://bugs.webkit.org/show_bug.cgi?id=201316
Reviewed by Yusuke Suzuki.
Use the new CompactPointerTuple capability to replace CompactPointerTuple<RenderObject*, uint8_t>
with CompactPointerTuple<RenderObject*, OptionSet<ElementStyleFlag>> in Node.h.
* dom/Node.h:
(WebCore::Node::hasStyleFlag const):
(WebCore::Node::setStyleFlag):
(WebCore::Node::clearStyleFlags):
Update code now that we support CompactPointerTuple<..., OptionSet<...>>.
2019-10-09 John Wilander <wilander@apple.com>
IsLoggedIn: Add as experimental feature
https://bugs.webkit.org/show_bug.cgi?id=202707
<rdar://problem/56095064>
Reviewed by Brent Fulgham and Chris Dumez.
IsLoggedIn was proposed to the WebAppSec WG at TPAC 2019.
So far there is only an explainer posted to the mailing list:
https://lists.w3.org/Archives/Public/public-webappsec/2019Sep/0004.html
This patch adds the three experimental web APIs:
- Promise<void> setLoggedIn()
- Promise<void> setLoggedOut()
- Promise<bool> isLoggedIn()
It also tests that those APIs are only exposed in secure contexts.
The functionality is implemented as a supplement to Navigator.
Tests: http/tests/is-logged-in/available-in-secure-contexts.https.html
http/tests/is-logged-in/unavailable-in-insecure-contexts.html
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Headers.cmake:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* page/NavigatorIsLoggedIn.cpp: Added.
(WebCore::NavigatorIsLoggedIn::from):
(WebCore::NavigatorIsLoggedIn::supplementName):
(WebCore::NavigatorIsLoggedIn::setLoggedIn):
(WebCore::NavigatorIsLoggedIn::setLoggedOut):
(WebCore::NavigatorIsLoggedIn::isLoggedIn):
* page/NavigatorIsLoggedIn.h: Added.
* page/NavigatorIsLoggedIn.idl: Added.
* page/PointerCaptureController.cpp:
* page/PointerCaptureController.h:
* page/Settings.yaml:
2019-10-09 Russell Epstein <repstein@apple.com>
Unreviewed, rolling out r250930.
Broke watchOS Builds
Reverted changeset:
"Add support for CompactPointerTuple<..., OptionSet<...>>"
https://bugs.webkit.org/show_bug.cgi?id=201316
https://trac.webkit.org/changeset/250930
2019-10-09 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthn] Move the mock testing entrance to Internals
https://bugs.webkit.org/show_bug.cgi?id=202560
<rdar://problem/55973793>
Reviewed by Chris Dumez.
This patch moves TestRunner.setWebAuthenticationMockConfiguration to
Internals.setMockWebAuthenticationConfiguration and removes the old
entrance. The purpose of this patch is to allow API tests to use
the same mock infrastructure that is used by layout tests.
No new tests, covered by updates on existing tests.
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Modules/webauthn/PublicKeyCredentialCreationOptions.h:
* WebCore.xcodeproj/project.pbxproj:
* page/ChromeClient.h:
(WebCore::ChromeClient::setMockWebAuthenticationConfiguration):
* testing/Internals.cpp:
(WebCore::Internals::setMockWebAuthenticationConfiguration):
* testing/Internals.h:
* testing/Internals.idl:
* testing/MockWebAuthenticationConfiguration.h: Added.
(WebCore::MockWebAuthenticationConfiguration::LocalConfiguration::encode const):
(WebCore::MockWebAuthenticationConfiguration::LocalConfiguration::decode):
(WebCore::MockWebAuthenticationConfiguration::HidConfiguration::encode const):
(WebCore::MockWebAuthenticationConfiguration::HidConfiguration::decode):
(WebCore::MockWebAuthenticationConfiguration::NfcConfiguration::encode const):
(WebCore::MockWebAuthenticationConfiguration::NfcConfiguration::decode):
(WebCore::MockWebAuthenticationConfiguration::encode const):
(WebCore::MockWebAuthenticationConfiguration::decode):
* testing/MockWebAuthenticationConfiguration.idl: Added.
2019-10-09 Simon Fraser <simon.fraser@apple.com>
Rename WheelEventTestTrigger and improve naming in related code
https://bugs.webkit.org/show_bug.cgi?id=202772
Reviewed by Tim Horton.
Change the "test trigger" terminology to "monitor wheel events"; after all, tests
call monitorWheelEvents() and callAfterScrollingCompletes(), and this is not triggering
a test.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* page/FrameView.cpp:
(WebCore::FrameView::adjustScrollbarsForLayout):
(WebCore::FrameView::setScrollPosition):
(WebCore::FrameView::didAddScrollbar):
* page/Page.cpp:
(WebCore::Page::ensureWheelEventTestMonitor):
(WebCore::Page::ensureTestTrigger): Deleted.
* page/Page.h:
(WebCore::Page::wheelEventTestMonitor const):
(WebCore::Page::clearWheelEventTestMonitor):
(WebCore::Page::isMonitoringWheelEvents const):
(WebCore::Page::testTrigger const): Deleted.
(WebCore::Page::clearTrigger): Deleted.
(WebCore::Page::expectsWheelEventTriggers const): Deleted.
* page/WheelEventTestMonitor.cpp: Added.
(WebCore::WheelEventTestMonitor::WheelEventTestMonitor):
(WebCore::WheelEventTestMonitor::clearAllTestDeferrals):
(WebCore::WheelEventTestMonitor::setTestCallbackAndStartNotificationTimer):
(WebCore::WheelEventTestMonitor::deferForReason):
(WebCore::WheelEventTestMonitor::removeDeferralForReason):
(WebCore::WheelEventTestMonitor::triggerTestTimerFired):
(WebCore::operator<<):
* page/WheelEventTestMonitor.h: Renamed from Source/WebCore/page/WheelEventTestTrigger.h.
* page/WheelEventTestTrigger.cpp: Removed.
* page/mac/EventHandlerMac.mm:
(WebCore::EventHandler::platformPrepareForWheelEvents):
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
(WebCore::AsyncScrollingCoordinator::updateIsMonitoringWheelEventsForFrameView):
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
(WebCore::AsyncScrollingCoordinator::deferWheelEventTestCompletionForReason const):
(WebCore::AsyncScrollingCoordinator::removeWheelEventTestCompletionDeferralForReason const):
(WebCore::AsyncScrollingCoordinator::updateExpectsWheelEventTestTriggerWithFrameView): Deleted.
(WebCore::AsyncScrollingCoordinator::deferTestsForReason const): Deleted.
(WebCore::AsyncScrollingCoordinator::removeTestDeferralForReason const): Deleted.
* page/scrolling/AsyncScrollingCoordinator.h:
* page/scrolling/ScrollingCoordinator.h:
(WebCore::ScrollingCoordinator::updateIsMonitoringWheelEventsForFrameView):
(WebCore::ScrollingCoordinator::updateExpectsWheelEventTestTriggerWithFrameView): Deleted.
* page/scrolling/ScrollingStateScrollingNode.cpp:
(WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode):
(WebCore::ScrollingStateScrollingNode::setPropertyChangedBitsAfterReattach):
(WebCore::ScrollingStateScrollingNode::setIsMonitoringWheelEvents):
(WebCore::ScrollingStateScrollingNode::dumpProperties const):
(WebCore::ScrollingStateScrollingNode::setExpectsWheelEventTestTrigger): Deleted.
* page/scrolling/ScrollingStateScrollingNode.h:
(WebCore::ScrollingStateScrollingNode::isMonitoringWheelEvents const):
(WebCore::ScrollingStateScrollingNode::expectsWheelEventTestTrigger const): Deleted.
* page/scrolling/ScrollingTree.h:
(WebCore::ScrollingTree::deferWheelEventTestCompletionForReason):
(WebCore::ScrollingTree::removeWheelEventTestCompletionDeferralForReason):
(WebCore::ScrollingTree::deferTestsForReason): Deleted.
(WebCore::ScrollingTree::removeTestDeferralForReason): Deleted.
* page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):
* page/scrolling/ScrollingTreeScrollingNode.h:
* page/scrolling/ThreadedScrollingTree.cpp:
(WebCore::ThreadedScrollingTree::deferWheelEventTestCompletionForReason):
(WebCore::ThreadedScrollingTree::removeWheelEventTestCompletionDeferralForReason):
(WebCore::ThreadedScrollingTree::deferTestsForReason): Deleted.
(WebCore::ThreadedScrollingTree::removeTestDeferralForReason): Deleted.
* page/scrolling/ThreadedScrollingTree.h:
* page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h:
* page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:
(WebCore::ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::deferWheelEventTestCompletionForReason const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::removeWheelEventTestCompletionDeferralForReason const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::deferTestsForReason const): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateMac::removeTestDeferralForReason const): Deleted.
* platform/Logging.h:
* platform/ScrollAnimator.cpp:
(WebCore::ScrollAnimator::deferWheelEventTestCompletionForReason const):
(WebCore::ScrollAnimator::removeWheelEventTestCompletionDeferralForReason const):
(WebCore::ScrollAnimator::deferTestsForReason const): Deleted.
(WebCore::ScrollAnimator::removeTestDeferralForReason const): Deleted.
* platform/ScrollAnimator.h:
(WebCore::ScrollAnimator::ScrollAnimator::setWheelEventTestMonitor):
(WebCore::ScrollAnimator::ScrollAnimator::setWheelEventTestTrigger): Deleted.
* platform/cocoa/ScrollController.h:
(WebCore::ScrollControllerClient::deferWheelEventTestCompletionForReason const):
(WebCore::ScrollControllerClient::removeWheelEventTestCompletionDeferralForReason const):
(WebCore::ScrollControllerClient::deferTestsForReason const): Deleted.
(WebCore::ScrollControllerClient::removeTestDeferralForReason const): Deleted.
* platform/cocoa/ScrollController.mm:
(WebCore::ScrollController::startSnapRubberbandTimer):
(WebCore::ScrollController::stopSnapRubberbandTimer):
(WebCore::ScrollController::scheduleStatelessScrollSnap):
(WebCore::ScrollController::startDeferringWheelEventTestCompletionDueToScrollSnapping):
(WebCore::ScrollController::stopDeferringWheelEventTestCompletionDueToScrollSnapping):
(WebCore::ScrollController::startScrollSnapTimer):
(WebCore::ScrollController::stopScrollSnapTimer):
(WebCore::ScrollController::startDeferringTestsDueToScrollSnapping): Deleted.
(WebCore::ScrollController::stopDeferringTestsDueToScrollSnapping): Deleted.
* platform/mac/ScrollAnimatorMac.mm:
(WebCore::ScrollAnimatorMac::didBeginScrollGesture const):
(WebCore::ScrollAnimatorMac::didEndScrollGesture const):
(WebCore::ScrollAnimatorMac::sendContentAreaScrolledSoon):
(WebCore::ScrollAnimatorMac::sendContentAreaScrolledTimerFired):
* rendering/RenderBox.cpp:
(WebCore::setupWheelEventMonitor):
(WebCore::RenderBox::setScrollLeft):
(WebCore::RenderBox::setScrollTop):
(WebCore::setupWheelEventTestTrigger): Deleted.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::createScrollbar):
* rendering/RenderListBox.cpp:
(WebCore::setupWheelEventTestMonitor):
(WebCore::RenderListBox::setScrollTop):
(WebCore::RenderListBox::createScrollbar):
(WebCore::setupWheelEventTestTrigger): Deleted.
* testing/js/WebCoreTestSupport.cpp:
(WebCoreTestSupport::monitorWheelEvents):
(WebCoreTestSupport::setTestCallbackAndStartNotificationTimer):
(WebCoreTestSupport::clearWheelEventTestMonitor):
(WebCoreTestSupport::clearWheelEventTestTrigger): Deleted.
* testing/js/WebCoreTestSupport.h:
2019-10-09 Sihui Liu <sihui_liu@apple.com>
IndexedDB: update size to actual disk usage only when estimated increase is bigger than space available
https://bugs.webkit.org/show_bug.cgi?id=201957
Reviewed by Youenn Fablet.
For better performance.
Covered by existing tests.
* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::QuotaUser::resetSpaceUsed): m_estimatedSpaceIncrease will be updated when task
is finished, so no need to clear it when doing reset.
(WebCore::IDBServer::IDBServer::QuotaUser::computeSpaceUsed):
* Modules/indexeddb/server/IDBServer.h:
* Modules/indexeddb/server/UniqueIDBDatabase.cpp: instead of reading file size after each task, just add the
task size to known usage and get an estimated usage.
(WebCore::IDBServer::UniqueIDBDatabase::startSpaceIncreaseTask):
(WebCore::IDBServer::UniqueIDBDatabase::finishSpaceIncreaseTask):
(WebCore::IDBServer::UniqueIDBDatabase::performCurrentOpenOperation):
(WebCore::IDBServer::UniqueIDBDatabase::deleteBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::shutdownForClose):
(WebCore::IDBServer::UniqueIDBDatabase::didShutdownForClose):
(WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::generateUniqueCallbackIdentifier):
(WebCore::IDBServer::UniqueIDBDatabase::storeCallbackOrFireError):
(WebCore::IDBServer::UniqueIDBDatabase::openBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::didOpenBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::createObjectStoreAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformCreateObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::renameObjectStoreAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformRenameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::createIndexAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformCreateIndex):
(WebCore::IDBServer::UniqueIDBDatabase::renameIndexAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformRenameIndex):
(WebCore::IDBServer::UniqueIDBDatabase::putOrAddAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformPutOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTaskReply):
(WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete):
(WebCore::IDBServer::UniqueIDBDatabase::performErrorCallback):
(WebCore::IDBServer::UniqueIDBDatabase::performKeyDataCallback):
(WebCore::IDBServer::UniqueIDBDatabase::forgetErrorCallback):
(WebCore::IDBServer::generateUniqueCallbackIdentifier): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::updateSpaceUsedIfNeeded): Deleted.
* Modules/indexeddb/server/UniqueIDBDatabase.h:
* storage/StorageQuotaManager.cpp: use m_state to decide what action to take on next request. Previously when a
request asked for size bigger than space available, we would go to ask for more space directly. Now because IDB
can be reporting estimated usage, we first ask IDB to compute its actual disk usage and ask for more space if
actual space available is smaller than requested size.
(WebCore::StorageQuotaManager::askUserToInitialize):
(WebCore::StorageQuotaManager::removeUser):
(WebCore::StorageQuotaManager::requestSpace):
(WebCore::StorageQuotaManager::askForMoreSpace):
(WebCore::StorageQuotaManager::processPendingRequests):
* storage/StorageQuotaManager.h:
* storage/StorageQuotaUser.h:
(WebCore::StorageQuotaUser::computeSpaceUsed):
2019-10-09 Sihui Liu <sihui_liu@apple.com>
IndexedDB: include size of index records in size estimate of put/add task
https://bugs.webkit.org/show_bug.cgi?id=202483
Reviewed by Geoffrey Garen.
SQLiteIDBBackingStore has two tables IndexRecords and Records. For add operation add(VALUE, KEY), we add a new
record to Records table. If we can extract index value from VALUE for some index, we would add a new record to
IndexRecords table.
We estimated the task szie of add task with (KEY_SIZE + VALUE_SIZE), but we didn't count the size that could be
added to the IndexRecords table. This could lead to storage abuse.
Test: storage/indexeddb/request-size-estimate.html
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::putOrAdd):
2019-10-09 Chris Dumez <cdumez@apple.com>
Youtube.com is unable to enter the back/forward cache on macOS
https://bugs.webkit.org/show_bug.cgi?id=202754
<rdar://problem/56117666>
Reviewed by Eric Carlson.
As of r250542, the MainThreadGenericEventQueue used by both MediaSource and
SourceBuffer to fire event is PageCache-aware. As a result, both these
ActiveDOMObjects can now safety suspend without risking running script while
in the page cache. I did have to update some logic in MediaSource::removeSourceBuffer()
to make sure we do not unnecessarily construct new ActiveDOMObjects while
suspending, as this is not allowed.
Test: media/media-source/media-source-page-cache.html
* Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::removeSourceBuffer):
(WebCore::MediaSource::canSuspendForDocumentSuspension const):
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::canSuspendForDocumentSuspension const):
* Modules/mediasource/SourceBuffer.h:
2019-10-09 Daniel Bates <dabates@apple.com>
Add support for CompactPointerTuple<..., OptionSet<...>>
https://bugs.webkit.org/show_bug.cgi?id=201316
Reviewed by Yusuke Suzuki.
Use the new CompactPointerTuple capability to replace CompactPointerTuple<RenderObject*, uint8_t>
with CompactPointerTuple<RenderObject*, OptionSet<ElementStyleFlag>> in Node.h.
* dom/Node.h:
(WebCore::Node::hasStyleFlag const):
(WebCore::Node::setStyleFlag):
(WebCore::Node::clearStyleFlags):
Update code now that we support CompactPointerTuple<..., OptionSet<...>>.
2019-10-09 Zalan Bujtas <zalan@apple.com>
RunResolver::rangeForRendererWithOffsets should check for range end
https://bugs.webkit.org/show_bug.cgi?id=202761
<rdar://problem/55917924>
Reviewed by Antti Koivisto.
This patch ensures that when rangeForRenderer comes back with a collapsed run (empty range), rangeForRendererWithOffsets returns an empty range as well.
Test: fast/text/simple-line-layout-range-check-end.html
* rendering/SimpleLineLayoutResolver.cpp:
(WebCore::SimpleLineLayout::RunResolver::rangeForRendererWithOffsets const):
2019-10-09 Alicia Boya García <aboya@igalia.com>
[MSE][GStreamer] Fix video sometimes not appearing
https://bugs.webkit.org/show_bug.cgi?id=201401
Reviewed by Xabier Rodriguez-Calvar.
The code in MediaPlayerPrivateGStreamer::changePipelineState() was
supposed to call `ensureGLVideoSinkContext()` on upwards transitions
to PAUSED but the code did not take into account non-step-by-step
state transitions, which happens frequently with playbin3 in the MSE
case.
Before the patch, when playbin3 transitioned from READY to PLAYING
without stopping for preroll this call would not be made and the
texture IDs received at the sink would not correspond to the
compositor GL context, leading to artifacts (often the player controls
or a blank screen).
Test: imported/w3c/web-platform-tests/media-source/mediasource-video-is-visible.html
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::changePipelineState):
2019-10-09 Eric Carlson <eric.carlson@apple.com>
[ Mac WK2 ] Layout Test fast/mediastream/MediaStreamTrack-getSettings.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196400
<rdar://problem/49567579>
Reviewed by Youenn Fablet.
No new tests, this fixes a broken test.
* platform/mediastream/mac/MockRealtimeAudioSourceMac.h:
* platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
(WebCore::MockRealtimeAudioSourceMac::reconfigure): Reconfigure buffers as well.
(WebCore::MockRealtimeAudioSourceMac::render): Call reconfigure if the buffer isn't
configured correctly.
(WebCore::MockRealtimeAudioSourceMac::settingsDidChange): Call reconfigure.
* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::MockRealtimeAudioSource): Set sample rate to default.
2019-10-09 Chris Dumez <cdumez@apple.com>
Unreviewed, address Darin's post-landing comments for r250912.
The array should be const.
* css/CSSDefaultStyleSheets.cpp:
2019-10-09 Daniel Bates <dabates@apple.com>
Clean up: Remove pre-macOS Sierra workaround for missing kVK_RightCommand
https://bugs.webkit.org/show_bug.cgi?id=202597
Reviewed by Anders Carlsson.
kVK_RightCommand has been defined in HIToolbox/Events.h since macOS Sierra. We no longer
need to maintain code to manually define it.
* platform/mac/PlatformEventFactoryMac.mm:
(WebCore::keyForKeyEvent):
2019-10-09 Antti Koivisto <antti@apple.com>
[CSS Shadow Parts] Minor exportparts attribute parsing cleanups
https://bugs.webkit.org/show_bug.cgi?id=202740
Reviewed by Zalan Bujtas.
* dom/ShadowRoot.cpp:
(WebCore::parsePartMapping):
(WebCore::parsePartMappingsList):
Return the map as the return value.
(WebCore::ShadowRoot::partMappings const):
2019-10-09 Andy Estes <aestes@apple.com>
[iOS] Remove redundant uses of USE(UIKIT_EDITING)
https://bugs.webkit.org/show_bug.cgi?id=202717
Reviewed by Anders Carlsson.
* page/ios/FrameIOS.mm:
(WebCore::Frame::qualifyingNodeAtViewportLocation):
(WebCore::Frame::approximateNodeAtViewportLocationLegacy):
2019-10-09 Chris Dumez <cdumez@apple.com>
[iOS] REGRESSION (r250398) Layout Test fast/history/page-cache-element-state-focused.html is failing
https://bugs.webkit.org/show_bug.cgi?id=202712
<rdar://problem/56082428>
Reviewed by Antti Koivisto.
The test was failing depending on the order in which the tests were executed. The reason is that
elements would either use the full UA stylesheet (html.css) or the simple one in CSSDefaultStyleSheets.cpp.
Unfortunately, the outline-width was different on iOS between the simple stylesheet and the full one, causing
the test output to look different depending on which stylesheet was used.
Address the issue by making sure that the outline-width is 3px on IOS_FAMILY in the simple stylesheet, to
be consistent with the value in the full stylesheet (html.css).
* css/CSSDefaultStyleSheets.cpp:
2019-10-09 Zalan Bujtas <zalan@apple.com>
[LFC][Painting] Decouple content and decoration painting
https://bugs.webkit.org/show_bug.cgi?id=202718
<rdar://problem/56104661>
Reviewed by Antti Koivisto.
This patch adds support for individual run painting <div><span style="background-color: red">red</span>black</div>.
This is pretty much all we can do with the current data structures (lack of context).
* layout/displaytree/DisplayPainter.cpp:
(WebCore::Display::paintBoxDecoration):
(WebCore::Display::paintInlineContent):
(WebCore::Display::Painter::paint):
(WebCore::Display::paintBlockLevelBoxDecoration): Deleted.
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::appendInlineContainerStart):
(WebCore::Layout::Line::appendInlineContainerEnd):
2019-10-09 Fujii Hironori <Hironori.Fujii@sony.com>
Unreviewed build fix for Windows ports
https://bugs.webkit.org/show_bug.cgi?id=202630
<rdar://problem/56107907>
dom/Document.cpp(3990): error C2653: 'MediaStreamTrack': is not a class or namespace name
dom/Document.cpp(3990): error C3861: 'captureState': identifier not found
* dom/Document.cpp:
(WebCore::Document::updateIsPlayingMedia): Restored #if ENABLE(MEDIA_STREAM).
2019-10-09 Antti Koivisto <antti@apple.com>
[CSS Shadow Parts] Mark as supported in features.json
https://bugs.webkit.org/show_bug.cgi?id=202730
Reviewed Ryosuke Niwa.
* features.json:
2019-10-09 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Wayland: do not use EGL_PLATFORM_WAYLAND_KHR with eglGetPlatformDisplayEXT
https://bugs.webkit.org/show_bug.cgi?id=202689
Reviewed by Žan Doberšek.
Use EGL_PLATFORM_WAYLAND_EXT instead. It shouldn't really matter because both are the same value.
* platform/graphics/wayland/PlatformDisplayWayland.cpp:
(WebCore::PlatformDisplayWayland::initialize):
2019-10-09 Antti Koivisto <antti@apple.com>
[CSS Shadow Parts] Allow exporting single part with multiple names using exportparts attribute
https://bugs.webkit.org/show_bug.cgi?id=202719
Reviewed by Ryosuke Niwa.
Cases like exportparts="part:export1, part:export2" should work.
* css/SelectorChecker.cpp:
(WebCore::SelectorChecker::checkOne const):
Allow one part name to expand into multiple names for matching.
* dom/ShadowRoot.cpp:
(WebCore::parsePartMappingsList):
Allow multiple names per mapping.
(WebCore::ShadowRoot::partMappings const):
* dom/ShadowRoot.h:
2019-10-09 Philippe Normand <pnormand@igalia.com>
REGRESSION(r246399): [GStreamer] Problems playing AAC streams
https://bugs.webkit.org/show_bug.cgi?id=202204
Reviewed by Xabier Rodriguez-Calvar.
Push the EOS event in the WebKitWebSrc element when the internal
queue is empty only for non-live resources. In the live case the
queue might drain temporarily but that's OK because data would
still be queued in downstream elements.
No new tests, the EOS event was pushed too early because of this
regression but there's no way to differentiate it from an expected
event in a layout test.
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webKitWebSrcCreate):
2019-10-09 youenn fablet <youenn@apple.com>
MediaStreamTrack does not need to be a Document audio producer
https://bugs.webkit.org/show_bug.cgi?id=202630
Reviewed by Eric Carlson.
Instead of having all tracks being MediaProducer, we can use the new methods introduced for iOS
to mute/unmute capture tracks and get capture media state.
This allows to not register tracks that are not capture tracks.
Covered by existing tests.
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::~MediaStreamTrack):
(WebCore::MediaStreamTrack::setMuted):
(WebCore::MediaStreamTrack::applyConstraints):
(WebCore::MediaStreamTrack::mediaState const):
(WebCore::MediaStreamTrack::updateCaptureAccordingToMutedState):
(WebCore::MediaStreamTrack::pageMutedStateDidChange): Deleted.
* Modules/mediastream/MediaStreamTrack.h:
* dom/Document.cpp:
(WebCore::Document::updateIsPlayingMedia):
(WebCore::Document::pageMutedStateDidChange):
2019-10-08 Antti Koivisto <antti@apple.com>
[CSS Shadow Parts] Enable by default
https://bugs.webkit.org/show_bug.cgi?id=202644
Reviewed by Ryosuke Niwa.
Flip the switch.
* page/RuntimeEnabledFeatures.h:
2019-10-08 Jiewen Tan <jiewen_tan@apple.com>
Partially undo r250811
https://bugs.webkit.org/show_bug.cgi?id=202715
<rdar://problem/56084287>
Reviewed by Chris Dumez.
This patch changes the SerializedScriptValue to always wrap CryptoKey objects again.
CryptoKey objects could belong to an array or another object. In those cases, IDBObjectStore
cannot set the flag for the embedded Cryptokey objects. Neither can postMessage to unset
the flag. Therefore, there is no way to separate the serialization process into two and
this patch restores the old behaviour. However, the hardening part of r250811 is kept
and therefore the crash should still be prevented.
No new test, updated existing test
* Modules/indexeddb/IDBObjectStore.cpp:
(WebCore::IDBObjectStore::putOrAdd):
(WebCore::JSC::setIsWrappingRequiredForCryptoKey): Deleted.
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneDeserializer::readTerminal):
* crypto/CryptoKey.h:
(WebCore::CryptoKey::allows const):
(WebCore::CryptoKey::isWrappingRequired const): Deleted.
(WebCore::CryptoKey::setIsWrappingRequired): Deleted.
(): Deleted.
* dom/ScriptExecutionContext.h:
2019-10-08 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: modifications to shader modules can be shared between vertex/fragment shaders
https://bugs.webkit.org/show_bug.cgi?id=202031
Reviewed by Dean Jackson.
Test: inspector/canvas/updateShader-webgpu-sharedVertexFragment.html
* Modules/webgpu/WebGPUPipeline.h:
* Modules/webgpu/WebGPUComputePipeline.cpp:
(WebCore::WebGPUComputePipeline::cloneShaderModules): Added.
(WebCore::WebGPUComputePipeline::recompile):
* Modules/webgpu/WebGPURenderPipeline.cpp:
(WebCore::WebGPURenderPipeline::cloneShaderModules): Added.
(WebCore::WebGPURenderPipeline::recompile):
Recreate the vertex/fragment/compute shader module(s) when recompiling so that modifications
to it via this pipeline don't affect other pipelines that also use the same shader module.
* inspector/InspectorShaderProgram.h:
* inspector/InspectorShaderProgram.cpp:
(WebCore::InspectorShaderProgram::updateShader):
(WebCore::InspectorShaderProgram::buildObjectForShaderProgram): Added.
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::didCreateWebGLProgram):
(WebCore::InspectorCanvasAgent::didCreateWebGPUPipeline):
Include as part of the `Canvas.event.programCreated` payload a flag indicating whether the
vertex shader module and fragment shader module are the same for `WebGPURenderPipeline`s.
2019-10-08 Timothy Hatcher <timothy@apple.com>
Copying white text from dark mode WebKit apps and pasting in a light mode app results in white (invisible) text.
https://bugs.webkit.org/show_bug.cgi?id=202662
rdar://problem/48677354
Reviewed by Megan Gardner.
Covered by new API tests.
HTMLConverter needs to strip white text colors when the document is in dark mode, like it does for black in light mode.
* editing/cocoa/HTMLConverter.mm:
(normalizedColor): Handle dark mode and ignore white.
(HTMLConverterCaches::colorPropertyValueForNode): Pass element to normalizedColor.
2019-10-08 Antti Koivisto <antti@apple.com>
[CSS Shadow Parts] Fix style invalidation with class selector and ::before and ::after
https://bugs.webkit.org/show_bug.cgi?id=202694
Reviewed by Ryosuke Niwa.
Test: fast/css/shadow-parts/invalidation-class-before-after.html
* style/StyleInvalidator.cpp:
(WebCore::Style::Invalidator::invalidateIfNeeded):
(WebCore::Style::Invalidator::invalidateStyleWithMatchElement):
Invalidate in the shadow tree if the computed match element is host.
(WebCore::Style::Invalidator::invalidateInShadowTreeIfNeeded):
Factor into a function.
* style/StyleInvalidator.h:
2019-10-08 Adrian Perez de Castro <aperez@igalia.com>
[GTK][WPE] Fix non-unified builds after r250486
https://bugs.webkit.org/show_bug.cgi?id=202636
Reviewed by Youenn Fablet.
No new tests needed.
* Modules/fetch/FetchLoader.h: Add missing forward declaration of WebCore::SharedBuffer.
* Modules/indexeddb/shared/IDBGetAllRecordsData.cpp: Add missing inclusion of header
wtf/text/StringConcatenateNumbers.h
* Modules/indexeddb/shared/IDBIterateCursorData.cpp: Ditto.
* animation/DocumentTimeline.cpp: Add missing inclusion of the EventNames.h and
JavaScriptCore/VM.h headers.
* bindings/js/JSDOMWindowCustom.cpp: Add missing inclusion of the JSDOMConvertCallbacks.h
header.
* bindings/js/JSIDBRequestCustom.cpp: Add missing inclusion of the JSDOMConvertIndexedDB.h
and JSDOMConvertSequences.h headers.
* bindings/js/JSRemoteDOMWindowCustom.cpp: Add missing inclusion of the
JSDOMExceptionHandling.h header.
* bindings/js/ScriptController.cpp: Add missing inclusion of the
JavaScriptCore/WeakGCMapInlines.h header to avoid missing symbols during linking.
* bindings/js/ScriptModuleLoader.h: Add missing inclusion of the wtf/HashSet.h header
and add a forward declaration for the JSC::JSModuleRecord type.
* bindings/js/WindowProxy.cpp: Add missing inclusion of the JavaScriptCore/StrongInlines.h
header to avoid missing symbols during linking.
* css/FontFaceSet.cpp: Add missing inclusion of the DOMPromiseProxy.h header.
* css/FontFaceSet.h: Add missing inclusion of the IDLTypes.h header.
* dom/IdleDeadline.h: Add missing inclusion of the wtf/Ref.h header.
* history/CachedPage.h: Add missing inclusion of the wtf/MonotonicTime.h header.
* html/canvas/WebGLBuffer.h: Add missing inclusion of the wtf/RefPtr.h header.
* html/canvas/WebGLFramebuffer.h: Add missing inclusion of the wtf/HashMap.h and
wtf/Vector.h headers.
* html/canvas/WebGLProgram.h: Add missing inclusion of the wtf/HashFunctions.h, wtf/Lock.h,
and wtf/Vector.h headers; add the missing namespace to an usage of WTF::LockHolder.
* html/canvas/WebGLShader.h: Add missing inclusion of the wtf/text/WTFString.h header.
* inspector/InspectorController.cpp: Add missing inclusion of the SharedBuffer.h header.
* inspector/agents/InspectorCanvasAgent.cpp: Add missing inclusion of the ImageBitmap.h
header.
* page/DOMWindowExtension.cpp: Add missing inclusion of the Document.h header.
* page/scrolling/nicosia/ScrollingTreeFixedNode.cpp: Add missing inclusion of the
ScrollingTreeFrameScrollingNode.h header.
* page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp: Add missing inclusion
of the Logging.h header.
* page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp: Add missing
inclusion of the ScrollingTree.h header.
* page/scrolling/nicosia/ScrollingTreeStickyNode.cpp: Add missing inclusion of the
ScrollingTreeOverflowScrollProxyNode.h header.
* platform/SuspendableTaskQueue.cpp: Add missing inclusion of the ScriptExecutionContext.h
header.
* workers/Worker.cpp: Add missing inclusion of the JavaScriptCore/ScriptCallStack.h header.
2019-10-08 youenn fablet <youenn@apple.com>
MediaStreamTrack should be a PlatformMediaSessionClient instead of MediaStream
https://bugs.webkit.org/show_bug.cgi?id=202631
Reviewed by Eric Carlson.
Make MediaStreamTrack a PlatformMediaSessionClient, which allows tracking tracks that are not owned by a stream.
MediaStream is no longer a PlatformMediaSessionClient so we move some of MediaStream API implementation to MediaStreamTrack.
Covered by updated test.
* Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::MediaStream):
(WebCore::MediaStream::startProducingData):
(WebCore::MediaStream::stopProducingData):
(WebCore::MediaStream::statusDidChange):
(WebCore::MediaStream::mediaType const): Deleted.
(WebCore::MediaStream::presentationType const): Deleted.
(WebCore::MediaStream::characteristics const): Deleted.
(WebCore::MediaStream::mayResumePlayback): Deleted.
(WebCore::MediaStream::suspendPlayback): Deleted.
(WebCore::MediaStream::sourceApplicationIdentifier const): Deleted.
(WebCore::MediaStream::canProduceAudio const): Deleted.
(WebCore::MediaStream::processingUserGestureForMedia const): Deleted.
* Modules/mediastream/MediaStream.h:
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::configureTrackRendering):
(WebCore::MediaStreamTrack::mediaType const):
(WebCore::MediaStreamTrack::presentationType const):
(WebCore::MediaStreamTrack::characteristics const):
(WebCore::MediaStreamTrack::mayResumePlayback):
(WebCore::MediaStreamTrack::suspendPlayback):
(WebCore::MediaStreamTrack::sourceApplicationIdentifier const):
(WebCore::MediaStreamTrack::canProduceAudio const):
(WebCore::MediaStreamTrack::processingUserGestureForMedia const):
* Modules/mediastream/MediaStreamTrack.h:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::load):
* platform/mediastream/MediaStreamPrivate.cpp:
(WebCore::MediaStreamPrivate::hasVideo const):
(WebCore::MediaStreamPrivate::hasAudio const):
(WebCore::MediaStreamPrivate::hasCaptureVideoSource const): Deleted.
(WebCore::MediaStreamPrivate::hasCaptureAudioSource const): Deleted.
* platform/mediastream/MediaStreamPrivate.h:
* platform/mediastream/MediaStreamTrackPrivate.h:
2019-10-08 Brady Eidson <beidson@apple.com>
Service Worker Fetch events should time out.
https://bugs.webkit.org/show_bug.cgi?id=202188
Reviewed by Alex Christensen.
Test: http/tests/workers/service/basic-timeout.https.html
* workers/service/server/SWServer.h:
* workers/service/server/SWServerWorker.h:
(WebCore::SWServerWorker::setHasTimedOutAnyFetchTasks):
(WebCore::SWServerWorker::hasTimedOutAnyFetchTasks const):
2019-10-08 Alexey Shvayka <shvaikalesh@gmail.com>
Accept two values in the overflow shorthand
https://bugs.webkit.org/show_bug.cgi?id=184691
Reviewed by Simon Fraser.
In https://github.com/w3c/csswg-drafts/issues/2484 it was resolved to accept one or two values in
the overflow shorthand, instead of only one. If two values are specified, the first would be used
for overflow-x and the second for overflow-y. This change was shipped in Firefox 61 and Chrome 68.
This patch implements new syntax while preserving handling of -webkit-paged-x and -webkit-paged-y.
Tests: fast/css/cssText-shorthand.html
fast/css/getComputedStyle/getComputedStyle-overflow.html
imported/w3c/web-platform-tests/css/css-overflow/overflow-shorthand-001.html
imported/w3c/web-platform-tests/css/css-overflow/parsing/overflow-computed.html
imported/w3c/web-platform-tests/css/css-overflow/parsing/overflow-valid.html
imported/w3c/web-platform-tests/css/cssom/shorthand-values.html
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
* css/CSSProperties.json:
* css/StyleProperties.cpp:
(WebCore::StyleProperties::getPropertyValue const):
* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::consumeOverflowShorthand):
(WebCore::CSSPropertyParser::parseShorthand):
* css/parser/CSSPropertyParser.h:
2019-10-08 Wenson Hsieh <wenson_hsieh@apple.com>
Unreviewed, fix WebCore's features.json after r250824
* features.json: Remove an erroneous "specification" key.
2019-10-08 Chris Dumez <cdumez@apple.com>
Make sure ActiveDOMObject properly deals with detached documents
https://bugs.webkit.org/show_bug.cgi?id=202596
Reviewed by Geoffrey Garen.
For detached document, the script execution context is their context document.
The ActiveDOMObject constructor taking a Document& would make sure to get the
document's contextDocument. However, if the ActiveDOMObject constructor taking
a ScriptExecutionContext* is called, it would assume this is the right script
execution context, which is unsafe. In this patch, all ActiveDOMObject
constructors now check for detached documents and make sure to use their
context document when necessary.
* dom/ActiveDOMObject.cpp:
(WebCore::suitableScriptExecutionContext):
(WebCore::ActiveDOMObject::ActiveDOMObject):
* dom/ActiveDOMObject.h:
* dom/Document.h:
2019-10-09 Simon Fraser <simon.fraser@apple.com>
Clean up WheelEventTestTriggers logging
https://bugs.webkit.org/show_bug.cgi?id=202764
Reviewed by Tim Horton.
Make DeferTestTriggerReason a bit set, and use OptionSet<> rather than StdSet. Make
DeferTestTriggerReason and ScrollableAreaReasonMap loggable, and simplify the logging.
* page/WheelEventTestTrigger.cpp:
(WebCore::WheelEventTestTrigger::clearAllTestDeferrals):
(WebCore::WheelEventTestTrigger::deferTestsForReason):
(WebCore::WheelEventTestTrigger::removeTestDeferralForReason):
(WebCore::WheelEventTestTrigger::triggerTestTimerFired):
(WebCore::operator<<):
(WebCore::dumpState): Deleted.
* page/WheelEventTestTrigger.h:
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
(WebCore::AsyncScrollingCoordinator::deferTestsForReason const):
(WebCore::AsyncScrollingCoordinator::removeTestDeferralForReason const):
* page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:
(WebCore::ScrollingTreeScrollingNodeDelegateMac::deferTestsForReason const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::removeTestDeferralForReason const):
2019-10-08 Ross Kirsling <ross.kirsling@sony.com>
Unreviewed. Restabilize non-unified build.
* Modules/fetch/FetchLoader.h:
* animation/DocumentTimeline.cpp:
* bindings/js/JSDOMWindowCustom.cpp:
* bindings/js/JSIDBRequestCustom.cpp:
* bindings/js/JSRemoteDOMWindowCustom.cpp:
* bindings/js/ScriptModuleLoader.h:
* bindings/js/WindowProxy.cpp:
* css/FontFaceSet.cpp:
* css/FontFaceSet.h:
* css/typedom/StylePropertyMapReadOnly.cpp:
* history/CachedPage.h:
* html/canvas/WebGLBuffer.cpp:
* html/canvas/WebGLBuffer.h:
* html/canvas/WebGLFramebuffer.h:
* html/canvas/WebGLProgram.cpp:
* html/canvas/WebGLProgram.h:
* html/canvas/WebGLShader.h:
* inspector/InspectorController.cpp:
* inspector/agents/InspectorCanvasAgent.cpp:
* workers/Worker.cpp:
* workers/service/ServiceWorkerContainer.cpp:
* workers/service/ServiceWorkerGlobalScope.cpp:
2019-10-08 Zalan Bujtas <zalan@apple.com>
[LFC][Painting] Add very basic block and inline painting
https://bugs.webkit.org/show_bug.cgi?id=202697
<rdar://problem/56076562>
Reviewed by Antti Koivisto.
This is a very basic border/background painting with simple text. No phases/z-index/layers of any kind.
* layout/displaytree/DisplayBox.h: This seems to be getting out of hand.
(WebCore::Display::Box::moveBy):
* layout/displaytree/DisplayPainter.cpp:
(WebCore::Display::paintBlockLevelBoxDecoration):
(WebCore::Display::paintInlineContent):
(WebCore::Display::Painter::paint):
* layout/floats/FloatingContext.h:
* layout/inlineformatting/InlineFormattingState.h:
(WebCore::Layout::InlineFormattingState::inlineRuns const):
(WebCore::Layout::InlineFormattingState::lineBoxes const):
2019-10-08 Wenson Hsieh <wenson_hsieh@apple.com>
Unreviewed, try to fix the WinCairo build after r250824
* dom/IdleDeadline.h:
Add a missing include for <wtf/Ref.h>, such that the adoptRef function is defined.
2019-10-08 Wenson Hsieh <wenson_hsieh@apple.com>
Unreviewed, try to fix the open source macOS build after r250824
* bindings/js/JSDOMConvertRecord.h:
Add a missing #include for JSDOMGlobalObject. This file utilizes methods on JSDOMGlobalObject, but only ensures
that it has a forward declaration of JSDOMGlobalObject (by way of including JSDOMExceptionHandling.h through
JSDOMConvertBase.h).
2019-10-08 Wenson Hsieh <wenson_hsieh@apple.com>
Unreviewed, update DerivedSources xcfilelists after r250816
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
2019-10-08 Wenson Hsieh <wenson_hsieh@apple.com>
[Clipboard API] Introduce bindings for the async Clipboard API
https://bugs.webkit.org/show_bug.cgi?id=202622
<rdar://problem/56038126>
Reviewed by Ryosuke Niwa.
Adds IDL for the async clipboard API (with the exception of delayed item generation interfaces, which
I'll iterate on and introduce separately). See: https://w3c.github.io/clipboard-apis/#async-clipboard-api for
more information.
Tests: editing/async-clipboard/clipboard-interfaces.html
editing/async-clipboard/clipboard-wrapper-stays-alive.html
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Modules/async-clipboard/Clipboard.cpp:
(WebCore::Clipboard::create):
(WebCore::Clipboard::Clipboard):
(WebCore::Clipboard::navigator):
(WebCore::Clipboard::eventTargetInterface const):
(WebCore::Clipboard::scriptExecutionContext const):
(WebCore::Clipboard::readText):
(WebCore::Clipboard::writeText):
(WebCore::Clipboard::read):
(WebCore::Clipboard::write):
Stub out these API calls for now by immediately rejecting the given promise.
* Modules/async-clipboard/Clipboard.h:
* Modules/async-clipboard/Clipboard.idl:
* Modules/async-clipboard/ClipboardItem.cpp:
(WebCore::ClipboardItem::ClipboardItem):
(WebCore::ClipboardItem::create):
(WebCore::ClipboardItem::types const):
(WebCore::ClipboardItem::getType):
Stub out these API calls for now by immediately rejecting the given promise.
(WebCore::navigator):
* Modules/async-clipboard/ClipboardItem.h:
(WebCore::ClipboardItem::presentationStyle const):
* Modules/async-clipboard/ClipboardItem.idl:
* Modules/async-clipboard/NavigatorClipboard.cpp:
(WebCore::NavigatorClipboard::NavigatorClipboard):
(WebCore::NavigatorClipboard::clipboard):
(WebCore::NavigatorClipboard::from):
(WebCore::NavigatorClipboard::supplementName):
* Modules/async-clipboard/NavigatorClipboard.h:
* Modules/async-clipboard/NavigatorClipboard.idl:
* Modules/mediastream/MediaStreamTrack.cpp:
* Modules/mediastream/RTCDTMFSender.cpp:
* Modules/mediastream/RTCRtpSender.cpp:
* Modules/webgpu/WebGPUPipeline.h:
More unified sources-related build fixes.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* dom/DeviceOrientationOrMotionEvent.cpp:
Unified sources-related build fix.
* dom/EventTargetFactory.in:
* features.json:
Add Async Clipboard API as a feature in development on webkit.org.
* page/Settings.yaml:
2019-10-08 Rob Buis <rbuis@igalia.com>
Fetch: data: URL HEAD request should result in empty response body
https://bugs.webkit.org/show_bug.cgi?id=175764
Reviewed by Youenn Fablet.
Do not build the response body for HEAD requests for data urls:
https://fetch.spec.whatwg.org/#concept-main-fetch (Step 13)
Tests: imported/web-platform-tests/fetch/api/basic/scheme-data.any.js
imported/web-platform-tests/xhr/data-uri.html
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::loadDataURL):
2019-10-08 Antti Koivisto <antti@apple.com>
[CSS Shadow Parts] Implement style invalidation
https://bugs.webkit.org/show_bug.cgi?id=202632
Reviewed by Ryosuke Niwa.
Tests: fast/css/shadow-parts/invalidation-class-descendant-combinator-export.html
fast/css/shadow-parts/invalidation-class-descendant-combinator.html
fast/css/shadow-parts/invalidation-class-sibling-combinator-export.html
fast/css/shadow-parts/invalidation-class-sibling-combinator.html
* css/RuleFeature.cpp:
(WebCore::isSiblingOrSubject):
Don't treat crossing to host as moving to ancestor when computing elements impacted by a selector.
StyleInvalidator expects these relations to be about the host element, shadow tree invalidation in handled separately.
* dom/Element.cpp:
(WebCore::Element::attributeChanged):
Invalidate parts in shadow tree on 'exportparts' attribute mutation.
(WebCore::Element::partAttributeChanged):
Invalidate element on 'part' attribute mutation.
* style/StyleInvalidator.cpp:
(WebCore::Style::Invalidator::Invalidator):
(WebCore::Style::Invalidator::invalidateIfNeeded):
Invalidate parts in shadow tree during class and attribute mutation invalidation.
(WebCore::Style::Invalidator::invalidateShadowParts):
* style/StyleInvalidator.h:
(WebCore::Style::Invalidator::dirtiesAllStyle const):
(WebCore::Style::Invalidator::hasShadowPseudoElementRulesInAuthorSheet const): Deleted.
Remove an unncessary bool.
2019-10-08 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Remove unused WebKitSoupRequestGeneric after r250597
* platform/Soup.cmake:
* platform/SourcesSoup.txt:
* platform/network/soup/ResourceRequestSoup.cpp:
(WebCore::ResourceRequest::updateSoupRequest const):
* platform/network/soup/WebKitSoupRequestGeneric.cpp: Removed.
* platform/network/soup/WebKitSoupRequestGeneric.h: Removed.
* platform/network/soup/WebKitSoupRequestGenericClient.h: Removed.
2019-10-08 Antti Koivisto <antti@apple.com>
[CSS Shadow Parts] Internal shadow pseudo elements should work with ::part
https://bugs.webkit.org/show_bug.cgi?id=202620
Reviewed by Ryosuke Niwa.
Selectors like ::part(foo)::placeholder should work.
This involves hop out of a UA shadow tree and then from an author shadow tree.
* css/ElementRuleCollector.cpp:
(WebCore::ElementRuleCollector::matchAuthorRules):
(WebCore::ElementRuleCollector::matchPartPseudoElementRules):
If we are matching a pseudo element in a UA shadow tree, see if part rules can match is the surrounding scope.
(WebCore::ElementRuleCollector::matchPartPseudoElementRulesForScope):
* css/ElementRuleCollector.h:
* css/RuleSet.cpp:
(WebCore::RuleSet::addRule):
Sort rules with both internal pseudo element and ::part to the part bucket.
* css/SelectorChecker.cpp:
(WebCore::SelectorChecker::matchRecursively const):
* css/parser/CSSSelectorParser.cpp:
(WebCore::CSSSelectorParser::splitCompoundAtImplicitShadowCrossingCombinator):
Allow multiple ShadowDescendant relations for ::part.
2019-10-07 Ryosuke Niwa <rniwa@webkit.org>
Add IDL for requestIdleCallback
https://bugs.webkit.org/show_bug.cgi?id=202653
Reviewed by Geoffrey Garen.
Added the basic scaffolding for implementing requestIdleCallback disabled by default:
https://w3c.github.io/requestidlecallback/
This patch just adds the support for calling requestIdleCallback which generates a monotonically increasing number.
The callback is never called for now.
Tests: requestidlecallback/requestidlecallback-enabled.html
requestidlecallback/requestidlecallback-id.html
requestidlecallback/requestidlecallback-not-enabled.html
* CMakeLists.txt:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* dom/Document.cpp:
(WebCore::Document::requestIdleCallback):
(WebCore::Document::cancelIdleCallback):
* dom/Document.h:
* dom/IdleCallbackController.cpp: Added.
(WebCore::IdleCallbackController::queueIdleCallback):
(WebCore::IdleCallbackController::removeIdleCallback):
* dom/IdleCallbackController.h: Added.
* dom/IdleDeadline.cpp: Added.
(WebCore::IdleDeadline::timeRemaining const):
(WebCore::IdleDeadline::didTimeout const):
* dom/IdleDeadline.h: Added.
* dom/IdleDeadline.idl: Added.
* dom/IdleRequestCallback.h: Added.
* dom/IdleRequestCallback.idl: Added.
* dom/IdleRequestOptions.h: Added.
* dom/IdleRequestOptions.idl: Added.
* page/DOMWindow.cpp:
(WebCore::DOMWindow::requestIdleCallback):
(WebCore::DOMWindow::cancelIdleCallback):
* page/DOMWindow.h:
* page/DOMWindow.idl:
* page/Settings.yaml:
2019-10-07 Jiewen Tan <jiewen_tan@apple.com>
Only wrapping CryptoKeys for IDB during serialization
https://bugs.webkit.org/show_bug.cgi?id=202500
<rdar://problem/52445927>
Reviewed by Chris Dumez.
Wrapping CryptoKeys during IDB serialization is a legacy request from Netflix when WebKit was an
early adopter. It is not necessary for other kinds of serialization. However, given existing keys
stored in users' idb are wrapped, the wrapping/unwrapping mechanism cannot be easily discarded.
Therefore, this patch restricts the wrapping/unwrapping mechanism to idb only.
To do so, a isWrappingRequired flag is added to CryptoKey such that whenever idb sees a CryptoKey,
it can set it. SerializedScriptValue will then only wrap a CryptoKey when this flag is set. Otherwise,
a new tag UnwrappedCryptoKeyTag is used to store unwrapped CryptoKeys in order to keep the old CryptoKeyTag
binaries intact. For deserialization, each type will be deserialized differently.
Besides the above, this patch also hardens WorkerGlobalScope::wrapCryptoKey/unwrapCryptoKey for
any potential racy issues. CryptoBooleanContainer is introduced to capture boolean in the lambda.
workerGlobalScope is replaced with workerMessagingProxy. Now, every variables captured in the lambdas
should be either a copy or a thread safe ref of the original object.
Test: crypto/workers/subtle/aes-indexeddb.html
* Modules/indexeddb/IDBObjectStore.cpp:
(WebCore::JSC::setIsWrappingRequiredForCryptoKey):
(WebCore::IDBObjectStore::putOrAdd):
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneDeserializer::readTerminal):
* crypto/CryptoKey.h:
(WebCore::CryptoKey::isWrappingRequired const):
(WebCore::CryptoKey::setIsWrappingRequired):
* dom/ScriptExecutionContext.h:
* workers/WorkerGlobalScope.cpp:
(WebCore::CryptoBooleanContainer::create):
(WebCore::CryptoBooleanContainer::boolean const):
(WebCore::CryptoBooleanContainer::setBoolean):
(WebCore::WorkerGlobalScope::wrapCryptoKey):
(WebCore::WorkerGlobalScope::unwrapCryptoKey):
* workers/WorkerGlobalScope.h:
* workers/WorkerLoaderProxy.h:
(WebCore::WorkerLoaderProxy::isWorkerMessagingProxy const):
* workers/WorkerMessagingProxy.h:
(isType):
2019-10-07 Yusuke Suzuki <ysuzuki@apple.com>
Unreviewed, build fix for Windows
https://bugs.webkit.org/show_bug.cgi?id=202569
* bindings/js/JSHTMLElementCustom.cpp:
(WebCore::constructJSHTMLElement):
* bindings/js/JSWebAnimationCustom.cpp:
(WebCore::constructJSWebAnimation):
2019-10-07 Yusuke Suzuki <ysuzuki@apple.com>
[JSC] Change signature of HostFunction to (JSGlobalObject*, CallFrame*)
https://bugs.webkit.org/show_bug.cgi?id=202569
Reviewed by Saam Barati.
No behavior change.
While signature is changed, we still use `state` name for CallFrame* variable since changing this involves massive channge in
CodeGeneratorJS.pm. When replacing `ExecState*` to `JSGlobalObject*`, we just remove these `state` variable and use `globalObject`
instead.
* Modules/applepay/ApplePaySession.h:
* Modules/applepay/PaymentMerchantSession.h:
* Modules/fetch/FetchResponse.h:
* Modules/indexeddb/IDBFactory.h:
* Modules/indexeddb/IDBIndex.h:
* Modules/indexeddb/IDBKeyRange.h:
* Modules/indexeddb/IDBObjectStore.h:
* Modules/indexeddb/server/IDBSerializationContext.h:
* bindings/js/IDBBindingUtilities.h:
* bindings/js/JSDOMBindingSecurity.h:
* bindings/js/JSDOMBuiltinConstructor.h:
(WebCore::JSDOMBuiltinConstructor<JSClass>::construct):
* bindings/js/JSDOMConstructor.h:
* bindings/js/JSDOMConstructorBase.cpp:
(WebCore::callThrowTypeError):
* bindings/js/JSDOMConstructorNotConstructable.h:
(WebCore::JSDOMConstructorNotConstructable::callThrowTypeError):
* bindings/js/JSDOMGlobalObject.cpp:
(WebCore::makeThisTypeErrorForBuiltins):
(WebCore::makeGetterTypeErrorForBuiltins):
(WebCore::isReadableByteStreamAPIEnabled):
* bindings/js/JSDOMIterator.h:
(WebCore::IteratorTraits>::next):
* bindings/js/JSDOMNamedConstructor.h:
* bindings/js/JSDOMPromise.cpp:
(WebCore::DOMPromise::whenPromiseIsSettled):
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::jsDOMWindowInstanceFunctionOpenDatabase):
* bindings/js/JSExtendableMessageEventCustom.cpp:
(WebCore::constructJSExtendableMessageEvent):
* bindings/js/JSHTMLElementCustom.cpp:
(WebCore::constructJSHTMLElement):
* bindings/js/JSPluginElementFunctions.cpp:
(WebCore::callPlugin):
* bindings/js/JSWebAnimationCustom.cpp:
(WebCore::constructJSWebAnimation):
* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::setupModuleScriptHandlers):
* bindings/js/ScriptController.h:
* bindings/js/ScriptModuleLoader.h:
* bindings/js/ScriptState.h:
* bindings/js/StructuredClone.cpp:
(WebCore::cloneArrayBufferImpl):
(WebCore::cloneArrayBuffer):
(WebCore::structuredCloneArrayBuffer):
(WebCore::structuredCloneArrayBufferView):
* bindings/js/StructuredClone.h:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GenerateImplementation):
(GenerateOperationTrampolineDefinition):
(GenerateSerializerDefinition):
(GenerateLegacyCallerDefinitions):
(GenerateLegacyCallerDefinition):
(GenerateIterableDefinition):
(GenerateConstructorDefinitions):
(GenerateConstructorDefinition):
* bindings/scripts/test/JS/JSMapLike.cpp:
(WebCore::jsMapLikePrototypeFunctionGet):
(WebCore::jsMapLikePrototypeFunctionHas):
(WebCore::jsMapLikePrototypeFunctionEntries):
(WebCore::jsMapLikePrototypeFunctionKeys):
(WebCore::jsMapLikePrototypeFunctionValues):
(WebCore::jsMapLikePrototypeFunctionForEach):
(WebCore::jsMapLikePrototypeFunctionAdd):
(WebCore::jsMapLikePrototypeFunctionClear):
(WebCore::jsMapLikePrototypeFunctionDelete):
* bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
(WebCore::jsReadOnlyMapLikePrototypeFunctionGet):
(WebCore::jsReadOnlyMapLikePrototypeFunctionHas):
(WebCore::jsReadOnlyMapLikePrototypeFunctionEntries):
(WebCore::jsReadOnlyMapLikePrototypeFunctionKeys):
(WebCore::jsReadOnlyMapLikePrototypeFunctionValues):
(WebCore::jsReadOnlyMapLikePrototypeFunctionForEach):
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
(WebCore::jsTestActiveDOMObjectPrototypeFunctionExcitingFunction):
(WebCore::jsTestActiveDOMObjectPrototypeFunctionPostMessage):
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
(WebCore::jsTestCEReactionsPrototypeFunctionMethodWithCEReactions):
(WebCore::jsTestCEReactionsPrototypeFunctionMethodWithCEReactionsNotNeeded):
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
(WebCore::jsTestCEReactionsStringifierPrototypeFunctionToString):
* bindings/scripts/test/JS/JSTestCallTracer.cpp:
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationInterface):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationSpecified):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithArguments):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithNullableArgument):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithVariantArgument):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithNullableVariantArgument):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithOptionalVariantArgument):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithDefaultVariantArgument):
* bindings/scripts/test/JS/JSTestDOMJIT.cpp:
(WebCore::jsTestDOMJITPrototypeFunctionGetAttribute):
(WebCore::jsTestDOMJITPrototypeFunctionItem):
(WebCore::jsTestDOMJITPrototypeFunctionHasAttribute):
(WebCore::jsTestDOMJITPrototypeFunctionGetElementById):
(WebCore::jsTestDOMJITPrototypeFunctionGetElementsByName):
* bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
(WebCore::jsTestEnabledBySettingPrototypeFunctionEnabledBySettingOperation):
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
(WebCore::JSTestEventConstructorConstructor::construct):
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
(WebCore::jsTestEventTargetPrototypeFunctionItem):
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
(WebCore::jsTestGlobalObjectInstanceFunctionRegularOperation):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation):
(WebCore::jsTestGlobalObjectConstructorFunctionEnabledAtRuntimeOperationStatic):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorld):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorldWhenRuntimeFeatureEnabled):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorldWhenRuntimeFeaturesEnabled):
(WebCore::jsTestGlobalObjectInstanceFunctionTestPrivateFunction):
(WebCore::jsTestGlobalObjectInstanceFunctionCalculateSecretResult):
(WebCore::jsTestGlobalObjectInstanceFunctionGetSecretBoolean):
(WebCore::jsTestGlobalObjectInstanceFunctionTestFeatureGetSecretBoolean):
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
(WebCore::jsTestIndexedSetterWithIdentifierPrototypeFunctionIndexedSetter):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterfaceConstructor::construct):
(WebCore::jsTestInterfacePrototypeFunctionImplementsMethod1):
(WebCore::jsTestInterfacePrototypeFunctionImplementsMethod2):
(WebCore::jsTestInterfacePrototypeFunctionImplementsMethod3):
(WebCore::jsTestInterfaceConstructorFunctionImplementsMethod4):
(WebCore::jsTestInterfacePrototypeFunctionTakeNodes):
(WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod1):
(WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod2):
(WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod3):
(WebCore::jsTestInterfaceConstructorFunctionSupplementalMethod4):
* bindings/scripts/test/JS/JSTestIterable.cpp:
(WebCore::jsTestIterablePrototypeFunctionEntries):
(WebCore::jsTestIterablePrototypeFunctionKeys):
(WebCore::jsTestIterablePrototypeFunctionValues):
(WebCore::jsTestIterablePrototypeFunctionForEach):
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
(WebCore::jsTestJSBuiltinConstructorPrototypeFunctionTestCustomFunction):
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
(WebCore::jsTestMediaQueryListListenerPrototypeFunctionMethod):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
(WebCore::jsTestNamedAndIndexedSetterWithIdentifierPrototypeFunctionNamedSetter):
(WebCore::jsTestNamedAndIndexedSetterWithIdentifierPrototypeFunctionIndexedSetter):
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::JSTestNamedConstructorNamedConstructor::construct):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
(WebCore::jsTestNamedDeleterWithIdentifierPrototypeFunctionNamedDeleter):
* bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
(WebCore::jsTestNamedGetterWithIdentifierPrototypeFunctionGetterName):
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
(WebCore::jsTestNamedSetterWithIdentifierPrototypeFunctionNamedSetter):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
(WebCore::jsTestNamedSetterWithIndexedGetterPrototypeFunctionNamedSetter):
(WebCore::jsTestNamedSetterWithIndexedGetterPrototypeFunctionIndexedSetter):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
(WebCore::jsTestNamedSetterWithIndexedGetterAndSetterPrototypeFunctionNamedSetter):
(WebCore::jsTestNamedSetterWithIndexedGetterAndSetterPrototypeFunctionIndexedSetter):
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
(WebCore::jsTestNamedSetterWithUnforgablePropertiesInstanceFunctionUnforgeableOperation):
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
(WebCore::jsTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsInstanceFunctionUnforgeableOperation):
* bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::JSTestNodeConstructor::construct):
(WebCore::jsTestNodePrototypeFunctionTestWorkerPromise):
(WebCore::jsTestNodePrototypeFunctionCalculateSecretResult):
(WebCore::jsTestNodePrototypeFunctionGetSecretBoolean):
(WebCore::jsTestNodePrototypeFunctionTestFeatureGetSecretBoolean):
(WebCore::jsTestNodePrototypeFunctionEntries):
(WebCore::jsTestNodePrototypeFunctionKeys):
(WebCore::jsTestNodePrototypeFunctionValues):
(WebCore::jsTestNodePrototypeFunctionForEach):
(WebCore::jsTestNodePrototypeFunctionToJSON):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObjConstructor::construct):
(WebCore::callJSTestObj1):
(WebCore::callJSTestObj2):
(WebCore::callJSTestObj3):
(WebCore::callJSTestObj):
(WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation):
(WebCore::jsTestObjConstructorFunctionEnabledAtRuntimeOperationStatic):
(WebCore::jsTestObjPrototypeFunctionEnabledInSpecificWorldWhenRuntimeFeatureEnabled):
(WebCore::jsTestObjPrototypeFunctionWorldSpecificMethod):
(WebCore::jsTestObjPrototypeFunctionCalculateSecretResult):
(WebCore::jsTestObjPrototypeFunctionGetSecretBoolean):
(WebCore::jsTestObjPrototypeFunctionTestFeatureGetSecretBoolean):
(WebCore::jsTestObjPrototypeFunctionVoidMethod):
(WebCore::jsTestObjPrototypeFunctionVoidMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionByteMethod):
(WebCore::jsTestObjPrototypeFunctionByteMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionOctetMethod):
(WebCore::jsTestObjPrototypeFunctionOctetMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionLongMethod):
(WebCore::jsTestObjPrototypeFunctionLongMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionObjMethod):
(WebCore::jsTestObjPrototypeFunctionObjMethodWithArgs):
(WebCore::jsTestObjInstanceFunctionUnforgeableMethod):
(WebCore::jsTestObjPrototypeFunctionMethodWithArgTreatingNullAsEmptyString):
(WebCore::jsTestObjPrototypeFunctionMethodWithXPathNSResolverParameter):
(WebCore::jsTestObjPrototypeFunctionNullableStringMethod):
(WebCore::jsTestObjConstructorFunctionNullableStringStaticMethod):
(WebCore::jsTestObjPrototypeFunctionNullableStringSpecialMethod):
(WebCore::jsTestObjPrototypeFunctionMethodWithEnumArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithStandaloneEnumArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalEnumArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalEnumArgAndDefaultValue):
(WebCore::jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows):
(WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNullableUSVStringArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArgTreatingNullAsEmptyString):
(WebCore::jsTestObjPrototypeFunctionMethodWithByteStringArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNullableByteStringArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithByteStringArgTreatingNullAsEmptyString):
(WebCore::jsTestObjPrototypeFunctionSerializedValue):
(WebCore::jsTestObjPrototypeFunctionMethodWithRecord):
(WebCore::jsTestObjPrototypeFunctionMethodWithException):
(WebCore::jsTestObjPrototypeFunctionMethodWithExceptionReturningLong):
(WebCore::jsTestObjPrototypeFunctionMethodWithExceptionReturningObject):
(WebCore::jsTestObjPrototypeFunctionCustomMethod):
(WebCore::jsTestObjPrototypeFunctionCustomMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionPrivateMethod):
(WebCore::jsTestObjPrototypeFunctionPublicAndPrivateMethod):
(WebCore::jsTestObjPrototypeFunctionAddEventListener):
(WebCore::jsTestObjPrototypeFunctionRemoveEventListener):
(WebCore::jsTestObjPrototypeFunctionWithExecStateVoid):
(WebCore::jsTestObjPrototypeFunctionWithExecStateObj):
(WebCore::jsTestObjPrototypeFunctionWithExecStateVoidException):
(WebCore::jsTestObjPrototypeFunctionWithExecStateObjException):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContext):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecState):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecStateObjException):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecStateWithSpaces):
(WebCore::jsTestObjPrototypeFunctionWithDocumentArgument):
(WebCore::jsTestObjPrototypeFunctionWithCallerDocumentArgument):
(WebCore::jsTestObjPrototypeFunctionWithCallerWindowArgument):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalArgAndDefaultValue):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalString):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUSVString):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomString):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringAndDefaultValue):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringAndDefaultValue):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsNull):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsUndefined):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringIsNull):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsEmptyString):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUSVStringIsEmptyString):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringIsEmptyString):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalDoubleIsNaN):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalFloatIsNaN):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalLongLong):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalLongLongIsZero):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUnsignedLongLong):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUnsignedLongLongIsZero):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalSequence):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalSequenceIsEmpty):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalBoolean):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalBooleanIsFalse):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAny):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalObject):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapper):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapperIsNull):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalXPathNSResolver):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalRecord):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalPromise):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackFunctionArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionAndOptionalArg):
(WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackAndOptionalArg):
(WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackArg):
(WebCore::jsTestObjPrototypeFunctionConditionalMethod1):
(WebCore::jsTestObjPrototypeFunctionConditionalMethod2):
(WebCore::jsTestObjPrototypeFunctionConditionalMethod3):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnion):
(WebCore::jsTestObjPrototypeFunctionOverloadWithNullableUnion):
(WebCore::jsTestObjPrototypeFunctionOverloadWithOptionalUnion):
(WebCore::jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameter):
(WebCore::jsTestObjConstructorFunctionClassMethod):
(WebCore::jsTestObjConstructorFunctionClassMethodWithOptional):
(WebCore::jsTestObjConstructorFunctionClassMethod2):
(WebCore::jsTestObjConstructorFunctionOverloadedMethod1):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithClamp):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithClampOnOptional):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithEnforceRange):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithEnforceRangeOnOptional):
(WebCore::jsTestObjPrototypeFunctionMethodWithUnsignedLongSequence):
(WebCore::jsTestObjPrototypeFunctionStringArrayFunction):
(WebCore::jsTestObjPrototypeFunctionDomStringListFunction):
(WebCore::jsTestObjPrototypeFunctionOperationWithOptionalUnionParameter):
(WebCore::jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence):
(WebCore::jsTestObjPrototypeFunctionGetElementById):
(WebCore::jsTestObjPrototypeFunctionGetSVGDocument):
(WebCore::jsTestObjPrototypeFunctionConvert1):
(WebCore::jsTestObjPrototypeFunctionConvert2):
(WebCore::jsTestObjPrototypeFunctionConvert3):
(WebCore::jsTestObjPrototypeFunctionConvert4):
(WebCore::jsTestObjPrototypeFunctionMutablePointFunction):
(WebCore::jsTestObjPrototypeFunctionOrange):
(WebCore::jsTestObjPrototypeFunctionVariadicStringMethod):
(WebCore::jsTestObjPrototypeFunctionVariadicDoubleMethod):
(WebCore::jsTestObjPrototypeFunctionVariadicNodeMethod):
(WebCore::jsTestObjPrototypeFunctionVariadicUnionMethod):
(WebCore::jsTestObjPrototypeFunctionAny):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunction):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgument):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithException):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgument):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunction):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionWithException):
(WebCore::jsTestObjPrototypeFunctionTestCustomPromiseFunction):
(WebCore::jsTestObjConstructorFunctionTestStaticCustomPromiseFunction):
(WebCore::jsTestObjPrototypeFunctionTestCustomReturnsOwnPromiseFunction):
(WebCore::jsTestObjPrototypeFunctionTestReturnsOwnPromiseAndPromiseProxyFunction):
(WebCore::jsTestObjPrototypeFunctionConditionalOverload):
(WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload):
(WebCore::jsTestObjPrototypeFunctionAttachShadowRoot):
(WebCore::jsTestObjPrototypeFunctionOperationWithExternalDictionaryParameter):
(WebCore::jsTestObjPrototypeFunctionBufferSourceParameter):
(WebCore::jsTestObjPrototypeFunctionLegacyCallerNamed):
(WebCore::jsTestObjPrototypeFunctionTestReturnValueOptimization):
(WebCore::jsTestObjPrototypeFunctionTestReturnValueOptimizationWithException):
(WebCore::jsTestObjPrototypeFunctionConditionallyExposedToWindowFunction):
(WebCore::jsTestObjPrototypeFunctionConditionallyExposedToWorkerFunction):
(WebCore::jsTestObjPrototypeFunctionConditionallyExposedToWindowAndWorkerFunction):
(WebCore::jsTestObjPrototypeFunctionToString):
(WebCore::jsTestObjPrototypeFunctionToJSON):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::constructJSTestOverloadedConstructors1):
(WebCore::constructJSTestOverloadedConstructors2):
(WebCore::constructJSTestOverloadedConstructors3):
(WebCore::constructJSTestOverloadedConstructors4):
(WebCore::constructJSTestOverloadedConstructors5):
(WebCore::JSTestOverloadedConstructorsConstructor::construct):
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
(WebCore::constructJSTestOverloadedConstructorsWithSequence1):
(WebCore::constructJSTestOverloadedConstructorsWithSequence2):
(WebCore::JSTestOverloadedConstructorsWithSequenceConstructor::construct):
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
(WebCore::jsTestOverrideBuiltinsPrototypeFunctionNamedItem):
* bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
(WebCore::JSTestPromiseRejectionEventConstructor::construct):
* bindings/scripts/test/JS/JSTestSerialization.cpp:
(WebCore::jsTestSerializationPrototypeFunctionToJSON):
* bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
(WebCore::jsTestSerializationInheritPrototypeFunctionToJSON):
* bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
(WebCore::jsTestSerializationInheritFinalPrototypeFunctionToJSON):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::jsTestSerializedScriptValueInterfacePrototypeFunctionFunction):
(WebCore::jsTestSerializedScriptValueInterfacePrototypeFunctionFunctionReturning):
* bindings/scripts/test/JS/JSTestStringifier.cpp:
(WebCore::jsTestStringifierPrototypeFunctionToString):
* bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
(WebCore::jsTestStringifierAnonymousOperationPrototypeFunctionToString):
* bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
(WebCore::jsTestStringifierNamedOperationPrototypeFunctionIdentifier):
(WebCore::jsTestStringifierNamedOperationPrototypeFunctionToString):
* bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
(WebCore::jsTestStringifierOperationImplementedAsPrototypeFunctionIdentifier):
(WebCore::jsTestStringifierOperationImplementedAsPrototypeFunctionToString):
* bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
(WebCore::jsTestStringifierOperationNamedToStringPrototypeFunctionToString):
* bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
(WebCore::jsTestStringifierReadOnlyAttributePrototypeFunctionToString):
* bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
(WebCore::jsTestStringifierReadWriteAttributePrototypeFunctionToString):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefsConstructor::construct):
(WebCore::jsTestTypedefsPrototypeFunctionFunc):
(WebCore::jsTestTypedefsPrototypeFunctionSetShadow):
(WebCore::jsTestTypedefsPrototypeFunctionMethodWithSequenceArg):
(WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceArg):
(WebCore::jsTestTypedefsPrototypeFunctionSequenceOfNullablesArg):
(WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceOfNullablesArg):
(WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceOfUnionsArg):
(WebCore::jsTestTypedefsPrototypeFunctionUnionArg):
(WebCore::jsTestTypedefsPrototypeFunctionFuncWithClamp):
(WebCore::jsTestTypedefsPrototypeFunctionFuncWithClampInTypedef):
(WebCore::jsTestTypedefsPrototypeFunctionPointFunction):
(WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunction):
(WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunction2):
(WebCore::jsTestTypedefsPrototypeFunctionCallWithSequenceThatRequiresInclude):
(WebCore::jsTestTypedefsPrototypeFunctionMethodWithException):
* bridge/c/c_utility.h:
* bridge/objc/objc_runtime.mm:
(JSC::Bindings::callObjCFallbackObject):
* bridge/runtime_method.cpp:
(JSC::callRuntimeMethod):
* bridge/runtime_object.cpp:
(JSC::Bindings::callRuntimeObject):
(JSC::Bindings::callRuntimeConstructor):
* crypto/SubtleCrypto.h:
* css/CSSFontFace.h:
* dom/CustomElementReactionQueue.h:
* dom/Document.h:
* dom/MessagePort.h:
* dom/MouseEvent.h:
* dom/ScriptExecutionContext.h:
* html/HTMLFrameElementBase.h:
* html/canvas/WebGLAny.h:
* inspector/agents/InspectorDOMAgent.h:
* inspector/agents/page/PageRuntimeAgent.h:
* page/DOMWindow.h:
* page/PageConsoleClient.h:
* page/RemoteDOMWindow.h:
* page/csp/ContentSecurityPolicy.h:
* platform/ThreadGlobalData.h:
* plugins/PluginViewBase.h:
* workers/DedicatedWorkerGlobalScope.h:
* workers/Worker.h:
* workers/WorkerConsoleClient.h:
* workers/service/ExtendableMessageEvent.h:
* worklets/WorkletConsoleClient.h:
2019-10-07 Sihui Liu <sihui_liu@apple.com>
ASSERTION FAILED: m_transactionOperationsInProgressQueue.first() == &operation in IDBTransaction::operationCompletedOnClient
https://bugs.webkit.org/show_bug.cgi?id=202552
Reviewed by Alex Christensen.
Dispatch task to database thread even if there is QuotaExceededError, to make sure request results are sent in
order.
Modified existing test to cover this: storage/indexeddb/storage-limit.html. Test would hit this assertion
without fix.
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::requestSpace):
(WebCore::IDBServer::UniqueIDBDatabase::waitForRequestSpaceCompletion):
(WebCore::IDBServer::UniqueIDBDatabase::createObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::createObjectStoreAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::performCreateObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::deleteObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::renameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::renameObjectStoreAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::performRenameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::clearObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::createIndex):
(WebCore::IDBServer::UniqueIDBDatabase::createIndexAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::performCreateIndex):
(WebCore::IDBServer::UniqueIDBDatabase::deleteIndex):
(WebCore::IDBServer::UniqueIDBDatabase::renameIndex):
(WebCore::IDBServer::UniqueIDBDatabase::renameIndexAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::performRenameIndex):
(WebCore::IDBServer::UniqueIDBDatabase::putOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::putOrAddAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::getRecord):
(WebCore::IDBServer::UniqueIDBDatabase::getAllRecords):
(WebCore::IDBServer::UniqueIDBDatabase::getCount):
(WebCore::IDBServer::UniqueIDBDatabase::deleteRecord):
(WebCore::IDBServer::UniqueIDBDatabase::openCursor):
(WebCore::IDBServer::UniqueIDBDatabase::iterateCursor):
(WebCore::IDBServer::UniqueIDBDatabase::commitTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::abortTransaction):
* Modules/indexeddb/server/UniqueIDBDatabase.h:
2019-10-07 Keith Rollin <krollin@apple.com>
Unreviewed, build fix after r250666. Fix 32- vs. 64-bit mismatch on
32-bit builds.
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::estimateSize):
2019-10-07 Ross Kirsling <ross.kirsling@sony.com>
Unreviewed WinCairo build fix for r250786.
* Modules/cache/DOMCache.cpp:
(WebCore::DOMCache::addAll):
2019-10-07 Tim Horton <timothy_horton@apple.com>
Fix the Windows build
* html/ImageBitmap.h:
2019-10-07 Ross Kirsling <ross.kirsling@sony.com>
Unreviewed WinCairo build fix for r250758.
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):
2019-10-07 Ryosuke Niwa <rniwa@webkit.org>
focus pseudo class should match a shadow host whose shadow tree contains the focused element
https://bugs.webkit.org/show_bug.cgi?id=202432
Reviewed by Antti Koivisto.
Note that focus pseudo class does not match a shadow host when its shadow tree contains a slot element
with a focused element or its ancestor assigned since such a shadow host has the actual focused element
in the same tree as the shadow host. (e.g. the focused element can be a direct child of the host).
In order to preserve the behavior of focus ring, which should be only drawn on the currently focused
element and not any shadow host which contains such an element, this patch introduces a new pseudo class,
-webkit-direct-focus, which is only available in the user agent stylesheet. Putting :host(:focus) rule
isn't sufficient because style rules inside shadow trees always has a lower precendence than rules
outside the shadow tree (the tree of its shadow host).
[1] Also see https://github.com/whatwg/html/pull/4731
Tests: fast/shadow-dom/direct-focus-pseudo-does-not-match-in-author-stylesheet.html
fast/shadow-dom/focus-pseudo-matches-on-shadow-host.html
fast/shadow-dom/focus-pseudo-on-shadow-host-1.html
fast/shadow-dom/focus-pseudo-on-shadow-host-2.html
fast/shadow-dom/focus-pseudo-on-shadow-host-3.html
* css/CSSSelector.cpp:
(WebCore::CSSSelector::selectorText const): Added the support for -webkit-direct-focus.
* css/CSSSelector.h:
* css/RuleSet.cpp:
(WebCore::RuleSet::addRule): Ditto.
* css/SelectorChecker.cpp:
(WebCore::SelectorChecker::checkOne const):: Ditto.
(WebCore::doesShadowTreeContainFocusedElement):: Ditto.
(WebCore::SelectorChecker::matchesFocusPseudoClass): Implemented the new behavior.
(WebCore::SelectorChecker::matchesDirectFocusPseudoClass): Added. Implements the old behavior for
the focus ring via -webkit-direct-focus pseudo class.
* css/SelectorChecker.h:
* css/SelectorPseudoClassAndCompatibilityElementMap.in: Added -webkit-direct-focus.
* css/html.css: Use -webkit-direct-focus pseudo class to preserve the existing behavior of focus ring.
* css/parser/CSSSelectorParser.cpp:
(WebCore::CSSSelectorParser::consumePseudo): Ignore -webkit-direct-focus in author and user stylesheets.
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::addPseudoClassType): Added the support for -webkit-direct-focus.
* dom/Element.cpp:
(WebCore::Element::setFocus): Invoke setContainsFocusedElement on each shadow ancestor root of
the newly focused element. Note that we can't use :focus-within pseudo class since that would also match
the host of a shadow root which contains a slotted focused element, causing both the shadow host and
the slotted element to match :focus pseudo class in the host's tree.
* dom/ShadowRoot.h:
2019-10-07 Rob Buis <rbuis@igalia.com>
Change Response's statusText's default
https://bugs.webkit.org/show_bug.cgi?id=191879
Reviewed by Youenn Fablet.
Change Response's statusText's default to "".
Tests: web-platform-tests/fetch/api/response/response-clone.html
web-platform-tests/fetch/api/response/response-init-001.html
* Modules/fetch/FetchResponse.h:
* Modules/fetch/FetchResponse.idl:
2019-10-07 Chris Dumez <cdumez@apple.com>
DOMCache should not prevent pages from entering the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=202590
Reviewed by Youenn Fablet.
Allow DOMCache to suspend in the back/forward cache unconditionally, by
appending all promise resolutions to a SuspendableTaskQueue. This guarantees
that any asynchronous promise resolution is delayed while in the page cache,
until the page gets resumed.
Test: http/tests/navigation/page-cache-domcache-pending-promise.html
* Modules/cache/DOMCache.cpp:
(WebCore::DOMCache::DOMCache):
(WebCore::DOMCache::match):
(WebCore::DOMCache::matchAll):
(WebCore::DOMCache::addAll):
(WebCore::DOMCache::putWithResponseData):
(WebCore::DOMCache::put):
(WebCore::DOMCache::remove):
(WebCore::DOMCache::keys):
(WebCore::DOMCache::canSuspendForDocumentSuspension const):
* Modules/cache/DOMCache.h:
2019-10-07 Chris Dumez <cdumez@apple.com>
PendingImageBitmap should not prevent entering the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=202585
Reviewed by Tim Horton.
Add PageCache support to PendingImageBitmap by doing the promise resolution on a
SuspendableTimer (which properly gets paused while in PageCache).
Test: fast/history/page-cache-createImageBitmap.html
* html/ImageBitmap.cpp:
2019-10-07 Dirk Schulze <krit@webkit.org>
clip-path: <geometry-box> mapping incorrect
https://bugs.webkit.org/show_bug.cgi?id=202075
Reviewed by Simon Fraser.
For HTML elements:
- stroke-box, view-box consistently compute to border-box
- fill-box computes to content-box
Tests: css3/masking/clip-path-border-radius-fill-box-001.html
css3/masking/clip-path-border-radius-stroke-box-000.html
css3/masking/clip-path-border-radius-view-box-000.html
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::nodeAtPoint):
* rendering/shapes/BoxShape.cpp:
(WebCore::computeRoundedRectForBoxShape):
2019-10-07 Tim Horton <timothy_horton@apple.com>
Fix the Windows build
* html/ImageBitmap.h:
2019-10-07 Zalan Bujtas <zalan@apple.com>
[LFC] Add const version of LayoutState::displayBoxForLayoutBox
https://bugs.webkit.org/show_bug.cgi?id=202623
<rdar://problem/56025259>
Reviewed by Antti Koivisto.
* layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::displayBoxForLayoutBox):
(WebCore::Layout::LayoutState::displayBoxForLayoutBox const):
* layout/LayoutState.h:
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::outputLayoutTree):
2019-10-07 youenn fablet <youenn@apple.com>
[iOS] Unmuting capture of a page is not working
https://bugs.webkit.org/show_bug.cgi?id=202627
Reviewed by Eric Carlson.
Before the patch, we were muting the capture tracks but never unmuting them.
The patch updates the code to make sure we unmute capture tracks based on the document state.
In addition, the iOS code wass process-wide while capture might happen between two documents in the same process.
The patch updates the capturestate computation and muting logic to be Document based.
A follow-up refactoring will merge back iOS and MacOS code paths.
Covered by API test.
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::captureState):
(WebCore::MediaStreamTrack::updateCaptureAccordingMutedState):
(WebCore::MediaStreamTrack::muteCapture): Deleted.
* Modules/mediastream/MediaStreamTrack.h:
* dom/Document.cpp:
(WebCore::Document::updateIsPlayingMedia):
(WebCore::Document::pageMutedStateDidChange):
2019-10-06 Ryosuke Niwa <rniwa@webkit.org>
attachShadow should support attaching a shadow root to a main element
https://bugs.webkit.org/show_bug.cgi?id=197726
Reviewed by Antti Koivisto.
Added main element to the list of elements that support an author shadow root.
Test: fast/shadow-dom/attach-shadow-to-elements.html
* dom/Element.cpp:
(WebCore::canAttachAuthorShadowRoot):
2019-10-06 Zalan Bujtas <zalan@apple.com>
[LFC][Painting] Introduce Display::Painter
https://bugs.webkit.org/show_bug.cgi?id=202614
<rdar://problem/56010347>
Reviewed by Antti Koivisto.
Display::Painter is responsible for rendering the nodes in the display tree. Testing purposes/WK1 only at this point.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/LayoutContext.cpp:
(WebCore::Layout::initializeLayoutState):
(WebCore::Layout::LayoutContext::runLayout):
(WebCore::Layout::LayoutContext::runLayoutAndVerify):
(WebCore::Layout::LayoutContext::runLayoutAndPaint):
(WebCore::Layout::LayoutContext::run): Deleted.
* layout/LayoutContext.h:
* layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::LayoutState):
* layout/LayoutState.h:
(WebCore::Layout::LayoutState::root const):
* layout/Verification.cpp:
(WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree):
* layout/displaytree/DisplayPainter.cpp: Added.
(WebCore::Display::Painter::paint):
* layout/displaytree/DisplayPainter.h: Added.
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::printLayoutTreeForLiveDocuments):
* page/FrameView.cpp:
(WebCore::FrameView::paintContents):
* page/FrameViewLayoutContext.cpp:
(WebCore::layoutUsingFormattingContext):
2019-10-06 Antti Koivisto <antti@apple.com>
Node::ref/deref should be const
https://bugs.webkit.org/show_bug.cgi?id=202562
Reviewed by Ryosuke Niwa.
This enables RefPtr<const Element> and matches RefCounted.
* css/ElementRuleCollector.cpp:
(WebCore::ElementRuleCollector::collectMatchingRules):
(WebCore::ElementRuleCollector::matchAuthorRules):
(WebCore::ElementRuleCollector::matchAuthorShadowPseudoElementRules):
(WebCore::ElementRuleCollector::matchHostPseudoClassRules):
(WebCore::ElementRuleCollector::matchSlottedPseudoElementRules):
(WebCore::ElementRuleCollector::matchPartPseudoElementRules):
(WebCore::ElementRuleCollector::collectMatchingShadowPseudoElementRules):
(WebCore::ElementRuleCollector::collectSlottedPseudoElementRulesForSlot):
(WebCore::ElementRuleCollector::matchUARules):
(WebCore::ElementRuleCollector::ruleMatches):
(WebCore::ElementRuleCollector::matchAllRules):
Use it to ref elements in ElementRuleCollector.
* css/ElementRuleCollector.h:
(WebCore::ElementRuleCollector::element const):
* dom/Node.h:
(WebCore::Node::ref const):
(WebCore::Node::deref const):
(WebCore::Node::ref): Deleted.
(WebCore::Node::deref): Deleted.
2019-10-05 Zalan Bujtas <zalan@apple.com>
[LFC] LayoutChildtIteratorAdapter -> LayoutChildIteratorAdapter
https://bugs.webkit.org/show_bug.cgi?id=202612
<rdar://problem/56007611>
Reviewed by Anders Carlsson.
* layout/layouttree/LayoutChildIterator.h:
(WebCore::Layout::LayoutChildIterator<T>::LayoutChildIterator):
(WebCore::Layout::LayoutChildIterator<T>::operator):
(WebCore::Layout::LayoutChildIteratorAdapter<T>::LayoutChildIteratorAdapter):
(WebCore::Layout::LayoutChildIteratorAdapter<T>::begin const):
(WebCore::Layout::LayoutChildIteratorAdapter<T>::end const):
(WebCore::Layout::LayoutChildIteratorAdapter<T>::first const):
(WebCore::Layout::LayoutChildIteratorAdapter<T>::last const):
(WebCore::Layout::childrenOfType):
(WebCore::Layout::LayoutChildtIterator<T>::LayoutChildtIterator): Deleted.
(WebCore::Layout::LayoutChildtIterator<T>::operator): Deleted.
(WebCore::Layout::LayoutChildtIteratorAdapter<T>::LayoutChildtIteratorAdapter): Deleted.
(WebCore::Layout::LayoutChildtIteratorAdapter<T>::begin const): Deleted.
(WebCore::Layout::LayoutChildtIteratorAdapter<T>::end const): Deleted.
(WebCore::Layout::LayoutChildtIteratorAdapter<T>::first const): Deleted.
(WebCore::Layout::LayoutChildtIteratorAdapter<T>::last const): Deleted.
2019-10-05 Zalan Bujtas <zalan@apple.com>
[LFC] Remove redundant includes.
https://bugs.webkit.org/show_bug.cgi?id=202610
<rdar://problem/56003250>
Reviewed by Tim Horton.
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
* layout/FormattingContextQuirks.cpp:
* layout/FormattingState.h:
* layout/LayoutContext.h:
* layout/LayoutState.h:
* layout/LayoutUnits.h:
* layout/blockformatting/BlockFormattingContext.cpp:
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingState.cpp:
* layout/blockformatting/BlockFormattingState.h:
* layout/blockformatting/BlockInvalidation.h:
* layout/displaytree/DisplayRect.h:
* layout/displaytree/DisplayRun.h:
* layout/floats/FloatAvoider.cpp:
* layout/floats/FloatAvoider.h:
* layout/floats/FloatBox.h:
* layout/floats/FloatingContext.cpp:
* layout/floats/FloatingContext.h:
* layout/floats/FloatingState.h:
* layout/inlineformatting/InlineFormattingContext.cpp:
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
* layout/inlineformatting/InlineFormattingContextQuirks.cpp:
* layout/inlineformatting/InlineInvalidation.h:
* layout/inlineformatting/InlineLine.h:
* layout/inlineformatting/InlineLineBreaker.cpp:
* layout/inlineformatting/InlineLineLayout.cpp:
* layout/layouttree/LayoutBox.h:
* layout/tableformatting/TableFormattingContext.h:
* layout/tableformatting/TableFormattingContextGeometry.cpp:
* layout/tableformatting/TableGrid.h:
* layout/tableformatting/TableInvalidation.h:
2019-10-04 Ryosuke Niwa <rniwa@webkit.org>
Change "InvalidStateError" to "NotSupportedError" for attachShadow()
https://bugs.webkit.org/show_bug.cgi?id=197948
Reviewed by Wenson Hsieh.
Match the latest spec. See https://github.com/whatwg/dom/pull/761
* dom/Element.cpp:
(WebCore::Element::attachShadow): Throw NotSupportedError when there is already a shadow tree.
2019-10-04 Chris Dumez <cdumez@apple.com>
Allow pages using EventSource to enter the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=202370
<rdar://problem/55853142>
Reviewed by Geoffrey Garen.
Allow pages using EventSource to enter the back/forward cache. If the EventSource is
connecting at the time it enters PageCache, it will resume connecting after restoring
from PageCache (by making m_connectTimer a SuspendableTimer, which is PageCache-aware).
If the EventSource is was open upon navigating, it gets closed upon navigating (since
all pending loads get cancelled on navigation). To help the page recover, we fire an
error event and attempt to reconnect automatically when restoring the page from page
cache. It is allowed by the specification to attempt reconnection in case of non-fatal
network errors.
Tests: http/tests/eventsource/eventsource-page-cache-connected.html
http/tests/eventsource/eventsource-page-cache-connecting.html
* page/EventSource.cpp:
(WebCore::EventSource::EventSource):
(WebCore::EventSource::scheduleReconnect):
(WebCore::EventSource::close):
(WebCore::EventSource::didReceiveResponse):
(WebCore::EventSource::dispatchErrorEvent):
(WebCore::EventSource::didReceiveData):
(WebCore::EventSource::didFinishLoading):
(WebCore::EventSource::didFail):
(WebCore::EventSource::abortConnectionAttempt):
(WebCore::EventSource::doExplicitLoadCancellation):
(WebCore::EventSource::canSuspendForDocumentSuspension const):
(WebCore::EventSource::suspend):
(WebCore::EventSource::resume):
(WebCore::EventSource::dispatchMessageEvent):
* page/EventSource.h:
2019-10-04 Chris Dumez <cdumez@apple.com>
ServiceWorkerContainer should never prevent a page from entering the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=202603
Reviewed by Geoff Garen.
Make it so that ServiceWorkerContainer can suspend, even if they have pending promises.
We now queue all promise resolutions to a SuspendableTaskQueue to make sure that those
promises do not get resolved while in the page cache.
Test: http/tests/workers/service/page-cache-service-worker-pending-promise.https.html
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::ServiceWorkerContainer):
(WebCore::ServiceWorkerContainer::ready):
(WebCore::ServiceWorkerContainer::getRegistration):
(WebCore::ServiceWorkerContainer::getRegistrations):
(WebCore::ServiceWorkerContainer::jobFailedWithException):
(WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):
(WebCore::ServiceWorkerContainer::jobResolvedWithUnregistrationResult):
(WebCore::ServiceWorkerContainer::jobFailedLoadingScript):
(WebCore::ServiceWorkerContainer::canSuspendForDocumentSuspension const):
* workers/service/ServiceWorkerContainer.h:
2019-10-04 Chris Dumez <cdumez@apple.com>
Allow pages using IDBIndex to enter the PageCache
https://bugs.webkit.org/show_bug.cgi?id=202430
<rdar://problem/55887918>
Reviewed by Geoffrey Garen.
There is no reason to prevent PageCaching when an IDBIndex object is alive.
No events are fired by IDBIndex and its API returns IDBRequest objects, which
are already PageCache-aware.
I have seen Yahoo.com failing to enter the back/forward cache because of this.
No new tests, updated existing test.
* Modules/indexeddb/IDBIndex.cpp:
(WebCore::IDBIndex::canSuspendForDocumentSuspension const):
2019-10-04 Heiko Becker <heirecka@exherbo.org>
Fix build with icu 65.1
https://bugs.webkit.org/show_bug.cgi?id=202600
Reviewed by Konstantin Tokarev.
* dom/Document.cpp:
(WebCore::isValidNameNonASCII):
(WebCore::Document::parseQualifiedName):
2019-10-04 James Darpinian <jdarpinian@chromium.org>
Allow using WebGL 2 when USE_ANGLE=1
https://bugs.webkit.org/show_bug.cgi?id=202593
Reviewed by Alex Christensen.
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::create):
Disable irrelevant extension check.
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::GraphicsContext3D::GraphicsContext3D):
Use ES3 ANGLE context when WebGL 2 is requested.
2019-10-04 Alex Christensen <achristensen@webkit.org>
Stop sending list of display-isolated schemes to NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=202557
Reviewed by Youenn Fablet.
They are only ever used in the WebProcess in SecurityOrigin::canDisplay.
If someone adds code that uses them in the NetworkProcess, they will hit my new assertion.
No change in behavior.
* page/SecurityOrigin.cpp:
(WebCore::SecurityOrigin::canDisplay const):
* platform/RuntimeApplicationChecks.h:
(WebCore::isInNetworkProcess):
* platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::isInNetworkProcess):
2019-10-04 Alex Christensen <achristensen@webkit.org>
Rename SchemeRegistry to LegacySchemeRegistry
https://bugs.webkit.org/show_bug.cgi?id=202586
Reviewed by Tim Horton.
SchemeRegistry is process-global. We need to replace it with a non-process-global registry, but Rome wasn't built in a day.
This rename allows me to call the replacement object that will have ownership and configuration "SchemeRegistry"
and it also indicates that new development should use the owned object instead of the global object.
* Headers.cmake:
* Modules/mediastream/UserMediaController.cpp:
(WebCore::isSecure):
* Modules/mediastream/UserMediaRequest.cpp:
* Modules/webauthn/AuthenticatorCoordinator.cpp:
(WebCore::AuthenticatorCoordinatorInternal::processAppIdExtension):
* Modules/webdatabase/DatabaseContext.cpp:
(WebCore::DatabaseContext::allowDatabaseAccess const):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/Document.cpp:
(WebCore::Document::setDomain):
* dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::hasServiceWorkerScheme const):
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::userDidClickSnapshot):
(WebCore::HTMLPlugInImageElement::subframeLoaderWillCreatePlugIn):
* loader/CrossOriginAccessControl.cpp:
(WebCore::isValidCrossOriginRedirectionURL):
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::matchRegistration):
(WebCore::DocumentLoader::disallowWebArchive const):
(WebCore::DocumentLoader::commitData):
(WebCore::DocumentLoader::maybeLoadEmpty):
* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::DocumentThreadableLoader):
(WebCore::DocumentThreadableLoader::checkURLSchemeAsCORSEnabled):
* loader/archive/mhtml/MHTMLArchive.cpp:
(WebCore::MHTMLArchive::create):
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::freshnessLifetime const):
* page/Page.cpp:
(WebCore::Page::userStyleSheetLocationChanged):
* page/SecurityOrigin.cpp:
(WebCore::shouldTreatAsUniqueOrigin):
(WebCore::shouldTreatAsPotentiallyTrustworthy):
(WebCore::SecurityOrigin::SecurityOrigin):
(WebCore::SecurityOrigin::isSecure):
(WebCore::SecurityOrigin::canDisplay const):
(WebCore::SecurityOrigin::domainForCachePartition const):
* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::allowObjectFromSource const):
(WebCore::ContentSecurityPolicy::allowChildFrameFromSource const):
(WebCore::ContentSecurityPolicy::allowResourceFromSource const):
(WebCore::ContentSecurityPolicy::allowConnectToSource const):
(WebCore::ContentSecurityPolicy::allowBaseURI const):
* platform/LegacySchemeRegistry.cpp: Copied from Source/WebCore/platform/SchemeRegistry.cpp.
(WebCore::allBuiltinSchemes):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsLocal):
(WebCore::LegacySchemeRegistry::removeURLSchemeRegisteredAsLocal):
(WebCore::LegacySchemeRegistry::shouldTreatURLSchemeAsLocal):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsNoAccess):
(WebCore::LegacySchemeRegistry::shouldTreatURLSchemeAsNoAccess):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsDisplayIsolated):
(WebCore::LegacySchemeRegistry::shouldTreatURLSchemeAsDisplayIsolated):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsSecure):
(WebCore::LegacySchemeRegistry::shouldTreatURLSchemeAsSecure):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsEmptyDocument):
(WebCore::LegacySchemeRegistry::shouldLoadURLSchemeAsEmptyDocument):
(WebCore::LegacySchemeRegistry::setDomainRelaxationForbiddenForURLScheme):
(WebCore::LegacySchemeRegistry::isDomainRelaxationForbiddenForURLScheme):
(WebCore::LegacySchemeRegistry::canDisplayOnlyIfCanRequest):
(WebCore::LegacySchemeRegistry::registerAsCanDisplayOnlyIfCanRequest):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsNotAllowingJavascriptURLs):
(WebCore::LegacySchemeRegistry::shouldTreatURLSchemeAsNotAllowingJavascriptURLs):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsAllowingDatabaseAccessInPrivateBrowsing):
(WebCore::LegacySchemeRegistry::allowsDatabaseAccessInPrivateBrowsing):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsCORSEnabled):
(WebCore::LegacySchemeRegistry::shouldTreatURLSchemeAsCORSEnabled):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsBypassingContentSecurityPolicy):
(WebCore::LegacySchemeRegistry::removeURLSchemeRegisteredAsBypassingContentSecurityPolicy):
(WebCore::LegacySchemeRegistry::schemeShouldBypassContentSecurityPolicy):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsAlwaysRevalidated):
(WebCore::LegacySchemeRegistry::shouldAlwaysRevalidateURLScheme):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsCachePartitioned):
(WebCore::LegacySchemeRegistry::shouldPartitionCacheForURLScheme):
(WebCore::LegacySchemeRegistry::registerURLSchemeServiceWorkersCanHandle):
(WebCore::LegacySchemeRegistry::canServiceWorkersHandleURLScheme):
(WebCore::LegacySchemeRegistry::isServiceWorkerContainerCustomScheme):
(WebCore::LegacySchemeRegistry::isUserExtensionScheme):
(WebCore::LegacySchemeRegistry::isBuiltinScheme):
(WebCore::SchemeRegistry::registerURLSchemeAsLocal): Deleted.
(WebCore::SchemeRegistry::removeURLSchemeRegisteredAsLocal): Deleted.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsLocal): Deleted.
(WebCore::SchemeRegistry::registerURLSchemeAsNoAccess): Deleted.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsNoAccess): Deleted.
(WebCore::SchemeRegistry::registerURLSchemeAsDisplayIsolated): Deleted.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsDisplayIsolated): Deleted.
(WebCore::SchemeRegistry::registerURLSchemeAsSecure): Deleted.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsSecure): Deleted.
(WebCore::SchemeRegistry::registerURLSchemeAsEmptyDocument): Deleted.
(WebCore::SchemeRegistry::shouldLoadURLSchemeAsEmptyDocument): Deleted.
(WebCore::SchemeRegistry::setDomainRelaxationForbiddenForURLScheme): Deleted.
(WebCore::SchemeRegistry::isDomainRelaxationForbiddenForURLScheme): Deleted.
(WebCore::SchemeRegistry::canDisplayOnlyIfCanRequest): Deleted.
(WebCore::SchemeRegistry::registerAsCanDisplayOnlyIfCanRequest): Deleted.
(WebCore::SchemeRegistry::registerURLSchemeAsNotAllowingJavascriptURLs): Deleted.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsNotAllowingJavascriptURLs): Deleted.
(WebCore::SchemeRegistry::registerURLSchemeAsAllowingDatabaseAccessInPrivateBrowsing): Deleted.
(WebCore::SchemeRegistry::allowsDatabaseAccessInPrivateBrowsing): Deleted.
(WebCore::SchemeRegistry::registerURLSchemeAsCORSEnabled): Deleted.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsCORSEnabled): Deleted.
(WebCore::SchemeRegistry::registerURLSchemeAsBypassingContentSecurityPolicy): Deleted.
(WebCore::SchemeRegistry::removeURLSchemeRegisteredAsBypassingContentSecurityPolicy): Deleted.
(WebCore::SchemeRegistry::schemeShouldBypassContentSecurityPolicy): Deleted.
(WebCore::SchemeRegistry::registerURLSchemeAsAlwaysRevalidated): Deleted.
(WebCore::SchemeRegistry::shouldAlwaysRevalidateURLScheme): Deleted.
(WebCore::SchemeRegistry::registerURLSchemeAsCachePartitioned): Deleted.
(WebCore::SchemeRegistry::shouldPartitionCacheForURLScheme): Deleted.
(WebCore::SchemeRegistry::registerURLSchemeServiceWorkersCanHandle): Deleted.
(WebCore::SchemeRegistry::canServiceWorkersHandleURLScheme): Deleted.
(WebCore::SchemeRegistry::isServiceWorkerContainerCustomScheme): Deleted.
(WebCore::SchemeRegistry::isUserExtensionScheme): Deleted.
(WebCore::SchemeRegistry::isBuiltinScheme): Deleted.
* platform/LegacySchemeRegistry.h: Copied from Source/WebCore/platform/SchemeRegistry.h.
* platform/SchemeRegistry.cpp: Removed.
* platform/SchemeRegistry.h: Removed.
* platform/ios/QuickLook.mm:
* storage/Storage.cpp:
* testing/Internals.cpp:
(WebCore::Internals::registerURLSchemeAsBypassingContentSecurityPolicy):
(WebCore::Internals::removeURLSchemeRegisteredAsBypassingContentSecurityPolicy):
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::addRegistration):
* workers/service/ServiceWorkerProvider.cpp:
(WebCore::ServiceWorkerProvider::registerServiceWorkerClients):
* workers/service/server/SWServerJobQueue.cpp:
(WebCore::SWServerJobQueue::runRegisterJob):
2019-10-04 Antoine Quint <graouts@apple.com>
Crash in debug build with imported/w3c/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events-replacement.html
https://bugs.webkit.org/show_bug.cgi?id=202583
Reviewed by Dean Jackson.
Ensure we remove the animation from the timeline it's currently associated with since it may have changed since its creation. This caused
a crash because we have an assertion in AnimationTimeline::removeAnimation() to check that the animation belonged to the timeline it's called on.
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::removeReplacedAnimations):
2019-10-04 Tim Horton <timothy_horton@apple.com>
Clean up some includes to make the build a bit faster: DOMPromise
https://bugs.webkit.org/show_bug.cgi?id=202570
Reviewed by Chris Dumez.
No new tests, just reorganizing.
Apply some profile-guided optimizations to our headers.
Get JSDOMPromiseDeferred.h and DOMPromiseProxy.h out of WebCore headers.
One remains (FetchBodyConsumer.h); I leave it as an exercise to the reader.
In my testing, this is worth a reliable 5-6% on the WebCore Build Benchmark.
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
* Modules/encryptedmedia/MediaKeySession.cpp:
* Modules/encryptedmedia/MediaKeySession.h:
* Modules/encryptedmedia/MediaKeySystemAccess.cpp:
* Modules/encryptedmedia/MediaKeySystemAccess.h:
* Modules/encryptedmedia/MediaKeys.cpp:
* Modules/encryptedmedia/MediaKeys.h:
* Modules/encryptedmedia/NavigatorEME.cpp:
* Modules/encryptedmedia/NavigatorEME.h:
* Modules/fetch/DOMWindowFetch.cpp:
* Modules/fetch/DOMWindowFetch.h:
* Modules/fetch/FetchBody.cpp:
* Modules/fetch/FetchBody.h:
* Modules/fetch/FetchLoader.cpp:
* Modules/fetch/FetchLoader.h:
* Modules/fetch/WorkerGlobalScopeFetch.cpp:
* Modules/fetch/WorkerGlobalScopeFetch.h:
* Modules/mediacapabilities/MediaCapabilities.cpp:
* Modules/mediacapabilities/MediaCapabilities.h:
* Modules/mediastream/MediaDevices.cpp:
* Modules/mediastream/MediaDevices.h:
* Modules/mediastream/MediaStreamTrack.cpp:
* Modules/mediastream/MediaStreamTrack.h:
* Modules/mediastream/PeerConnectionBackend.cpp:
* Modules/mediastream/PeerConnectionBackend.h:
* Modules/mediastream/RTCPeerConnection.cpp:
* Modules/mediastream/RTCRtpReceiver.h:
* Modules/mediastream/RTCRtpSenderBackend.h:
* Modules/mediastream/UserMediaRequest.cpp:
* Modules/mediastream/UserMediaRequest.h:
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
* Modules/mediastream/libwebrtc/LibWebRTCRtpTransceiverBackend.cpp:
* Modules/paymentrequest/PaymentRequest.cpp:
* Modules/paymentrequest/PaymentRequest.h:
* Modules/paymentrequest/PaymentResponse.cpp:
* Modules/paymentrequest/PaymentResponse.h:
* Modules/streams/ReadableStreamSource.h:
* Modules/webaudio/AudioContext.h:
* Modules/webauthn/AuthenticatorCoordinator.cpp:
* Modules/webauthn/AuthenticatorCoordinator.h:
* Modules/webauthn/PublicKeyCredential.h:
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
* Modules/webgpu/WHLSL/WHLSLStandardLibraryUtilities.cpp:
* Modules/webgpu/WebGPU.cpp:
* Modules/webgpu/WebGPU.h:
* Modules/webgpu/WebGPUAdapter.cpp:
* Modules/webgpu/WebGPUAdapter.h:
* Modules/webgpu/WebGPUBuffer.cpp:
* Modules/webgpu/WebGPUBuffer.h:
* Modules/webgpu/WebGPUDevice.cpp:
* Modules/webgpu/WebGPUDevice.h:
* Modules/webvr/NavigatorWebVR.cpp:
* Modules/webvr/NavigatorWebVR.h:
* Modules/webvr/VRDisplay.cpp:
* Modules/webvr/VRDisplay.h:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* animation/KeyframeEffect.cpp:
* animation/WebAnimation.cpp:
* animation/WebAnimation.h:
* bindings/js/CachedModuleScriptLoader.cpp:
* bindings/js/CachedModuleScriptLoaderClient.h:
* bindings/js/JSDOMPromiseDeferred.h:
* bindings/js/JSHTMLTemplateElementCustom.cpp:
* bindings/js/JSImageDataCustom.cpp:
* bindings/js/JSReadableStreamSourceCustom.cpp:
* bindings/js/JSWebAnimationCustom.cpp:
* bindings/js/JSWorkerGlobalScopeBase.cpp:
* bindings/js/JSWorkerGlobalScopeCustom.cpp:
* bindings/js/JSWorkletGlobalScopeBase.cpp:
* bindings/js/ScriptModuleLoader.cpp:
* css/FontFace.cpp:
* css/FontFace.h:
* css/FontFaceSet.cpp:
* css/FontFaceSet.h:
* dom/CustomElementRegistry.cpp:
* dom/DeviceOrientationOrMotionEvent.cpp:
* dom/DeviceOrientationOrMotionEvent.h:
* dom/MouseEvent.cpp:
* dom/MouseEvent.h:
* html/CustomPaintCanvas.h:
* html/ImageBitmap.cpp:
* html/ImageBitmap.h:
* html/OffscreenCanvas.cpp:
* html/OffscreenCanvas.h:
* loader/ImageLoader.cpp:
* loader/ImageLoader.h:
* page/DOMWindow.cpp:
* page/Navigator.h:
* platform/graphics/CustomPaintImage.cpp:
* testing/Internals.cpp:
* testing/Internals.h:
* testing/ServiceWorkerInternals.h:
* testing/ServiceWorkerInternals.mm:
* workers/service/ServiceWorkerContainer.cpp:
* workers/service/ServiceWorkerContainer.h:
* workers/service/ServiceWorkerJob.h:
* workers/service/ServiceWorkerRegistration.cpp:
* workers/service/ServiceWorkerRegistration.h:
* worklets/PaintWorkletGlobalScope.cpp:
2019-10-04 Sihui Liu <sihui_liu@apple.com>
Layout Test imported/w3c/web-platform-tests/IndexedDB/fire-error-event-exception.html is a Flaky Failure
https://bugs.webkit.org/show_bug.cgi?id=201481
<rdar://problem/55046055>
Reviewed by Alex Christensen.
We should not schedule timer if we know the timer function will be no-op.
* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::removeRequest):
(WebCore::IDBTransaction::scheduleOperation):
(WebCore::IDBTransaction::trySchedulePendingOperationTimer):
(WebCore::IDBTransaction::pendingOperationTimerFired):
(WebCore::IDBTransaction::didStart):
(WebCore::IDBTransaction::operationCompletedOnClient):
(WebCore::IDBTransaction::deactivate):
(WebCore::IDBTransaction::schedulePendingOperationTimer): Deleted.
* Modules/indexeddb/IDBTransaction.h:
2019-10-04 Chris Dumez <cdumez@apple.com>
Unreviewed follow-up fix for r250693 to address assertion hits in debug.
* css/FontFaceSet.cpp:
(WebCore::FontFaceSet::didFirstLayout):
(WebCore::FontFaceSet::completedLoading):
Make sure the ready promise is not already resolved before resolving it.
* platform/SuspendableTaskQueue.cpp:
(WebCore::SuspendableTaskQueue::SuspendableTaskQueue):
* platform/SuspendableTaskQueue.h:
(WebCore::SuspendableTaskQueue::create):
Add a new constructor that takes in a Document since the ActiveDOMObject's
constructor taking a Document has some useful logic.
2019-10-04 Joonghun Park <jh718.park@samsung.com>
Negative radii in radial gradients should be rejected.
https://bugs.webkit.org/show_bug.cgi?id=202412
Per the spec, https://drafts.csswg.org/css-images-3/#radial-gradients
"Negative values are invalid.",
we reject negative radii values in radial-gradient.
This patch rejects negative radii during radial-gradient parsing
for both webkit prefixed and non-prefixed ones.
Reviewed by Antti Koivisto.
Tests: imported/blink/css-parser/webkit-gradient.html
imported/w3c/web-platform-tests/compat/webkit-radial-gradient-radii.html
imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-image-invalid.html
* css/parser/CSSPropertyParserHelpers.cpp:
(WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradient):
(WebCore::CSSPropertyParserHelpers::consumeDeprecatedRadialGradient):
(WebCore::CSSPropertyParserHelpers::consumeRadialGradient):
2019-10-04 Alex Christensen <achristensen@webkit.org>
Move WKProcessPool._registerURLSchemeServiceWorkersCanHandle to _WKWebsiteDataStoreConfiguration
https://bugs.webkit.org/show_bug.cgi?id=202553
Reviewed by Youenn Fablet.
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::SWServer):
* workers/service/server/SWServer.h:
(WebCore::SWServer::registeredSchemes const):
* workers/service/server/SWServerJobQueue.cpp:
(WebCore::SWServerJobQueue::runRegisterJob):
2019-10-04 youenn fablet <youenn@apple.com>
AbortSignal does not always emit the abort signal
https://bugs.webkit.org/show_bug.cgi?id=201871
<rdar://problem/55451712>
Reviewed by Chris Dumez.
Make sure a JSAbortSignal is not GCed until objects that can abort it are gone.
This includes a followed signal and an AbortController.
Current WebKit implementation only uses following of one signal at a time.
Test: http/tests/fetch/abort-signal-gc.html
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSAbortControllerCustom.cpp: Added.
(WebCore::JSAbortController::visitAdditionalChildren):
* bindings/js/JSAbortSignalCustom.cpp: Added.
(WebCore::JSAbortSignalOwner::isReachableFromOpaqueRoots):
* bindings/js/JSTypedOMCSSStyleValueCustom.cpp:
* dom/AbortController.idl:
* dom/AbortSignal.cpp:
(WebCore::AbortSignal::follow):
* dom/AbortSignal.h:
* dom/AbortSignal.idl:
2019-10-04 youenn fablet <youenn@apple.com>
Allow to suspend RTCPeerConnection when not connected
https://bugs.webkit.org/show_bug.cgi?id=202403
Reviewed by Chris Dumez.
Implement suspend/resume in RTCPeerConnection by sending suspend/resume to the libwebrtc media endpoint,
which suspends/resumes its socket factory.
We allow suspension when the connection is not connected.
Pages with connected connections will not go in page cache yet.
Tests: webrtc/datachannel/datachannel-page-cache-send.html
webrtc/datachannel/datachannel-page-cache.html
* Modules/mediastream/PeerConnectionBackend.h:
(WebCore::PeerConnectionBackend::suspend):
(WebCore::PeerConnectionBackend::resume):
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::canSuspendForDocumentSuspension const):
(WebCore::RTCPeerConnection::suspend):
(WebCore::RTCPeerConnection::resume):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::suspend):
(WebCore::LibWebRTCMediaEndpoint::resume):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::suspend):
(WebCore::LibWebRTCPeerConnectionBackend::resume):
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
2019-10-04 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r250583.
Broke multiple internal API tests
Reverted changeset:
"[JSC] Place VM* in TLS"
https://bugs.webkit.org/show_bug.cgi?id=202391
https://trac.webkit.org/changeset/250583
2019-10-04 Alex Christensen <achristensen@webkit.org>
Simplify sandbox enabling macros
https://bugs.webkit.org/show_bug.cgi?id=202536
Reviewed by Brent Fulgham.
* Configurations/FeatureDefines.xcconfig:
2019-10-04 Chris Lord <clord@igalia.com>
ImageBitmap should be serializable
https://bugs.webkit.org/show_bug.cgi?id=202394
Reviewed by Žan Doberšek.
Test: imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-serializable.html
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::dumpImageBitmap):
(WebCore::CloneDeserializer::readTransferredImageBitmap):
(WebCore::CloneDeserializer::readImageBitmap):
(WebCore::CloneDeserializer::readTerminal):
2019-10-03 Antoine Quint <graouts@apple.com>
AppleTV named as XSS-payloads trigger when AirPlay is used
https://bugs.webkit.org/show_bug.cgi?id=202534
<rdar://55931262>
Reviewed by Eric Carlson.
Ensure we escape an AirPlay's device name before inserting its name into the DOM.
* Modules/modern-media-controls/media/placard-support.js:
(PlacardSupport.prototype._updateAirPlayPlacard):
(PlacardSupport):
(escapeHTML):
2019-10-04 Oriol Brufau <obrufau@igalia.com>
[css-grid] Preserve auto repeat() in getComputedStyle() for non-grids
https://bugs.webkit.org/show_bug.cgi?id=202258
Reviewed by Javier Fernandez.
Tests: imported/w3c/web-platform-tests/css/css-grid/parsing/grid-template-columns-computed-nogrid.html
imported/w3c/web-platform-tests/css/css-grid/parsing/grid-template-columns-computed.html
imported/w3c/web-platform-tests/css/css-grid/parsing/grid-template-rows-computed-nogrid.html
imported/w3c/web-platform-tests/css/css-grid/parsing/grid-template-rows-computed.html
Usually, the resolved value of grid-template-rows/columns is the used
value, expanding the repeat() notation. But for elements with a non-grid
display, the resolved value is just the computed value, with repeat(),
since the used value doesn't exist.
Before this patch, the repeat() was dropped, and line names after it
appeared at the wrong position or were also dropped. There was also an
assert failure in debug. This patch fixes the serialization for auto
repeat(). Integer repeat() is still expanded at computed-value time, so
it's not preserved in getComputedStyle().
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::OrderedNamedLinesCollector::OrderedNamedLinesCollector):
(WebCore::OrderedNamedLinesCollectorInsideRepeat::OrderedNamedLinesCollectorInsideRepeat):
(WebCore::OrderedNamedLinesCollectorInGridLayout::OrderedNamedLinesCollectorInGridLayout):
(WebCore::OrderedNamedLinesCollector::collectLineNamesForIndex const):
(WebCore::OrderedNamedLinesCollectorInsideRepeat::collectLineNamesForIndex const):
(WebCore::OrderedNamedLinesCollectorInGridLayout::collectLineNamesForIndex const):
(WebCore::populateGridTrackList):
(WebCore::valueForGridTrackList):
2019-10-04 Antti Koivisto <antti@apple.com>
[CSS Shadow Parts] Support 'exportparts' attribute
https://bugs.webkit.org/show_bug.cgi?id=202520
Reviewed by Ryosuke Niwa.
Support 'exportparts' attribute for exporting part mappings from subcomponents.
* css/ElementRuleCollector.cpp:
(WebCore::ElementRuleCollector::matchAuthorRules):
(WebCore::ElementRuleCollector::matchPartPseudoElementRules):
Recurse to containing scopes to collect part rules if there are exported mappings.
(WebCore::ElementRuleCollector::ruleMatches):
* css/ElementRuleCollector.h:
* css/SelectorChecker.cpp:
(WebCore::SelectorChecker::matchRecursively const):
Make ShadowDescendant fake combinator skip directly to the scope where the part rules are coming from.
(WebCore::SelectorChecker::checkOne const):
Resolve names via mappings if needed.
* css/SelectorChecker.h:
* dom/Element.cpp:
(WebCore::Element::attributeChanged):
Invalidate mappings as needed.
* dom/ShadowRoot.cpp:
(WebCore::parsePartMappings):
Parse the mappings microsyntax.
(WebCore::ShadowRoot::partMappings const):
(WebCore::ShadowRoot::invalidatePartMappings):
* dom/ShadowRoot.h:
* html/HTMLAttributeNames.in:
2019-10-04 Ryosuke Niwa <rniwa@webkit.org>
A newly inserted element doesn't get assigned to a named slot if slot assignments had already happened
https://bugs.webkit.org/show_bug.cgi?id=199733
Reviewed by Antti Koivisto.
The bug was caused by addSlotElementByName not invalidating slot assignments when a new slot element
is inserted after corresponding elements with the slot content attribute had already been inserted.
Fixed the bug by always invalidating the slot assignment when a new slot element is inserted.
Tests: fast/shadow-dom/add-slotted-element-after-assignment-1.html
fast/shadow-dom/add-slotted-element-after-assignment-2.html
fast/shadow-dom/add-slotted-element-after-assignment-3.html
* dom/SlotAssignment.cpp:
(WebCore::SlotAssignment::addSlotElementByName):
2019-10-04 Ryosuke Niwa <rniwa@webkit.org>
Radio button groups are not scoped by shadow boundaries
https://bugs.webkit.org/show_bug.cgi?id=199568
Reviewed by Antti Koivisto.
Fixed the bug that radio button groups are not scoped to each shadow tree by moving
RadioButtonGroups from FormController, which is a per-document object, to TreeScope.
Test: imported/w3c/web-platform-tests/shadow-dom/input-type-radio.html
* dom/RadioButtonGroups.h:
(WebCore::RadioButtonGroups): Made this bmalloc'ed now that it's allocated standalone.
* dom/TreeScope.cpp:
(WebCore::TreeScope::radioButtonGroups): Added.
* dom/TreeScope.h:
* html/FormController.h:
(WebCore::FormController::radioButtonGroups): Deleted.
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::~HTMLInputElement):
(WebCore::HTMLInputElement::removedFromAncestor): Update the radio button group here.
(WebCore::HTMLInputElement::didMoveToNewDocument): Removed the code to update radio
button group here since it's done in removedFromAncestor now. Note that insertion case
is alrady taken care of by HTMLInputElement::didFinishInsertingNode.
(WebCore::HTMLInputElement::radioButtonGroups const): Ditto.
2019-10-03 Antti Koivisto <antti@apple.com>
[CSS Shadow Parts] Correct interaction with other pseudo elements
https://bugs.webkit.org/show_bug.cgi?id=202526
Reviewed by Ryosuke Niwa.
Cases like foo::part(bar)::before should work.
This patch doesn't cover ::placeholder which is implemented as PseudoElementWebKitCustom (like internal -webkit-* properties).
* css/CSSSelector.h:
(WebCore::isTreeStructuralPseudoClass):
Add a helper.
* css/parser/CSSSelectorParser.cpp:
Allow non-structural pseudo classes after ::part().
Allow other pseudo elements after ::part().
(WebCore::CSSSelectorParser::consumePseudo):
No need for DisallowPseudoElementsScope, we are just parsing identifiers.
2019-10-03 James Darpinian <jdarpinian@chromium.org>
Fix WebGL 1 conformance regressions when USE_ANGLE=1
https://bugs.webkit.org/show_bug.cgi?id=202545
Prevent ANGLE from automatically using ES3 when ES2 is requested.
WEBGL_debug_shaders extension should not accept or return null.
Enable ANGLE's new support for emulating RGB on RGBA IOSurfaces.
Reviewed by Alex Christensen.
* html/canvas/WebGLDebugShaders.cpp:
(WebCore::WebGLDebugShaders::getTranslatedShaderSource):
* html/canvas/WebGLDebugShaders.h:
* html/canvas/WebGLDebugShaders.idl:
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::validateVertexAttributes):
* platform/graphics/angle/Extensions3DANGLE.cpp:
(WebCore::Extensions3DANGLE::getTranslatedShaderSourceANGLE):
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::GraphicsContext3D::GraphicsContext3D):
* platform/graphics/cocoa/WebGLLayer.mm:
(-[WebGLLayer allocateIOSurfaceBackingStoreWithSize:usingAlpha:]):
2019-10-03 Jer Noble <jer.noble@apple.com>
[iOS] WebContent process can be interrupted during suspension; loses "Now Playing" status
https://bugs.webkit.org/show_bug.cgi?id=202537
<rdar://problem/55952707>
Reviewed by Eric Carlson.
Always deactivate the AVAudioSession when the last playing PlatformAudioSession ends playback and the application is in the background.
* platform/audio/PlatformMediaSessionManager.cpp:
(WebCore::PlatformMediaSessionManager::removeSession):
(WebCore::PlatformMediaSessionManager::processWillSuspend):
(WebCore::PlatformMediaSessionManager::maybeDeactivateAudioSession):
* platform/audio/PlatformMediaSessionManager.h:
(WebCore::PlatformMediaSessionManager::isApplicationInBackground const):
* platform/audio/ios/MediaSessionManagerIOS.h:
* platform/audio/ios/MediaSessionManagerIOS.mm:
(WebCore::MediaSessionManageriOS::sessionWillEndPlayback):
2019-10-03 Chris Dumez <cdumez@apple.com>
Allow pages using FontFaceSet to enter the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=202476
Reviewed by Myles C. Maxfield.
Allow pages using FontFaceSet to enter the back/forward cache by updating its
implementation to queue all its tasks that run script to a SuspendableTaskQueue.
The SuspendableTaskQueue makes sure to properly suspend while in PageCache and
run the tasks when resuming from PageCache.
Test: http/tests/navigation/page-cache-fontfaceset.html
* PlatformWin.cmake:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSFontFace.cpp:
(WebCore::CSSFontFace::fontLoadEventOccurred):
* css/FontFaceSet.cpp:
(WebCore::FontFaceSet::FontFaceSet):
(WebCore::FontFaceSet::canSuspendForDocumentSuspension const):
(WebCore::FontFaceSet::didFirstLayout):
(WebCore::FontFaceSet::completedLoading):
(WebCore::FontFaceSet::faceFinished):
* css/FontFaceSet.h:
* platform/SuspendableTaskQueue.cpp: Added.
(WebCore::SuspendableTaskQueue::SuspendableTaskQueue):
(WebCore::SuspendableTaskQueue::close):
(WebCore::SuspendableTaskQueue::cancelAllTasks):
(WebCore::SuspendableTaskQueue::enqueueTask):
(WebCore::SuspendableTaskQueue::runOneTask):
(WebCore::SuspendableTaskQueue::activeDOMObjectName const):
(WebCore::SuspendableTaskQueue::canSuspendForDocumentSuspension const):
(WebCore::SuspendableTaskQueue::stop):
(WebCore::SuspendableTaskQueue::suspend):
(WebCore::SuspendableTaskQueue::resume):
* platform/SuspendableTaskQueue.h: Added.
(WebCore::SuspendableTaskQueue::create):
(WebCore::SuspendableTaskQueue::isClosed const):
(WebCore::SuspendableTaskQueue::hasPendingTasks const):
Add a SuspendableTaskQueue class which is Page-Cache aware and can be used to queue
generic tasks as WTF::Function<void<>> lambdas.
2019-10-03 Chris Dumez <cdumez@apple.com>
Provisional / scheduled loads in subframes should not prevent a page from entering the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=202474
Reviewed by Alex Christensen.
Provisional / scheduled loads in subframes should not prevent a page from entering the back/forward cache.
To address the issue, we now make sure to stop all loads before checking for PageCache eligibility.
Test: fast/history/page-cache-quick-redirect-iframe.html
* history/PageCache.cpp:
(WebCore::PageCache::addIfCacheable):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::stopForPageCache):
* loader/FrameLoader.h:
2019-10-03 Chris Dumez <cdumez@apple.com>
XMLHttpRequest sometimes prevents pages from entering the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=202434
<rdar://problem/55890340>
Reviewed by Geoffrey Garen.
XMLHttpRequest::canSuspendForDocumentSuspension() was returning false if the document has not fired
the window's load event, with a comment explaining that cancelling the XHR in the upon suspension
may cause the load event to get fired and thus run script when forbidden. However, we should only
return false if the XMLHttpRequest is actually loading (m_loader is not null). XHRs that are not
loading should never prevent page caching.
I saw failures to enter the back/forward cache on yandex.ru and taobao.com because of this.
Test: http/tests/navigation/page-cache-failed-xhr.html
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::canSuspendForDocumentSuspension const):
2019-10-03 John Wilander <wilander@apple.com>
Resource Load Statistics: Downgrade document.referrer for all third-party iframes
https://bugs.webkit.org/show_bug.cgi?id=202506
<rdar://problem/55786397>
Reviewed by Brent Fulgham.
This change downgrades document.referrer for all third-party iframes if ITP/Resource Load Statistics
is enabled. The behavior matches the downgrade of all HTTP referrers for third-party resources
which landed in https://trac.webkit.org/changeset/250413/webkit.
Tests: http/tests/resourceLoadStatistics/downgrade-document-referrer-nested-third-party-iframe.html
http/tests/resourceLoadStatistics/downgrade-document-referrer-third-party-iframe.html
http/tests/resourceLoadStatistics/leave-empty-document-referrer-alone-third-party-iframe.html
* dom/Document.cpp:
(WebCore::Document::referrer):
(WebCore::Document::referrer const): Deleted.
Can no longer be const since it lazily downgrades and saves the referrer on read.
* dom/Document.h:
2019-10-03 Devin Rousso <drousso@apple.com>
Web Inspector: remove `InspectorInstrumentationCookie`
https://bugs.webkit.org/show_bug.cgi?id=202487
Reviewed by Matt Baker.
All it does is create a shallow-copy of the `InstrumentingAgents` (it copies a pointer to
the `InstrumentingAgents` object, so any of the pointers to the `InspectorAgent` that are
contained therein are shared between each instance) and save the tracking
`InspectorTimelineAgent`'s id (monotonically increasing integer).
All uses of `InspectorInstrumentationCookie` are local values, so there's no way that the
`InspectorTimelineAgent` (or the id) could change in between an
`InspectorInstrumentation::will*` and an `InspectorInstrumentation::did*`, as both the
tracking state and id are controlled by the frontend and cannot "interrupt".
Removing `InspectorInstrumentationCookie` _can_ cause issues is in situations where the
`ScriptExecutionContext` (or `Page`) changes between the `InspectorInstrumentation::will*`
and the `InspectorInstrumentation::did*`, but this can be avoided so long as a pointer to
the "context" used for `InspectorInstrumentation::will*` is saved.
Covered by existing tests: inspector/timeline/*
* inspector/InspectorInstrumentationCookie.h: Removed.
* inspector/InspectorInstrumentationCookie.cpp: Removed.
* inspector/agents/InspectorTimelineAgent.h:
* inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::internalStop):
(WebCore::InspectorTimelineAgent::didDispatchEvent):
(WebCore::InspectorTimelineAgent::didPaint):
(WebCore::InspectorTimelineAgent::clearRecordStack): Deleted.
* bindings/js/JSCallbackData.cpp:
(WebCore::JSCallbackData::invokeCallback):
* bindings/js/JSCustomElementInterface.cpp:
(WebCore::constructCustomElementSynchronously):
(WebCore::JSCustomElementInterface::upgradeElement):
(WebCore::JSCustomElementInterface::invokeCallback):
* bindings/js/JSErrorHandler.cpp:
(WebCore::JSErrorHandler::handleEvent):
* bindings/js/JSEventListener.cpp:
(WebCore::JSEventListener::handleEvent):
* bindings/js/JSExecState.h:
* bindings/js/JSExecStateInstrumentation.h:
(WebCore::JSExecState::instrumentFunctionInternal):
(WebCore::JSExecState::instrumentFunctionCall):
(WebCore::JSExecState::instrumentFunctionConstruct):
* bindings/js/ScheduledAction.cpp:
(WebCore::ScheduledAction::executeFunctionInContext):
* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::evaluateInWorld):
(WebCore::ScriptController::evaluateModule):
* dom/Document.cpp:
(WebCore::Document::resolveStyle):
* dom/EventTarget.cpp:
(WebCore::EventTarget::innerInvokeEventListeners):
* dom/MutationObserver.cpp:
(WebCore::MutationObserver::deliver):
* dom/ScriptedAnimationController.cpp:
(WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks):
* page/DOMTimer.cpp:
(WebCore::DOMTimer::fired):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::dispatchEvent):
* page/FrameViewLayoutContext.cpp:
(WebCore::FrameViewLayoutContext::layout):
* page/IntersectionObserver.cpp:
(WebCore::IntersectionObserver::notify):
* page/PerformanceObserver.cpp:
(WebCore::PerformanceObserver::deliver):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::willCallFunction):
(WebCore::InspectorInstrumentation::didCallFunction):
(WebCore::InspectorInstrumentation::willDispatchEvent):
(WebCore::InspectorInstrumentation::didDispatchEvent):
(WebCore::InspectorInstrumentation::willDispatchEventOnWindow):
(WebCore::InspectorInstrumentation::didDispatchEventOnWindow):
(WebCore::InspectorInstrumentation::willEvaluateScript):
(WebCore::InspectorInstrumentation::didEvaluateScript):
(WebCore::InspectorInstrumentation::willFireTimer):
(WebCore::InspectorInstrumentation::didFireTimer):
(WebCore::InspectorInstrumentation::willLayout):
(WebCore::InspectorInstrumentation::didLayout):
(WebCore::InspectorInstrumentation::willRecalculateStyle):
(WebCore::InspectorInstrumentation::didRecalculateStyle):
(WebCore::InspectorInstrumentation::willFireAnimationFrame):
(WebCore::InspectorInstrumentation::didFireAnimationFrame):
(WebCore::InspectorInstrumentation::willFireObserverCallback):
(WebCore::InspectorInstrumentation::didFireObserverCallback):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::willCallFunctionImpl):
(WebCore::InspectorInstrumentation::didCallFunctionImpl):
(WebCore::InspectorInstrumentation::willDispatchEventImpl):
(WebCore::InspectorInstrumentation::didDispatchEventImpl):
(WebCore::InspectorInstrumentation::willDispatchEventOnWindowImpl):
(WebCore::InspectorInstrumentation::didDispatchEventOnWindowImpl):
(WebCore::InspectorInstrumentation::willEvaluateScriptImpl):
(WebCore::InspectorInstrumentation::didEvaluateScriptImpl):
(WebCore::InspectorInstrumentation::willFireTimerImpl):
(WebCore::InspectorInstrumentation::didFireTimerImpl):
(WebCore::InspectorInstrumentation::willLayoutImpl):
(WebCore::InspectorInstrumentation::didLayoutImpl):
(WebCore::InspectorInstrumentation::willRecalculateStyleImpl):
(WebCore::InspectorInstrumentation::didRecalculateStyleImpl):
(WebCore::InspectorInstrumentation::willFireAnimationFrameImpl):
(WebCore::InspectorInstrumentation::didFireAnimationFrameImpl):
(WebCore::InspectorInstrumentation::willFireObserverCallbackImpl):
(WebCore::InspectorInstrumentation::didFireObserverCallbackImpl):
(WebCore::InspectorInstrumentation::retrieveTimelineAgent): Deleted.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2019-10-03 Sihui Liu <sihui_liu@apple.com>
IndexedDB: add size estimate for key path when estimate task size
https://bugs.webkit.org/show_bug.cgi?id=202480
Reviewed by Geoffrey Garen.
No observable behavior change.
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::estimateSize):
2019-10-03 youenn fablet <youenn@apple.com>
Regression: iOS 13.1 MediaStreamTrack.enabled = false kills audio track
https://bugs.webkit.org/show_bug.cgi?id=202405
<rdar://problem/55922616>
Reviewed by Eric Carlson.
When the web page is setting enabled to false, media session might change from PlayRecord to None.
This might trigger CoreAudio to no longer output audio samples, thus triggering our audio capture failure timer.
This would end the track after 2 seconds.
Given audio tracks can be reenabled by a web page, we should not change the Media Session setup based on that.
This patch updates MediaStream::mediaType to return independently of the enabled state.
Add internals API to write a cross platform test.
Test: fast/mediastream/audio-track-enabled.html
Manually tested as well.
* Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::mediaType const):
* platform/mediastream/MediaStreamPrivate.cpp:
(WebCore::MediaStreamPrivate::hasCaptureAudioSource const):
* testing/Internals.cpp:
(WebCore::Internals::supportsAudioSession const):
(WebCore::Internals::audioSessionCategory const):
* testing/Internals.h:
* testing/Internals.idl:
2019-10-03 youenn fablet <youenn@apple.com>
http/tests/security/navigate-when-restoring-cached-page.html should not use RTCPeerConnection to not enter in page cache
https://bugs.webkit.org/show_bug.cgi?id=202521
Reviewed by Chris Dumez.
Introduce a dummy ActiveDOMObject which can never be suspended for document suspension.
Allow a page to create this dummy ActiveDOMObject through internals.
Covered by updated test.
* dom/ActiveDOMObject.h:
* testing/Internals.cpp:
(WebCore::Internals::preventDocumentForEnteringPageCache):
* testing/Internals.h:
* testing/Internals.idl:
2019-10-03 Tim Horton <timothy_horton@apple.com>
WebKit doesn't build with trunk clang
https://bugs.webkit.org/show_bug.cgi?id=202511
Reviewed by Anders Carlsson.
* Modules/fetch/FetchLoader.h:
* Modules/geolocation/Geolocation.h:
* Modules/indexeddb/IDBTransaction.h:
* Modules/indexeddb/shared/InProcessIDBServer.cpp:
* Modules/indexeddb/shared/InProcessIDBServer.h:
* Modules/notifications/Notification.cpp:
* Modules/notifications/Notification.h:
* platform/graphics/ca/TileController.h:
* workers/service/context/ServiceWorkerThreadProxy.h:
Fix the build by exporting destructors and custom delete operators.
I don't know why this changed, but trunk clang insists.
There are also some new warnings; this only fixes the hard errors.
2019-10-03 Tim Horton <timothy_horton@apple.com>
Yet another build fix
* css/typedom/TypedOMCSSImageValue.h:
Forward declare Document.
2019-10-03 Jiewen Tan <jiewen_tan@apple.com>
Support googleLegacyAppidSupport extension
https://bugs.webkit.org/show_bug.cgi?id=202427
<rdar://problem/55887473>
Reviewed by Brent Fulgham.
This patch adds support for googleLegacyAppidSupport extension, when set:
1) user agent should only use the U2F transport protocol,
2) should only communicate with roaming authenticators, and
3) should use a hard-coded appID of https://www.gstatic.com/securitykey/origins.json.
To be noticed as the name implies, this extension is exclusively for RP ID = google.com.
Implementation wise, all operations are captured in methods with name processGoogleLegacyAppIdSupportExtension.
1) AuthenticatorCoordinator takes care of setting the value.
2) U2fCommandConstructor takes care of hard coding the AppID.
3) AuthenticatorManager takes care of removing AuthenticatorTransport::Internal from TransportSet, so startDiscovery
will not poke platform authenticators.
4) CtapAuthenticator takes care of downgrading to U2fAuthenticator.
5) U2fAuthenticator takes care of setting the AppID in the response.
Partially covered by new test cases in existing tests, and remaining will be covered by manual tests.
* Modules/webauthn/AuthenticationExtensionsClientInputs.h:
(WebCore::AuthenticationExtensionsClientInputs::encode const):
(WebCore::AuthenticationExtensionsClientInputs::decode):
* Modules/webauthn/AuthenticationExtensionsClientInputs.idl:
* Modules/webauthn/AuthenticatorCoordinator.cpp:
(WebCore::AuthenticatorCoordinatorInternal::processGoogleLegacyAppIdSupportExtension):
(WebCore::AuthenticatorCoordinator::create const):
* Modules/webauthn/PublicKeyCredentialCreationOptions.h:
(WebCore::PublicKeyCredentialCreationOptions::encode const):
(WebCore::PublicKeyCredentialCreationOptions::decode):
* Modules/webauthn/fido/U2fCommandConstructor.cpp:
(fido::convertToU2fRegisterCommand):
(fido::processGoogleLegacyAppIdSupportExtension):
* Modules/webauthn/fido/U2fCommandConstructor.h:
2019-10-03 Yury Semikhatsky <yurys@chromium.org>
Web Inspector: tests under LayoutTests/inspector/debugger are flaky
https://bugs.webkit.org/show_bug.cgi?id=137131
<rdar://problem/18461335>
Reviewed by Devin Rousso.
Fix debugger tests on GTK. All tests that pause on breakpoint didn't work because
in layout tests InspectorFrontendClientLocal was using Timer to dispatch commands
sent from the local front-end page to the inspected one. When paused inside a script
triggered by the front-end nested timer event would be scheduled but never fired
because in glib implementation of RunLoop::TimerBase uses event source which doesn't
allow recursion (g_source_set_can_recurse is not called on the source), so dispatching
Debugger.resume command didn't work when paused inside another inspector command (e.g.
eval). RunLoop itself uses event source which does allow recursion. So instead of using
a timer for asynchronous command dispatching with delay=0 we now schedule a task in
RunLoop's queue.
* inspector/InspectorFrontendClientLocal.cpp:
(WebCore::InspectorBackendDispatchTask::dispatch):
(WebCore::InspectorBackendDispatchTask::reset):
(WebCore::InspectorBackendDispatchTask::InspectorBackendDispatchTask):
(WebCore::InspectorBackendDispatchTask::scheduleOneShot): ensures that there is one inspector
dispatch task in the queue.
(WebCore::InspectorBackendDispatchTask::dispatchOneMessage): this is mostly the same behavior
as was with timerFired, we should be able to dispatch all accumulated messages from the queue
in one batch but for now I'd like to keep it one per iteration.
2019-10-03 Joonghun Park <pjh0718@gmail.com>
CSS ellipse() doesn't accept single <shape-radius>
https://bugs.webkit.org/show_bug.cgi?id=181745
CSS ellipse() should only accept 0 or 2 radii.
The corresponding csswg discussion is
https://github.com/w3c/csswg-drafts/issues/2175.
Reviewed by Antti Koivisto.
Tests: imported/w3c/web-platform-tests/css/css-masking/parsing/clip-path-computed.html
imported/w3c/web-platform-tests/css/css-masking/parsing/clip-path-invalid.html
imported/w3c/web-platform-tests/css/css-masking/parsing/clip-path-valid.html
imported/w3c/web-platform-tests/css/css-masking/parsing/shape-outside-computed.html
imported/w3c/web-platform-tests/css/css-masking/parsing/shape-outside-invalid.html
imported/w3c/web-platform-tests/css/css-masking/parsing/shape-outside-valid.html
* css/CSSBasicShapes.cpp:
(WebCore::CSSBasicShapeEllipse::cssText const):
* css/parser/CSSPropertyParser.cpp:
(WebCore::consumeBasicShapeEllipse):
2019-10-03 Zan Dobersek <zdobersek@igalia.com>
[Nicosia] Enable runtime checks and triggers for async non-main-frame scrolling
https://bugs.webkit.org/show_bug.cgi?id=202509
Reviewed by Carlos Garcia Campos.
Add build guards that would enable runtime checks of the asynchronous
frame scrolling setting in the ScrollingCoordinator and
RenderLayerCompositor classes for the Nicosia-using ports.
The check in ScrollingCoordinator avoids bailing on coordinating
scrolling for non-main frames when the setting is enabled. The check in
RenderLayerCompositor avoids imposing a requirement for a composition
layer for any non-main frame when the setting is disabled.
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::coordinatesScrollingForFrameView const):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForScrollableFrame const):
2019-10-02 Antti Koivisto <antti@apple.com>
[CSS Shadow Parts] Support multiple arguments for ::part()
https://bugs.webkit.org/show_bug.cgi?id=202482
Reviewed by Ryosuke Niwa.
Support ::part(foo bar).
* css/CSSSelector.cpp:
(WebCore::CSSSelector::selectorText const):
(WebCore::CSSSelector::setArgumentList):
(WebCore::CSSSelector::setLangArgumentList): Deleted.
Give this a more generic name and use it for ::part() too.
* css/CSSSelector.h:
(WebCore::CSSSelector::argumentList const):
(WebCore::CSSSelector::langArgumentList const): Deleted.
* css/SelectorChecker.cpp:
(WebCore::SelectorChecker::checkOne const):
Match only if all parts are found from the element 'part' attribute.
* css/parser/CSSParserSelector.cpp:
(WebCore::CSSParserSelector::setArgumentList):
(WebCore::CSSParserSelector::setLangArgumentList): Deleted.
* css/parser/CSSParserSelector.h:
* css/parser/CSSSelectorParser.cpp:
(WebCore::CSSSelectorParser::consumePseudo):
Parse the list.
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::addPseudoClassType):
2019-10-02 Andy Estes <aestes@apple.com>
[iOS] When hit testing for a context menu interaction, do not consider whether the element is contenteditable
https://bugs.webkit.org/show_bug.cgi?id=202498
<rdar://problem/54723131>
Reviewed by Tim Horton.
When the user selects a context menu action, WebKit performs a hit test in order to find the
acted-on element on the page. This is separate from the hit test performed to generate the
context menu's targeted preview. Since an arbitrary amount of time can elapse between
preview generation and action selection, this second hit-tests might return a different
element.
One case where we know a different element can be returned is in apps that dynamically
enable and disable editing. If editing is disabled when the first hit test occurs but is
enabled when the second one occurs, different elements will be returned due to
Frame::qualifyingNodeAtViewportLocation preferring to return the root editable element when
the approximate node is contenteditable.
While the appropriate long-term fix is to only hit-test once and use that element for both
preview generation and action selection, this patch implements a short-term fix to address
the specific problem in rdar://problem/54723131 by disabling the contenteditable behavior
described above for context menu interaction hit testing.
The long-term fix is tracked by <https://webkit.org/b/202499>.
* page/Frame.h:
* page/ios/FrameIOS.mm:
(WebCore::Frame::qualifyingNodeAtViewportLocation):
(WebCore::Frame::approximateNodeAtViewportLocationLegacy):
(WebCore::ancestorRespondingToClickEventsNodeQualifier):
(WebCore::Frame::nodeRespondingToClickEvents):
(WebCore::Frame::nodeRespondingToDoubleClickEvent):
(WebCore::Frame::nodeRespondingToInteraction):
(WebCore::Frame::nodeRespondingToScrollWheelEvents):
2019-10-02 Antti Koivisto <antti@apple.com>
[CSS Shadow Parts] Basic ::part() pseudo element support
https://bugs.webkit.org/show_bug.cgi?id=202456
Reviewed by Ryosuke Niwa.
Implement basic parsing and selector matching for ::part() pseudo element.
* css/CSSSelector.cpp:
(WebCore::CSSSelector::pseudoId):
(WebCore::CSSSelector::parsePseudoElementType):
(WebCore::CSSSelector::selectorText const):
* css/CSSSelector.h:
* css/ElementRuleCollector.cpp:
(WebCore::ElementRuleCollector::matchAuthorRules):
(WebCore::ElementRuleCollector::matchPartPseudoElementRules):
* css/ElementRuleCollector.h:
* css/RuleSet.cpp:
(WebCore::RuleSet::addRule):
* css/RuleSet.h:
(WebCore::RuleSet::partPseudoElementRules const):
* css/SelectorChecker.cpp:
(WebCore::SelectorChecker::checkOne const):
* css/SelectorPseudoElementTypeMap.in:
* css/parser/CSSParserSelector.cpp:
(WebCore::CSSParserSelector::parsePseudoElementSelector):
Also added ::slotted to SelectorPseudoElementTypeMap.in to resolve a FIXME here.
* css/parser/CSSParserSelector.h:
(WebCore::CSSParserSelector::needsImplicitShadowCombinatorForMatching const):
* css/parser/CSSSelectorParser.cpp:
(WebCore::isOnlyPseudoElementFunction):
(WebCore::CSSSelectorParser::consumePseudo):
Parse single values only, multipart ::part(foo bar) case is not yet handled.
* dom/Element.cpp:
(WebCore::Element::partNames const):
2019-10-02 Antoine Quint <graouts@apple.com>
Adopt copyToVector() in AnimationTimeline::animationsForElement()
https://bugs.webkit.org/show_bug.cgi?id=202488
Reviewed by Wenson Hsieh.
* animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::animationsForElement const):
2019-10-02 Thibault Saunier <tsaunier@igalia.com>
[GStreamer] Let playbin handle redirects for us when appropriate
https://bugs.webkit.org/show_bug.cgi?id=195326
A simplified mechanism has been added in GStreamer to handle corner cases.
Reviewed by Xabier Rodriguez-Calvar.
Not easily testable at our level
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::loadNextLocation):
2019-10-02 Tim Horton <timothy_horton@apple.com>
Another build fix
* css/typedom/TypedOMCSSImageValue.cpp:
(WebCore::TypedOMCSSImageValue::TypedOMCSSImageValue):
* css/typedom/TypedOMCSSImageValue.h:
I feel like I am actively being thwarted.
2019-10-02 Tim Horton <timothy_horton@apple.com>
Another build fix
* css/typedom/TypedOMCSSImageValue.h:
2019-10-02 Tim Horton <timothy_horton@apple.com>
Try to fix the Windows build
* css/typedom/TypedOMCSSImageValue.cpp:
(WebCore::TypedOMCSSImageValue::document const):
* css/typedom/TypedOMCSSImageValue.h:
Out-of-line this instead of including Document.h in TypedOMCSSImageValue,
which was an earlier build fix from r250610.
* platform/graphics/cg/GradientCG.cpp:
* platform/graphics/win/GlyphPageTreeNodeCGWin.cpp:
* platform/graphics/win/GraphicsContextCGWin.cpp:
Try to fix the build.
2019-10-02 Keith Rollin <krollin@apple.com>
Unreviewed build fix after r250595.
macCatalyst appears to have triggered the the problem where the build
can sometimes fail if the unified sources mechanism doesn't group
together the right set of files.
* css/typedom/TypedOMCSSImageValue.h:
2019-10-02 Antoine Quint <graouts@apple.com>
[Web Animations] Implement replaced animations
https://bugs.webkit.org/show_bug.cgi?id=202190
<rdar://55697719>
Reviewed by Dean Jackson.
Implementing section "5.5 Replacing Animations" (https://drafts.csswg.org/web-animations/#replacing-animations) of the Web Animations
specification which allows for Web Animations to be destroyed when they are superseded by another animation and the developer doesn't
explicitly opt into persisting them using the persist() method.
An animation is marked as replaceable (to sum up) when it's finished and another animation for the same property takes precedence.
As part of DocumentTimeline::internalUpdateAnimationsAndSendEvents(), we'll go through all replaceable animations, dispatch a "remove"
DOM event, and remove them from our list of animations.
We also make a couple of fixes in this patch that were uncovered while working on the WPT tests for replaced animations:
- we would incorrectly parse single values for a property that allows lists (change in KeyframeEffect's processKeyframeLikeObject())
- we didn't account for the position in the global animation list when sorted animations by composite order (AnimationTimeline::animationsForElement())
Finally, to get more readable results, we implement a stub of commitStyles(). Its full implementation is tracked by http://wkb.ug/202193.
* animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::animationTimingDidChange): Mark the position of the animation in the global animation list, to which it may only be added once.
(WebCore::AnimationTimeline::animationsForElement const): Account for the animation's position in the global animation when sorting.
* animation/DeclarativeAnimation.cpp:
(WebCore::DeclarativeAnimation::bindingsReplaceState const): Flush pending styles when querying the ready state for a declarative animation.
* animation/DeclarativeAnimation.h:
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::internalUpdateAnimationsAndSendEvents): Run the "remove replaced animations" procedure as the second step in the "update animations
and send events" procedure.
(WebCore::DocumentTimeline::animationCanBeRemoved): Determine whether a given animation may be removed based on its finished state, replace state and whether
it is fully superseded by another animation targeting the same property on the same target element.
(WebCore::DocumentTimeline::removeReplacedAnimations): Remove any removable animation and dispatch a "remove" DOM event for each removed animation.
* animation/DocumentTimeline.h:
* animation/KeyframeEffect.cpp:
(WebCore::processKeyframeLikeObject): Fix an issue found in a replaced animations WPT test that showed that we didn't record the value of an animation that allows lists.
* animation/WebAnimation.cpp:
(WebCore::WebAnimation::isReplaceable const):
(WebCore::WebAnimation::persist): Mark the replace state as "persisted" and ensure the animation is set on the animation list for its target element in case it had already
been removed based on its persisted state.
(WebCore::WebAnimation::commitStyles): Stub for a new function.
* animation/WebAnimation.h:
(WebCore::WebAnimation::replaceState const):
(WebCore::WebAnimation::setReplaceState):
(WebCore::WebAnimation::bindingsReplaceState const):
(WebCore::WebAnimation::globalPosition const):
(WebCore::WebAnimation::setGlobalPosition):
* animation/WebAnimation.idl:
* dom/EventNames.h: Add the new "remove" event so that the "onremove" DOM property is available on Animation objects.
2019-10-02 Zan Dobersek <zdobersek@igalia.com>
Unreviewed build fix in Nicosia's ScrollingTreePositionedNode class.
* page/scrolling/nicosia/ScrollingTreePositionedNode.cpp:
(WebCore::ScrollingTreePositionedNode::applyLayerPositions):
Fix the name of the variable included in the log call.
2019-10-02 youenn fablet <youenn@apple.com>
Use strongly typed identifiers for webrtc sockets
https://bugs.webkit.org/show_bug.cgi?id=202400
Reviewed by Chris Dumez.
No observable change of behavior.
* Headers.cmake:
* WebCore.xcodeproj/project.pbxproj:
* platform/mediastream/libwebrtc/LibWebRTCSocketIdentifier.h: Copied from Source/WebKit/NetworkProcess/webrtc/NetworkRTCSocket.h.
2019-10-02 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK][WPE] Stop using legacy custom protocol implementation
https://bugs.webkit.org/show_bug.cgi?id=202407
Reviewed by Žan Doberšek.
Remove the code to setup custom protocols in soup session.
* platform/network/soup/SoupNetworkSession.cpp:
(WebCore::SoupNetworkSession::SoupNetworkSession):
* platform/network/soup/SoupNetworkSession.h:
2019-10-02 Zan Dobersek <zdobersek@igalia.com>
[Nicosia] Enable async scrolling at build-time for Nicosia-using ports
https://bugs.webkit.org/show_bug.cgi?id=202397
Reviewed by Carlos Garcia Campos.
* PlatformPlayStation.cmake: Add missing build targets.
* SourcesGTK.txt: Ditto.
2019-10-01 Tim Horton <timothy_horton@apple.com>
Clean up some includes to make the build a bit faster
https://bugs.webkit.org/show_bug.cgi?id=202444
Reviewed by Geoff Garen.
No new tests, just reorganizing.
Apply some profile-guided optimizations to our headers.
* bindings/js/CallTracerTypes.h:
* css/typedom/TypedOMCSSImageValue.h:
* html/canvas/WebGLObject.h:
* html/canvas/WebGLVertexArrayObjectBase.h:
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::instrumentingAgentsForWebGPUDevice):
(WebCore::InspectorInstrumentation::instrumentingAgentsForWorkerGlobalScope):
(WebCore::InspectorInstrumentation::instrumentingAgentsForPage):
(WebCore::InspectorInstrumentation::instrumentingAgentsForContext):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didCreateWebGPUDevice):
(WebCore::InspectorInstrumentation::willDestroyWebGPUDevice):
(WebCore::InspectorInstrumentation::didCreateWebGPUPipeline):
* platform/graphics/BitmapImage.cpp:
* platform/graphics/Font.h:
* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::getUserToBaseCTM):
* platform/graphics/cg/GraphicsContextCG.h:
(WebCore::getUserToBaseCTM): Deleted.
* platform/graphics/cg/ImageBufferCG.cpp:
* platform/graphics/cocoa/IOSurface.h:
* platform/graphics/mac/PDFDocumentImageMac.mm:
InspectorInstrumentation.h is one of the most expensive headers in the entire project.
While not included in many places (70), it is fairly straightforward to reduce
its per-inclusion cost by rougly 80%.
2019-10-01 Alex Christensen <achristensen@webkit.org>
Progress towards a functioning CMake build on Mac
https://bugs.webkit.org/show_bug.cgi?id=202443
Rubber-stamped by Tim Horton.
* testing/Internals.mm:
2019-10-01 John Wilander <wilander@apple.com>
Storage Access API: document.hasStorageAccess() should return true when the cookie policy allows access
https://bugs.webkit.org/show_bug.cgi?id=202435
<rdar://problem/55718526>
Reviewed by Brent Fulgham.
WebKit's Storage Access API implementation has so far only looked at whether ITP is
blocking cookie access or not. However, the default cookie policy is still in
effect underneath ITP. document.hasStorageAccess() should return true if the
third-party:
a) is not classified by ITP, and
b) has cookies which implies it can use cookies as third-party according to the
default cookie policy.
Tests: http/tests/storageAccess/has-storage-access-false-by-default-ephemeral.html
http/tests/storageAccess/has-storage-access-true-if-third-party-has-cookies-ephemeral.html
http/tests/storageAccess/has-storage-access-true-if-third-party-has-cookies.html
* platform/network/NetworkStorageSession.h:
* platform/network/cocoa/NetworkStorageSessionCocoa.mm:
(WebCore::NetworkStorageSession::hasCookies const):
* platform/network/curl/NetworkStorageSessionCurl.cpp:
(WebCore::NetworkStorageSession::hasCookies const):
Not yet implemented. Always says false.
* platform/network/soup/NetworkStorageSessionSoup.cpp:
(WebCore::NetworkStorageSession::hasCookies const):
Not yet implemented. Always says false.
2019-10-01 Tim Horton <timothy_horton@apple.com>
Clean up some includes to make the build a bit faster
https://bugs.webkit.org/show_bug.cgi?id=202437
Reviewed by Jer Noble.
* Modules/webaudio/PannerNode.h:
* Modules/webaudio/RealtimeAnalyser.h:
* platform/audio/HRTFPanner.h:
FFTFrame includes Accelerate.h, which is quite expensive.
2019-10-01 Antti Koivisto <antti@apple.com>
[CSS Shadow Parts] Parse 'part' attribute
https://bugs.webkit.org/show_bug.cgi?id=202409
Reviewed by Ryosuke Niwa.
Add parsing for Element 'part' attribute and the IDL interface.
Also add a feature flag for CSS Shadow Parts.
* dom/Element.cpp:
(WebCore::Element::attributeChanged):
(WebCore::isNonEmptyTokenList):
(WebCore::Element::classAttributeChanged):
(WebCore::Element::partAttributeChanged):
(WebCore::Element::partNames const):
(WebCore::Element::part):
(WebCore::classStringHasClassName): Deleted.
* dom/Element.h:
* dom/Element.idl:
* dom/ElementRareData.cpp:
* dom/ElementRareData.h:
(WebCore::ElementRareData::partList const):
(WebCore::ElementRareData::setPartList):
(WebCore::ElementRareData::partNames const):
(WebCore::ElementRareData::setPartNames):
* html/HTMLAttributeNames.in:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setCSSShadowPartsEnabled):
(WebCore::RuntimeEnabledFeatures::cssShadowPartsEnabled const):
2019-10-01 Yusuke Suzuki <ysuzuki@apple.com>
[JSC] Place VM* in TLS
https://bugs.webkit.org/show_bug.cgi?id=202391
Reviewed by Mark Lam.
Use JSLockHolder instead. It automatically puts VM* in TLS.
* bindings/js/IDBBindingUtilities.cpp:
(WebCore::toJS):
(WebCore::deserializeIDBValueToJSValue):
2019-10-01 youenn fablet <youenn@apple.com>
Queue events and promise resolution in RTCPeerConnection when suspended for page cache
https://bugs.webkit.org/show_bug.cgi?id=202396
Reviewed by Chris Dumez.
This patch prepares RTCPeerConnection to be suspendable to enter page cache.
For that purpose, we queue events and promise resolution/rejection tasks if the RTCPeerConnection m_shouldDelayTasks is set to true.
This queueing is enabled when RTCPeerConnection is asked to suspend itself.
The queued tasks are then executed at resume time.
Renamed fireEvent to dispatchEventWhenFeasible.
No change of behavior for now.
* Modules/mediastream/PeerConnectionBackend.cpp:
(WebCore::PeerConnectionBackend::createOfferSucceeded):
(WebCore::PeerConnectionBackend::createOfferFailed):
(WebCore::PeerConnectionBackend::createAnswerSucceeded):
(WebCore::PeerConnectionBackend::createAnswerFailed):
(WebCore::PeerConnectionBackend::setLocalDescriptionSucceeded):
(WebCore::PeerConnectionBackend::setLocalDescriptionFailed):
(WebCore::PeerConnectionBackend::setRemoteDescriptionSucceeded):
(WebCore::PeerConnectionBackend::setRemoteDescriptionFailed):
(WebCore::PeerConnectionBackend::addIceCandidateSucceeded):
(WebCore::PeerConnectionBackend::addIceCandidateFailed):
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::doClose):
(WebCore::RTCPeerConnection::suspend):
(WebCore::RTCPeerConnection::resume):
(WebCore::RTCPeerConnection::updateIceGatheringState):
(WebCore::RTCPeerConnection::updateIceConnectionState):
(WebCore::RTCPeerConnection::updateConnectionState):
(WebCore::RTCPeerConnection::scheduleNegotiationNeededEvent):
(WebCore::RTCPeerConnection::doTask):
(WebCore::RTCPeerConnection::fireEvent):
* Modules/mediastream/RTCPeerConnection.h:
2019-10-01 Brent Fulgham <bfulgham@apple.com>
[FTW] Correct additional canvas test failures
https://bugs.webkit.org/show_bug.cgi?id=202388
Reviewed by Fujii Hironori.
This patch corrects a handful of errors in Direct2D's drawing code.
* platform/graphics/win/Direct2DOperations.cpp:
(WebCore::Direct2D::clearRect): Use the transformed dimensions of
rects to determine whether they intersect with the render target.
* platform/graphics/win/ImageBufferDataDirect2D.cpp:
(WebCore::ImageBufferData::copyRectFromData const):
(WebCore::ImageBufferData::loadDataToBitmapIfNeeded): It is not
necessary (or correct) to 'endDraw' when loading image data to the
Bitmap target.
* platform/graphics/win/PathDirect2D.cpp:
(WebCore::Path::strokeBoundingRect const): Provide an implementation.
2019-10-01 Alex Christensen <achristensen@webkit.org>
Progress towards successful CMake build on Mac
https://bugs.webkit.org/show_bug.cgi?id=202426
Rubber-stamped by Tim Horton.
* PlatformMac.cmake:
2019-10-01 Tim Horton <timothy_horton@apple.com>
Clean up some includes to make the build a bit faster
https://bugs.webkit.org/show_bug.cgi?id=202417
Reviewed by Jer Noble.
No new tests, just reorganizing.
Apply some profile-guided optimizations to our headers.
* Modules/mediasource/SourceBuffer.cpp:
* WebCorePrefix.h:
Add HashMap, which ends up included in all source files.
* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::HTMLImageElement):
(WebCore::HTMLImageElement::selectImageSource):
(WebCore::HTMLImageElement::didAttachRenderers):
(WebCore::HTMLImageElement::insertedIntoAncestor):
(WebCore::HTMLImageElement::width):
(WebCore::HTMLImageElement::height):
(WebCore::HTMLImageElement::naturalWidth const):
(WebCore::HTMLImageElement::naturalHeight const):
(WebCore::HTMLImageElement::complete const):
(WebCore::HTMLImageElement::decode):
(WebCore::HTMLImageElement::didMoveToNewDocument):
(WebCore::HTMLImageElement::cachedImage const):
(WebCore::HTMLImageElement::setLoadManually):
(WebCore::HTMLImageElement::hasPendingActivity const):
(WebCore::HTMLImageElement::pendingDecodePromisesCountForTesting const):
* html/HTMLImageElement.h:
(WebCore::HTMLImageElement::cachedImage const): Deleted.
(WebCore::HTMLImageElement::setLoadManually): Deleted.
(WebCore::HTMLImageElement::hasPendingActivity const): Deleted.
(WebCore::HTMLImageElement::pendingDecodePromisesCountForTesting const): Deleted.
HTMLImageLoader brings in JSDOMPromiseDeferred, which is known to be horribly expensive.
Out-of-line m_imageLoader.
* platform/graphics/GraphicsLayer.h:
Swap Animation for TimingFunction, which is much smaller.
* platform/graphics/MediaPlayer.h:
InbandTextTrackPrivate brings in SerializedPlatformRepresentation.h,
which is very expensive. MediaPlayer.h is included in many places.
Break the link.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
2019-10-01 youenn fablet <youenn@apple.com>
RTCDataChannel should not prevent entering page cache except if in open state
https://bugs.webkit.org/show_bug.cgi?id=202395
Reviewed by Chris Dumez.
Only prevent entering page cache in open state.
Enqueue message through the document event queue to handle suspension properly.
We cannot yet write page cache tests as a data channel requires a peer connection which
currently forbids entering page cache.
* Modules/mediastream/RTCDataChannel.cpp:
(WebCore::RTCDataChannel::RTCDataChannel):
(WebCore::RTCDataChannel::didReceiveStringData):
(WebCore::RTCDataChannel::didReceiveRawData):
(WebCore::RTCDataChannel::didDetectError):
(WebCore::RTCDataChannel::bufferedAmountIsDecreasing):
(WebCore::RTCDataChannel::scheduleDispatchEvent):
(WebCore::RTCDataChannel::scheduledEventTimerFired): Deleted.
* Modules/mediastream/RTCDataChannel.h:
2019-10-01 Rob Buis <rbuis@igalia.com>
[Mac] Layout Test imported/w3c/web-platform-tests/fetch/api/redirect/redirect-location.any.html fails
https://bugs.webkit.org/show_bug.cgi?id=202350
Reviewed by Alex Christensen.
In some cases didReceiveResponse will deliver redirects (normally willSendRequestInternal will be used for redirects).
When this is done in manual redirect mode make sure the response type is opaque redirect.
Test: imported/w3c/web-platform-tests/fetch/api/redirect/redirect-location.any.html
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::didReceiveResponse):
2019-10-01 Keith Rollin <krollin@apple.com>
Remove some support for < iOS 13
https://bugs.webkit.org/show_bug.cgi?id=202386
<rdar://problem/55863017>
Reviewed by Eric Carlson.
Remove some support for iOS versions less than 13.0.
Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED
and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have
values >= 130000. This means that expressions like
"__IPHONE_OS_VERSION_MIN_REQUIRED < 101300" are always False and
"__IPHONE_OS_VERSION_MIN_REQUIRED >= 101300" are always True.
This removal is part of a series of patches effecting the removal of
dead code for old versions of iOS. This particular pass involves
changes in which Jer Noble was involved. These changes are isolated
from other similar changes in order to facilitate the reviewing
process.
No new tests -- no new or changed functionality.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::seekableTimeRangesLastModifiedTime const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::liveUpdateInterval const):
2019-10-01 Chris Dumez <cdumez@apple.com>
Unreviewed attempt to fix Windows build after r250527.
* dom/GenericEventQueue.cpp:
(WebCore::TaskQueueConstructor::construct):
(WebCore::TaskQueueConstructor<Timer>::construct):
(WebCore::GenericEventQueueBase<T>::enqueueEvent):
(WebCore::GenericEventQueueBase<T>::close):
(WebCore::GenericEventQueueBase<T>::cancelAllEvents):
(WebCore::GenericEventQueueBase<T>::setPaused):
(WebCore::GenericEventQueueBase<T>::suspend):
(WebCore::GenericEventQueueBase<T>::rescheduleAllEventsIfNeeded):
* dom/GenericEventQueue.h:
* platform/GenericTaskQueue.h:
2019-10-01 Alex Christensen <achristensen@webkit.org>
Fix internal build after r250549
https://bugs.webkit.org/show_bug.cgi?id=202390
There is an internal #define confirm on some systems, so rename DOMWindow::confirm to DOMWindow::confirmForBindings.
* page/DOMWindow.cpp:
(WebCore::DOMWindow::confirmForBindings):
(WebCore::DOMWindow::confirm): Deleted.
* page/DOMWindow.h:
* page/DOMWindow.idl:
2019-10-01 Chris Dumez <cdumez@apple.com>
Unreviewed attempt to fix Windows build after r250527.
* platform/GenericTaskQueue.h:
2019-10-01 Zan Dobersek <zdobersek@igalia.com>
[CoordGraphics] Implement sync methods for position, bounds origin
https://bugs.webkit.org/show_bug.cgi?id=202398
Reviewed by Carlos Garcia Campos.
Add the CoordinatedGraphicsLayer::syncPosition() and
CoordinatedGraphicsLayer::syncBoundsOrigin() method overrides, both
performing a synchronization of the given GraphicsLayer attribute.
These methods are used by the scrolling code to reflect changes in these
attributes without causing a layer flush (which is not necessary since
the changes have already been applied in an equivalent way).
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::didChangeGeometry):
(WebCore::CoordinatedGraphicsLayer::syncPosition):
(WebCore::CoordinatedGraphicsLayer::syncBoundsOrigin):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
2019-10-01 Joonghun Park <jh718.park@samsung.com>
Make table's clientWidth/Height include its border sizes.
https://bugs.webkit.org/show_bug.cgi?id=200974
WebKit doesn't have table wrapper box currently
while Gecko has it,
so this CL tries to mimic the behavior that
clientWidth/Height refers to table wrapper box
which doesn't have borders applied to itself
and table grid box has the borders.
This CL adds table's border sizes
to clientWidth/Height
at |LayoutBox::PixelSnappedClientWidth/Height|.
As a result of this CL, table's clientWidth/Height
and offsetWidth/Height are equal now, respectively.
The corresponding csswg discussion is
https://github.com/w3c/csswg-drafts/issues/4245.
Reviewed by Antti Koivisto.
Tests: fast/table/border-collapsing/bug236727.html
imported/w3c/web-platform-tests/css/cssom-view/table-border-collapse-client-width-height.html
imported/w3c/web-platform-tests/css/cssom-view/table-border-separate-client-width-height.html
imported/w3c/web-platform-tests/css/cssom-view/table-with-border-client-width-height.html
* dom/Element.cpp:
(WebCore::Element::clientWidth):
(WebCore::Element::clientHeight):
2019-10-01 youenn fablet <youenn@apple.com>
Remove races condition when validating capture sandbox extension revocation
https://bugs.webkit.org/show_bug.cgi?id=202133
<rdar://problem/55660905>
Reviewed by Eric Carlson.
Covered by existing tests.
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::endCapture):
Synchronously update document media state when capture is ended.
This allows to validate the fact that no document is capturing while we revoke sandbox extensions.
2019-10-01 youenn fablet <youenn@apple.com>
MediaDevices should be SecureContext
https://bugs.webkit.org/show_bug.cgi?id=202267
Reviewed by Eric Carlson.
Manually tested since 127.0.0.1/localhost are secure contexts.
* Modules/mediastream/MediaDevices.idl:
* bindings/js/WebCoreBuiltinNames.h:
2019-09-30 Alex Christensen <achristensen@webkit.org>
Resurrect Mac CMake build
https://bugs.webkit.org/show_bug.cgi?id=202384
Rubber-stamped by Tim Horton.
* PlatformMac.cmake:
2019-09-30 Chris Dumez <cdumez@apple.com>
Make GenericEventQueue an ActiveDOMObject
https://bugs.webkit.org/show_bug.cgi?id=202373
Reviewed by Eric Carlson.
Make GenericEventQueue an ActiveDOMObject so that it is guaranteed to never fire any events while
suspended without requiring the client to explicitly suspend/resume the event queue.
* Modules/encryptedmedia/MediaKeySession.cpp:
(WebCore::MediaKeySession::MediaKeySession):
(WebCore::MediaKeySession::enqueueMessage):
(WebCore::MediaKeySession::updateKeyStatuses):
* Modules/encryptedmedia/MediaKeySession.h:
* Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp:
(WebCore::WebKitMediaKeySession::WebKitMediaKeySession):
(WebCore::WebKitMediaKeySession::~WebKitMediaKeySession):
(WebCore::WebKitMediaKeySession::addKeyTimerFired):
(WebCore::WebKitMediaKeySession::sendMessage):
(WebCore::WebKitMediaKeySession::sendError):
(WebCore::WebKitMediaKeySession::hasPendingActivity const):
(WebCore::WebKitMediaKeySession::stop):
* Modules/encryptedmedia/legacy/WebKitMediaKeySession.h:
* Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::MediaSource):
(WebCore::MediaSource::hasPendingActivity const):
(WebCore::MediaSource::stop):
(WebCore::MediaSource::canSuspendForDocumentSuspension const):
(WebCore::MediaSource::scheduleEvent):
* Modules/mediasource/MediaSource.h:
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::SourceBuffer):
(WebCore::SourceBuffer::hasPendingActivity const):
(WebCore::SourceBuffer::stop):
(WebCore::SourceBuffer::scheduleEvent):
* Modules/mediasource/SourceBuffer.h:
* Modules/mediasource/SourceBufferList.cpp:
(WebCore::SourceBufferList::SourceBufferList):
(WebCore::SourceBufferList::scheduleEvent):
(WebCore::SourceBufferList::canSuspendForDocumentSuspension const):
* Modules/mediasource/SourceBufferList.h:
* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::AudioContext):
(WebCore::AudioContext::stop):
* Modules/webaudio/AudioContext.h:
* animation/DeclarativeAnimation.cpp:
(WebCore::DeclarativeAnimation::DeclarativeAnimation):
(WebCore::DeclarativeAnimation::tick):
(WebCore::DeclarativeAnimation::needsTick const):
(WebCore::DeclarativeAnimation::remove):
(WebCore::DeclarativeAnimation::enqueueDOMEvent):
(WebCore::DeclarativeAnimation::stop):
(WebCore::DeclarativeAnimation::suspend):
(WebCore::DeclarativeAnimation::resume):
* animation/DeclarativeAnimation.h:
* dom/GenericEventQueue.cpp:
(WebCore::GenericEventQueueBase<T>::GenericEventQueueBase):
(WebCore::GenericEventQueueBase<T>::setPaused):
(WebCore::GenericEventQueueBase<T>::canSuspendForDocumentSuspension const):
(WebCore::GenericEventQueueBase<T>::suspend):
(WebCore::GenericEventQueueBase<T>::resume):
(WebCore::GenericEventQueueBase<T>::rescheduleAllEventsIfNeeded):
(WebCore::GenericEventQueueBase<T>::stop):
(WebCore::GenericEventQueueBase<T>::activeDOMObjectName const):
(WebCore::GenericEventQueue::create):
(WebCore::MainThreadGenericEventQueue::create):
* dom/GenericEventQueue.h:
* dom/MessagePort.cpp:
(WebCore::MessagePort::MessagePort):
(WebCore::MessagePort::close):
(WebCore::MessagePort::dispatchMessages):
* dom/MessagePort.h:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::~HTMLMediaElement):
(WebCore::HTMLMediaElement::scheduleEvent):
(WebCore::HTMLMediaElement::updateActiveTextTrackCues):
(WebCore::HTMLMediaElement::cancelPendingEventsAndCallbacks):
(WebCore::HTMLMediaElement::mediaPlayerKeyNeeded):
(WebCore::HTMLMediaElement::mediaPlayerInitializationDataEncountered):
(WebCore::HTMLMediaElement::closeTaskQueues):
(WebCore::HTMLMediaElement::suspend):
(WebCore::HTMLMediaElement::resume):
(WebCore::HTMLMediaElement::hasPendingActivity const):
(WebCore::HTMLMediaElement::enqueuePlaybackTargetAvailabilityChangedEvent):
* html/HTMLMediaElement.h:
* html/track/TrackListBase.cpp:
(WebCore::TrackListBase::TrackListBase):
(WebCore::TrackListBase::scheduleTrackEvent):
(WebCore::TrackListBase::scheduleChangeEvent):
(WebCore::TrackListBase::isChangeEventScheduled const):
(WebCore::TrackListBase::canSuspendForDocumentSuspension const):
* html/track/TrackListBase.h:
* workers/Worker.cpp:
(WebCore::Worker::Worker):
(WebCore::Worker::terminate):
(WebCore::Worker::stop):
(WebCore::Worker::hasPendingActivity const):
(WebCore::Worker::enqueueEvent):
(WebCore::Worker::dispatchEvent):
* workers/Worker.h:
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::ServiceWorkerContainer):
(WebCore::ServiceWorkerContainer::startMessages):
(WebCore::ServiceWorkerContainer::postMessage):
(WebCore::ServiceWorkerContainer::stop):
* workers/service/ServiceWorkerContainer.h:
2019-09-30 Chris Dumez <cdumez@apple.com>
IDBTransaction / IDBObjectStore should not prevent a page from entering the back / forward cache
https://bugs.webkit.org/show_bug.cgi?id=202291
<rdar://problem/55760106>
Reviewed by Geoffrey Garen.
IDBObjectStore does not fire any events and should therefore not cause any problem while in PageCache.
IDBTransaction can only fire abort/complete/error events, all of which are being enqueued to the
DocumentEventQueue. The DocumentEventQueue subclasses SuspendableTimer which will correctly suspend
while the document is in page cache. IDBTransaction will therefore not cause events to fire (and JS
to run) while in page cache.
Test: storage/indexeddb/IDBTransaction-page-cache.html
* Modules/indexeddb/IDBObjectStore.cpp:
(WebCore::IDBObjectStore::canSuspendForDocumentSuspension const):
* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::canSuspendForDocumentSuspension const):
2019-09-30 Chris Dumez <cdumez@apple.com>
Refine restrictions for X-Temp-Tablet HTTP header experiment
https://bugs.webkit.org/show_bug.cgi?id=202367
<rdar://problem/55849139>
Reviewed by Geoffrey Garen.
Refine restrictions for X-Temp-Tablet HTTP header experiment:
1. Only send the header if the embedding application is MobileSafari.
2. Only send the header if the first party is google.com
3. Only send the header if the current date is before 2/1/2020
4. Send the header even if using an ephemeral session
* loader/cache/CachedResourceLoader.cpp:
(WebCore::isXTempTabletHeaderExperimentOver):
(WebCore::CachedResourceLoader::CachedResourceLoader):
(WebCore::isGoogleSearch):
(WebCore::CachedResourceLoader::shouldSendXTempTabletHeader const):
(WebCore::CachedResourceLoader::requestResource):
* loader/cache/CachedResourceLoader.h:
2019-09-30 Chris Dumez <cdumez@apple.com>
Pages with Web Workers cannot enter the back / forward cache
https://bugs.webkit.org/show_bug.cgi?id=202296
<rdar://problem/55764073>
Reviewed by Jer Noble.
Allow pages that use Web Workers to enter the back / forward cache.
This involves adding an EventQueue for all event firing on Woker
objects and suspending this EventQueue while in the page cache.
This was preventing some of the pages on weather.com to enter the
back / forward cache.
Test: fast/workers/worker-page-cache.html
* Modules/encryptedmedia/MediaKeySession.h:
* Modules/encryptedmedia/legacy/WebKitMediaKeySession.h:
* Modules/mediasource/MediaSource.h:
* Modules/mediasource/SourceBuffer.h:
* Modules/mediasource/SourceBufferList.h:
* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::AudioContext):
* Modules/webaudio/AudioContext.h:
* animation/DeclarativeAnimation.h:
* dom/GenericEventQueue.cpp:
(WebCore::TaskQueueConstructor::construct):
(WebCore::TaskQueueConstructor<Timer>::construct):
(WebCore::GenericEventQueueBase<T>::GenericEventQueueBase):
(WebCore::GenericEventQueueBase<T>::enqueueEvent):
(WebCore::GenericEventQueueBase<T>::dispatchOneEvent):
(WebCore::GenericEventQueueBase<T>::close):
(WebCore::GenericEventQueueBase<T>::cancelAllEvents):
(WebCore::GenericEventQueueBase<T>::hasPendingEvents const):
(WebCore::GenericEventQueueBase<T>::hasPendingEventsOfType const):
(WebCore::GenericEventQueueBase<T>::suspend):
(WebCore::GenericEventQueueBase<T>::resume):
* dom/GenericEventQueue.h:
(WebCore::GenericEventQueueBase::isSuspended const):
(WebCore::MainThreadGenericEventQueue::MainThreadGenericEventQueue):
(WebCore::GenericEventQueue::GenericEventQueue):
Rename GenericEventQueue to MainThreadGenericEventQueue since its implementation relies
on a global shared Timer to fire events. Introduce a new GenericEventQueue which can
actually be used from any thread. This is useful for MessagePort, which is used both
on the main thread and on worker threads.
* dom/MessagePort.cpp:
(WebCore::MessagePort::MessagePort):
(WebCore::MessagePort::close):
(WebCore::MessagePort::suspend):
(WebCore::MessagePort::resume):
(WebCore::MessagePort::dispatchMessages):
* dom/MessagePort.h:
Use an GenericEventQueue in MessagePort for consistency with Worker.
MessagePort is an ActiveDOMobject which returns true in canSuspend(),
we therefore need to make sure it suspends event firing while
suspended.
* html/HTMLMediaElement.h:
* html/track/TrackListBase.h:
* workers/Worker.cpp:
(WebCore::Worker::Worker):
(WebCore::Worker::terminate):
(WebCore::Worker::canSuspendForDocumentSuspension const):
(WebCore::Worker::suspend):
(WebCore::Worker::resume):
(WebCore::Worker::stop):
(WebCore::Worker::hasPendingActivity const):
(WebCore::Worker::notifyFinished):
(WebCore::Worker::enqueueEvent):
(WebCore::Worker::dispatchEvent):
* workers/Worker.h:
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::postMessageToWorkerObject):
(WebCore::WorkerMessagingProxy::postExceptionToWorkerObject):
2019-09-27 Keith Rollin <krollin@apple.com>
Coalesce or remove PLATFORM(MAC) || PLATFORM(IOS_FAMILY)
https://bugs.webkit.org/show_bug.cgi?id=202119
<rdar://problem/55638792>
Unreviewed, address post landing review comments for r248533 from
Darin Adler.
No new tests -- no new or changed functionality.
* Modules/applepay/cocoa/PaymentContactCocoa.mm:
(WebCore::convert):
(WebCore::subLocality): Deleted.
(WebCore::setSubLocality): Deleted.
(WebCore::subAdministrativeArea): Deleted.
(WebCore::setSubAdministrativeArea): Deleted.
2019-09-30 Antti Koivisto <antti@apple.com>
RenderLineBreak should use LineLayoutTraversal
https://bugs.webkit.org/show_bug.cgi?id=202316
Reviewed by Zalan Bujtas.
Replace more path specific code with LineLayoutTraversal.
* Headers.cmake:
* rendering/RenderLineBreak.cpp:
(WebCore::RenderLineBreak::linesBoundingBox const):
(WebCore::RenderLineBreak::absoluteRects const):
(WebCore::RenderLineBreak::absoluteQuads const):
(WebCore::simpleLineLayout): Deleted.
* rendering/RenderTreeAsText.cpp:
(WebCore::RenderTreeAsText::writeRenderObject):
(WebCore::writeTextBox):
* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::computeBoundingBox): Deleted.
(WebCore::SimpleLineLayout::collectAbsoluteRects): Deleted.
(WebCore::SimpleLineLayout::rendererForPosition): Deleted.
* rendering/SimpleLineLayoutFunctions.h:
* rendering/line/LineLayoutTraversal.cpp:
(WebCore::LineLayoutTraversal::ElementBoxIterator::ElementBoxIterator):
(WebCore::LineLayoutTraversal::ElementBoxIterator::atEnd const):
(WebCore::LineLayoutTraversal::elementBoxFor):
(WebCore::LineLayoutTraversal::TextBox::rect const): Deleted.
(WebCore::LineLayoutTraversal::TextBox::logicalRect const): Deleted.
(WebCore::LineLayoutTraversal::TextBox::hasHyphen const): Deleted.
(WebCore::LineLayoutTraversal::TextBox::isLeftToRightDirection const): Deleted.
(WebCore::LineLayoutTraversal::TextBox::dirOverride const): Deleted.
(WebCore::LineLayoutTraversal::TextBox::text const): Deleted.
(WebCore::LineLayoutTraversal::TextBox::isLineBreak const): Deleted.
(WebCore::LineLayoutTraversal::TextBox::localStartOffset const): Deleted.
(WebCore::LineLayoutTraversal::TextBox::localEndOffset const): Deleted.
(WebCore::LineLayoutTraversal::TextBox::length const): Deleted.
(WebCore::LineLayoutTraversal::TextBox::isLastOnLine const): Deleted.
(WebCore::LineLayoutTraversal::TextBox::isLast const): Deleted.
(WebCore::LineLayoutTraversal::TextBox::iterator const): Deleted.
Move to header as templates.
* rendering/line/LineLayoutTraversal.h:
(WebCore::LineLayoutTraversal::ElementBoxIterator::ElementBoxIterator):
(WebCore::LineLayoutTraversal::ElementBoxIterator::operator bool const):
(WebCore::LineLayoutTraversal::ElementBoxIterator::operator* const):
(WebCore::LineLayoutTraversal::ElementBoxIterator::operator-> const):
Add a new iterator type for element boxes.
It doesn't currently really iterate, is just allows testing for end.
(WebCore::LineLayoutTraversal::Box<Iterator>::rect const):
(WebCore::LineLayoutTraversal::Box<Iterator>::logicalRect const):
(WebCore::LineLayoutTraversal::Box<Iterator>::isLeftToRightDirection const):
(WebCore::LineLayoutTraversal::Box<Iterator>::dirOverride const):
(WebCore::LineLayoutTraversal::Box<Iterator>::isLineBreak const):
(WebCore::LineLayoutTraversal::Box<Iterator>::iterator const):
Split properties that all inline boxes have out from TextBox.
Make it a template class.
(WebCore::LineLayoutTraversal::TextBox<Iterator>::hasHyphen const):
(WebCore::LineLayoutTraversal::TextBox<Iterator>::text const):
(WebCore::LineLayoutTraversal::TextBox<Iterator>::localStartOffset const):
(WebCore::LineLayoutTraversal::TextBox<Iterator>::localEndOffset const):
(WebCore::LineLayoutTraversal::TextBox<Iterator>::length const):
(WebCore::LineLayoutTraversal::TextBox<Iterator>::isLastOnLine const):
(WebCore::LineLayoutTraversal::TextBox<Iterator>::isLast const):
Make a template class.
(WebCore::LineLayoutTraversal::hasTextBoxes): Deleted.
2019-09-30 Rob Buis <rbuis@igalia.com>
No-Cors check should take into account same-origin
https://bugs.webkit.org/show_bug.cgi?id=202353
Reviewed by Youenn Fablet.
No-Cors check should take into account same-origin, in that case the
check should bail out, since same-origin is already handled in
the first step of [1].
Test: imported/web-platform-tests/fetch/api/redirect/redirect-mode.any.html
[1] https://fetch.spec.whatwg.org/#main-fetch Step 5
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::canRequest):
2019-09-30 Zan Dobersek <zdobersek@igalia.com>
[Nicosia] Complete ScrollingTreeNicosia::createScrollingTreeNode()
https://bugs.webkit.org/show_bug.cgi?id=202358
Reviewed by Carlos Garcia Campos.
* page/scrolling/nicosia/ScrollingTreeNicosia.cpp:
(WebCore::ScrollingTreeNicosia::createScrollingTreeNode):
Return appropriate objects for the remaining node types.
2019-09-30 Zan Dobersek <zdobersek@igalia.com>
[Nicosia] Add missing conversion casts for LayerRepresentation objects
https://bugs.webkit.org/show_bug.cgi?id=202357
Reviewed by Carlos Garcia Campos.
After r250491, we have to request explicit conversion of
LayerRepresentation objects to Nicosia::PlatformLayer pointers.
* page/scrolling/nicosia/ScrollingTreeFixedNode.cpp:
(WebCore::ScrollingTreeFixedNode::commitStateBeforeChildren):
* page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::handleWheelEvent):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::repositionScrollingLayers):
* page/scrolling/nicosia/ScrollingTreeOverflowScrollProxyNode.cpp:
(WebCore::ScrollingTreeOverflowScrollProxyNode::commitStateBeforeChildren):
* page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp:
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::repositionScrollingLayers):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::handleWheelEvent):
* page/scrolling/nicosia/ScrollingTreePositionedNode.cpp:
(WebCore::ScrollingTreePositionedNode::commitStateBeforeChildren):
* page/scrolling/nicosia/ScrollingTreeStickyNode.cpp:
(WebCore::ScrollingTreeStickyNode::commitStateBeforeChildren):
2019-09-29 Zan Dobersek <zdobersek@igalia.com>
ScrollingTreeScrollingNode: use LayerRepresentation for scroll container, scrolled contents layers
https://bugs.webkit.org/show_bug.cgi?id=202256
<rdar://problem/55772092>
Reviewed by Simon Fraser.
Make the scroll container and scrolled contents layer holders
platform-independent by using the LayerRepresentation as the underlying
type for the two member variables in ScrollingTreeScrollingNode.
* page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):
* page/scrolling/ScrollingTreeScrollingNode.h:
* page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
(WebCore::ScrollingTreeFrameScrollingNodeMac::repositionScrollingLayers):
* page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
(WebCore::ScrollingTreeOverflowScrollingNodeMac::repositionScrollingLayers):
2019-09-28 Brent Fulgham <bfulgham@apple.com>
[FTW] Correct compositing, shadow, and radial gradient implementations
https://bugs.webkit.org/show_bug.cgi?id=202177
Reviewed by Fujii Hironori.
This patch corrects a number of implementation errors in basic Canvas
drawing operations.
Tested by canvas/philip/tests
* platform/graphics/win/Direct2DOperations.cpp:
(WebCore::Direct2D::State::setCompositeOperation): Initialize blend and
composite modes to correct defaults.
(WebCore::Direct2D::drawWithShadowHelper): Correct value used for blur
standard deviation to more closely match other browser output.
* platform/graphics/win/Direct2DUtilities.cpp:
(WebCore::Direct2D::createBitmapCopyFromContext): Added helper function.
* platform/graphics/win/Direct2DUtilities.h:
* platform/graphics/win/GradientDirect2D.cpp:
(WebCore::Gradient::generateGradient): Properly handle the case of a non-zero
initial gradient radius. Properly compute the final radius.
* platform/graphics/win/ImageBufferDataDirect2D.cpp:
(WebCore::ImageBufferData::readDataFromBitmapIfNeeded const): Update to use ID2D1DeviceContext
from platformContext, rather than searching for it each time.
(WebCore::ImageBufferData::compatibleBitmap): Ditto.
* platform/graphics/win/PlatformContextDirect2D.cpp:
(WebCore::PlatformContextDirect2D::PlatformContextDirect2D): Grab the ID2D1DeviceContext for
the RenderTarget at construction time.
(WebCore::PlatformContextDirect2D::setRenderTarget): Ditto.
(WebCore::PlatformContextDirect2D::endDraw): Perform compositing operations when needed.
(WebCore::PlatformContextDirect2D::compositeIfNeeded): Added.
(WebCore::PlatformContextDirect2D::setBlendAndCompositeMode): Update to properly set the
blend and compositing mode (depending on global value set for the canvas.)
* platform/graphics/win/PlatformContextDirect2D.h:
(WebCore::PlatformContextDirect2D::deviceContext):
(WebCore::PlatformContextDirect2D::setRenderTarget): Deleted.
(WebCore::PlatformContextDirect2D::setBlendMode): Deleted.
(WebCore::PlatformContextDirect2D::setCompositeMode): Deleted.
2019-09-29 Zan Dobersek <zdobersek@igalia.com>
Tighten up LayerRepresentation operators
https://bugs.webkit.org/show_bug.cgi?id=202344
Reviewed by Simon Fraser.
Make the operators on the LayerRepresentation class explicit.
Additionally, the bool operator is added to the class, allowing objects
of this class to be safely used in boolean contexts like null checks.
Before, use in such contexts fell back to using the
GraphicsLayer::PlatformLayerID operator which caused asserts when the
internal representation was of different type.
While the explicit operators prevent misuse, they do require additional
conversion casts to retrieve the internal LayerRepresentation value.
* page/scrolling/ScrollingStateNode.h:
(WebCore::LayerRepresentation::operator GraphicsLayer* const):
(WebCore::LayerRepresentation::operator PlatformLayer* const):
(WebCore::LayerRepresentation::operator GraphicsLayer::PlatformLayerID const):
(WebCore::LayerRepresentation::operator bool const):
(WebCore::LayerRepresentation::toRepresentation const):
Add a missing ASSERT_NOT_REACHED() invocation.
* page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):
* page/scrolling/cocoa/ScrollingTreeFixedNode.mm:
(WebCore::ScrollingTreeFixedNode::commitStateBeforeChildren):
* page/scrolling/cocoa/ScrollingTreeOverflowScrollProxyNode.mm:
(WebCore::ScrollingTreeOverflowScrollProxyNode::commitStateBeforeChildren):
* page/scrolling/cocoa/ScrollingTreePositionedNode.mm:
(WebCore::ScrollingTreePositionedNode::commitStateBeforeChildren):
* page/scrolling/cocoa/ScrollingTreeStickyNode.mm:
(WebCore::ScrollingTreeStickyNode::commitStateBeforeChildren):
* page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
(WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):
2019-09-29 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Remove InlineLayout abstraction layer
https://bugs.webkit.org/show_bug.cgi?id=202352
<rdar://problem/55811532>
Reviewed by Antti Koivisto.
Move InlineLayout functions to InlineFormattingContext. Now inline layout has
1. InlineFormattingContext -high level layout and preferred width computation, collecting inline content, constructing display boxes
2. LineLayout -responsible for placing inline content on the current line (partial inline content handling, line breaking etc)
3. Line -represents an actual line, turns inline content into runs.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::lineLayout):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):
(WebCore::Layout::InlineFormattingContext::initialConstraintsForLine):
(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):
* layout/inlineformatting/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::InlineLayout::layoutState const): Deleted.
(WebCore::Layout::InlineFormattingContext::InlineLayout::formattingContext const): Deleted.
(WebCore::Layout::InlineFormattingContext::InlineLayout::formattingRoot const): Deleted.
(WebCore::Layout::InlineFormattingContext::InlineLayout::formattingState): Deleted.
(WebCore::Layout::InlineFormattingContext::InlineLayout::widthConstraint const): Deleted.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp: Removed.
* layout/inlineformatting/InlineFormattingState.h:
(WebCore::Layout::InlineFormattingState::inlineItems const):
* layout/inlineformatting/InlineLineLayout.cpp: Added.
(WebCore::Layout::inlineItemWidth):
(WebCore::Layout::LineLayout::LineInput::LineInput):
(WebCore::Layout::LineLayout::UncommittedContent::add):
(WebCore::Layout::LineLayout::UncommittedContent::reset):
(WebCore::Layout::LineLayout::LineLayout):
(WebCore::Layout::LineLayout::commitPendingContent):
(WebCore::Layout::LineLayout::close):
(WebCore::Layout::LineLayout::placeInlineItem):
(WebCore::Layout::LineLayout::layout):
* layout/inlineformatting/InlineLineLayout.h: Added.
(WebCore::Layout::LineLayout::formattingContext const):
(WebCore::Layout::LineLayout::UncommittedContent::runs):
(WebCore::Layout::LineLayout::UncommittedContent::isEmpty const):
(WebCore::Layout::LineLayout::UncommittedContent::size const):
(WebCore::Layout::LineLayout::UncommittedContent::width const):
2019-09-29 Zan Dobersek <zdobersek@igalia.com>
[Nicosia] Add overflow, overflow proxy node implementations
https://bugs.webkit.org/show_bug.cgi?id=202306
Reviewed by Carlos Garcia Campos.
Add the ScrollingTreeOverflowScrollProxyNode and
ScrollingTreeOverflowScrollingNodeNicosia classes, implementing the
missing overlfow node types. Both implementations are based on the
corresponsing classes for Cocoa/Mac platforms and should ideally
share most of the platform-agnostic logic.
* SourcesWPE.txt:
* page/scrolling/nicosia/ScrollingTreeOverflowScrollProxyNode.cpp: Added.
(WebCore::ScrollingTreeOverflowScrollProxyNode::create):
(WebCore::ScrollingTreeOverflowScrollProxyNode::ScrollingTreeOverflowScrollProxyNode):
(WebCore::ScrollingTreeOverflowScrollProxyNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeOverflowScrollProxyNode::applyLayerPositions):
(WebCore::ScrollingTreeOverflowScrollProxyNode::dumpProperties const):
* page/scrolling/nicosia/ScrollingTreeOverflowScrollProxyNode.h: Added.
* page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp: Added.
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::create):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::ScrollingTreeOverflowScrollingNodeNicosia):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::commitStateAfterChildren):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::adjustedScrollPosition const):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::repositionScrollingLayers):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::handleWheelEvent):
* page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.h: Added.
2019-09-28 Said Abou-Hallawa <sabouhallawa@apple.com>
Crash when removing the target element while animating its attributes
https://bugs.webkit.org/show_bug.cgi?id=202247
Reviewed by Darin Adler.
If SMIL is animating a CSS attribute, there is a chance the animation is
ended while it is being started or progressed. For that reason, the member
SVGAnimateElementBase::m_animator has to be made RefPtr and it has to be
be protected in resetAnimatedType() and calculateAnimatedValue().
While SMILTimeContainer::updateAnimations() is calling progress() for the
scheduled animation elements, SMILTimeContainer::unschedule() might get
called if processing an animation causes events to be dispatched. For that
reason we need to copy the scheduled animations Vector before processing
them so we avoid changing the Vector while looping through its items.
Remove the guard SMILTimeContainer::m_preventScheduledAnimationsChanges
which was added in r129670 for debugging purposes. In some situations,
the scheduled animations map could be modified out from under some of the
functions of SMILTimeContainer.
Test: svg/animations/animate-and-remove-target-element.html
* svg/SVGAnimateElementBase.cpp:
(WebCore::SVGAnimateElementBase::resetAnimatedType):
(WebCore::SVGAnimateElementBase::calculateAnimatedValue):
* svg/SVGAnimateElementBase.h:
* svg/SVGElement.cpp:
(WebCore::SVGElement::createAnimator):
* svg/SVGElement.h:
* svg/animation/SMILTimeContainer.cpp:
(WebCore::SMILTimeContainer::schedule):
(WebCore::SMILTimeContainer::unschedule):
(WebCore::SMILTimeContainer::setElapsed):
(WebCore::SMILTimeContainer::sortByPriority):
(WebCore::SMILTimeContainer::processAnimations):
(WebCore::SMILTimeContainer::processScheduledAnimations):
(WebCore::SMILTimeContainer::updateAnimations):
(WebCore::SMILTimeContainer::~SMILTimeContainer): Deleted.
* svg/animation/SMILTimeContainer.h:
* svg/animation/SVGSMILElement.cpp:
(WebCore::SVGSMILElement::calculateNextProgressTime const):
* svg/properties/SVGAnimatedPropertyAccessorImpl.h:
* svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
* svg/properties/SVGAnimatedPropertyPairAccessorImpl.h:
* svg/properties/SVGAnimatedPropertyPairAnimator.h:
* svg/properties/SVGAnimatedPropertyPairAnimatorImpl.h:
* svg/properties/SVGAttributeAnimator.h:
* svg/properties/SVGMemberAccessor.h:
(WebCore::SVGMemberAccessor::createAnimator const):
* svg/properties/SVGPrimitivePropertyAnimator.h:
(WebCore::SVGPrimitivePropertyAnimator::create):
* svg/properties/SVGPropertyAnimatorFactory.h:
(WebCore::SVGPropertyAnimatorFactory::createAnimator):
* svg/properties/SVGPropertyOwnerRegistry.h:
* svg/properties/SVGPropertyRegistry.h:
* svg/properties/SVGValuePropertyAnimatorImpl.h:
* svg/properties/SVGValuePropertyListAnimatorImpl.h:
2019-09-28 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Move horizontal alignment to Line
https://bugs.webkit.org/show_bug.cgi?id=202351
<rdar://problem/55810139>
Reviewed by Antti Koivisto.
Line should be able to finalize the run placement including horizontal alignment.
* layout/Verification.cpp:
(WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::LineInput::LineInput):
(WebCore::Layout::LineLayout::LineLayout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::verticalAlignContent):
(WebCore::Layout::Line::horizontalAlignContent):
(WebCore::Layout::Line::appendInlineContainerStart):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendHardLineBreak):
(WebCore::Layout::Line::inlineItemContentHeight const):
* layout/inlineformatting/InlineLine.h:
2019-09-28 Wenson Hsieh <wenson_hsieh@apple.com>
[IDL] Support record<DOMString, *Callback> in bindings
https://bugs.webkit.org/show_bug.cgi?id=202326
Reviewed by Sam Weinig.
Currently, IDLRecord's converter assumes that the value type (template argument V) can be converted by passing
in only an ExecState and the JSValue, since it calls `auto typedValue = Converter<V>::convert(state, subValue)`.
However, IDLCallbackFunctions additionally require the JSDOMGlobalObject (see JSDOMConverterCallbacks.h). This
results in a compilation error in generated code, when attempting to convert the record.
To fix this, teach Converter<IDLRecord<K, V>> to accept three arguments (the ExecState, value, and global
object) in the case where V requires the global object. Additionally, let the bindings generator know that
JSValue to native object conversion requires the global object, by returning whether or not the value type of
the IDL record requires the global object, in the case where the given type is a record.
* bindings/js/JSDOMConvertRecord.h:
* bindings/scripts/CodeGeneratorJS.pm:
(JSValueToNativeDOMConvertNeedsGlobalObject):
* bindings/scripts/test/JS/JSTestObj.cpp:
Test this scenario by augmenting TestObj.idl with record<DOMString, VoidCallback>.
(WebCore::jsTestObjStringVoidCallbackRecordAttrGetter):
(WebCore::jsTestObjStringVoidCallbackRecordAttr):
(WebCore::setJSTestObjStringVoidCallbackRecordAttrSetter):
(WebCore::setJSTestObjStringVoidCallbackRecordAttr):
* bindings/scripts/test/TestObj.idl:
2019-09-28 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Line::InitialConstraints's heightAndBaseline should be optional
https://bugs.webkit.org/show_bug.cgi?id=202348
Reviewed by Antti Koivisto.
Vertical properties are undefined while computing the preferred width.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::LineInput::LineInput):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Line):
* layout/inlineformatting/InlineLine.h:
2019-09-28 Chris Dumez <cdumez@apple.com>
[Experiment][iOS] Add temporary HTTP header to distinguish iPads for requests to Google
https://bugs.webkit.org/show_bug.cgi?id=202335
<rdar://problem/55790994>
Reviewed by Maciej Stachowiak.
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):
* platform/network/HTTPHeaderNames.in:
2019-09-28 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Line::Box should have a const public interface
https://bugs.webkit.org/show_bug.cgi?id=202336
<rdar://problem/55798628>
Reviewed by Antti Koivisto.
Clean up Line::Box interface.
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::close):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Run::displayRun const):
(WebCore::Layout::Line::Run::isVisuallyEmpty const):
(WebCore::Layout::Line::Run::expand):
(WebCore::Layout::Line::Run::displayRun): Deleted.
2019-09-27 Chris Dumez <cdumez@apple.com>
Pages using WebGLRenderingContext fail to enter the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=202318
<rdar://problem/55783612>
Reviewed by Tim Horton.
Allow pages with a WebGLRenderingContext to enter the back/forward cache by updating the
implementation to use SuspendableTimers to fire JS events. This guarantees that no events
will be fired (and thus no JS will run) while in the page cache.
This was preventing some of the pages on weather.com and facebook.com from entering the
back/forward cache.
Test: fast/canvas/webgl/canvas-webgl-page-cache.html
* dom/DocumentEventQueue.cpp:
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase):
(WebCore::WebGLRenderingContextBase::canSuspendForDocumentSuspension const):
(WebCore::WebGLRenderingContextBase::suspend):
(WebCore::WebGLRenderingContextBase::resume):
(WebCore::WebGLRenderingContextBase::dispatchContextLostEvent):
(WebCore::WebGLRenderingContextBase::maybeRestoreContext):
(WebCore::WebGLRenderingContextBase::dispatchContextChangedNotification):
(WebCore::WebGLRenderingContextBase::dispatchContextChangedEvent):
* html/canvas/WebGLRenderingContextBase.h:
* page/DOMTimer.cpp:
(WebCore::DOMTimer::DOMTimer):
* page/DOMTimer.h:
* page/SuspendableTimer.cpp:
(WebCore::SuspendableTimerBase::SuspendableTimerBase):
(WebCore::SuspendableTimerBase::hasPendingActivity const):
(WebCore::SuspendableTimerBase::stop):
(WebCore::SuspendableTimerBase::suspend):
(WebCore::SuspendableTimerBase::resume):
(WebCore::SuspendableTimerBase::canSuspendForDocumentSuspension const):
(WebCore::SuspendableTimerBase::didStop):
(WebCore::SuspendableTimerBase::cancel):
(WebCore::SuspendableTimerBase::startRepeating):
(WebCore::SuspendableTimerBase::startOneShot):
(WebCore::SuspendableTimerBase::repeatInterval const):
(WebCore::SuspendableTimerBase::augmentFireInterval):
(WebCore::SuspendableTimerBase::augmentRepeatInterval):
(WebCore::SuspendableTimer::activeDOMObjectName const):
* page/SuspendableTimer.h:
2019-09-27 Adrian Perez de Castro <aperez@igalia.com>
[GTK][WPE] Fixes for non-unified builds after r249714
https://bugs.webkit.org/show_bug.cgi?id=202304
Reviewed by Youenn Fablet.
No new tests needed.
* Modules/websockets/WorkerThreadableWebSocketChannel.cpp: Add missing inclusion of Frame.h
to make the compiler stop complaining about Frame being used without being defined.
* inspector/InspectorShaderProgram.h: Add missing inclusion of wtf/Variant.h, where
WTF::Monostate is defined; and prefixed the usage with its namespace.
2019-09-27 Andres Gonzalez <andresg_22@apple.com>
Support accessibility for <figure> element on iOS.
https://bugs.webkit.org/show_bug.cgi?id=202272
<rdar://problem/54789907>
Reviewed by Chris Fleizach.
Test: accessibility/ios-simulator/figure-element.html
Added a role description for the <figure> element.
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::roleDescription const):
2019-09-27 Zalan Bujtas <zalan@apple.com>
[iPadOS] Can’t use RalphLauren.com on iPad because hover menus don’t stay up
https://bugs.webkit.org/show_bug.cgi?id=202331
<rdar://problem/55629493>
Reviewed by Tim Horton.
Unfortunately the top level menu items now are ARIA labelled as 'buttons' and that triggers the fast path on content observation.
This patch introduces a quirk on ralphLauren.com to ignore the ARIA labels when checking whether the target node should always click through.
* page/Quirks.cpp:
(WebCore::Quirks::shouldIgnoreAriaForFastPathContentObservationCheck const):
* page/Quirks.h:
2019-09-27 Per Arne Vollan <pvollan@apple.com>
[Win] Crash under FontCache::lastResortFallbackFont
https://bugs.webkit.org/show_bug.cgi?id=202325
<rdar://problem/47856730>
Reviewed by Brent Fulgham.
As demonstrated by crash reports, there seems to be cases where we are not able to create a last resort fallback font
on Windows. If all attempts to create a fallback font fail, create a font from the default UI font.
No new tests. I have not been able to reproduce this issue.
* platform/graphics/win/FontCacheWin.cpp:
(WebCore::FontCache::lastResortFallbackFont):
2019-09-27 Jiewen Tan <jiewen_tan@apple.com>
Unreviewed, rolling out r250397.
caused failure on iOS 13
Reverted changeset:
"REGRESSION: [ Catalina WK2 ] http/wpt/webauthn/public-key-
credential-create-success-u2f.https.html is failing"
https://bugs.webkit.org/show_bug.cgi?id=201620
https://trac.webkit.org/changeset/250397
2019-09-27 Jer Noble <jer.noble@apple.com>
[iOS] Vimeo fails to AirPlay in desktop mode
https://bugs.webkit.org/show_bug.cgi?id=202322
Reviewed by Eric Carlson.
Add a Quirk which opts Vimeo out of the preload=auto restriction, and allows their
second video element containing a HLS stream to correctly start AirPlaying when the
system route changes.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::finishInitialization):
* page/Quirks.cpp:
(WebCore::Quirks::needsPreloadAutoQuirk const):
* page/Quirks.h:
2019-09-27 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Line::close should merge the text runs.
https://bugs.webkit.org/show_bug.cgi?id=202319
<rdar://problem/55785949>
Reviewed by Antti Koivisto.
Now Line::close returns the final Display::Run list.
* layout/displaytree/DisplayRect.h:
(WebCore::Display::Rect::expandHorizontally):
(WebCore::Display::Rect::expandVertically):
(WebCore::Display::Rect::expand):
* layout/displaytree/DisplayRun.h:
(WebCore::Display::Run::expandVertically):
(WebCore::Display::Run::expandHorizontally):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::close):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Run::displayRun):
2019-09-27 Chris Dumez <cdumez@apple.com>
Allow pages served over HTTPS with `Cache-Control: no-store` header to enter the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=202314
<rdar://problem/55783482>
Reviewed by Alex Christensen.
Allow pages served over HTTPS with `Cache-Control: no-store` header to enter the back/forward cache.
This was preventing all pages on Facebook.com to enter the back/forward cache.
No new tests, updated existing test.
* history/PageCache.cpp:
(WebCore::canCacheFrame):
2019-09-27 Devin Rousso <drousso@apple.com>
Flaky Test: inspector/canvas/updateShader.html
https://bugs.webkit.org/show_bug.cgi?id=202186
<rdar://problem/55716053>
Reviewed by Joseph Pecoraro.
If the `WebGLProgram` outlives it's `WebGLRenderingContext`, the `ScriptExecutionContext*`
that was provided in the constructor won't be invalidated leading to the bad access crash.
Rather than pass the `ScriptExecutionContext*` directly, have `WebGLProgram` inherit from
`ContextDestructionObserver` so that it can propertly invalidate (and notify Web Inspector)
when the related context is about to be destroyed.
Test: inspector/canvas/updateShader.html
* html/canvas/WebGLProgram.h:
(WebCore::WebGLProgram::scriptExecutionContext const): Deleted.
* html/canvas/WebGLProgram.cpp:
(WebCore::WebGLProgram::WebGLProgram):
(WebCore::WebGLProgram::contextDestroyed): Added.
2019-09-27 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Replace Line::Run's logicalRect/textContext with Display::Run
https://bugs.webkit.org/show_bug.cgi?id=202313
<rdar://problem/55782430>
Reviewed by Antti Koivisto.
Display::Run is a container for logical rect and text context. Let's replace Line::Run's logical rect/text context with Display::Run.
* layout/Verification.cpp:
(WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
(WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
* layout/displaytree/DisplayRun.h:
(WebCore::Display::Run::logicalRect const):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):
(WebCore::Layout::InlineFormattingContext::InlineLayout::alignRuns const):
* layout/inlineformatting/InlineFormattingContextQuirks.cpp:
(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):
* layout/inlineformatting/InlineFormattingState.h:
(WebCore::Layout::InlineFormattingState::addInlineRun):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Run::Run):
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendHardLineBreak):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Run::displayRun const):
(WebCore::Layout::Line::Run::logicalRect const):
(WebCore::Layout::Line::Run::adjustLogicalTop):
(WebCore::Layout::Line::Run::moveVertically):
(WebCore::Layout::Line::Run::moveHorizontally):
(WebCore::Layout::Line::Run::textContext const): Deleted.
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::outputInlineRuns):
2019-09-27 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r250415.
Broke iOS debug testing with 50 crashes and 850 API failure
Reverted changeset:
"ScrollingTreeScrollingNode: use LayerRepresentation for
scroll container, scrolled contents layers"
https://bugs.webkit.org/show_bug.cgi?id=202256
https://trac.webkit.org/changeset/250415
2019-09-27 Alex Christensen <achristensen@webkit.org>
Move service worker process termination delay disabling from process pool to website data store
https://bugs.webkit.org/show_bug.cgi?id=202308
Reviewed by Chris Dumez.
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::SWServer):
(WebCore::SWServer::unregisterServiceWorkerClient):
* workers/service/server/SWServer.h:
(WebCore::SWServer::disableServiceWorkerProcessTerminationDelay): Deleted.
2019-09-27 Chris Dumez <cdumez@apple.com>
IDBRequest should not prevent a page from entering the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=202270
<rdar://problem/55744717>
Reviewed by Youenn Fablet.
Update IDBRequest::canSuspendForDocumentSuspension() to return true instead of
false. IDBRequest can only fire 2 events (error / success) and for both its
merely enqueues the Event to the DocumentEventQueue. The DocumentEventQueue
uses a SuspendableTimer (which will be suspended while the document is in the
page cache) so there is no risk of firing the events (and thus running script)
while in the page cache.
Test: storage/indexeddb/IDBRequest-page-cache.html
* Modules/indexeddb/IDBRequest.cpp:
(WebCore::IDBRequest::canSuspendForDocumentSuspension const):
2019-09-27 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Remove redundant Line::TextContext member variables
https://bugs.webkit.org/show_bug.cgi?id=202300
<rdar://problem/55769916>
Reviewed by Antti Koivisto.
This is in preparation for using Display::Run in Line::Run instead of Display::Rect + TextContext.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):
* layout/inlineformatting/InlineFormattingContextQuirks.cpp:
(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Run::isWhitespace const):
(WebCore::Layout::Line::Run::canBeExtended const):
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::removeTrailingTrimmableContent):
(WebCore::Layout::Line::trailingTrimmableWidth const):
(WebCore::Layout::Line::appendTextContent):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Run::isVisuallyEmpty const):
(WebCore::Layout::Line::Run::setVisuallyIsEmpty):
(WebCore::Layout::Line::Run::setTextIsCollapsed): Deleted.
2019-09-27 Zan Dobersek <zdobersek@igalia.com>
[Nicosia] Implement frame scrolling functionality
https://bugs.webkit.org/show_bug.cgi?id=202201
Reviewed by Carlos Garcia Campos.
Implement logic in the ScrollingTreeFrameScrollingNodeNicosia class,
largely following the Mac port's implementation but skipping areas we
don't support or can keep simple, like CSS scroll snap, frame pinning
and more complex wheel event handling through the platform-specific
delegate behavior.
* page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::commitStateAfterChildren):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::handleWheelEvent):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::adjustedScrollPosition const):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::currentScrollPositionChanged):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::repositionScrollingLayers):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::repositionRelatedLayers):
* page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.h:
2019-09-27 Zan Dobersek <zdobersek@igalia.com>
[Nicosia] ScrollingCoordinatorNicosia should handle wheel events coming from the main thread
https://bugs.webkit.org/show_bug.cgi?id=202275
Reviewed by Carlos Garcia Campos.
* page/scrolling/nicosia/ScrollingCoordinatorNicosia.cpp:
(WebCore::ScrollingCoordinatorNicosia::handleWheelEvent):
Handle wheel events that get rerouted through the main thread,
dispatching them back to the scrolling thread so that they end up
performing the desired scroll if possible.
2019-09-27 Zan Dobersek <zdobersek@igalia.com>
[CoordinatedGraphics] support bounds origin
https://bugs.webkit.org/show_bug.cgi?id=198998
Reviewed by Carlos Garcia Campos.
Add bounds-origin support to the CoordinatedGraphics stack. Currently we
take the short-cut implementation of just combining the bounds origin
and the position value and incorporating them into the layer transform
we calculate in TextureMapperLayer.
Additional boilerplate code is added, as required, to relay the
WebCore::GraphicsLayer change of bounds origin to the rendering system.
* platform/graphics/nicosia/NicosiaPlatformLayer.h:
(Nicosia::CompositionLayer::flushState):
* platform/graphics/texmap/TextureMapperLayer.cpp:
(WebCore::TextureMapperLayer::computeTransformsRecursive):
(WebCore::TextureMapperLayer::setBoundsOrigin):
* platform/graphics/texmap/TextureMapperLayer.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::setBoundsOrigin):
(WebCore::CoordinatedGraphicsLayer::computePositionRelativeToBase):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
2019-09-26 Zan Dobersek <zdobersek@igalia.com>
ScrollingTreeScrollingNode: use LayerRepresentation for scroll container, scrolled contents layers
https://bugs.webkit.org/show_bug.cgi?id=202256
Reviewed by Simon Fraser.
Make the scroll container and scrolled contents layer holders
platform-independent by using the LayerRepresentation as the underlying
type for the two member variables in ScrollingTreeScrollingNode.
* page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):
* page/scrolling/ScrollingTreeScrollingNode.h:
* page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
(WebCore::ScrollingTreeFrameScrollingNodeMac::repositionScrollingLayers):
* page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
(WebCore::ScrollingTreeOverflowScrollingNodeMac::repositionScrollingLayers):
2019-09-26 Chris Dumez <cdumez@apple.com>
Pages frequently fails to enter the back/forward cache due to pending loads
https://bugs.webkit.org/show_bug.cgi?id=202289
<rdar://problem/55758506>
Reviewed by Geoffrey Garen.
Allow pages to enter the back / forward cache, even if they have pending loads.
Note that these pending loads get cancelled. Also note that we won't enter page
cache unless the 'load' event has been fired in the main frame, since a
HistoryItem would not get created otherwise. This was causing frequent transient
failures to enter the back / forward cache while browsing (e.g. on weather.com).
Test: http/tests/navigation/page-cache-pending-load.html
* history/PageCache.cpp:
(WebCore::canCacheFrame):
* loader/CrossOriginPreflightChecker.cpp:
* loader/CrossOriginPreflightChecker.h:
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::setMainDocumentError):
(WebCore::DocumentLoader::stopLoading):
* loader/DocumentLoader.h:
* loader/DocumentThreadableLoader.cpp:
* loader/DocumentThreadableLoader.h:
* loader/cache/CachedResource.cpp:
* loader/cache/CachedResource.h:
* loader/cache/CachedResourceClient.h:
(WebCore::CachedResourceClient::deprecatedDidReceiveCachedResource):
* page/DiagnosticLoggingKeys.cpp:
(WebCore::DiagnosticLoggingKeys::mainFrameHasNotFinishedLoadingKey):
* page/DiagnosticLoggingKeys.h:
2019-09-26 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Line::Run should have a reference to the associated InlineItem
https://bugs.webkit.org/show_bug.cgi?id=202288
<rdar://problem/55758112>
Reviewed by Antti Koivisto.
It makes it clearer where the type and the layout box come from.
* layout/inlineformatting/InlineFormattingContextQuirks.cpp:
(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Run::Run):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Run::layoutBox const):
(WebCore::Layout::Line::Run::textContext const):
(WebCore::Layout::Line::Run::isText const):
(WebCore::Layout::Line::Run::isBox const):
(WebCore::Layout::Line::Run::isLineBreak const):
(WebCore::Layout::Line::Run::isContainerStart const):
(WebCore::Layout::Line::Run::isContainerEnd const):
(WebCore::Layout::Line::Run::type const): Deleted.
2019-09-26 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Remove redundant Line::Content
https://bugs.webkit.org/show_bug.cgi?id=202284
<rdar://problem/55757187>
Reviewed by Antti Koivisto.
Line::Content is really just a list or runs at this point.
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):
* layout/inlineformatting/InlineFormattingContextQuirks.cpp:
(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Run::Run):
(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendHardLineBreak):
(WebCore::Layout::Line::Content::Run::Run): Deleted.
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Run::layoutBox const):
(WebCore::Layout::Line::Run::logicalRect const):
(WebCore::Layout::Line::Run::textContext const):
(WebCore::Layout::Line::Run::type const):
(WebCore::Layout::Line::Run::isText const):
(WebCore::Layout::Line::Run::isBox const):
(WebCore::Layout::Line::Run::isLineBreak const):
(WebCore::Layout::Line::Run::isContainerStart const):
(WebCore::Layout::Line::Run::isContainerEnd const):
(WebCore::Layout::Line::Run::adjustLogicalTop):
(WebCore::Layout::Line::Run::moveVertically):
(WebCore::Layout::Line::Run::moveHorizontally):
(WebCore::Layout::Line::Run::setTextIsCollapsed):
(WebCore::Layout::Line::Content::Run::layoutBox const): Deleted.
(WebCore::Layout::Line::Content::Run::logicalRect const): Deleted.
(WebCore::Layout::Line::Content::Run::textContext const): Deleted.
(WebCore::Layout::Line::Content::Run::type const): Deleted.
(WebCore::Layout::Line::Content::Run::isText const): Deleted.
(WebCore::Layout::Line::Content::Run::isBox const): Deleted.
(WebCore::Layout::Line::Content::Run::isLineBreak const): Deleted.
(WebCore::Layout::Line::Content::Run::isContainerStart const): Deleted.
(WebCore::Layout::Line::Content::Run::isContainerEnd const): Deleted.
(WebCore::Layout::Line::Content::Run::adjustLogicalTop): Deleted.
(WebCore::Layout::Line::Content::Run::moveVertically): Deleted.
(WebCore::Layout::Line::Content::Run::moveHorizontally): Deleted.
(WebCore::Layout::Line::Content::Run::setTextIsCollapsed): Deleted.
(WebCore::Layout::Line::Content::runs const): Deleted.
(WebCore::Layout::Line::Content::runs): Deleted.
2019-09-26 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Move Line::Content::m_lineBox to Line.
https://bugs.webkit.org/show_bug.cgi?id=202280
<rdar://problem/55755798>
Reviewed by Antti Koivisto.
This is in preparation for Line producing Display::Runs instead of Line::Runs.
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::LineLayout::close):
(WebCore::Layout::LineLayout::placeInlineItem):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::removeTrailingTrimmableContent):
(WebCore::Layout::Line::moveLogicalLeft):
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Content::runs const):
(WebCore::Layout::Line::availableWidth const):
(WebCore::Layout::Line::lineBox const):
(WebCore::Layout::Line::logicalTop const):
(WebCore::Layout::Line::logicalBottom const):
(WebCore::Layout::Line::logicalLeft const):
(WebCore::Layout::Line::logicalHeight const):
(WebCore::Layout::Line::contentLogicalWidth const):
(WebCore::Layout::Line::contentLogicalRight const):
(WebCore::Layout::Line::baselineOffset const):
(WebCore::Layout::Line::Content::lineBox const): Deleted.
(WebCore::Layout::Line::Content::lineBox): Deleted.
(WebCore::Layout::Line::Content::setLineBox): Deleted.
2019-09-26 Jiewen Tan <jiewen_tan@apple.com>
REGRESSION: [ Catalina WK2 ] http/wpt/webauthn/public-key-credential-create-success-u2f.https.html is failing
https://bugs.webkit.org/show_bug.cgi?id=201620
Unreviewed, roll back part of r249737 to confirm the cause.
* Modules/webauthn/fido/U2fResponseConverter.cpp:
(fido::WebCore::createAttestedCredentialDataFromU2fRegisterResponse):
2019-09-26 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r250385.
Broke imported/w3c/web-platform-tests/svg/animations/syncbase-
remove-add-while-running.html on all platforms. Which was
caught by EWS
Reverted changeset:
"Non-callable "handleEvent" property is silently ignored"
https://bugs.webkit.org/show_bug.cgi?id=200066
https://trac.webkit.org/changeset/250385
2019-09-26 Kate Cheney <katherine_cheney@apple.com>
Enable LayoutTests using ResourceLoadStatistics SQLite backend (195420)
https://bugs.webkit.org/show_bug.cgi?id=195420
<rdar://problem/54213551>
Reviewed by Brent Fulgham.
Tests: http/tests/resourceLoadStatistics/add-blocking-to-redirect-database.html
http/tests/resourceLoadStatistics/blocking-in-web-worker-script-import-database.html
http/tests/resourceLoadStatistics/cap-cache-max-age-for-prevalent-resource-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-decoration-same-site-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-fragment-from-prevalent-resource-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-and-fragment-from-prevalent-resource-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-from-prevalent-resource-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-without-link-decoration-from-prevalent-resource-database.html
http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics-database.html
http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins-database.html
http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins-database.html
http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-collusion-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-to-prevalent-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-to-prevalent-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-unique-redirects-to-database.html
http/tests/resourceLoadStatistics/classify-as-very-prevalent-based-on-mixed-statistics-database.html
http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-database.html
http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour-database.html
http/tests/resourceLoadStatistics/cookie-deletion-database.html
http/tests/resourceLoadStatistics/cookies-with-and-without-user-interaction-database.html
http/tests/resourceLoadStatistics/delete-script-accessible-cookies-database.html
http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect-database.html
http/tests/resourceLoadStatistics/do-not-capture-statistics-for-simple-top-navigations-database.html
http/tests/resourceLoadStatistics/do-not-remove-blocking-in-redirect-database.html
http/tests/resourceLoadStatistics/do-not-switch-session-on-navigation-to-prevalent-without-interaction-database.html
http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource-database.html
http/tests/resourceLoadStatistics/enable-debug-mode-database.html
http/tests/resourceLoadStatistics/grandfathering-database.html
http/tests/resourceLoadStatistics/non-prevalent-resource-with-user-interaction-database.html
http/tests/resourceLoadStatistics/non-prevalent-resource-without-user-interaction-database.html
http/tests/resourceLoadStatistics/non-prevalent-resources-can-access-cookies-in-a-third-party-context-database.html
http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/ping-to-prevalent-resource-database.html
http/tests/resourceLoadStatistics/prevalent-resource-handled-keydown-database.html
http/tests/resourceLoadStatistics/prevalent-resource-unhandled-keydown-database.html
http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-database.html
http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout-database.html
http/tests/resourceLoadStatistics/prevalent-resource-without-user-interaction-database.html
http/tests/resourceLoadStatistics/prune-statistics-database.html
http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/set-custom-prevalent-resource-in-debug-mode-database.html
http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-redirects-database.html
http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-requests-database.html
http/tests/resourceLoadStatistics/switch-session-on-navigation-to-prevalent-with-interaction-database.html
http/tests/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame-database.html
http/tests/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time-database.html
http/tests/resourceLoadStatistics/user-interaction-reported-after-website-data-removal-database.html
* platform/sql/SQLiteDatabase.h:
Added WEBCORE_EXPORT prefix to 2 functions needed in the ITP Database
to clear out the database.
2019-09-26 Antti Koivisto <antti@apple.com>
Use LineLayoutTraversal for RenderText functions
https://bugs.webkit.org/show_bug.cgi?id=202266
Reviewed by Zalan Bujtas.
Replace a bunch of functions that have separate simple and complex line layout versions with
shared functions that use LineLayoutTraversal.
* rendering/RenderText.cpp:
(WebCore::RenderText::absoluteRects const):
(WebCore::RenderText::firstRunLocation const):
(WebCore::RenderText::linesBoundingBox const):
This is substantially simpler than RenderTextLineBoxes::boundingBox because it uses physical rects for all computations
instead of using logical rects and flipping to physical at the end.
(WebCore::RenderText::caretMinOffset const):
(WebCore::RenderText::caretMaxOffset const):
(WebCore::RenderText::countRenderedCharacterOffsetsUntil const):
(WebCore::containsOffset):
(WebCore::RenderText::containsRenderedCharacterOffset const):
(WebCore::RenderText::containsCaretOffset const):
(WebCore::RenderText::hasRenderedText const):
* rendering/RenderTextLineBoxes.cpp:
(WebCore::RenderTextLineBoxes::boundingBox const): Deleted.
(WebCore::RenderTextLineBoxes::firstRunLocation const): Deleted.
(WebCore::RenderTextLineBoxes::hasRenderedText const): Deleted.
(WebCore::RenderTextLineBoxes::caretMinOffset const): Deleted.
(WebCore::RenderTextLineBoxes::caretMaxOffset const): Deleted.
(WebCore::RenderTextLineBoxes::containsOffset const): Deleted.
(WebCore::RenderTextLineBoxes::countCharacterOffsetsUntil const): Deleted.
(WebCore::RenderTextLineBoxes::absoluteRects const): Deleted.
* rendering/RenderTreeAsText.cpp:
(WebCore::write):
* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::LineState::appendFragmentAndCreateRunIfNeeded):
* rendering/SimpleLineLayout.h:
(WebCore::SimpleLineLayout::Run::Run):
* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::computeFirstRunLocation): Deleted.
* rendering/SimpleLineLayoutFunctions.h:
(WebCore::SimpleLineLayout::findCaretMinimumOffset): Deleted.
(WebCore::SimpleLineLayout::findCaretMaximumOffset): Deleted.
(WebCore::SimpleLineLayout::containsOffset): Deleted.
(WebCore::SimpleLineLayout::isTextRendered): Deleted.
* rendering/SimpleLineLayoutResolver.h:
(WebCore::SimpleLineLayout::RunResolver::Run::isLineBreak const):
* rendering/line/LineLayoutTraversal.cpp:
(WebCore::LineLayoutTraversal::TextBox::isLineBreak const):
(WebCore::LineLayoutTraversal::firstTextBoxFor):
(WebCore::LineLayoutTraversal::firstTextBoxInTextOrderFor):
(WebCore::LineLayoutTraversal::textBoxesFor):
(WebCore::LineLayoutTraversal::firstTextBoxInVisualOrderFor): Deleted.
(WebCore::LineLayoutTraversal::textBoxRangeFor): Deleted.
* rendering/line/LineLayoutTraversal.h:
(WebCore::LineLayoutTraversal::hasTextBoxes):
2019-09-26 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r250381.
broke multiple webgpu/ tests on Mojave WK2
Reverted changeset:
"Flaky Test: inspector/canvas/updateShader.html"
https://bugs.webkit.org/show_bug.cgi?id=202186
https://trac.webkit.org/changeset/250381
2019-09-26 Alexey Shvayka <shvaikalesh@gmail.com>
Non-callable "handleEvent" property is silently ignored
https://bugs.webkit.org/show_bug.cgi?id=200066
Reviewed by Darin Adler.
Tests: imported/w3c/web-platform-tests/IndexedDB/fire-error-event-exception.html
imported/w3c/web-platform-tests/IndexedDB/fire-success-event-exception.html
imported/w3c/web-platform-tests/IndexedDB/fire-upgradeneeded-event-exception.html
imported/w3c/web-platform-tests/dom/events/EventListener-handleEvent.html
* bindings/js/JSEventListener.cpp:
(WebCore::JSEventListener::handleEvent): Report TypeError if "handleEvent" is not callable.
2019-09-26 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Decouple Display::Run and Display::Box initializations.
https://bugs.webkit.org/show_bug.cgi?id=202255
<rdar://problem/55731445>
Reviewed by Antti Koivisto.
This is in preparation for moving Display::Run initialization to Line class.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):
2019-09-26 Devin Rousso <drousso@apple.com>
Flaky Test: inspector/canvas/updateShader.html
https://bugs.webkit.org/show_bug.cgi?id=202186
<rdar://problem/55716053>
Reviewed by Joseph Pecoraro.
If the `WebGPUPipeline`/`WebGLProgram` outlives it's `WebGPUDevice`/`WebGLRenderingContext`,
the `ScriptExecutionContext*` that was provided in the constructor won't be invalidated
leading to the bad access crash.
Rather than pass the `ScriptExecutionContext*` directly, have `WebGPUPipeline`/`WebGLProgram`
extend from `ContextDestructionObserver` so that it can propertly invalidate (and notify Web
Inspector) when the related context is about to be destroyed.
Test: inspector/canvas/updateShader.html
* Modules/webgpu/WebGPUPipeline.h:
(WebCore::WebGPUPipeline::scriptExecutionContext const): Deleted.
* Modules/webgpu/WebGPUPipeline.cpp:
(WebCore::WebGPUPipeline::WebGPUPipeline):
(WebCore::WebGPUPipeline::contextDestroyed): Added.
* html/canvas/WebGLProgram.h:
(WebCore::WebGLProgram::scriptExecutionContext const): Deleted.
* html/canvas/WebGLProgram.cpp:
(WebCore::WebGLProgram::WebGLProgram):
(WebCore::WebGLProgram::contextDestroyed): Added.
2019-09-25 Chris Dumez <cdumez@apple.com>
Add very basic PageCache support for RTCPeerConnection
https://bugs.webkit.org/show_bug.cgi?id=202244
Reviewed by Geoffrey Garen.
RTCPeerConnection::canSuspendForDocumentSuspension() returns true if
RTCPeerConnection::hasPendingActivity() return false. Previously, hasPendingActivity()
would return true unless the JS has called close() on the RTCPeerConnection
object.
On weather.com, an ad would construct an RTCPeerConnection just to do some feature
checking and then let the variable go out of scope (without calling close()). Because
of the previous implementation of RTCPeerConnection::hasPendingActivity(), this wrapper
and its implementation object would stay alive forever AND prevent the page from
entering PageCache on navigation.
To improve this, the implementation of hadPendingActivity() has been updated so that
it keeps returning false if close() has been called, but will also return false if
there are no pending Promises to be resolved and no event listeners.
Test: fast/mediastream/RTCPeerConnection-page-cache.html
* Modules/mediastream/RTCPeerConnection.cpp:
WebCore::RTCPeerConnection::RTCPeerConnection:
Stop taking a pending activity in the constructor, this would be NOT keep the wrapper
alive since RTCPeerConnection::hasPendingActivity() was not checking
ActiveDOMObject::hasPendingActivity().
(WebCore::RTCPeerConnection::canSuspendForDocumentSuspension const):
(WebCore::RTCPeerConnection::hasPendingActivity const):
* Modules/mediastream/RTCPeerConnection.h:
* bindings/js/JSDOMPromiseDeferred.h:
(WebCore::DOMPromiseDeferredBase::whenSettled):
2019-09-25 Chris Dumez <cdumez@apple.com>
Improve Service worker support for Page Caching
https://bugs.webkit.org/show_bug.cgi?id=202221
Reviewed by Geoffrey Garen.
Allow pages using service workers to enter the back / forward cache.
Update ServiceWorkerRegistration / ServiceWorker ActiveDOMObjects
to properly suspend while in PageCache. Also, let documents controlled
by a service worker to enter PageCache (we already unregistered it as
a client of the service worker while suspended).
Test: http/tests/workers/service/page-caching.html
* dom/Document.cpp:
(WebCore::Document::suspend):
(WebCore::Document::resume):
* history/PageCache.cpp:
(WebCore::canCacheFrame):
* workers/service/ServiceWorker.cpp:
(WebCore::ServiceWorker::updateState):
(WebCore::ServiceWorker::canSuspendForDocumentSuspension const):
(WebCore::ServiceWorker::suspend):
(WebCore::ServiceWorker::resume):
* workers/service/ServiceWorker.h:
* workers/service/ServiceWorkerRegistration.cpp:
(WebCore::ServiceWorkerRegistration::fireUpdateFoundEvent):
(WebCore::ServiceWorkerRegistration::canSuspendForDocumentSuspension const):
(WebCore::ServiceWorkerRegistration::suspend):
(WebCore::ServiceWorkerRegistration::resume):
* workers/service/ServiceWorkerRegistration.h:
2019-09-25 Chris Dumez <cdumez@apple.com>
[Cocoa] Regression(r212041) Safari adds a .dms extension automatically when downloading binaries with no extension
https://bugs.webkit.org/show_bug.cgi?id=202147
<rdar://problem/54886021>
Reviewed by Alexey Proskuryakov.
When getting a suggested filename without extension (either from Content-Disposition header or from the download
attribute), we determine a suitable file extension based on the Content-Type header and append it. This is useful
since a lot of operating systems (such as macOS) rely on the file extension to determine file type.
The issue is that if the Content-Type is not provided or when it is provided but is "application/octet-stream",
we would append a .dms extension, which was unexpected. This patch makes it so that we no longer try to append
an extension when the resolved content type is "application/octet-stream".
Tests: http/tests/download/anchor-download-attribute-content-disposition-no-extension-octet-stream.html
http/tests/download/anchor-download-attribute-content-disposition-no-extension-text-plain.html
http/tests/security/anchor-download-octet-stream-no-extension.html
* platform/MIMETypeRegistry.cpp:
(WebCore::MIMETypeRegistry::appendFileExtensionIfNecessary):
2019-09-25 Megan Gardner <megan_gardner@apple.com>
Update selections after scrolling for iframes and hide selections while iframes and overflow scrolls are scrolling.
https://bugs.webkit.org/show_bug.cgi?id=202125
Reviewed by Tim Horton.
Test: editing/selection/ios/update-selection-after-iframe-scroll.html
When we end scrolling, make sure that iframes get a final update to ensure that the
selection is in the correct position. Pipe that to WebKit/UIProcess via
frame specific plath.
* loader/EmptyClients.cpp:
* page/EditorClient.h:
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
2019-09-25 Wenson Hsieh <wenson_hsieh@apple.com>
Page temporarily jumps to an excessively small viewport scale while loading usatoday.com
https://bugs.webkit.org/show_bug.cgi?id=202224
<rdar://problem/52906640>
Reviewed by Tim Horton.
On some pages (e.g. usatoday.com), the content width of the page temporarily becomes very large during page
load. This causes a couple of viewport scaling behaviors (notably, the existing shrink-to-fit heuristic in
ViewportConfiguration::initialScaleFromSize, as well as the new iPad-specific content-aware shrink-to-fit
heuristic in WebPage::immediatelyShrinkToFitContent) to cause the page to shrink down excessively in an attempt
to fit all the content to the viewport. This causes a very ugly flash as the page appears zoomed out initially
during page load, before zooming back in.
To fix this, we add some sanity checks to these viewport scaling heuristics. In ViewportConfiguration's
initialScaleFromSize method, in the codepath where an initial scale is not specified, we always scale to fit the
contents of the page; instead, detect the case where the content width is enormous (with a threshold arbitrarily
chosen to be 1920) and fall back to the scaling to fit the viewport's width, if such a width has been explicitly
set. This ensures that we avoid excessive shrinking in the case where content is extremely wide, but also that
we do scale the viewport down to fit all the content in the case where the content isn't extremely wide (e.g. on
daringfireball.com).
See WebKit ChangeLog for more detail.
Test: fast/viewport/ios/shrink-to-fit-large-content-width.html
* page/ViewportConfiguration.cpp:
(WebCore::ViewportConfiguration::initialScaleFromSize const):
2019-09-25 Wenson Hsieh <wenson_hsieh@apple.com>
[iPadOS] [DataActivation] Focus moves away after focusing input fields on www.att.com
https://bugs.webkit.org/show_bug.cgi?id=202167
<rdar://problem/55185021>
Reviewed by Tim Horton.
Adds a new site-specific quirk. See WebKit ChangeLog for more details.
* page/Quirks.cpp:
(WebCore::Quirks::shouldUseLegacySelectPopoverDismissalBehaviorInDataActivation const):
* page/Quirks.h:
* platform/RuntimeApplicationChecks.h:
* platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::IOSApplication::isDataActivation):
2019-09-25 Jonathan Bedard <jbedard@apple.com>
Unreviewed, rolling out r250324.
Broke many mac wk2 layout tests
Reverted changeset:
"Enable LayoutTests using ResourceLoadStatistics SQLite
backend (195420)"
https://bugs.webkit.org/show_bug.cgi?id=195420
https://trac.webkit.org/changeset/250324
2019-09-25 Antti Koivisto <antti@apple.com>
Rename LineLayoutInterface to LineLayoutTraversal
https://bugs.webkit.org/show_bug.cgi?id=202202
Reviewed by Zalan Bujtas.
Use a bit more informative namespace name.
* Headers.cmake:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/Position.cpp:
(WebCore::Position::upstream const):
(WebCore::Position::downstream const):
* editing/TextIterator.cpp:
(WebCore::TextIterator::handleTextNode):
(WebCore::TextIterator::handleTextBox):
(WebCore::TextIterator::handleTextNodeFirstLetter):
* editing/TextIterator.h:
* rendering/RenderTreeAsText.cpp:
(WebCore::RenderTreeAsText::writeRenderObject):
(WebCore::writeTextBox):
(WebCore::write):
* rendering/line/LineLayoutTraversal.cpp: Renamed from Source/WebCore/rendering/line/LineLayoutInterfaceTextBoxes.cpp.
(WebCore::LineLayoutTraversal::TextBox::rect const):
(WebCore::LineLayoutTraversal::TextBox::logicalRect const):
(WebCore::LineLayoutTraversal::TextBox::hasHyphen const):
(WebCore::LineLayoutTraversal::TextBox::isLeftToRightDirection const):
(WebCore::LineLayoutTraversal::TextBox::dirOverride const):
(WebCore::LineLayoutTraversal::TextBox::text const):
(WebCore::LineLayoutTraversal::TextBox::localStartOffset const):
(WebCore::LineLayoutTraversal::TextBox::localEndOffset const):
(WebCore::LineLayoutTraversal::TextBox::length const):
(WebCore::LineLayoutTraversal::TextBox::isLastOnLine const):
(WebCore::LineLayoutTraversal::TextBox::isLast const):
(WebCore::LineLayoutTraversal::TextBox::iterator const):
(WebCore::LineLayoutTraversal::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutTraversal::TextBoxIterator::traverseNextInVisualOrder):
(WebCore::LineLayoutTraversal::TextBoxIterator::ComplexPath::nextInlineTextBoxInTextOrder const):
(WebCore::LineLayoutTraversal::TextBoxIterator::traverseNextInTextOrder):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator== const):
(WebCore::LineLayoutTraversal::TextBoxIterator::atEnd const):
(WebCore::LineLayoutTraversal::firstTextBoxInVisualOrderFor):
(WebCore::LineLayoutTraversal::firstTextBoxInTextOrderFor):
(WebCore::LineLayoutTraversal::textBoxRangeFor):
* rendering/line/LineLayoutTraversal.h: Renamed from Source/WebCore/rendering/line/LineLayoutInterfaceTextBoxes.h.
(WebCore::LineLayoutTraversal::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator++):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator bool const):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator!= const):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator== const):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator* const):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator-> const):
(WebCore::LineLayoutTraversal::TextBoxRange::TextBoxRange):
(WebCore::LineLayoutTraversal::TextBoxRange::begin const):
(WebCore::LineLayoutTraversal::TextBoxRange::end const):
(WebCore::LineLayoutTraversal::hasTextBoxes):
2019-09-25 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Use existing Line::Content::LineBox to track the current line geometry
https://bugs.webkit.org/show_bug.cgi?id=202182
Reviewed by Antti Koivisto.
This patch removes the redundant Line::m_logicalTopLeft, m_contentLogicalWidth, m_lineLogicalHeight, m_baseline, m_baselineTop members
and switches over to Line::m_content's LineBox.
* layout/displaytree/DisplayRect.h:
(WebCore::Display::Rect::Rect):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::removeTrailingTrimmableContent):
(WebCore::Layout::Line::moveLogicalLeft):
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
(WebCore::Layout::m_skipVerticalAligment): Deleted.
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Content::lineBox):
(WebCore::Layout::Line::contentLogicalRight const):
(WebCore::Layout::Line::logicalTop const):
(WebCore::Layout::Line::logicalBottom const):
(WebCore::Layout::Line::logicalLeft const):
(WebCore::Layout::Line::logicalHeight const):
(WebCore::Layout::Line::contentLogicalWidth const):
(WebCore::Layout::Line::baselineOffset const):
* layout/inlineformatting/InlineLineBox.h:
(WebCore::Layout::LineBox::setLogicalTopLeft):
(WebCore::Layout::LineBox::setLogicalHeight):
(WebCore::Layout::LineBox::setLogicalWidth):
(WebCore::Layout::LineBox::moveHorizontally):
(WebCore::Layout::LineBox::expandHorizontally):
(WebCore::Layout::LineBox::shrinkHorizontally):
(WebCore::Layout::LineBox::expandVertically):
(WebCore::Layout::LineBox::shrinkVertically):
(WebCore::Layout::LineBox::LineBox):
(WebCore::Layout::LineBox::setLogicalHeightIfGreater):
(WebCore::Layout::LineBox::setBaseline):
(WebCore::Layout::LineBox::baseline const):
(WebCore::Layout::LineBox::baseline):
(WebCore::Layout::LineBox::setBaselineOffset):
(WebCore::Layout::LineBox::Baseline::setAscentIfGreater):
(WebCore::Layout::LineBox::Baseline::setDescentIfGreater):
2019-09-25 Antti Koivisto <antti@apple.com>
Rename InlineBox::nextLeafChild to nextLeafOnLine
https://bugs.webkit.org/show_bug.cgi?id=202197
Reviewed by Zalan Bujtas.
The name is confusing as it never returns a child of the inline box it is called on.
Rename it and other similar functions that traverse within a line.
* dom/Position.cpp:
(WebCore::Position::getInlineBoxAndOffset const):
* editing/RenderedPosition.cpp:
(WebCore::RenderedPosition::RenderedPosition):
(WebCore::RenderedPosition::previousLeafOnLine const):
(WebCore::RenderedPosition::nextLeafOnLine const):
(WebCore::RenderedPosition::isEquivalent const):
(WebCore::RenderedPosition::bidiLevelOnLeft const):
(WebCore::RenderedPosition::bidiLevelOnRight const):
(WebCore::RenderedPosition::leftBoundaryOfBidiRun):
(WebCore::RenderedPosition::rightBoundaryOfBidiRun):
(WebCore::RenderedPosition::atLeftBoundaryOfBidiRun const):
(WebCore::RenderedPosition::atRightBoundaryOfBidiRun const):
(WebCore::RenderedPosition::positionAtLeftBoundaryOfBiDiRun const):
(WebCore::RenderedPosition::positionAtRightBoundaryOfBiDiRun const):
(WebCore::RenderedPosition::prevLeafChild const): Deleted.
(WebCore::RenderedPosition::nextLeafChild const): Deleted.
* editing/RenderedPosition.h:
(WebCore::RenderedPosition::RenderedPosition):
* editing/VisiblePosition.cpp:
(WebCore::VisiblePosition::leftVisuallyDistinctCandidate const):
(WebCore::VisiblePosition::rightVisuallyDistinctCandidate const):
* editing/VisibleUnits.cpp:
(WebCore::startPositionForLine):
(WebCore::endPositionForLine):
(WebCore::previousLinePosition):
(WebCore::nextLinePosition):
* layout/Verification.cpp:
(WebCore::Layout::collectFlowBoxSubtree):
* rendering/ComplexLineLayout.cpp:
(WebCore::ComplexLineLayout::updateRubyForJustifiedText):
(WebCore::expansionBehaviorForInlineTextBox):
(WebCore::ComplexLineLayout::computeInlineDirectionPositionsForSegment):
(WebCore::ComplexLineLayout::layoutRunsAndFloats):
* rendering/InlineBox.cpp:
(WebCore::InlineBox::previousOnLineExists const):
(WebCore::InlineBox::nextLeafOnLine const):
(WebCore::InlineBox::previousLeafOnLine const):
(WebCore::InlineBox::nextLeafOnLineIgnoringLineBreak const):
(WebCore::InlineBox::previousLeafOnLineIgnoringLineBreak const):
(WebCore::InlineBox::nextLeafChild const): Deleted.
(WebCore::InlineBox::prevLeafChild const): Deleted.
(WebCore::InlineBox::nextLeafChildIgnoringLineBreak const): Deleted.
(WebCore::InlineBox::prevLeafChildIgnoringLineBreak const): Deleted.
* rendering/InlineBox.h:
(WebCore::InlineBox::nextOnLine const):
(WebCore::InlineBox::previousOnLine const):
(WebCore::InlineBox::setNextOnLine):
(WebCore::InlineBox::setPreviousOnLine):
(WebCore::InlineBox::InlineBox):
(WebCore::InlineBox::prevOnLine const): Deleted.
(WebCore::InlineBox::setPrevOnLine): Deleted.
* rendering/InlineFlowBox.cpp:
(WebCore::InlineFlowBox::addToLine):
(WebCore::InlineFlowBox::removeChild):
(WebCore::InlineFlowBox::nodeAtPoint):
(WebCore::InlineFlowBox::firstLeafDescendant const):
(WebCore::InlineFlowBox::lastLeafDescendant const):
(WebCore::InlineFlowBox::placeEllipsisBox):
(WebCore::InlineFlowBox::collectLeafBoxesInLogicalOrder const):
(WebCore::InlineFlowBox::checkConsistency const):
(WebCore::InlineFlowBox::firstLeafChild const): Deleted.
(WebCore::InlineFlowBox::lastLeafChild const): Deleted.
* rendering/InlineFlowBox.h:
* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::expansionBehavior const):
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::containsNonZeroBidiLevel const):
(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):
* rendering/RenderCounter.cpp:
(WebCore::RenderCounter::rendererRemovedFromTree):
* rendering/RenderTextLineBoxes.cpp:
(WebCore::lineDirectionPointFitsInBox):
(WebCore::createVisiblePositionAfterAdjustingOffsetForBiDi):
(WebCore::RenderTextLineBoxes::positionForPoint const):
* rendering/RootInlineBox.cpp:
(WebCore::RootInlineBox::isHyphenated const):
(WebCore::RootInlineBox::lineSelectionGap):
(WebCore::RootInlineBox::selectionState):
(WebCore::RootInlineBox::firstSelectedBox):
(WebCore::RootInlineBox::lastSelectedBox):
(WebCore::RootInlineBox::closestLeafChildForLogicalLeftPosition):
* rendering/svg/SVGRootInlineBox.cpp:
(WebCore::SVGRootInlineBox::closestLeafChildForPosition):
(WebCore::SVGRootInlineBox::nodeAtPoint):
2019-09-25 Zan Dobersek <zdobersek@igalia.com>
[Nicosia] Add implementations for fixed, positioned, sticky ScrollingTreeNodes
https://bugs.webkit.org/show_bug.cgi?id=202100
Reviewed by Carlos Garcia Campos.
Fill in the Nicosia implementations for the ScrollingTreeFixedNode,
ScrollingTreePositionedNode and ScrollingTreeStickyNode classes.
The implementations in majority repeat what the Cocoa implementations
do, with the main difference being the Nicosia-specific layer state
application. Sharing more of this logic should be investigated in the
future.
* PlatformPlayStation.cmake: Add ScrollingTreePositionedNode to build.
* SourcesGTK.txt: Ditto.
* SourcesWPE.txt: Ditto.
* page/scrolling/nicosia/ScrollingTreeFixedNode.cpp:
(WebCore::ScrollingTreeFixedNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeFixedNode::applyLayerPositions):
(WebCore::ScrollingTreeFixedNode::dumpProperties const):
* page/scrolling/nicosia/ScrollingTreeFixedNode.h:
* page/scrolling/nicosia/ScrollingTreePositionedNode.cpp: Added.
(WebCore::ScrollingTreePositionedNode::create):
(WebCore::ScrollingTreePositionedNode::ScrollingTreePositionedNode):
(WebCore::ScrollingTreePositionedNode::commitStateBeforeChildren):
(WebCore::ScrollingTreePositionedNode::applyLayerPositions):
(WebCore::ScrollingTreePositionedNode::dumpProperties const):
* page/scrolling/nicosia/ScrollingTreePositionedNode.h: Added.
(WebCore::ScrollingTreePositionedNode::relatedOverflowScrollingNodes const):
* page/scrolling/nicosia/ScrollingTreeStickyNode.cpp:
(WebCore::ScrollingTreeStickyNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeStickyNode::applyLayerPositions):
(WebCore::ScrollingTreeStickyNode::dumpProperties const):
(WebCore::ScrollingTreeStickyNode::computeLayerPosition const):
* page/scrolling/nicosia/ScrollingTreeStickyNode.h:
2019-09-24 Antoine Quint <graouts@apple.com>
[Web Animations] Removing an element should only cancel its declarative animations
https://bugs.webkit.org/show_bug.cgi?id=202165
Reviewed by Dean Jackson.
When an element is removed, an Animation created using the JS API should not be canceled.
Only declarative animations should be.
* animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::elementWasRemoved):
2019-09-24 Alex Christensen <achristensen@webkit.org>
Remove SchemeRegistry's list of URL schemes allowing local storage in private browsing, which is unused
https://bugs.webkit.org/show_bug.cgi?id=202181
Reviewed by Geoffrey Garen.
The last use of the WebView SPI to set it is being removed in rdar://problem/55685383
but it already does not do anything. Let's remove it.
* platform/SchemeRegistry.cpp:
(WebCore::schemesAllowingLocalStorageAccessInPrivateBrowsing): Deleted.
(WebCore::SchemeRegistry::registerURLSchemeAsAllowingLocalStorageAccessInPrivateBrowsing): Deleted.
(WebCore::SchemeRegistry::allowsLocalStorageAccessInPrivateBrowsing): Deleted.
* platform/SchemeRegistry.h:
2019-09-24 Wenson Hsieh <wenson_hsieh@apple.com>
Remove a content change observation quirk on united.com
https://bugs.webkit.org/show_bug.cgi?id=202175
Reviewed by Tim Horton.
Remove a site-specific quirk that is no longer necessary.
* page/Quirks.cpp:
(WebCore::Quirks::shouldIgnoreContentChange const): Deleted.
* page/Quirks.h:
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::shouldObserveVisibilityChangeForElement):
2019-09-24 Kate Cheney <katherine_cheney@apple.com>
Enable LayoutTests using ResourceLoadStatistics SQLite backend (195420)
https://bugs.webkit.org/show_bug.cgi?id=195420
<rdar://problem/54213551>
Reviewed by Brent Fulgham.
Tests: http/tests/resourceLoadStatistics/add-blocking-to-redirect-database.html
http/tests/resourceLoadStatistics/blocking-in-web-worker-script-import-database.html
http/tests/resourceLoadStatistics/cap-cache-max-age-for-prevalent-resource-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-decoration-same-site-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-fragment-from-prevalent-resource-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-and-fragment-from-prevalent-resource-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-from-prevalent-resource-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-without-link-decoration-from-prevalent-resource-database.html
http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics-database.html
http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins-database.html
http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins-database.html
http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-collusion-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-to-prevalent-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-to-prevalent-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-unique-redirects-to-database.html
http/tests/resourceLoadStatistics/classify-as-very-prevalent-based-on-mixed-statistics-database.html
http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-database.html
http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour-database.html
http/tests/resourceLoadStatistics/cookie-deletion-database.html
http/tests/resourceLoadStatistics/cookies-with-and-without-user-interaction-database.html
http/tests/resourceLoadStatistics/delete-script-accessible-cookies-database.html
http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect-database.html
http/tests/resourceLoadStatistics/do-not-capture-statistics-for-simple-top-navigations-database.html
http/tests/resourceLoadStatistics/do-not-remove-blocking-in-redirect-database.html
http/tests/resourceLoadStatistics/do-not-switch-session-on-navigation-to-prevalent-without-interaction-database.html
http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource-database.html
http/tests/resourceLoadStatistics/enable-debug-mode-database.html
http/tests/resourceLoadStatistics/grandfathering-database.html
http/tests/resourceLoadStatistics/non-prevalent-resource-with-user-interaction-database.html
http/tests/resourceLoadStatistics/non-prevalent-resource-without-user-interaction-database.html
http/tests/resourceLoadStatistics/non-prevalent-resources-can-access-cookies-in-a-third-party-context-database.html
http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/ping-to-prevalent-resource-database.html
http/tests/resourceLoadStatistics/prevalent-resource-handled-keydown-database.html
http/tests/resourceLoadStatistics/prevalent-resource-unhandled-keydown-database.html
http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-database.html
http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout-database.html
http/tests/resourceLoadStatistics/prevalent-resource-without-user-interaction-database.html
http/tests/resourceLoadStatistics/prune-statistics-database.html
http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/set-custom-prevalent-resource-in-debug-mode-database.html
http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-redirects-database.html
http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-requests-database.html
http/tests/resourceLoadStatistics/switch-session-on-navigation-to-prevalent-with-interaction-database.html
http/tests/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame-database.html
http/tests/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time-database.html
http/tests/resourceLoadStatistics/user-interaction-reported-after-website-data-removal-database.html
* platform/sql/SQLiteDatabase.h:
Added WEBCORE_EXPORT prefix to 2 functions needed in the ITP Database
to clear out the database.
2019-09-24 Chris Dumez <cdumez@apple.com>
Stop sampling PageCache-related AggD data
https://bugs.webkit.org/show_bug.cgi?id=202161
Reviewed by Geoffrey Garen.
Stop sampling PageCache-related AggD data to make it more actionable.
* history/PageCache.cpp:
(WebCore::logPageCacheFailureDiagnosticMessage):
(WebCore::canCacheFrame):
(WebCore::canCachePage):
2019-09-24 Sihui Liu <sihui_liu@apple.com>
Stop refing UniqueIDBDatabaseTransaction in callbacks
https://bugs.webkit.org/show_bug.cgi?id=202074
Reviewed by Youenn Fablet.
After quota check is introduced to IDB, callbacks that take the ref of UniqueIDBDatabaseTransaction will be
passed to StorageQuotaManager. This can make UniqueIDBDatabaseTransaction live longer than UniqueIDBDatabase.
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::requestSpace):
(WebCore::IDBServer::UniqueIDBDatabase::waitForRequestSpaceCompletion):
(WebCore::IDBServer::UniqueIDBDatabase::createObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::deleteObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::renameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::clearObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::createIndex):
(WebCore::IDBServer::UniqueIDBDatabase::deleteIndex):
(WebCore::IDBServer::UniqueIDBDatabase::renameIndex):
(WebCore::IDBServer::UniqueIDBDatabase::putOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::getRecord):
(WebCore::IDBServer::UniqueIDBDatabase::getAllRecords):
(WebCore::IDBServer::UniqueIDBDatabase::getCount):
(WebCore::IDBServer::UniqueIDBDatabase::deleteRecord):
(WebCore::IDBServer::UniqueIDBDatabase::openCursor):
(WebCore::IDBServer::UniqueIDBDatabase::iterateCursor):
(WebCore::IDBServer::UniqueIDBDatabase::commitTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::abortTransaction):
* Modules/indexeddb/server/UniqueIDBDatabase.h:
* Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::abort):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::commit):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::createObjectStore):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::deleteObjectStore):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::renameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::clearObjectStore):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::createIndex):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::deleteIndex):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::renameIndex):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::putOrAdd):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getRecord):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getAllRecords):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getCount):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::deleteRecord):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::openCursor):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::iterateCursor):
2019-09-24 Keith Rollin <krollin@apple.com>
Coalesce or remove PLATFORM(MAC) || PLATFORM(IOS_FAMILY)
https://bugs.webkit.org/show_bug.cgi?id=202119
<rdar://problem/55638792>
Reviewed by Alex Christensen.
After refactoring and other code evolution, some platform checks have
ended up looking like PLATFORM(MAC) || PLATFORM(IOS_FAMILY) (or
vice-versa). These can be converted into the equivalent
PLATFORM(COCOA). Where the instance occurs in a Cocoa-only file, the
check can be removed altogether (along with any "#else" branches).
No new tests -- no new or changed functionality.
* Modules/applepay/cocoa/PaymentContactCocoa.mm:
(WebCore::subLocality):
(WebCore::setSubLocality):
(WebCore::subAdministrativeArea):
(WebCore::setSubAdministrativeArea):
* css/parser/CSSPropertyParser.cpp:
(WebCore::isAppleLegacyCssValueKeyword):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaSessionTitle const):
* inspector/InspectorFrontendHost.cpp:
(WebCore::InspectorFrontendHost::platform):
* page/FrameView.cpp:
(WebCore::FrameView::updateBackgroundRecursively):
* platform/Timer.cpp:
* platform/cocoa/NetworkExtensionContentFilter.mm:
(WebCore::NetworkExtensionContentFilter::initialize):
* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::displayP3ColorSpaceRef):
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
* platform/network/cf/SocketStreamHandleImplCFNet.cpp:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForScrollableFrame const):
2019-09-24 Antoine Quint <graouts@apple.com>
[Web Animations] Unflake web-animations/timing-model/animations/updating-the-finished-state.html WPT test
https://bugs.webkit.org/show_bug.cgi?id=181121
Reviewed by Dean Jackson.
When running the "update animations and send events" steps (https://drafts.csswg.org/web-animations/#update-animations-and-send-events)
we assemble a list of animations to remove after updating their relevance based on the new timeline current time. However, we wouldn't
account for the fact that we would *then* dispatch events which could update the timing properties of animations that had been marked
for removal at this point.
In this specific WPT test, there were two individual tests that would rewind animations within a "finish" event handler and we would
not consider the fact that they had been rewound. We now check a second time before removing an animation that it should indeed be
removed.
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::internalUpdateAnimationsAndSendEvents):
2019-09-24 Kate Cheney <katherine_cheney@apple.com>
Mixed content blocking is bypassed for WebSockets in Workers (159726)
https://bugs.webkit.org/show_bug.cgi?id=159726
<rdar://problem/27326438>
Reviewed by Brady Eidson.
Tests: http/tests/websocket/tests/hybi/non-document-mixed-content-blocked-http-with-embedded-https-with-embedded-http.html
http/tests/websocket/tests/hybi/non-document-mixed-content-blocked-http-with-embedded-https.html
http/tests/websocket/tests/hybi/non-document-mixed-content-blocked-https-with-embedded-http-with-embedded-https.https.html
http/tests/websocket/tests/hybi/non-document-mixed-content-blocked.https.html
* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::connect):
* Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
(WebCore::WorkerThreadableWebSocketChannel::Bridge::connect):
* loader/MixedContentChecker.cpp:
(WebCore::MixedContentChecker::checkForMixedContentInFrameTree):
* loader/MixedContentChecker.h:
Patch to block insecure WebSocket URL connection attempts by Workers
on secure pages. If the URL is ws, and any embedding iframe has protocol
https, and the context is a Worker, the connection should be blocked.
I was unable to write a test case to hit the case where a document
does not have a frame and tries to communicate via a worker to
connect to a WebSocket because after removing the subframe from its
parent, the subframe is unable to perform a postMessage to a worker
even in the same script execution to tell the worker to connect
to a WebSocket.
2019-09-24 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Line::Content should use LineBox
https://bugs.webkit.org/show_bug.cgi?id=202128
<rdar://problem/55649079>
Reviewed by Antti Koivisto.
Replace Line::Content's m_logicalRect, m_baseline and m_baselineOffset with LineBox.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):
* layout/inlineformatting/InlineFormattingContextQuirks.cpp:
(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):
(WebCore::Layout::InlineFormattingContext::Quirks::lineHeightConstraints const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Content::lineBox const):
(WebCore::Layout::Line::Content::setLineBox):
(WebCore::Layout::Line::baselineOffset const):
(WebCore::Layout::Line::Content::isEmpty const): Deleted.
(WebCore::Layout::Line::Content::logicalTop const): Deleted.
(WebCore::Layout::Line::Content::logicalLeft const): Deleted.
(WebCore::Layout::Line::Content::logicalRight const): Deleted.
(WebCore::Layout::Line::Content::logicalBottom const): Deleted.
(WebCore::Layout::Line::Content::logicalWidth const): Deleted.
(WebCore::Layout::Line::Content::logicalHeight const): Deleted.
(WebCore::Layout::Line::Content::baseline const): Deleted.
(WebCore::Layout::Line::Content::baselineOffset const): Deleted.
(WebCore::Layout::Line::Content::setLogicalRect): Deleted.
(WebCore::Layout::Line::Content::setBaseline): Deleted.
(WebCore::Layout::Line::Content::setBaselineOffset): Deleted.
* layout/inlineformatting/InlineLineBox.h:
(WebCore::Layout::LineBox::Baseline::height const):
(WebCore::Layout::LineBox::LineBox):
(WebCore::Layout::LineBox::baselineOffset const):
(WebCore::Layout::LineBox::Baseline::Baseline):
(WebCore::Layout::LineBox::Baseline::setAscent):
(WebCore::Layout::LineBox::Baseline::setDescent):
(WebCore::Layout::LineBox::Baseline::reset):
(WebCore::Layout::LineBox::Baseline::ascent const):
(WebCore::Layout::LineBox::Baseline::descent const):
2019-09-24 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Move line constraints computation to a dedicated function
https://bugs.webkit.org/show_bug.cgi?id=202121
<rdar://problem/55640742>
Reviewed by Antti Koivisto.
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::LineLayout::LineLayout):
(WebCore::Layout::LineLayout::close):
(WebCore::Layout::LineLayout::placeInlineItem):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::initialConstraintsForLine):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
* layout/inlineformatting/InlineLine.h:
2019-09-24 Youenn Fablet <youenn@apple.com>
AudioTrackPrivateMediaStreamCocoa does not need to manipulate the audio unit in play/pause methods
https://bugs.webkit.org/show_bug.cgi?id=202097
<rdar://problem/51548144>
Reviewed by Eric Carlson.
Instead of manipulating the audio unit in play/pause methods, it is more convenient to do so in audioSamplesAvailable.
play/pause methods only update boolean values that audioSamplesAvailable will read.
In particular, m_autoPlay and m_isPlaying are no longer modified in the audio thread.
Behavior was racy so difficult to reproduce.
* platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:
(WebCore::AudioTrackPrivateMediaStreamCocoa::playInternal):
(WebCore::AudioTrackPrivateMediaStreamCocoa::pause):
(WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable):
* platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.h:
2019-09-23 Youenn Fablet <youenn@apple.com>
Support sync-xhr feature policy
https://bugs.webkit.org/show_bug.cgi?id=202098
Reviewed by Alex Christensen.
Add support for sync-xhr feature policy parsing.
Use this feature policy to control use of sync XHR in documents
as per https://xhr.spec.whatwg.org/#the-send()-method step 12.
Covered by updated test.
* html/FeaturePolicy.cpp:
(WebCore::FeaturePolicy::parse):
(WebCore::FeaturePolicy::allows const):
* html/FeaturePolicy.h:
* xml/XMLHttpRequest.cpp:
(WebCore::isSyncXHRAllowedByFeaturePolicy):
(WebCore::XMLHttpRequest::createRequest):
2019-09-23 Chris Dumez <cdumez@apple.com>
Drop unnecessary SessionID.h header includes
https://bugs.webkit.org/show_bug.cgi?id=202129
Reviewed by Alex Christensen.
* Modules/fetch/FetchBodyConsumer.h:
* Modules/indexeddb/IDBDatabaseIdentifier.h:
* bindings/js/SerializedScriptValue.h:
* dom/DataTransfer.h:
* editing/WebCorePasteboardFileReader.h:
* fileapi/FileReaderLoader.h:
* fileapi/ThreadableBlobRegistry.h:
* html/FileListCreator.h:
* loader/CookieJar.h:
* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoaderClient.h:
* loader/LoaderStrategy.h:
* page/CacheStorageProvider.h:
* page/Frame.h:
* page/PageGroup.h:
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
* platform/network/CacheValidation.h:
* platform/network/FormData.h:
* platform/network/NetworkStorageSession.cpp:
* platform/network/StorageSessionProvider.h:
* workers/WorkerGlobalScopeProxy.h:
* workers/service/ServiceWorkerContainer.h:
* workers/service/ServiceWorkerProvider.h:
* workers/service/server/RegistrationDatabase.h:
* workers/service/server/SWServer.h:
* workers/service/server/SWServerToContextConnection.h:
* worklets/WorkletGlobalScope.h:
2019-09-23 Alex Christensen <achristensen@webkit.org>
Fix WPT test html/browsers/offline/application-cache-api/api_swapcache_error.https.html
https://bugs.webkit.org/show_bug.cgi?id=202056
<rdar://problem/55523986>
Reviewed by Youenn Fablet.
The test makes sure we throw an exception when we are in an invalid state, which we should definitely do.
* loader/appcache/ApplicationCache.cpp:
(WebCore::ApplicationCache::setGroup):
(WebCore::ApplicationCache::setManifestResource):
* loader/appcache/ApplicationCache.h:
(WebCore::ApplicationCache::manifestResource const):
(WebCore::ApplicationCache::group const):
* loader/appcache/ApplicationCacheGroup.h:
* loader/appcache/ApplicationCacheHost.cpp:
(WebCore::ApplicationCacheHost::candidateApplicationCacheGroup const):
(WebCore::ApplicationCacheHost::failedLoadingMainResource):
(WebCore::ApplicationCacheHost::setCandidateApplicationCacheGroup):
(WebCore::ApplicationCacheHost::swapCache):
* loader/appcache/ApplicationCacheHost.h:
(WebCore::ApplicationCacheHost::candidateApplicationCacheGroup const): Deleted.
* loader/appcache/ApplicationCacheResource.h:
2019-09-23 Chris Dumez <cdumez@apple.com>
PlugInClient::didStartFromOrigin() does not need a sessionID
https://bugs.webkit.org/show_bug.cgi?id=202127
Reviewed by Geoffrey Garen.
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::userDidClickSnapshot):
* page/PlugInClient.h:
2019-09-23 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: show WebGPU shader pipelines
https://bugs.webkit.org/show_bug.cgi?id=201675
<rdar://problem/55543450>
Reviewed by Joseph Pecoraro.
Tests: inspector/canvas/requestShaderSource-webgpu.html
inspector/canvas/shaderProgram-add-remove-webgpu.html
inspector/canvas/updateShader-webgpu.html
Create common base classes for `WebGPUPipeline` and `GPUPipeline` so that Web Inspector can
instrument both render and compute shader pipelines.
Refactor `InspectorShaderProgram` to support both `WebGLProgram` and `WebGPUPipeline` so
that the same object can be used for all types of shader "program"s.
Keep a copy of each shader module's source, and allow the shader module to be updated.
* Modules/webgpu/WebGPUDevice.h:
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::WebGPUDevice):
(WebCore::WebGPUDevice::~WebGPUDevice):
(WebCore::WebGPUDevice::createShaderModule const):
(WebCore::WebGPUDevice::createRenderPipeline): Added.
(WebCore::WebGPUDevice::createComputePipeline): Added.
(WebCore::WebGPUDevice::createRenderPipeline const): Deleted.
(WebCore::WebGPUDevice::createComputePipeline const): Deleted.
* Modules/webgpu/WebGPUPipeline.h: Added.
(WebCore::WebGPUPipeline::isRenderPipeline const):
(WebCore::WebGPUPipeline::isComputePipeline const):
(WebCore::WebGPUPipeline::scriptExecutionContext const):
* Modules/webgpu/WebGPUPipeline.cpp: Added.
(WebCore::WebGPUPipeline::instancesMutex):
(WebCore::WebGPUPipeline::WebGPUPipeline):
(WebCore::WebGPUPipeline::~WebGPUPipeline):
* platform/graphics/gpu/GPUPipeline.cpp: Added.
* platform/graphics/gpu/GPUPipeline.h: Added.
(WebCore::GPUPipeline::isRenderPipeline const):
(WebCore::GPUPipeline::isComputePipeline const):
* Modules/webgpu/WebGPUComputePipeline.idl:
* Modules/webgpu/WebGPUComputePipeline.h:
(WebCore::WebGPUComputePipeline::computePipeline const): Deleted.
* Modules/webgpu/WebGPUComputePipeline.cpp:
(WebCore::WebGPUComputePipeline::create):
(WebCore::WebGPUComputePipeline::WebGPUComputePipeline):
(WebCore::WebGPUComputePipeline::recompile): Added.
* platform/graphics/gpu/GPUComputePipeline.h:
(WebCore::GPUComputePipeline::isComputePipeline): Added.
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm:
(WebCore::GPUComputePipeline::tryCreate):
(WebCore::GPUComputePipeline::GPUComputePipeline):
(WebCore::GPUComputePipeline::recompile): Added.
* Modules/webgpu/WebGPURenderPipeline.idl:
* Modules/webgpu/WebGPURenderPipeline.h:
(WebCore::WebGPURenderPipeline::renderPipeline const): Deleted.
* Modules/webgpu/WebGPURenderPipeline.cpp:
(WebCore::WebGPURenderPipeline::create):
(WebCore::WebGPURenderPipeline::WebGPURenderPipeline):
(WebCore::WebGPURenderPipeline::recompile): Added.
* platform/graphics/gpu/GPURenderPipeline.h:
(WebCore::GPURenderPipeline::isRenderPipeline): Added.
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::tryCreateMtlRenderPipelineState):
(WebCore::GPURenderPipeline::tryCreate):
(WebCore::GPURenderPipeline::GPURenderPipeline):
(WebCore::GPURenderPipeline::recompile): Added.
* Modules/webgpu/WebGPUShaderModule.h:
(WebCore::WebGPUShaderModule::source const): Added.
* Modules/webgpu/WebGPUShaderModule.cpp:
(WebCore::WebGPUShaderModule::update): Added.
* Modules/webgpu/WebGPUProgrammableStageDescriptor.h:
* platform/graphics/gpu/GPUProgrammableStageDescriptor.h:
(WebCore::GPUProgrammableStageDescriptor::GPUProgrammableStageDescriptor):
* inspector/InspectorShaderProgram.h:
* inspector/InspectorShaderProgram.cpp:
(WebCore::InspectorShaderProgram::create):
(WebCore::InspectorShaderProgram::InspectorShaderProgram):
(WebCore::InspectorShaderProgram::program const): Added.
(WebCore::InspectorShaderProgram::pipeline const): Added.
(WebCore::shaderForType): Added.
(WebCore::InspectorShaderProgram::requestShaderSource): Added.
(WebCore::InspectorShaderProgram::updateShader): Added.
(WebCore::InspectorShaderProgram::context const): Deleted.
(WebCore::InspectorShaderProgram::shaderForType): Deleted.
* inspector/agents/InspectorCanvasAgent.h:
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::discardAgent):
(WebCore::InspectorCanvasAgent::enable):
(WebCore::InspectorCanvasAgent::disable):
(WebCore::InspectorCanvasAgent::requestShaderSource):
(WebCore::InspectorCanvasAgent::updateShader):
(WebCore::InspectorCanvasAgent::setShaderProgramDisabled):
(WebCore::InspectorCanvasAgent::setShaderProgramHighlighted):
(WebCore::InspectorCanvasAgent::frameNavigated):
(WebCore::InspectorCanvasAgent::didCreateWebGLProgram): Added.
(WebCore::InspectorCanvasAgent::willDestroyWebGLProgram): Added.
(WebCore::InspectorCanvasAgent::isWebGLProgramDisabled): Added.
(WebCore::InspectorCanvasAgent::isWebGLProgramHighlighted): Added.
(WebCore::InspectorCanvasAgent::didCreateWebGPUPipeline): Added.
(WebCore::InspectorCanvasAgent::willDestroyWebGPUPipeline): Added.
(WebCore::InspectorCanvasAgent::programDestroyedTimerFired): Added.
(WebCore::InspectorCanvasAgent::reset): Added.
(WebCore::InspectorCanvasAgent::unbindProgram):
(WebCore::InspectorCanvasAgent::findInspectorProgram):
(WebCore::InspectorCanvasAgent::didCreateProgram): Deleted.
(WebCore::InspectorCanvasAgent::willDeleteProgram): Deleted.
(WebCore::InspectorCanvasAgent::isShaderProgramDisabled): Deleted.
(WebCore::InspectorCanvasAgent::isShaderProgramHighlighted): Deleted.
(WebCore::InspectorCanvasAgent::clearCanvasData): Deleted.
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didCreateWebGLProgram): Added.
(WebCore::InspectorInstrumentation::willDestroyWebGLProgram): Added.
(WebCore::InspectorInstrumentation::isWebGLProgramDisabled): Added.
(WebCore::InspectorInstrumentation::isWebGLProgramHighlighted): Added.
(WebCore::InspectorInstrumentation::didCreateWebGPUPipeline): Added.
(WebCore::InspectorInstrumentation::willDestroyWebGPUPipeline): Added.
(WebCore::InspectorInstrumentation::didCreateProgram): Deleted.
(WebCore::InspectorInstrumentation::willDeleteProgram): Deleted.
(WebCore::InspectorInstrumentation::isShaderProgramDisabled): Deleted.
(WebCore::InspectorInstrumentation::isShaderProgramHighlighted): Deleted.
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didCreateWebGLProgramImpl): Added.
(WebCore::InspectorInstrumentation::willDestroyWebGLProgramImpl): Added.
(WebCore::InspectorInstrumentation::isWebGLProgramDisabledImpl): Added.
(WebCore::InspectorInstrumentation::isWebGLProgramHighlightedImpl): Added.
(WebCore::InspectorInstrumentation::didCreateWebGPUPipelineImpl): Added.
(WebCore::InspectorInstrumentation::willDestroyWebGPUPipelineImpl): Added.
(WebCore::InspectorInstrumentation::didCreateProgramImpl): Deleted.
(WebCore::InspectorInstrumentation::willDeleteProgramImpl): Deleted.
(WebCore::InspectorInstrumentation::isShaderProgramDisabledImpl): Deleted.
(WebCore::InspectorInstrumentation::isShaderProgramHighlightedImpl): Deleted.
* html/canvas/WebGLProgram.h:
* html/canvas/WebGLProgram.cpp:
(WebCore::WebGLProgram::WebGLProgram):
(WebCore::WebGLProgram::~WebGLProgram):
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::InspectorScopedShaderProgramHighlight::showHightlight):
(WebCore::WebGLRenderingContextBase::createProgram):
(WebCore::WebGLRenderingContextBase::deleteProgram):
(WebCore::WebGLRenderingContextBase::drawArrays):
(WebCore::WebGLRenderingContextBase::drawElements):
Rename WebGL program instrumentation points to be less ambiguous.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2019-09-23 Wenson Hsieh <wenson_hsieh@apple.com>
[iOS] Drop animation when dragging images from Photos to WebKit2 Mail compose is incorrect
https://bugs.webkit.org/show_bug.cgi?id=201674
<rdar://problem/51250952>
Reviewed by Tim Horton.
Adds new helper methods on DragController to support the new image placeholder drop codepath. See WebKit
ChangeLog for more details.
Tests: WKAttachmentTestsIOS.TargetedPreviewsWhenDroppingImages
WKAttachmentTestsIOS.TargetedPreviewIsClippedWhenDroppingTallImage
* editing/WebContentReader.h:
Fix the Windows build after including WebContentReader.h in DragController.cpp.
* html/HTMLImageElement.h:
(WebCore::HTMLImageElement::isDroppedImagePlaceholder const):
(WebCore::HTMLImageElement::setIsDroppedImagePlaceholder):
Add a flag to HTMLImageElement, indicating whether it is a dropped image placeholder. If so, we have special
logic to remove some temporary inline style properties from the image after it has finished loading (see
finalizeDroppedImagePlaceholder).
Note that this doesn't increase the size of HTMLImageElement.
* page/DragController.cpp:
(WebCore::DragController::dragEnded):
Clean up any stale placeholders after the drag ends.
(WebCore::DragController::performDragOperation):
(WebCore::DragController::removeAllDroppedImagePlaceholders):
Add a private helper to clean up any dropped image placeholders after failing to update dropped image
placeholders for any reason.
(WebCore::DragController::tryToUpdateDroppedImagePlaceholders):
Invoked when performing the drag operation, after image data has been loaded; this function attempts to update
the list of image placeholder elements tracked by DragController that were previously inserted using
insertDroppedImagePlaceholdersAtCaret, and updates the source attribute of each element (as well as any backed
attachment element, if attachment elements are enabled). It achieves this by reading the dropped data as web
content, and matching up the images in the resulting fragment against the placeholder images. If each image in
the fragment can correspond to exactly one placeholder, we update the source of each placeholder image,
migrate attachment elements over to the placeholder images if needed, and finally discard the fragment.
A return value of false indicates that this process failed, in which case we clean up the placeholders and fall
back to handling the drop normally.
(WebCore::DragController::insertDroppedImagePlaceholdersAtCaret):
Invoked when handling the drop, before any image data has been loaded; this function takes a list of sizes
representing the preferred presentation sizes of each item provider that will be loaded as an image, and uses
ReplaceSelectionCommand to insert a list of (initially blank) placeholder images at the drop caret, sized
accordingly to each item provider's preferredPresentationSize.
To make this compatible with Mail compose (and all other known internal clients that use the _editable SPI), we
additionally enforce a max-width of 100% on each image and preserve the aspect ratio of the image by adjusting
the height if needed.
(WebCore::DragController::finalizeDroppedImagePlaceholder):
* page/DragController.h:
Have DragController keep track of the list of dropped image placeholders (in DOM order), as well as the dropped
image placeholder range. This information is used once item provider data arrives and the drag operation is
being performed, to update the source of each dropped image placeholder.
(WebCore::DragController::droppedImagePlaceholders const):
(WebCore::DragController::droppedImagePlaceholderRange const):
* platform/network/mac/UTIUtilities.h:
Mark an existing helper function as WEBCORE_EXPORT.
2019-09-23 Daniel Bates <dabates@apple.com>
Improve CSP inheritance semantics
https://bugs.webkit.org/show_bug.cgi?id=201884
<rdar://problem/50172407>
Reviewed by Brent Fulgham.
Update the CSP inheritance semantics to more closely match the logic in section Initialize a Document's CSP list
of the CSP3 spec., <https://w3c.github.io/webappsec-csp/#initialize-document-csp>.
Towards this, move more of the inheritance logic out of Document::initContentSecurityPolicy() and into
DocumentWriter::begin() where details about the document being replaced live. This lets us remove the
need to track the previous content security policy to pass it to Document::initContentSecurityPolicy().
Moreover, DocumentWriter::begin() knows the owner document that will be replaced with the result of
executing a JavaScript URL. This is needed in order to fix up inheritance of CSP for such documents.
Tests: http/tests/security/contentSecurityPolicy/iframe-allowed-when-loaded-via-javascript-url.html
http/tests/security/contentSecurityPolicy/iframe-blocked-when-loaded-via-javascript-url.html
http/tests/security/contentSecurityPolicy/iframe-blocked-when-loaded-via-javascript-url2.html
* dom/Document.cpp:
(WebCore::Document::initSecurityContext): If we are inheriting the security origin from the owner
document then inherit its CSP policy. We copy over both the CSP state from the owner as well as
update 'self' to match the owner's origin so that CSP source expressions that include 'self' work
correctly even from about:blank documents.
(WebCore::Document::initContentSecurityPolicy): Move most of the logic from here into DocumentWriter::begin()
to take advantage of the fact that DocumentWriter::begin() knows about the outgoing document (if there
is one) as well as whether the outgoing document is being replaced with a new document that is the result
of evaluating a JavaScript URL. We need do know both these things in order to inherit the correct CSP
policy. This function only exists to copy some upgrade-insecure-requests state and to fix up plugin documents
as we currently do.
(WebCore::Document::shouldInheritContentSecurityPolicy const): Deleted.
* dom/Document.h:
* dom/SecurityContext.cpp:
(WebCore::SecurityContext::setContentSecurityPolicy): Modified to take its param by rvalue-reference
to make it less error prone to use.
* dom/SecurityContext.h: Expose setContentSecurityPolicy() so that we can invoke it from DocumentWriter::begin().
* loader/DocumentWriter.cpp:
(WebCore::DocumentWriter::begin): For documents being replaced with the result of a JavaScript URL (i.e. ownerDocument
is non-null) inherit the CSP from the owner document. Similarly, if we have an existing document in the frame
and the protocol of the new document's URL is data: or blob: then inherit the CSP from the existing page. The latter
is what we currently do just moved from Document::initContentSecurityPolicy() and re-written in terms of the
existingDocument instead of previousContentSecurityPolicy. Also call setInsecureNavigationRequestsToUpgrade()
both when we have a non-null ownerDocument as well as when we have a non-null existingDocument. The former fixes
the block-all-mixed-content feature for documents loaded via JavaScript URLs and the latter is what we do now.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::didBeginDocument): Remove parameter previousContentSecurityPolicy as the logic that
made use of it moved to DocumentWriter::begin().
* loader/FrameLoader.h:
* page/csp/ContentSecurityPolicy.h:
2019-09-23 Keith Rollin <krollin@apple.com>
Unreviewed build fix after r250173: tvOS build broken due to unused function.
* platform/network/cocoa/CookieCocoa.mm:
(WebCore::Cookie::operator NSHTTPCookie * _Nullable const):
2019-09-23 Brent Fulgham <bfulgham@apple.com>
Unreviewed WinCairo/FTW Build fix after r250192.
* platform/network/curl/CurlDownload.cpp:
(WebCore::CurlDownload::createCurlRequest):
2019-09-23 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Merge inline box compute functions
https://bugs.webkit.org/show_bug.cgi?id=202092
<rdar://problem/55607748>
Reviewed by Antti Koivisto.
Make InlineFormattingContext::layoutInFlowContent() logic simpler.
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot):
(WebCore::Layout::InlineFormattingContext::computeHorizontalAndVerticalGeometry):
(WebCore::Layout::InlineFormattingContext::initializeMarginBorderAndPaddingForGenericInlineBox): Deleted.
(WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPaddingForInlineContainer): Deleted.
* layout/inlineformatting/InlineFormattingContext.h:
2019-09-23 David Kilzer <ddkilzer@apple.com>
REGRESSION (r249855): Remove debug logging from WebCore::RenderImage::paintIntoRect()
<https://webkit.org/b/202103>
Reviewed by Zalan Bujtas.
* rendering/RenderImage.cpp:
(WebCore::RenderImage::paintIntoRect): Remove debug logging
statements.
2019-09-23 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Pass in the Used*Values to inline layout functions.
https://bugs.webkit.org/show_bug.cgi?id=202091
<rdar://problem/55601987>
Reviewed by Antti Koivisto.
Only the top level layout functions should generate constraint values.
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPaddingForInlineContainer):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
(WebCore::Layout::InlineFormattingContext::computeHorizontalMargin):
(WebCore::Layout::InlineFormattingContext::computeWidthAndMargin):
(WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot):
(WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox):
* layout/inlineformatting/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::InlineLayout::widthConstraint const):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::InlineLayout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):
2019-09-23 Antti Koivisto <antti@apple.com>
Refcount simple line layout
https://bugs.webkit.org/show_bug.cgi?id=202104
Reviewed by Zalan Bujtas.
Make SimpleLineLayout::Layout refcounted for safety and ease of use.
* dom/Position.cpp:
(WebCore::Position::upstream const):
(WebCore::Position::downstream const):
* editing/TextIterator.cpp:
(WebCore::TextIterator::handleTextNode):
(WebCore::TextIterator::handleTextBox):
(WebCore::TextIterator::handleTextNodeFirstLetter):
* editing/TextIterator.h:
* rendering/RenderBlockFlow.h:
* rendering/RenderTreeAsText.cpp:
(WebCore::RenderTreeAsText::writeRenderObject):
(WebCore::write):
* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::create):
(WebCore::SimpleLineLayout::Layout::create):
* rendering/SimpleLineLayout.h:
* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::outputLineLayoutForFlow):
* rendering/SimpleLineLayoutResolver.cpp:
(WebCore::SimpleLineLayout::RunResolver::Run::rect const):
(WebCore::SimpleLineLayout::RunResolver::Iterator::Iterator):
Iterator now refs the layout. Since the resolver is owned by the layout, it is guaranteed to stay alive too.
(WebCore::SimpleLineLayout::RunResolver::Iterator::advanceLines):
* rendering/SimpleLineLayoutResolver.h:
(WebCore::SimpleLineLayout::RunResolver::Iterator::layout const):
(WebCore::SimpleLineLayout::RunResolver::Run::computeBaselinePosition const):
(WebCore::SimpleLineLayout::RunResolver::Iterator::simpleRun const):
(WebCore::SimpleLineLayout::RunResolver::Iterator::inQuirksMode const): Deleted.
(WebCore::SimpleLineLayout::runResolver): Deleted.
Always use the cached resolver owned by SimpleLineLayout::Layout.
* rendering/line/LineLayoutInterfaceTextBoxes.cpp:
(WebCore::LineLayoutInterface::firstTextBoxInVisualOrderFor):
(WebCore::LineLayoutInterface::firstTextBoxInTextOrderFor):
(WebCore::LineLayoutInterface::textBoxRangeFor):
(WebCore::LineLayoutInterface::Provider::firstTextBoxInVisualOrderFor): Deleted.
(WebCore::LineLayoutInterface::Provider::firstTextBoxInTextOrderFor): Deleted.
(WebCore::LineLayoutInterface::Provider::textBoxRangeFor): Deleted.
There is no need for a separate Provider class anymore as the iterator keeps SimpleLineLayout::Layout
and Resolver instances alive itself.
* rendering/line/LineLayoutInterfaceTextBoxes.h:
(WebCore::LineLayoutInterface::hasTextBoxes):
(WebCore::LineLayoutInterface::Provider::firstTextBoxFor): Deleted.
2019-09-23 Youenn Fablet <youenn@apple.com>
Simplify UserMediaPermissionRequestManager management of UserMediaRequest
https://bugs.webkit.org/show_bug.cgi?id=201688
Reviewed by Eric Carlson.
Covered by existing tests and modified test.
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::UserMediaRequest):
* Modules/mediastream/UserMediaRequest.h:
(WebCore::UserMediaRequest::identifier const):
Add an identifier generated for each request.
2019-09-23 Charlie Turner <cturner@igalia.com>
[GStreamer] isAVC1CodecSupported is crashing several media source tests due to avc1.4d4001 codec type
https://bugs.webkit.org/show_bug.cgi?id=201870
Reviewed by Xabier Rodriguez-Calvar.
The GStreamer codec-utils package expects all level_idc's to be
multiples of 10 from the spec idc, i.e., 1.1 -> 11, 3.1 -> 31, 1
-> 10, etc.
In the WPT tests, there is some confusion of this *10 multiplier,
and the level_idc is given in several places as simply "1". This
causes the get_level codec helper to return NULL, which the
registry scanner was not handling properly, and crashing on.
Fix this by special casing "web level idc's" that violate the *10
rule in isAVC1CodecSupported.
There is prior art along these lines in Gecko:
https://searchfox.org/mozilla-central/source/dom/media/VideoUtils.cpp#453
I assume Chrome/IE/etc must do something similar. The fix does not
belong in GStreamer since these are actually invalid inputs to the
get_level function.
Tested by imported/w3c/web-platform-tests/media-source
* platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:
(WebCore::GStreamerRegistryScanner::isAVC1CodecSupported const):
Special case levels 1..5, even though these *should* be
represented as 10 through 50 respectively, they are not in
web-land. The two-byte local storage trick was contributed to me
by Adrian Perez de Castro.
2019-09-23 Rob Buis <rbuis@igalia.com>
Sync operator dictionary
https://bugs.webkit.org/show_bug.cgi?id=201974
Reviewed by Frédéric Wang.
Sync with operator dictionary list from
https://mathml-refresh.github.io/mathml-core/#operator-dictionary
Test: imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-001.html
* mathml/MathMLOperatorDictionary.cpp:
2019-09-22 David Kilzer <ddkilzer@apple.com>
clang-tidy: Fix unnecessary copy/ref churn of for loop variables in WebCore
<https://webkit.org/b/202090>
Reviewed by Daniel Bates.
Fix unwanted copying/ref churn of loop variables by making them
const references.
* Modules/encryptedmedia/InitDataRegistry.cpp:
(WebCore::InitDataRegistry::extractKeyIDsCenc):
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::getMisspellingRange const):
(WebCore::AccessibilityObject::performTextOperation):
* html/HTMLSlotElement.cpp:
(WebCore::flattenAssignedNodes):
* html/track/WebVTTParser.cpp:
(WebCore::WebVTTParser::checkAndStoreStyleSheet):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::updateSupportedTypeIdentifiers):
* platform/ios/WebItemProviderPasteboard.mm:
(-[WebItemProviderPasteboard allDroppedFileURLs]):
* svg/SVGStringList.h:
* testing/MockLibWebRTCPeerConnection.cpp:
(WebCore::MockLibWebRTCPeerConnection::GetTransceivers const):
Also call transceivers.reserve() to optimize allocations.
2019-09-21 Chris Dumez <cdumez@apple.com>
Reduce use of SessionID::defaultSessionID() in WebKit
https://bugs.webkit.org/show_bug.cgi?id=202080
Reviewed by Alex Christensen.
Reduce use of SessionID::defaultSessionID() in WebKit. Falling back to the default session
when you don't know which session to use is never a good idea and a potential privacy issue.
* Modules/websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::connect):
* dom/Document.cpp:
(WebCore::Document::logger):
* dom/Document.h:
* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::parseAdClickAttribution const):
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::continueAfterContentPolicy):
* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoaderClient.h:
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestUserCSSStyleSheet):
(WebCore::CachedResourceLoader::updateCachedResourceWithCurrentRequest):
(WebCore::CachedResourceLoader::requestResource):
(WebCore::CachedResourceLoader::revalidateResource):
(WebCore::CachedResourceLoader::loadResource):
* loader/cache/CachedResourceLoader.h:
(WebCore::CachedResourceLoader::clearDocumentLoader):
* page/Frame.cpp:
* page/Frame.h:
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::isAlwaysOnLoggingAllowed const):
2019-09-21 Chris Dumez <cdumez@apple.com>
ServiceWorkerContextData does not need a sessionID
https://bugs.webkit.org/show_bug.cgi?id=202087
Reviewed by Alex Christensen.
* workers/service/ServiceWorkerContextData.cpp:
(WebCore::ServiceWorkerContextData::isolatedCopy const):
* workers/service/ServiceWorkerContextData.h:
(WebCore::ServiceWorkerContextData::encode const):
(WebCore::ServiceWorkerContextData::decode):
* workers/service/server/RegistrationDatabase.cpp:
(WebCore::RegistrationDatabase::RegistrationDatabase):
(WebCore::RegistrationDatabase::importRecords):
* workers/service/server/RegistrationDatabase.h:
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::updateWorker):
* workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::contextData const):
2019-09-21 Chris Dumez <cdumez@apple.com>
WebIDBConnectionToClient does not need to be RefCounted or a SessionID
https://bugs.webkit.org/show_bug.cgi?id=202089
Reviewed by Alex Christensen.
Drop some dead code.
* Modules/indexeddb/server/IDBConnectionToClientDelegate.h:
2019-09-21 Chris Dumez <cdumez@apple.com>
[CURL] CurlRequest does not need a sessionID
https://bugs.webkit.org/show_bug.cgi?id=202086
Reviewed by Alex Christensen.
* platform/network/curl/CurlFormDataStream.cpp:
(WebCore::CurlFormDataStream::CurlFormDataStream):
* platform/network/curl/CurlFormDataStream.h:
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::CurlRequest):
* platform/network/curl/CurlRequest.h:
(WebCore::CurlRequest::create):
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::createCurlRequest):
2019-09-21 Chris Dumez <cdumez@apple.com>
CookieRequestHeaderFieldProxy does not need a SessionID
https://bugs.webkit.org/show_bug.cgi?id=202084
Reviewed by Alex Christensen.
* Modules/websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::didOpenSocketStream):
* loader/CookieJar.cpp:
(WebCore::CookieJar::cookieRequestHeaderFieldProxy):
* loader/CookieJar.h:
* platform/network/CookieRequestHeaderFieldProxy.h:
(WebCore::CookieRequestHeaderFieldProxy::encode const):
(WebCore::CookieRequestHeaderFieldProxy::decode):
2019-09-21 Chris Dumez <cdumez@apple.com>
DocumentLoader::m_temporaryServiceWorkerClient does not need a sessionID
https://bugs.webkit.org/show_bug.cgi?id=202083
Reviewed by Alex Christensen.
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::registerTemporaryServiceWorkerClient):
(WebCore::DocumentLoader::unregisterTemporaryServiceWorkerClient):
* loader/DocumentLoader.h:
2019-09-21 Brent Fulgham <bfulgham@apple.com>
[FTW] Resolve crashes found while running canvas tests
https://bugs.webkit.org/show_bug.cgi?id=202062
Reviewed by Don Olmstead.
* platform/graphics/Pattern.h:
* platform/graphics/win/Direct2DOperations.cpp:
(WebCore::Direct2D::FillSource::FillSource): Take GraphicsContext as argument, rather than
a PlatformContextDirect2D since downstream operations require the former.
(WebCore::Direct2D::StrokeSource::StrokeSource): Ditto.
(WebCore::Direct2D::clip): Use new 'pushClip' helper function.
* platform/graphics/win/Direct2DOperations.h:
* platform/graphics/win/GraphicsContextDirect2D.cpp:
(WebCore::GraphicsContext::drawPath):
(WebCore::GraphicsContext::fillPath):
(WebCore::GraphicsContext::strokePath):
(WebCore::GraphicsContext::fillRect):
(WebCore::GraphicsContext::fillRectWithRoundedHole):
(WebCore::GraphicsContext::strokeRect):
* platform/graphics/win/GraphicsContextImplDirect2D.cpp:
(WebCore::GraphicsContextImplDirect2D::fillRect): Update to pass GraphicsContext.
(WebCore::GraphicsContextImplDirect2D::fillRectWithRoundedHole): Ditto.
(WebCore::GraphicsContextImplDirect2D::fillPath): Ditto.
(WebCore::GraphicsContextImplDirect2D::strokeRect): Ditto.
(WebCore::GraphicsContextImplDirect2D::strokePath): Ditto.
(WebCore::GraphicsContextImplDirect2D::drawGlyphs): Ditto.
* platform/graphics/win/ImageBufferDataDirect2D.cpp:
(WebCore::ImageBufferData::copyRectFromSourceToData): Correct return behavior.
(WebCore::ImageBufferData::compatibleBitmap): Make a copy if the render target is
backed by the ID2D1Bitmap we are trying to draw with.
* platform/graphics/win/PatternDirect2D.cpp:
(WebCore::Pattern::createPlatformPattern const): Remove 'PlatformContextDirect2D' contructor,
since we always need a GraphicsContext for the Image class.
* platform/graphics/win/PlatformContextDirect2D.cpp:
(WebCore::PlatformContextDirect2D::clipLayer const): Added.
(WebCore::PlatformContextDirect2D::clearClips): Added.
(WebCore::PlatformContextDirect2D::restore): Update to use m_stateStack, rather than
the m_renderStates vector.
(WebCore::PlatformContextDirect2D::save): Ditto.
(WebCore::PlatformContextDirect2D::pushRenderClip): Ditto.
(WebCore::PlatformContextDirect2D::setActiveLayer): Ditto.
(WebCore::PlatformContextDirect2D::endDraw): Ditto.
(WebCore::PlatformContextDirect2D::notifyPostDrawObserver): Ditto.
(WebCore::PlatformContextDirect2D::pushClip): Ditto.
* platform/graphics/win/PlatformContextDirect2D.h:
(WebCore::PlatformContextDirect2D::hasSavedState const):
(WebCore::PlatformContextDirect2D::clipLayer const): Deleted.
2019-09-20 Antoine Quint <graouts@apple.com>
releasePointerCapture() not working for implicit capture; can't opt-in to pointerenter/leave for touches
https://bugs.webkit.org/show_bug.cgi?id=199803
<rdar://problem/53127223>
Reviewed by Dean Jackson.
In order to dispatch boundary events (pointerover/out/enter/leave) when the implicit pointer capture is released on iOS,
we need to track the target of the pointer events that was dispatched last for a given pointer id. Then we compare that
target with the current target when dispatching a new pointer event and determine whether we should dispatch boundary
events using the exact same approach used to dispatch mouse boundary events in EventHandler::updateMouseEventTargetNode().
Tests: pointerevents/ios/boundary-events-through-hierarchy-without-pointer-capture.html
pointerevents/ios/boundary-events-without-pointer-capture.html
* page/PointerCaptureController.cpp:
(WebCore::hierarchyHasCapturingEventListeners):
(WebCore::PointerCaptureController::dispatchEventForTouchAtIndex):
(WebCore::PointerCaptureController::pointerEventWillBeDispatched):
(WebCore::PointerCaptureController::ensureCapturingDataForPointerEvent):
(WebCore::PointerCaptureController::cancelPointer):
* page/PointerCaptureController.h:
2019-09-21 Zalan Bujtas <zalan@apple.com>
[LFC] LayoutContext::m_formattingContextRootListForLayout should be a WeakHashSet
https://bugs.webkit.org/show_bug.cgi?id=202068
<rdar://problem/55579352>
Reviewed by Alex Christensen.
* layout/LayoutContext.cpp:
(WebCore::Layout::LayoutContext::layout):
(WebCore::Layout::LayoutContext::styleChanged):
(WebCore::Layout::LayoutContext::markNeedsUpdate):
* layout/LayoutContext.h:
* page/FrameViewLayoutContext.cpp:
(WebCore::layoutUsingFormattingContext):
2019-09-19 Andy Estes <aestes@apple.com>
[Apple Pay] Clean up handling of summary items and payment method updates
https://bugs.webkit.org/show_bug.cgi?id=202018
<rdar://problem/55470632>
Reviewed by Tim Horton.
Replaced the PaymentMethodUpdate struct with a class that knows how to convert from
ApplePayPaymentMethodUpdate structs to PKPaymentRequestPaymentMethodUpdate instances.
Moved some scattered-around free functions for converting payment summary items into
PaymentSummaryItems{.h,Cocoa.mm}.
* Modules/applepay/ApplePayPaymentMethodUpdate.h:
* Modules/applepay/ApplePaySession.cpp:
(WebCore::finishConverting):
(WebCore::convertAndValidateTotal):
(WebCore::convertAndValidate):
* Modules/applepay/ApplePaySessionPaymentRequest.h:
* Modules/applepay/PaymentCoordinator.h:
* Modules/applepay/PaymentCoordinatorClient.h:
* Modules/applepay/PaymentHeaders.h:
* Modules/applepay/PaymentMethodUpdate.h: Added.
* Modules/applepay/PaymentSummaryItems.h: Added.
* Modules/applepay/cocoa/PaymentMethodUpdateCocoa.mm: Added.
(WebCore::PaymentMethodUpdate::PaymentMethodUpdate):
(WebCore::PaymentMethodUpdate::totalAndLineItems const):
(WebCore::PaymentMethodUpdate::platformUpdate const):
* Modules/applepay/cocoa/PaymentSummaryItemsCocoa.mm: Added.
(WebCore::toDecimalNumber):
(WebCore::toPKPaymentSummaryItemType):
(WebCore::toPKPaymentSummaryItem):
(WebCore::platformSummaryItems):
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
(WebCore::ApplePayPaymentHandler::paymentMethodUpdated):
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* testing/MockPaymentCoordinator.cpp:
(WebCore::MockPaymentCoordinator::completePaymentMethodSelection):
2019-09-20 Said Abou-Hallawa <sabouhallawa@apple.com>
Assertion fires when animating a discrete property with values range and multiple animators
https://bugs.webkit.org/show_bug.cgi?id=201926
Reviewed by Darin Adler.
The first animator of a property is considered the result element. The
other animators will be just contributers to the first animator. For the
first animator and in SVGSMILElement::progress(), we call resetAnimatedType()
which creates m_animator in SVGAnimateElementBase::animator(). But for
the other animators we do not call resetAnimatedType(). So their m_animator
will stay null until they are used for the first time.
If SVGAnimationElement::startedActiveInterval() calls calculateToAtEndOfDurationValue()
for a discrete property this will have no effect and the call should be
ignored. So SVGAnimateElementBase::calculateToAtEndOfDurationValue()
should bail out early if isDiscreteAnimator() is true.
The bug is isDiscreteAnimator() will return false if the m_animator is
null even if the animated property is discrete, e.g. SVGAnimatedString.
The fix is to make isDiscreteAnimator() ensure m_animator is created.
Unrelated change:
Make most of the protected methods of SVGAnimateElementBase be private.
Test: svg/animations/multiple-discrete-values-animate.svg
* svg/SVGAnimateElementBase.cpp:
(WebCore::SVGAnimateElementBase::calculateFromAndByValues):
(WebCore::SVGAnimateElementBase::calculateToAtEndOfDurationValue):
2019-09-20 Keith Rollin <krollin@apple.com>
Remove dead code for a specific macOS and iOS SDK
https://bugs.webkit.org/show_bug.cgi?id=202054
<rdar://problem/55569619>
Reviewed by Zalan Bujtas.
ComplexTextController::collectComplexTextRunsForCharacters in
ComplexTextControllerCoreText.mm has some code for compatibility with
specifically macOS 10.14.0 and iOS 12.0 (see Bug 186571). We don't
build for these targets any more (when we build for macOS 10.14, it's
for a later minor revision), so this code can be removed.
No new tests -- no new or changed functionality.
* platform/graphics/mac/ComplexTextControllerCoreText.mm:
(WebCore::ComplexTextController::collectComplexTextRunsForCharacters):
2019-09-20 Alex Christensen <achristensen@webkit.org>
Remove unnecessary abstractions around WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=201655
Reviewed by Chris Dumez.
* Modules/webdatabase/cocoa/DatabaseManagerCocoa.mm:
(WebCore::DatabaseManager::platformInitialize):
2019-09-20 Alex Christensen <achristensen@webkit.org>
[resource-timing] Report performance entries with all HTTP status codes
https://bugs.webkit.org/show_bug.cgi?id=202040
Reviewed by Joseph Pecoraro.
This follows a Chromium change at https://chromium-review.googlesource.com/c/chromium/src/+/1796544
The spec change is being discussed at https://github.com/w3c/resource-timing/issues/165
Test: imported/w3c/web-platform-tests/resource-timing/status-codes-create-entry.html
I had to slightly modify the test to make sure the entry count was > 0 instead of == 1 to reduce flakyness because sometimes we load the 200 image twice.
I'll submit a PR to WPT, too.
* loader/ResourceTimingInformation.cpp:
(WebCore::ResourceTimingInformation::shouldAddResourceTiming):
2019-09-20 Keith Rollin <krollin@apple.com>
Remove check of setSourceAppPid selector that's no longer needed
https://bugs.webkit.org/show_bug.cgi?id=201971
<rdar://problem/55505761>
Reviewed by Andy Estes.
Bug 172152 introduced a check of the NEFilterSource selector
setSourceAppPid in order to support OS's that didn't support it. All
supported Cocoa platforms now support it, so the check can be removed.
No new tests -- no new or changed functionality.
* platform/cocoa/NetworkExtensionContentFilter.mm:
(WebCore::NetworkExtensionContentFilter::initialize):
2019-09-20 Keith Rollin <krollin@apple.com>
Remove some support for < iOS 13
https://bugs.webkit.org/show_bug.cgi?id=201967
<rdar://problem/55504738>
Reviewed by Andy Estes.
Remove some support for iOS versions less than 13.0.
Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED
and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have
values >= 130000. This means that expressions like
"__IPHONE_OS_VERSION_MIN_REQUIRED < 101300" are always False and
"__IPHONE_OS_VERSION_MIN_REQUIRED >= 101300" are always True.
After version checks have been removed, there are some cases where the
preprocessor conditional looks like "#if PLATFORM(MAC) ||
PLATFORM(IOS_FAMILY)". These can be collapsed into "#if
PLATFORM(COCOA)". This additional cleanup will be performed in a
subsequent patch.
This removal is part of a series of patches effecting the removal of
dead code for old versions of iOS. This particular pass involves
changes in which Andy Estes was involved. These changes are isolated
from other similar changes in order to facilitate the reviewing
process.
No new tests -- no new or changed functionality.
* platform/cocoa/NetworkExtensionContentFilter.mm:
(WebCore::NetworkExtensionContentFilter::initialize):
2019-09-20 Chris Dumez <cdumez@apple.com>
Document no longer needs to store a SessionID
https://bugs.webkit.org/show_bug.cgi?id=202024
Reviewed by Geoffrey Garen.
Document no longer needs to store a SessionID, now that we have a single
session per WebProcess. It can simply get its sessionID from its Page.
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::create):
* Modules/websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::didOpenSocketStream):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
* dom/DOMImplementation.cpp:
(WebCore::createXMLDocument):
(WebCore::DOMImplementation::createDocument):
(WebCore::DOMImplementation::createHTMLDocument):
* dom/DOMImplementation.h:
* dom/Document.cpp:
(WebCore::Document::Document):
(WebCore::m_undoManager):
(WebCore::Document::create):
(WebCore::Document::createNonRenderedPlaceholder):
(WebCore::Document::cloneDocumentWithoutChildren const):
(WebCore::Document::sessionID const):
(WebCore::Document::privateBrowsingStateDidChange):
(WebCore::Document::ensureTemplateDocument):
(WebCore::Document::logger):
(WebCore::Document::didLogMessage):
* dom/Document.h:
(WebCore::Document::create):
* dom/XMLDocument.h:
(WebCore::XMLDocument::create):
(WebCore::XMLDocument::createXHTML):
(WebCore::XMLDocument::XMLDocument):
* html/FTPDirectoryDocument.cpp:
(WebCore::FTPDirectoryDocument::FTPDirectoryDocument):
* html/FTPDirectoryDocument.h:
* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::parseAdClickAttribution const):
* html/HTMLDocument.cpp:
(WebCore::HTMLDocument::createSynthesizedDocument):
(WebCore::HTMLDocument::HTMLDocument):
(WebCore::HTMLDocument::cloneDocumentWithoutChildren const):
* html/HTMLDocument.h:
(WebCore::HTMLDocument::create):
* html/ImageDocument.cpp:
(WebCore::ImageDocument::ImageDocument):
* html/MediaDocument.cpp:
(WebCore::MediaDocument::MediaDocument):
* html/MediaDocument.h:
* html/PluginDocument.cpp:
(WebCore::PluginDocument::PluginDocument):
* html/TextDocument.cpp:
(WebCore::TextDocument::TextDocument):
* html/TextDocument.h:
* inspector/DOMPatchSupport.cpp:
(WebCore::DOMPatchSupport::patchDocument):
* loader/CookieJar.cpp:
(WebCore::CookieJar::cookieRequestHeaderFieldProxy):
(WebCore::CookieJar::cookieRequestHeaderFieldValue const):
* loader/CookieJar.h:
* loader/DocumentWriter.cpp:
(WebCore::DocumentWriter::createDocument):
* loader/SinkDocument.cpp:
(WebCore::SinkDocument::SinkDocument):
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::setResponse):
(WebCore::CachedResource::varyHeaderValuesMatch):
* loader/cache/CachedSVGDocument.cpp:
(WebCore::CachedSVGDocument::finishLoading):
* loader/cache/CachedSVGFont.cpp:
(WebCore::CachedSVGFont::ensureCustomFontData):
* page/Page.cpp:
(WebCore::Page::configureLoggingChannel):
* platform/network/CacheValidation.cpp:
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::collectVaryingRequestHeaders):
(WebCore::verifyVaryingRequestHeaders):
* platform/network/CacheValidation.h:
* svg/SVGDocument.cpp:
(WebCore::SVGDocument::SVGDocument):
(WebCore::SVGDocument::cloneDocumentWithoutChildren const):
* svg/SVGDocument.h:
(WebCore::SVGDocument::create):
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::isAlwaysOnLoggingAllowed const):
* worklets/WorkletGlobalScope.cpp:
(WebCore::WorkletGlobalScope::WorkletGlobalScope):
* worklets/WorkletGlobalScope.h:
* xml/DOMParser.cpp:
(WebCore::DOMParser::parseFromString):
* xml/DOMParser.h:
* xml/DOMParser.idl:
* xml/XMLHttpRequest.cpp:
* xml/XSLTProcessor.cpp:
(WebCore::XSLTProcessor::createDocumentFromSource):
2019-09-20 Said Abou-Hallawa <sabouhallawa@apple.com>
[SVG2]: Add auto behavior for rx and ry to the SVG <ellipse> and <rect> elements (Addressing review comments)
https://bugs.webkit.org/show_bug.cgi?id=199843
Reviewed by Darin Adler.
Make RenderSVGEllipse calculate of the ellipse's rx and ry more efficiently.
* rendering/svg/RenderSVGEllipse.cpp:
(WebCore::RenderSVGEllipse::calculateRadiiAndCenter):
2019-09-20 Keith Rollin <krollin@apple.com>
Remove some support for < iOS 13
https://bugs.webkit.org/show_bug.cgi?id=202032
<rdar://problem/55548468>
Reviewed by Alex Christensen.
Remove some support for iOS versions less than 13.0.
Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED
and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have
values >= 130000. This means that expressions like
"__IPHONE_OS_VERSION_MIN_REQUIRED < 101300" are always False and
"__IPHONE_OS_VERSION_MIN_REQUIRED >= 101300" are always True.
This removal is part of a series of patches effecting the removal of
dead code for old versions of iOS. This particular pass involves
changes in which Dan Bates was involved. These changes are isolated
from other similar changes in order to facilitate the reviewing
process.
No new tests -- no new or changed functionality.
* platform/network/cf/ResourceRequestCFNet.cpp:
(WebCore::ResourceRequest::doUpdatePlatformRequest):
(WebCore::ResourceRequest::doUpdateResourceRequest):
* platform/network/cocoa/CookieCocoa.mm:
(WebCore::Cookie::operator NSHTTPCookie * _Nullable const):
* platform/network/cocoa/ResourceRequestCocoa.mm:
(WebCore::ResourceRequest::doUpdateResourceRequest):
(WebCore::ResourceRequest::doUpdatePlatformRequest):
2019-09-20 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r250114.
Broke ~16 webgpu/ tests on Mojave wk2
Reverted changeset:
"Web Inspector: Canvas: show WebGPU shader pipelines"
https://bugs.webkit.org/show_bug.cgi?id=201675
https://trac.webkit.org/changeset/250114
2019-09-20 Antti Koivisto <antti@apple.com>
Implement Position::upstream and Position::downstream with line layout iterator
https://bugs.webkit.org/show_bug.cgi?id=202043
Reviewed by Zalan Bujtas.
These can eventually work without switching to lineboxes.
* dom/Position.cpp:
(WebCore::Position::upstream const):
(WebCore::Position::downstream const):
Factor the loops into TextBox::isLastOnLine function.
* rendering/line/LineLayoutInterfaceTextBoxes.cpp:
(WebCore::LineLayoutInterface::TextBox::isLastOnLine const):
Looking into root boxes is a much more efficient way to figure this out.
(WebCore::LineLayoutInterface::TextBox::isLast const):
(WebCore::LineLayoutInterface::TextBoxIterator::ComplexPath::nextInlineTextBoxInTextOrder const):
(WebCore::LineLayoutInterface::TextBoxIterator::traverseNextInTextOrder):
* rendering/line/LineLayoutInterfaceTextBoxes.h:
2019-09-20 Zalan Bujtas <zalan@apple.com>
[LFC] Introduce LayoutContext class
https://bugs.webkit.org/show_bug.cgi?id=202026
<rdar://problem/55546622>
Reviewed by Antti Koivisto.
Move context related functionality from LayoutState to LayoutContext.
To initiate a layout, create a LayoutContext, pass the current LayoutState object in and call layout().
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::layoutOutOfFlowContent):
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
* layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::createFormattingStateForFormattingRootIfNeeded):
(WebCore::Layout::LayoutState::updateLayout): Deleted.
(WebCore::Layout::LayoutState::layoutFormattingContextSubtree): Deleted.
(WebCore::Layout::LayoutState::styleChanged): Deleted.
(WebCore::Layout::LayoutState::markNeedsUpdate): Deleted.
(WebCore::Layout::LayoutState::createFormattingContext): Deleted.
(WebCore::Layout::LayoutState::run): Deleted.
* layout/LayoutState.h:
(WebCore::Layout::LayoutState::hasFormattingState const):
(WebCore::Layout::LayoutState::setQuirksMode):
(WebCore::Layout::LayoutState::inNoQuirksMode const):
(WebCore::Layout::LayoutState::updateAll): Deleted.
* layout/Verification.cpp:
(WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree):
(WebCore::Layout::LayoutState::verifyAndOutputMismatchingLayoutTree const): Deleted.
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::intrinsicWidthConstraints):
* layout/blockformatting/BlockInvalidation.cpp:
(WebCore::Layout::computeUpdateType):
(WebCore::Layout::computeUpdateTypeForAncestor):
(WebCore::Layout::BlockInvalidation::invalidate):
* layout/blockformatting/BlockInvalidation.h:
* layout/displaytree/DisplayBox.h:
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot):
* layout/inlineformatting/InlineInvalidation.cpp:
(WebCore::Layout::InlineInvalidation::invalidate):
* layout/inlineformatting/InlineInvalidation.h:
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::printLayoutTreeForLiveDocuments):
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::layoutTableCellBox):
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns):
* layout/tableformatting/TableInvalidation.cpp:
(WebCore::Layout::TableInvalidation::invalidate):
* layout/tableformatting/TableInvalidation.h:
* page/FrameViewLayoutContext.cpp:
(WebCore::layoutUsingFormattingContext):
2019-09-19 Joonghun Park <pjh0718@gmail.com>
Unreviewed. Fix Build error below since r248879.
warning: unused variable ‘canvas’ [-Wunused-variable]
No new tests, no new behavioral changes.
* html/canvas/GPUBasedCanvasRenderingContext.cpp:
(WebCore::GPUBasedCanvasRenderingContext::notifyCanvasContentChanged):
2019-09-19 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: show WebGPU shader pipelines
https://bugs.webkit.org/show_bug.cgi?id=201675
Reviewed by Joseph Pecoraro.
Tests: inspector/canvas/requestShaderSource-webgpu.html
inspector/canvas/shaderProgram-add-remove-webgpu.html
inspector/canvas/updateShader-webgpu.html
Create common base classes for `WebGPUPipeline` and `GPUPipeline` so that Web Inspector can
instrument both render and compute shader pipelines.
Refactor `InspectorShaderProgram` to support both `WebGLProgram` and `WebGPUPipeline` so
that the same object can be used for all types of shader "program"s.
Keep a copy of each shader module's source, and allow the shader module to be updated.
* Modules/webgpu/WebGPUDevice.h:
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createShaderModule const):
(WebCore::WebGPUDevice::createRenderPipeline): Added.
(WebCore::WebGPUDevice::createComputePipeline): Added.
(WebCore::WebGPUDevice::createRenderPipeline const): Deleted.
(WebCore::WebGPUDevice::createComputePipeline const): Deleted.
* Modules/webgpu/WebGPUPipeline.h: Added.
(WebCore::WebGPUPipeline::isRenderPipeline const):
(WebCore::WebGPUPipeline::isComputePipeline const):
(WebCore::WebGPUPipeline::scriptExecutionContext const):
* Modules/webgpu/WebGPUPipeline.cpp: Added.
(WebCore::WebGPUPipeline::instancesMutex):
(WebCore::WebGPUPipeline::WebGPUPipeline):
(WebCore::WebGPUPipeline::~WebGPUPipeline):
* platform/graphics/gpu/GPUPipeline.cpp: Added.
* platform/graphics/gpu/GPUPipeline.h: Added.
(WebCore::GPUPipeline::isRenderPipeline const):
(WebCore::GPUPipeline::isComputePipeline const):
* Modules/webgpu/WebGPUComputePipeline.idl:
* Modules/webgpu/WebGPUComputePipeline.h:
(WebCore::WebGPUComputePipeline::computePipeline const): Deleted.
* Modules/webgpu/WebGPUComputePipeline.cpp:
(WebCore::WebGPUComputePipeline::create):
(WebCore::WebGPUComputePipeline::WebGPUComputePipeline):
(WebCore::WebGPUComputePipeline::recompile): Added.
* platform/graphics/gpu/GPUComputePipeline.h:
(WebCore::GPUComputePipeline::isComputePipeline): Added.
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm:
(WebCore::GPUComputePipeline::tryCreate):
(WebCore::GPUComputePipeline::GPUComputePipeline):
(WebCore::GPUComputePipeline::recompile): Added.
* Modules/webgpu/WebGPURenderPipeline.idl:
* Modules/webgpu/WebGPURenderPipeline.h:
(WebCore::WebGPURenderPipeline::renderPipeline const): Deleted.
* Modules/webgpu/WebGPURenderPipeline.cpp:
(WebCore::WebGPURenderPipeline::create):
(WebCore::WebGPURenderPipeline::WebGPURenderPipeline):
(WebCore::WebGPURenderPipeline::recompile): Added.
* platform/graphics/gpu/GPURenderPipeline.h:
(WebCore::GPURenderPipeline::isRenderPipeline): Added.
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::tryCreateMtlRenderPipelineState):
(WebCore::GPURenderPipeline::tryCreate):
(WebCore::GPURenderPipeline::GPURenderPipeline):
(WebCore::GPURenderPipeline::recompile): Added.
* Modules/webgpu/WebGPUShaderModule.h:
(WebCore::WebGPUShaderModule::source const): Added.
* Modules/webgpu/WebGPUShaderModule.cpp:
(WebCore::WebGPUShaderModule::update): Added.
* Modules/webgpu/WebGPUProgrammableStageDescriptor.h:
* platform/graphics/gpu/GPUProgrammableStageDescriptor.h:
(WebCore::GPUProgrammableStageDescriptor::GPUProgrammableStageDescriptor):
* inspector/InspectorShaderProgram.h:
* inspector/InspectorShaderProgram.cpp:
(WebCore::InspectorShaderProgram::create):
(WebCore::InspectorShaderProgram::InspectorShaderProgram):
(WebCore::InspectorShaderProgram::program const): Added.
(WebCore::InspectorShaderProgram::pipeline const): Added.
(WebCore::shaderForType): Added.
(WebCore::InspectorShaderProgram::requestShaderSource): Added.
(WebCore::InspectorShaderProgram::updateShader): Added.
(WebCore::InspectorShaderProgram::context const): Deleted.
(WebCore::InspectorShaderProgram::shaderForType): Deleted.
* inspector/agents/InspectorCanvasAgent.h:
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::discardAgent):
(WebCore::InspectorCanvasAgent::enable):
(WebCore::InspectorCanvasAgent::disable):
(WebCore::InspectorCanvasAgent::requestShaderSource):
(WebCore::InspectorCanvasAgent::updateShader):
(WebCore::InspectorCanvasAgent::setShaderProgramDisabled):
(WebCore::InspectorCanvasAgent::setShaderProgramHighlighted):
(WebCore::InspectorCanvasAgent::frameNavigated):
(WebCore::InspectorCanvasAgent::didCreateWebGLProgram): Added.
(WebCore::InspectorCanvasAgent::willDestroyWebGLProgram): Added.
(WebCore::InspectorCanvasAgent::isWebGLProgramDisabled): Added.
(WebCore::InspectorCanvasAgent::isWebGLProgramHighlighted): Added.
(WebCore::InspectorCanvasAgent::didCreateWebGPUPipeline): Added.
(WebCore::InspectorCanvasAgent::willDestroyWebGPUPipeline): Added.
(WebCore::InspectorCanvasAgent::programDestroyedTimerFired): Added.
(WebCore::InspectorCanvasAgent::reset): Added.
(WebCore::InspectorCanvasAgent::unbindProgram):
(WebCore::InspectorCanvasAgent::findInspectorProgram):
(WebCore::InspectorCanvasAgent::didCreateProgram): Deleted.
(WebCore::InspectorCanvasAgent::willDeleteProgram): Deleted.
(WebCore::InspectorCanvasAgent::isShaderProgramDisabled): Deleted.
(WebCore::InspectorCanvasAgent::isShaderProgramHighlighted): Deleted.
(WebCore::InspectorCanvasAgent::clearCanvasData): Deleted.
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didCreateWebGLProgram): Added.
(WebCore::InspectorInstrumentation::willDestroyWebGLProgram): Added.
(WebCore::InspectorInstrumentation::isWebGLProgramDisabled): Added.
(WebCore::InspectorInstrumentation::isWebGLProgramHighlighted): Added.
(WebCore::InspectorInstrumentation::didCreateWebGPUPipeline): Added.
(WebCore::InspectorInstrumentation::willDestroyWebGPUPipeline): Added.
(WebCore::InspectorInstrumentation::didCreateProgram): Deleted.
(WebCore::InspectorInstrumentation::willDeleteProgram): Deleted.
(WebCore::InspectorInstrumentation::isShaderProgramDisabled): Deleted.
(WebCore::InspectorInstrumentation::isShaderProgramHighlighted): Deleted.
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didCreateWebGLProgramImpl): Added.
(WebCore::InspectorInstrumentation::willDestroyWebGLProgramImpl): Added.
(WebCore::InspectorInstrumentation::isWebGLProgramDisabledImpl): Added.
(WebCore::InspectorInstrumentation::isWebGLProgramHighlightedImpl): Added.
(WebCore::InspectorInstrumentation::didCreateWebGPUPipelineImpl): Added.
(WebCore::InspectorInstrumentation::willDestroyWebGPUPipelineImpl): Added.
(WebCore::InspectorInstrumentation::didCreateProgramImpl): Deleted.
(WebCore::InspectorInstrumentation::willDeleteProgramImpl): Deleted.
(WebCore::InspectorInstrumentation::isShaderProgramDisabledImpl): Deleted.
(WebCore::InspectorInstrumentation::isShaderProgramHighlightedImpl): Deleted.
* html/canvas/WebGLProgram.h:
* html/canvas/WebGLProgram.cpp:
(WebCore::WebGLProgram::WebGLProgram):
(WebCore::WebGLProgram::~WebGLProgram):
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::InspectorScopedShaderProgramHighlight::showHightlight):
(WebCore::WebGLRenderingContextBase::createProgram):
(WebCore::WebGLRenderingContextBase::deleteProgram):
(WebCore::WebGLRenderingContextBase::drawArrays):
(WebCore::WebGLRenderingContextBase::drawElements):
Rename WebGL program instrumentation points to be less ambiguous.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2019-09-19 Chris Dumez <cdumez@apple.com>
WorkerGlobalScope does not need a SessionID
https://bugs.webkit.org/show_bug.cgi?id=201991
Reviewed by Alex Christensen.
WorkerGlobalScope does not need a SessionID, now that we have a single session
per WebProcess.
* dom/Document.cpp:
(WebCore::Document::resume):
(WebCore::Document::privateBrowsingStateDidChange):
* dom/Document.h:
* dom/ScriptExecutionContext.h:
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::matchRegistration):
(WebCore::DocumentLoader::commitData):
(WebCore::DocumentLoader::registerTemporaryServiceWorkerClient):
(WebCore::DocumentLoader::unregisterTemporaryServiceWorkerClient):
* testing/Internals.cpp:
(WebCore::Internals::serviceWorkerClientIdentifier const):
(WebCore::Internals::storeRegistrationsOnDisk):
(WebCore::Internals::hasServiceWorkerRegistration):
(WebCore::Internals::terminateServiceWorker):
(WebCore::Internals::hasServiceWorkerConnection):
* workers/DedicatedWorkerGlobalScope.cpp:
(WebCore::DedicatedWorkerGlobalScope::create):
(WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope):
* workers/DedicatedWorkerGlobalScope.h:
* workers/DedicatedWorkerThread.cpp:
(WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
(WebCore::DedicatedWorkerThread::createWorkerGlobalScope):
* workers/DedicatedWorkerThread.h:
* workers/Worker.cpp:
(WebCore::Worker::notifyFinished):
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::WorkerGlobalScope):
* workers/WorkerGlobalScope.h:
* workers/WorkerGlobalScopeProxy.h:
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):
* workers/WorkerMessagingProxy.h:
* workers/WorkerThread.cpp:
(WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
(WebCore::WorkerThread::WorkerThread):
(WebCore::WorkerThread::workerThread):
* workers/WorkerThread.h:
* workers/service/ServiceWorker.cpp:
(WebCore::ServiceWorker::postMessage):
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::mainThreadConnection):
(WebCore::ServiceWorkerContainer::addRegistration):
(WebCore::ServiceWorkerContainer::removeRegistration):
(WebCore::ServiceWorkerContainer::updateRegistration):
(WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):
(WebCore::ServiceWorkerContainer::notifyRegistrationIsSettled):
(WebCore::ServiceWorkerContainer::jobFinishedLoadingScript):
(WebCore::ServiceWorkerContainer::notifyFailedFetchingScript):
(WebCore::ServiceWorkerContainer::ensureSWClientConnection):
* workers/service/ServiceWorkerGlobalScope.cpp:
(WebCore::ServiceWorkerGlobalScope::create):
(WebCore::ServiceWorkerGlobalScope::ServiceWorkerGlobalScope):
* workers/service/ServiceWorkerGlobalScope.h:
* workers/service/ServiceWorkerProvider.cpp:
(WebCore::ServiceWorkerProvider::mayHaveServiceWorkerRegisteredForOrigin):
(WebCore::ServiceWorkerProvider::registerServiceWorkerClients):
* workers/service/ServiceWorkerProvider.h:
* workers/service/WorkerSWClientConnection.cpp:
(WebCore::WorkerSWClientConnection::WorkerSWClientConnection):
(WebCore::WorkerSWClientConnection::matchRegistration):
(WebCore::WorkerSWClientConnection::getRegistrations):
(WebCore::WorkerSWClientConnection::whenRegistrationReady):
(WebCore::WorkerSWClientConnection::addServiceWorkerRegistrationInServer):
(WebCore::WorkerSWClientConnection::removeServiceWorkerRegistrationInServer):
(WebCore::WorkerSWClientConnection::didResolveRegistrationPromise):
(WebCore::WorkerSWClientConnection::postMessageToServiceWorker):
(WebCore::WorkerSWClientConnection::serverConnectionIdentifier const):
(WebCore::WorkerSWClientConnection::syncTerminateWorker):
(WebCore::WorkerSWClientConnection::registerServiceWorkerClient):
(WebCore::WorkerSWClientConnection::finishFetchingScriptInServer):
(WebCore::WorkerSWClientConnection::scheduleJob):
* workers/service/WorkerSWClientConnection.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::ServiceWorkerThread):
(WebCore::ServiceWorkerThread::createWorkerGlobalScope):
* workers/service/context/ServiceWorkerThread.h:
* workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy):
* workers/service/context/ServiceWorkerThreadProxy.h:
* worklets/WorkletGlobalScope.h:
(WebCore::WorkletGlobalScope::sessionID const):
* xml/DOMParser.cpp:
(WebCore::DOMParser::parseFromString):
* xml/DOMParser.h:
* xml/DOMParser.idl:
* xml/XMLHttpRequest.cpp:
2019-09-19 Said Abou-Hallawa <sabouhallawa@apple.com>
[SVG2]: Add auto behavior for rx and ry to the SVG <ellipse> and<rect> elements
https://bugs.webkit.org/show_bug.cgi?id=199843
Reviewed by Simon Fraser, Nikolas Zimmermann.
The specification is: https://www.w3.org/TR/SVG2/geometry.html#RxProperty.
Change the initial value of rx and ry to be "auto". Change the parser to
parse LengthOrAuto for these properties. Handle the case if one of them
is missing.
Tests: svg/custom/ellipse-radius-auto-dynamic.svg
svg/custom/ellipse-radius-auto-initial.svg
svg/custom/ellipse-radius-length-initial.svg
svg/custom/rect-radius-auto-dynamic.svg
svg/custom/rect-radius-auto-initial.svg
svg/custom/rect-radius-length-initial.svg
* css/CSSProperties.json:
* css/parser/CSSPropertyParser.cpp:
(WebCore::consumeRxOrRy):
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::initialRadius):
* rendering/style/SVGRenderStyleDefs.cpp:
(WebCore::StyleLayoutData::StyleLayoutData):
* rendering/svg/RenderSVGEllipse.cpp:
(WebCore::RenderSVGEllipse::calculateRadiiAndCenter):
2019-09-19 Peng Liu <peng.liu6@apple.com>
HTMLVideoElement with a broken poster image will take square dimension
https://bugs.webkit.org/show_bug.cgi?id=174122
<rdar://problem/33121806>
Reviewed by Daniel Bates.
For a video element, if only the width attribute is given and the height attribute is missing,
an invalid poster image will make its aspect ratio to be 1, which is the historical WebKit behavior
if we're painting alt text and/or a broken image. This fix prevents that behavior to impact video elements.
We add a virtual function shouldDisplayBrokenImageIcon() to RenderImage and it will return true
only when the image source is given but cannot be downloaded. RenderMedia overrides this virtual function
and always return false because it never shows the broken image icon. RenderVideo inherits
that behavior from RenderMedia.
Then, in RenderImage::computeIntrinsicRatioInformation(), we only set the aspect ratio to 1
when we need to show the broken image icon. It is the historical WebKit behavior that we want to keep
for image element, but we also want to avoid its impact (this bug) on video elements.
We also replace the imageResource().errorOccurred() with shouldDisplayBrokenImageIcon() in
TreeBuilder::createLayoutBox() for the same reason.
The logic to display the broken image icon in RenderImage::renderReplaced() is also cleaned up.
Test: media/video-poster-not-found.html
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutBox):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::shouldDisplayBrokenImageIcon const):
(WebCore::RenderImage::paintReplaced):
(WebCore::RenderImage::computeIntrinsicRatioInformation const):
* rendering/RenderImage.h:
* rendering/RenderMedia.h:
2019-09-19 Antti Koivisto <antti@apple.com>
Turn static DocumentRuleSets::s_isInvalidatingStyleWithRuleSets assertion bit into a member
https://bugs.webkit.org/show_bug.cgi?id=201985
<rdar://problem/54851871>
Reviewed by Zalan Bujtas.
This assert bit was catching cases that are not dangerous. Turn it into a member to narrow the scope.
* css/DocumentRuleSets.cpp:
(WebCore::DocumentRuleSets::~DocumentRuleSets):
(WebCore::DocumentRuleSets::collectFeatures const):
(): Deleted.
* css/DocumentRuleSets.h:
(WebCore::DocumentRuleSets::isInvalidatingStyleWithRuleSets):
* style/AttributeChangeInvalidation.cpp:
(WebCore::Style::AttributeChangeInvalidation::invalidateStyleWithRuleSets):
* style/ClassChangeInvalidation.cpp:
(WebCore::Style::ClassChangeInvalidation::invalidateStyleWithRuleSets):
2019-09-19 Zalan Bujtas <zalan@apple.com>
[LFC] Remove redundant Layout::Box::ElementTypes
https://bugs.webkit.org/show_bug.cgi?id=201963
Reviewed by Antti Koivisto.
These types can be solved through RenderStyle.
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::isPaddingApplicable const):
* layout/layouttree/LayoutBox.h:
(WebCore::Layout::Box::isTableHeader const):
(WebCore::Layout::Box::isTableBody const):
(WebCore::Layout::Box::isTableFooter const):
(WebCore::Layout::Box::isTableRow const):
(WebCore::Layout::Box::isTableColumnGroup const):
(WebCore::Layout::Box::isTableColumn const):
(WebCore::Layout::Box::isTableCell const):
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutBox):
* page/FrameViewLayoutContext.cpp:
(WebCore::layoutUsingFormattingContext):
2019-09-19 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] InlineFormattingContext::InlineLayout should not need to call LayoutState::establishedFormattingState
https://bugs.webkit.org/show_bug.cgi?id=201972
<rdar://problem/55505869>
Reviewed by Antti Koivisto.
InlineLayout has access to InlineFormattingContext, so it should just query it instead of calling LayoutState::establishedFormattingState.
* layout/inlineformatting/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::InlineLayout::formattingContext const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::formattingState):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::InlineLayout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout const): Deleted.
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const): Deleted.
2019-09-19 Zalan Bujtas <zalan@apple.com>
[LFC] FloatingContext should take the root container.
https://bugs.webkit.org/show_bug.cgi?id=201968
<rdar://problem/55505090>
Reviewed by Antti Koivisto.
Now FormattingContext::root() does not need to be public anymore.
* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::root const):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layoutInFlowContent):
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingContext::FloatingContext):
(WebCore::Layout::FloatingContext::mapPointFromFormattingContextRootToFloatingStateRoot const):
* layout/floats/FloatingContext.h:
(WebCore::Layout::FloatingContext::root const):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):
2019-09-18 Brent Fulgham <bfulgham@apple.com>
[FTW] Correct ImageBufferData and clear operations
https://bugs.webkit.org/show_bug.cgi?id=201862
Reviewed by Fujii Hironori.
This patch corrects several problems in the canvas implementation:
1. The implementation of ImageBufferDataDirect2D did not properly handle the case of a
'getData' request for less than the size of the full bitmap.
2. The implementation of 'Clear' was not correct when the size of the region to be
cleared is less than the size of the render target.
3. 'endDraw' fails if any clip regions are active at the end of the operation. The
stack needs to be unwound when endDraw is called.
This patch corrects all three problems.
Tested by canvas LayoutTests.
* platform/graphics/win/Direct2DOperations.cpp:
(WebCore::Direct2D::clearRect): Correct partial render target case.
* platform/graphics/win/ImageBufferDataDirect2D.cpp:
(WebCore::ImageBufferData::getData const): Correct partial buffer case.
(WebCore::ImageBufferData::putData): Ditto.
(WebCore::ImageBufferData::readDataFromBitmapIfNeeded): Added.
(WebCore::copyRectFromSourceToDest): Added.
(WebCore::ImageBufferData::copyRectFromSourceToData): Added.
* platform/graphics/win/PlatformContextDirect2D.cpp:
(WebCore::PlatformContextDirect2D::endDraw): Correct failures caused by
dangling clip regions when 'endDraw' is called.
(WebCore::PlatformContextDirect2D::flush): Don't call post-draw observer;
this is already handled in the draw operations, and endDraw.
(WebCore::PlatformContextDirect2D::restore): Recognize that the clip
and transparency stack might be empty when restore is called.
2019-09-18 Andy Estes <aestes@apple.com>
Unreviewed, fixed a crash in ssl/applepay/ApplePayCancelEvent.https.html
After r250060 (which landed very shortly after the patch that introduced ApplePayCancelEvent),
all Events must be IsoHeap-ed. ApplePayCancelEvent was not IsoHeap-ed, and so this caused
assertion failures in ssl/applepay/ApplePayCancelEvent.https.html.
Added the WTF_MAKE_ISO_ALLOCATED macros to ApplePayCancelEvent without a review to stop the
test from failing in EWS.
* Modules/applepay/ApplePayCancelEvent.cpp:
* Modules/applepay/ApplePayCancelEvent.h:
2019-09-18 Chris Dumez <cdumez@apple.com>
WebSocketStream does not need a SessionID
https://bugs.webkit.org/show_bug.cgi?id=201960
Reviewed by Geoffrey Garen.
WebSocketStream does not need a SessionID, now that we have a single session per WebProcess.
* platform/network/cf/SocketStreamHandleImpl.h:
* platform/network/cf/SocketStreamHandleImplCFNet.cpp:
(WebCore::SocketStreamHandleImpl::SocketStreamHandleImpl):
2019-09-18 Chris Dumez <cdumez@apple.com>
LibWebRTCProvider does not need sessionIDs anymore
https://bugs.webkit.org/show_bug.cgi?id=201959
Reviewed by Geoffrey Garen.
LibWebRTCProvider does not need sessionIDs anymore, now that we have a single session per WebProcess.
* Modules/mediastream/PeerConnectionBackend.cpp:
(WebCore::PeerConnectionBackend::registerMDNSName):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::setConfiguration):
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
2019-09-18 Zalan Bujtas <zalan@apple.com>
[LFC] FormattingContext::Geometry/MarginCollapse/Quirk classes should not need to access non-const Display::Box
https://bugs.webkit.org/show_bug.cgi?id=201944
<rdar://problem/55493279>
Reviewed by Antti Koivisto.
This patch improves const correctness so that the Geometry/MarginCollapse/Quirk objects could not access non-const Display::Boxes (to mutate the display tree).
(The MarginCollapse::Update* functions are about updating the margin values on previously processed boxes so strictly speaking they are not margin collapsing related, but they somewhat belong to the MarginCollapse class -since they deal with margins.)
* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::formattingState const):
(WebCore::Layout::FormattingContext::formattingState):
* layout/FormattingState.cpp:
(WebCore::Layout::FormattingState::displayBox):
(WebCore::Layout::FormattingState::displayBox const): Deleted.
* layout/FormattingState.h:
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
* layout/blockformatting/BlockFormattingContext.h:
(WebCore::Layout::BlockFormattingContext::formattingState const):
(WebCore::Layout::BlockFormattingContext::formattingState):
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updateMarginAfterForPreviousSibling):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updatePositiveNegativeMarginValues):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updateMarginAfterForPreviousSibling const): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginBefore): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginAfter): Deleted.
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::collectInlineContent):
(WebCore::Layout::InlineFormattingContext::collectInlineContent const): Deleted.
* layout/inlineformatting/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::formattingState const):
(WebCore::Layout::InlineFormattingContext::formattingState):
* layout/tableformatting/TableFormattingContext.h:
(WebCore::Layout::TableFormattingContext::formattingState const):
(WebCore::Layout::TableFormattingContext::formattingState):
2019-09-18 Chris Dumez <cdumez@apple.com>
BlobRegistry no longer needs SessionIDs
https://bugs.webkit.org/show_bug.cgi?id=201936
Reviewed by Geoffrey Garen.
BlobRegistry no longer needs SessionIDs, now that we have a single session per WebProcess.
* Modules/entriesapi/DOMFileSystem.cpp:
(WebCore::DOMFileSystem::getFile):
* Modules/entriesapi/DOMFileSystem.h:
* Modules/entriesapi/FileSystemFileEntry.cpp:
(WebCore::FileSystemFileEntry::file):
* Modules/entriesapi/FileSystemFileEntry.h:
* Modules/entriesapi/FileSystemFileEntry.idl:
* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::fromFormData):
* Modules/fetch/FetchBody.h:
* Modules/fetch/FetchBodyConsumer.cpp:
(WebCore::blobFromData):
(WebCore::resolveWithTypeAndData):
(WebCore::FetchBodyConsumer::resolve):
(WebCore::FetchBodyConsumer::takeAsBlob):
* Modules/fetch/FetchBodyConsumer.h:
* Modules/fetch/FetchBodyOwner.cpp:
(WebCore::FetchBodyOwner::blob):
* Modules/fetch/FetchLoader.cpp:
(WebCore::FetchLoader::~FetchLoader):
(WebCore::FetchLoader::startLoadingBlobURL):
* Modules/fetch/FetchLoader.h:
* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::putOrAddOnServer):
* Modules/mediarecorder/MediaRecorder.cpp:
(WebCore::MediaRecorder::createRecordingDataBlob):
* Modules/mediasource/MediaSourceRegistry.cpp:
(WebCore::MediaSourceRegistry::unregisterURL):
* Modules/mediasource/MediaSourceRegistry.h:
* Modules/mediastream/RTCDataChannel.cpp:
(WebCore::RTCDataChannel::didReceiveRawData):
* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::didReceiveBinaryData):
* Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
(WebCore::WorkerThreadableWebSocketChannel::Bridge::send):
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneDeserializer::readFile):
(WebCore::CloneDeserializer::readTerminal):
(WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDB):
(WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDBSynchronously):
* bindings/js/SerializedScriptValue.h:
* dom/DataTransfer.cpp:
(WebCore::DataTransfer::DataTransfer):
(WebCore::DataTransfer::createForCopyAndPaste):
(WebCore::DataTransfer::filesFromPasteboardAndItemList const):
(WebCore::DataTransfer::createForInputEvent):
(WebCore::DataTransfer::createForDrag):
(WebCore::DataTransfer::createForDragStartEvent):
(WebCore::DataTransfer::createForDrop):
(WebCore::DataTransfer::createForUpdatingDropTarget):
* dom/DataTransfer.h:
* editing/ReplaceRangeWithTextCommand.cpp:
(WebCore::ReplaceRangeWithTextCommand::inputEventDataTransfer const):
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::inputEventDataTransfer const):
* editing/SpellingCorrectionCommand.cpp:
(WebCore::SpellingCorrectionCommand::inputEventDataTransfer const):
* editing/TypingCommand.cpp:
(WebCore::TypingCommand::inputEventDataTransfer const):
* editing/WebCorePasteboardFileReader.cpp:
(WebCore::WebCorePasteboardFileReader::readFilename):
(WebCore::WebCorePasteboardFileReader::readBuffer):
* editing/WebCorePasteboardFileReader.h:
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::createFragmentForImageAttachment):
(WebCore::replaceRichContentWithAttachments):
(WebCore::createFragmentAndAddResources):
(WebCore::sanitizeMarkupWithArchive):
(WebCore::WebContentReader::readImage):
(WebCore::attachmentForFilePath):
(WebCore::attachmentForData):
* editing/markup.cpp:
(WebCore::restoreAttachmentElementsInFragment):
* fileapi/Blob.cpp:
(WebCore::BlobURLRegistry::registerURL):
(WebCore::BlobURLRegistry::unregisterURL):
(WebCore::Blob::Blob):
(WebCore::Blob::~Blob):
* fileapi/Blob.h:
(WebCore::Blob::create):
(WebCore::Blob::deserialize):
(WebCore::Blob::slice const):
* fileapi/Blob.idl:
* fileapi/File.cpp:
(WebCore::File::createWithRelativePath):
(WebCore::File::create):
(WebCore::File::File):
* fileapi/File.h:
* fileapi/File.idl:
* fileapi/FileReaderLoader.cpp:
(WebCore::FileReaderLoader::~FileReaderLoader):
(WebCore::FileReaderLoader::start):
* fileapi/FileReaderLoader.h:
* fileapi/ThreadableBlobRegistry.cpp:
(WebCore::ThreadableBlobRegistry::registerFileBlobURL):
(WebCore::ThreadableBlobRegistry::registerBlobURL):
(WebCore::ThreadableBlobRegistry::registerBlobURLOptionallyFileBacked):
(WebCore::ThreadableBlobRegistry::registerBlobURLForSlice):
(WebCore::ThreadableBlobRegistry::unregisterBlobURL):
* fileapi/ThreadableBlobRegistry.h:
* html/FileInputType.cpp:
(WebCore::FileInputType::appendFormData const):
(WebCore::FileInputType::filesChosen):
* html/FileListCreator.cpp:
(WebCore::appendDirectoryFiles):
(WebCore::FileListCreator::FileListCreator):
(WebCore::FileListCreator::createFileList):
* html/FileListCreator.h:
(WebCore::FileListCreator::create):
* html/HTMLAttachmentElement.cpp:
(WebCore::HTMLAttachmentElement::updateEnclosingImageWithData):
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::toBlob):
* html/PublicURLManager.cpp:
(WebCore::PublicURLManager::revoke):
(WebCore::PublicURLManager::stop):
* html/URLRegistry.h:
* loader/PolicyChecker.cpp:
(WebCore::PolicyChecker::extendBlobURLLifetimeIfNecessary const):
* page/EventHandler.cpp:
(WebCore::EventHandler::handleDrag):
* platform/network/BlobRegistry.h:
* testing/Internals.cpp:
(WebCore::Internals::createFile):
* testing/ServiceWorkerInternals.cpp:
(WebCore::ServiceWorkerInternals::createOpaqueWithBlobBodyResponse):
* workers/service/context/ServiceWorkerFetch.cpp:
(WebCore::ServiceWorkerFetch::dispatchFetchEvent):
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::createResponseBlob):
2019-09-18 Yusuke Suzuki <ysuzuki@apple.com>
Make all ScriptWrappable IsoHeap-ed
https://bugs.webkit.org/show_bug.cgi?id=201846
<rdar://problem/55407535>
Reviewed by Mark Lam.
This patch puts Event and derived classes under IsoHeap to make all ScriptWrappable classes IsoHeap-ed.
* Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.cpp:
* Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.h:
(WebCore::WebKitPlaybackTargetAvailabilityEvent::create): Deleted.
(WebCore::WebKitPlaybackTargetAvailabilityEvent::availability const): Deleted.
* Modules/applepay/ApplePayPaymentAuthorizedEvent.cpp:
* Modules/applepay/ApplePayPaymentAuthorizedEvent.h:
* Modules/applepay/ApplePayPaymentMethodSelectedEvent.cpp:
* Modules/applepay/ApplePayPaymentMethodSelectedEvent.h:
(WebCore::ApplePayPaymentMethodSelectedEvent::create): Deleted.
(WebCore::ApplePayPaymentMethodSelectedEvent::paymentMethod): Deleted.
* Modules/applepay/ApplePayShippingContactSelectedEvent.cpp:
* Modules/applepay/ApplePayShippingContactSelectedEvent.h:
* Modules/applepay/ApplePayShippingMethodSelectedEvent.cpp:
* Modules/applepay/ApplePayShippingMethodSelectedEvent.h:
* Modules/applepay/ApplePayValidateMerchantEvent.cpp:
* Modules/applepay/ApplePayValidateMerchantEvent.h:
(WebCore::ApplePayValidateMerchantEvent::create): Deleted.
(WebCore::ApplePayValidateMerchantEvent::validationURL const): Deleted.
* Modules/encryptedmedia/MediaKeyMessageEvent.cpp:
* Modules/encryptedmedia/MediaKeyMessageEvent.h:
* Modules/encryptedmedia/legacy/WebKitMediaKeyMessageEvent.cpp:
* Modules/encryptedmedia/legacy/WebKitMediaKeyMessageEvent.h:
(WebCore::WebKitMediaKeyMessageEvent::create): Deleted.
(WebCore::WebKitMediaKeyMessageEvent::message const): Deleted.
(WebCore::WebKitMediaKeyMessageEvent::destinationURL const): Deleted.
* Modules/encryptedmedia/legacy/WebKitMediaKeyNeededEvent.cpp:
* Modules/encryptedmedia/legacy/WebKitMediaKeyNeededEvent.h:
(WebCore::WebKitMediaKeyNeededEvent::create): Deleted.
(WebCore::WebKitMediaKeyNeededEvent::initData const): Deleted.
* Modules/gamepad/GamepadEvent.cpp:
* Modules/gamepad/GamepadEvent.h:
(WebCore::GamepadEvent::create): Deleted.
(WebCore::GamepadEvent::gamepad const): Deleted.
* Modules/indexeddb/IDBRequestCompletionEvent.cpp:
* Modules/indexeddb/IDBRequestCompletionEvent.h:
(WebCore::IDBRequestCompletionEvent::create): Deleted.
* Modules/indexeddb/IDBVersionChangeEvent.cpp:
* Modules/indexeddb/IDBVersionChangeEvent.h:
* Modules/mediarecorder/BlobEvent.cpp:
* Modules/mediarecorder/BlobEvent.h:
* Modules/mediarecorder/MediaRecorderErrorEvent.cpp:
* Modules/mediarecorder/MediaRecorderErrorEvent.h:
* Modules/mediastream/MediaStreamTrackEvent.cpp:
* Modules/mediastream/MediaStreamTrackEvent.h:
* Modules/mediastream/OverconstrainedErrorEvent.cpp: Copied from Source/WebCore/Modules/mediarecorder/BlobEvent.h.
* Modules/mediastream/OverconstrainedErrorEvent.h:
(WebCore::OverconstrainedErrorEvent::create): Deleted.
(WebCore::OverconstrainedErrorEvent::error const): Deleted.
(WebCore::OverconstrainedErrorEvent::OverconstrainedErrorEvent): Deleted.
* Modules/mediastream/RTCDTMFToneChangeEvent.cpp:
* Modules/mediastream/RTCDTMFToneChangeEvent.h:
* Modules/mediastream/RTCDataChannelEvent.cpp:
* Modules/mediastream/RTCDataChannelEvent.h:
* Modules/mediastream/RTCPeerConnectionIceEvent.cpp:
* Modules/mediastream/RTCPeerConnectionIceEvent.h:
(WebCore::RTCPeerConnectionIceEvent::url const): Deleted.
* Modules/mediastream/RTCTrackEvent.cpp:
* Modules/mediastream/RTCTrackEvent.h:
(WebCore::RTCTrackEvent::receiver const): Deleted.
(WebCore::RTCTrackEvent::track const): Deleted.
(WebCore::RTCTrackEvent::streams const): Deleted.
(WebCore::RTCTrackEvent::transceiver const): Deleted.
(WebCore::RTCTrackEvent::eventInterface const): Deleted.
* Modules/paymentrequest/MerchantValidationEvent.cpp:
* Modules/paymentrequest/MerchantValidationEvent.h:
* Modules/paymentrequest/PaymentMethodChangeEvent.cpp:
* Modules/paymentrequest/PaymentMethodChangeEvent.h:
* Modules/paymentrequest/PaymentRequestUpdateEvent.cpp:
* Modules/paymentrequest/PaymentRequestUpdateEvent.h:
* Modules/speech/SpeechSynthesisEvent.cpp:
* Modules/speech/SpeechSynthesisEvent.h:
(WebCore::SpeechSynthesisEvent::charIndex const): Deleted.
(WebCore::SpeechSynthesisEvent::elapsedTime const): Deleted.
(WebCore::SpeechSynthesisEvent::name const): Deleted.
(WebCore::SpeechSynthesisEvent::eventInterface const): Deleted.
* Modules/webaudio/AudioProcessingEvent.cpp:
* Modules/webaudio/AudioProcessingEvent.h:
* Modules/webaudio/OfflineAudioCompletionEvent.cpp:
* Modules/webaudio/OfflineAudioCompletionEvent.h:
* Modules/webgpu/GPUUncapturedErrorEvent.cpp:
* Modules/webgpu/GPUUncapturedErrorEvent.h:
* Modules/websockets/CloseEvent.cpp: Copied from Source/WebCore/dom/BeforeTextInsertedEvent.cpp.
* Modules/websockets/CloseEvent.h:
(WebCore::CloseEvent::create): Deleted.
(WebCore::CloseEvent::wasClean const): Deleted.
(WebCore::CloseEvent::code const): Deleted.
(WebCore::CloseEvent::reason const): Deleted.
(WebCore::CloseEvent::CloseEvent): Deleted.
* Modules/webvr/VRDisplayEvent.cpp:
* Modules/webvr/VRDisplayEvent.h:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* accessibility/AccessibleSetValueEvent.cpp:
* accessibility/AccessibleSetValueEvent.h:
(WebCore::AccessibleSetValueEvent::create): Deleted.
(WebCore::AccessibleSetValueEvent::value const): Deleted.
* animation/AnimationPlaybackEvent.cpp:
* animation/AnimationPlaybackEvent.h:
* bindings/js/ScriptWrappable.cpp: Copied from Source/WebCore/html/canvas/WebGLContextEvent.cpp.
* bindings/js/ScriptWrappable.h:
* dom/AnimationEvent.cpp:
* dom/AnimationEvent.h:
* dom/BeforeLoadEvent.cpp: Copied from Source/WebCore/dom/BeforeTextInsertedEvent.cpp.
* dom/BeforeLoadEvent.h:
* dom/BeforeTextInsertedEvent.cpp:
* dom/BeforeTextInsertedEvent.h:
* dom/BeforeUnloadEvent.cpp:
* dom/BeforeUnloadEvent.h:
* dom/ClipboardEvent.cpp:
* dom/ClipboardEvent.h:
* dom/CompositionEvent.cpp:
* dom/CompositionEvent.h:
* dom/CustomEvent.cpp:
* dom/CustomEvent.h:
* dom/DeviceMotionEvent.cpp:
* dom/DeviceMotionEvent.h:
* dom/DeviceOrientationEvent.cpp:
* dom/DeviceOrientationEvent.h:
* dom/ErrorEvent.cpp:
* dom/ErrorEvent.h:
* dom/Event.cpp:
* dom/Event.h:
* dom/FocusEvent.cpp:
* dom/FocusEvent.h:
* dom/HashChangeEvent.cpp: Copied from Source/WebCore/dom/BeforeTextInsertedEvent.cpp.
* dom/HashChangeEvent.h:
* dom/InputEvent.cpp:
* dom/InputEvent.h:
* dom/KeyboardEvent.cpp:
* dom/KeyboardEvent.h:
* dom/MessageEvent.cpp:
* dom/MessageEvent.h:
* dom/MouseEvent.cpp:
* dom/MouseEvent.h:
* dom/MouseRelatedEvent.cpp:
* dom/MouseRelatedEvent.h:
* dom/MutationEvent.cpp:
* dom/MutationEvent.h:
* dom/OverflowEvent.cpp:
* dom/OverflowEvent.h:
* dom/PageTransitionEvent.cpp:
* dom/PageTransitionEvent.h:
* dom/PointerEvent.cpp:
* dom/PointerEvent.h:
* dom/PopStateEvent.cpp:
* dom/PopStateEvent.h:
* dom/ProgressEvent.cpp:
* dom/ProgressEvent.h:
* dom/PromiseRejectionEvent.cpp:
* dom/PromiseRejectionEvent.h:
* dom/SecurityPolicyViolationEvent.cpp: Copied from Source/WebCore/dom/BeforeTextInsertedEvent.cpp.
* dom/SecurityPolicyViolationEvent.h:
* dom/TextEvent.cpp:
* dom/TextEvent.h:
* dom/TouchEvent.cpp:
* dom/TouchEvent.h:
* dom/TransitionEvent.cpp:
* dom/TransitionEvent.h:
* dom/UIEvent.cpp:
* dom/UIEvent.h:
* dom/UIEventWithKeyState.cpp:
* dom/UIEventWithKeyState.h:
* dom/WebKitAnimationEvent.cpp:
* dom/WebKitAnimationEvent.h:
* dom/WebKitTransitionEvent.cpp:
* dom/WebKitTransitionEvent.h:
* dom/WheelEvent.cpp:
* dom/WheelEvent.h:
* html/MediaEncryptedEvent.cpp:
* html/MediaEncryptedEvent.h:
* html/canvas/WebGLContextEvent.cpp:
* html/canvas/WebGLContextEvent.h:
* html/shadow/ProgressShadowElement.h:
* html/track/TrackEvent.cpp:
* html/track/TrackEvent.h:
* storage/StorageEvent.cpp:
* storage/StorageEvent.h:
(WebCore::StorageEvent::key const): Deleted.
(WebCore::StorageEvent::oldValue const): Deleted.
(WebCore::StorageEvent::newValue const): Deleted.
(WebCore::StorageEvent::url const): Deleted.
(WebCore::StorageEvent::storageArea const): Deleted.
* svg/SVGFEDistantLightElement.h:
* svg/SVGFEFuncAElement.h:
* svg/SVGFEFuncBElement.h:
* svg/SVGFEFuncGElement.h:
* svg/SVGFEFuncRElement.h:
* svg/SVGFEPointLightElement.h:
* svg/SVGFESpotLightElement.h:
* svg/SVGZoomEvent.cpp:
* svg/SVGZoomEvent.h:
* workers/service/ExtendableEvent.cpp:
* workers/service/ExtendableEvent.h:
* workers/service/ExtendableMessageEvent.cpp:
* workers/service/ExtendableMessageEvent.h:
* workers/service/FetchEvent.cpp:
* workers/service/FetchEvent.h:
* xml/XMLHttpRequestProgressEvent.cpp: Copied from Source/WebCore/Modules/encryptedmedia/MediaKeyMessageEvent.cpp.
* xml/XMLHttpRequestProgressEvent.h:
(WebCore::XMLHttpRequestProgressEvent::create): Deleted.
(WebCore::XMLHttpRequestProgressEvent::position const): Deleted.
(WebCore::XMLHttpRequestProgressEvent::totalSize const): Deleted.
(WebCore::XMLHttpRequestProgressEvent::XMLHttpRequestProgressEvent): Deleted.
2019-09-18 Zalan Bujtas <zalan@apple.com>
[LFC] Introduce UsedVerticalValues::Constraints
https://bugs.webkit.org/show_bug.cgi?id=201933
<rdar://problem/55487485>
Reviewed by Antti Koivisto.
UsedVerticalValues::Constraints holds the constraint values ((optional)containing block height and contentbox top) for a particular box geometry computation.
This is in preparation for using constraint values instead of querying the display tree for containing block geometry information.
See webkit.org/b/201795
* layout/FormattingContext.cpp:
(WebCore::Layout::outOfFlowHorizontalConstraints):
(WebCore::Layout::outOfFlowVerticalConstraints):
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):
(WebCore::Layout::outOfFlowConstraints): Deleted.
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::staticVerticalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):
* layout/LayoutUnits.cpp:
(WebCore::Layout::UsedVerticalValues::Constraints::Constraints):
* layout/LayoutUnits.h:
(WebCore::Layout::UsedVerticalValues::Constraints::Constraints):
(WebCore::Layout::UsedVerticalValues::UsedVerticalValues):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeStaticVerticalPosition):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::staticVerticalPosition const):
(WebCore::Layout::BlockFormattingContext::Geometry::staticPosition const):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin const):
2019-09-18 Chris Dumez <cdumez@apple.com>
Unreviewed, WinCairo build fix after r250045.
* platform/network/curl/CurlFormDataStream.cpp:
(WebCore::CurlFormDataStream::computeContentLength):
2019-09-18 Zalan Bujtas <zalan@apple.com>
[LFC] Add contentbox left constraint to UsedHorizontalValues::Constraints
https://bugs.webkit.org/show_bug.cgi?id=201923
<rdar://problem/55485796>
Reviewed by Antti Koivisto.
Pass in the contentbox left constraint value to the FormattingContext::compute*() functions so that they don't need to read the containg block's geometry.
This is in preparation for using constraint values instead of querying the display tree for containing block geometry information.
See webkit.org/b/201795
* layout/FormattingContext.cpp:
(WebCore::Layout::outOfFlowConstraints):
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::staticHorizontalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
* layout/LayoutUnits.cpp:
(WebCore::Layout::UsedHorizontalValues::Constraints::Constraints):
* layout/LayoutUnits.h:
(WebCore::Layout::UsedHorizontalValues::Constraints::Constraints):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeStaticHorizontalPosition):
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::staticHorizontalPosition const):
(WebCore::Layout::BlockFormattingContext::Geometry::staticPosition const):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns):
2019-09-18 Zalan Bujtas <zalan@apple.com>
[LFC] Introduce UsedHorizontalValues::Constraints
https://bugs.webkit.org/show_bug.cgi?id=201919
<rdar://problem/55481927>
Reviewed by Antti Koivisto.
UsedHorizontalValues::Constraints holds the constraint values for a particular box geometry computation (currently it only has the horizontal width constraint)
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):
(WebCore::Layout::FormattingContext::computeBorderAndPadding):
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inFlowPositionedPositionOffset const):
(WebCore::Layout::FormattingContext::Geometry::computedPadding const):
(WebCore::Layout::FormattingContext::Geometry::computedHorizontalMargin const):
(WebCore::Layout::FormattingContext::Geometry::computedVerticalMargin const):
* layout/FormattingContextQuirks.cpp:
(WebCore::Layout::FormattingContext::Quirks::heightValueOfNearestContainingBlockWithFixedHeight):
* layout/LayoutUnits.h:
(WebCore::Layout::UsedHorizontalValues::Constraints::Constraints):
(WebCore::Layout::UsedHorizontalValues::UsedHorizontalValues):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::placeInFlowPositionedChildren):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPosition):
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
* layout/blockformatting/BlockFormattingContextQuirks.cpp:
(WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues):
* layout/floats/FloatingContext.h:
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
(WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):
* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns):
2019-09-18 Andy Estes <aestes@apple.com>
[Apple Pay] Tell websites why a session was cancelled
https://bugs.webkit.org/show_bug.cgi?id=201912
Reviewed by Brady Eidson.
Added ApplePayCancelEvent as the interface for ApplePaySession's cancel event. This event
object includes a `sessionError` attribute that exposes a Web-safe version of the PassKit
domain error we received from PKPaymentAuthorization(View)Controller. Currently, we report
all errors with code "unknown", but more codes will be added in future patches.
Test: http/tests/ssl/applepay/ApplePayCancelEvent.https.html
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Modules/applepay/ApplePayCancelEvent.cpp: Copied from Source/WebCore/Modules/applepay/PaymentHeaders.h.
(WebCore::ApplePayCancelEvent::ApplePayCancelEvent):
(WebCore::ApplePayCancelEvent::sessionError const):
(WebCore::ApplePayCancelEvent::eventInterface const):
* Modules/applepay/ApplePayCancelEvent.h: Copied from Source/WebCore/Modules/applepay/PaymentHeaders.h.
(WebCore::ApplePayCancelEvent::create):
* Modules/applepay/ApplePayCancelEvent.idl: Copied from Source/WebCore/Modules/applepay/PaymentHeaders.h.
* Modules/applepay/ApplePaySession.cpp:
(WebCore::ApplePaySession::didCancelPaymentSession):
* Modules/applepay/ApplePaySession.h:
* Modules/applepay/ApplePaySessionError.h: Copied from Source/WebCore/Modules/applepay/PaymentHeaders.h.
* Modules/applepay/ApplePaySessionError.idl: Copied from Source/WebCore/Modules/applepay/PaymentHeaders.h.
* Modules/applepay/PaymentCoordinator.cpp:
(WebCore::PaymentCoordinator::didCancelPaymentSession):
* Modules/applepay/PaymentCoordinator.h:
* Modules/applepay/PaymentHeaders.h:
* Modules/applepay/PaymentSession.cpp:
* Modules/applepay/PaymentSession.h:
* Modules/applepay/PaymentSessionError.h: Copied from Source/WebCore/Modules/applepay/PaymentHeaders.h.
* Modules/applepay/cocoa/PaymentSessionErrorCocoa.mm: Copied from Source/WebCore/Modules/applepay/PaymentSession.h.
(WebCore::additionalError):
(WebCore::PaymentSessionError::PaymentSessionError):
(WebCore::PaymentSessionError::sessionError const):
(WebCore::PaymentSessionError::platformError const):
(WebCore::PaymentSessionError::unknownError const):
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
(WebCore::ApplePayPaymentHandler::didCancelPaymentSession):
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
* Modules/webgpu/WHLSL/WHLSLCheckTextureReferences.cpp:
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/EventNames.in:
* testing/MockPaymentCoordinator.cpp:
(WebCore::MockPaymentCoordinator::cancelPayment):
2019-09-18 Chris Dumez <cdumez@apple.com>
WebSWContextManagerConnection::installServiceWorker IPC no longer need a sessionID
https://bugs.webkit.org/show_bug.cgi?id=201882
Reviewed by Geoffrey Garen.
WebSWContextManagerConnection::installServiceWorker IPC no longer need a sessionID now that we have a single
sessionID per WebProcess.
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::installContextData):
(WebCore::SWServer::runServiceWorker):
* workers/service/server/SWServerToContextConnection.h:
2019-09-18 Chris Dumez <cdumez@apple.com>
CacheStorageProvider::createCacheStorageConnection() does not need to take in a SessionID
https://bugs.webkit.org/show_bug.cgi?id=201920
Reviewed by Geoffrey Garen.
CacheStorageProvider::createCacheStorageConnection() does not need to take in a SessionID.
This sessionID is no longer used now that we have a session per WebProcess.
* Modules/cache/CacheStorageConnection.cpp:
(WebCore::formDataSize):
(WebCore::CacheStorageConnection::computeRealBodySize):
* Modules/cache/CacheStorageConnection.h:
* Modules/cache/DOMWindowCaches.cpp:
(WebCore::DOMWindowCaches::caches const):
* Modules/cache/WorkerCacheStorageConnection.cpp:
(WebCore::WorkerCacheStorageConnection::sessionID const): Deleted.
* Modules/cache/WorkerCacheStorageConnection.h:
* fileapi/Blob.cpp:
(WebCore::Blob::size const):
* fileapi/ThreadableBlobRegistry.cpp:
(WebCore::ThreadableBlobRegistry::blobSize):
* fileapi/ThreadableBlobRegistry.h:
* loader/cache/KeepaliveRequestTracker.cpp:
(WebCore::KeepaliveRequestTracker::tryRegisterRequest):
(WebCore::KeepaliveRequestTracker::registerRequest):
(WebCore::KeepaliveRequestTracker::unregisterRequest):
* page/CacheStorageProvider.h:
(WebCore::CacheStorageProvider::createCacheStorageConnection):
* platform/network/BlobRegistry.h:
* platform/network/FormData.cpp:
(WebCore::FormDataElement::lengthInBytes const):
(WebCore::FormData::lengthInBytes const):
* platform/network/FormData.h:
* testing/Internals.cpp:
(WebCore::Internals::clearCacheStorageMemoryRepresentation):
(WebCore::Internals::cacheStorageEngineRepresentation):
(WebCore::Internals::updateQuotaBasedOnSpaceUsage):
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::createCacheStorageConnection):
* workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy):
(WebCore::ServiceWorkerThreadProxy::createCacheStorageConnection):
* workers/service/context/ServiceWorkerThreadProxy.h:
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::createRequest):
2019-09-18 Chris Dumez <cdumez@apple.com>
Drop FrameLoaderClient::sessionID()
https://bugs.webkit.org/show_bug.cgi?id=201916
Reviewed by Geoffrey Garen.
Drop FrameLoaderClient::sessionID(). The Frame can get the sessionID from its page (Which is
what the FrameLoaderClient::sessionID() ended up doing) and other call sites at WebKit2 layer
can get the sessionID from the WebProcess singleton.
* loader/EmptyClients.cpp:
* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoaderClient.h:
* page/Frame.cpp:
(WebCore::Frame::sessionID const):
2019-09-18 Chris Dumez <cdumez@apple.com>
WebSWServerToContextConnection::PostMessageToServiceWorkerClient IPC no longer needs to take a sessionID
https://bugs.webkit.org/show_bug.cgi?id=201883
Reviewed by Geoffrey Garen.
WebSWServerToContextConnection::PostMessageToServiceWorkerClient IPC no longer needs to take a sessionID,
now that we have a single session per WebProcess.
* workers/service/ServiceWorkerClient.cpp:
(WebCore::ServiceWorkerClient::postMessage):
* workers/service/context/SWContextManager.h:
2019-09-18 Russell Epstein <repstein@apple.com>
Unreviewed, rolling out r250030.
Cause of Recent Build Failures.
Reverted changeset:
"Make all ScriptWrappable IsoHeap-ed"
https://bugs.webkit.org/show_bug.cgi?id=201846
https://trac.webkit.org/changeset/250030
2019-09-18 Zalan Bujtas <zalan@apple.com>
[LFC] FormattingContext::Geometry::computedHeight* functions need containingBlockHeight only.
https://bugs.webkit.org/show_bug.cgi?id=201880
<rdar://problem/55449623>
Reviewed by Antti Koivisto.
Let's tighten the incoming vertical parameter.
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::computedHeightValue const):
(WebCore::Layout::FormattingContext::Geometry::computedMaxHeight const):
(WebCore::Layout::FormattingContext::Geometry::computedMinHeight const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):
2019-09-18 Antti Koivisto <antti@apple.com>
DocumentMarkerController should not invoke ensureLineBoxes during TextIterator traversal
https://bugs.webkit.org/show_bug.cgi?id=201911
<rdar://problem/55455458>
Reviewed by Zalan Bujtas.
DocumentMarkerController::addMarker may call ensureLineBoxes but TextIterator doesn't expect mutations during traversal.
Fix by doing range collection as a separate step.
* dom/DocumentMarkerController.cpp:
(WebCore::DocumentMarkerController::collectTextRanges):
(WebCore::DocumentMarkerController::addMarker):
(WebCore::DocumentMarkerController::addTextMatchMarker):
(WebCore::DocumentMarkerController::addDictationPhraseWithAlternativesMarker):
(WebCore::DocumentMarkerController::addDictationResultMarker):
(WebCore::DocumentMarkerController::addDraggedContentMarker):
(WebCore::DocumentMarkerController::addPlatformTextCheckingMarker):
(WebCore::DocumentMarkerController::removeMarkers):
(WebCore::DocumentMarkerController::filterMarkers):
* dom/DocumentMarkerController.h:
2019-09-18 Zalan Bujtas <zalan@apple.com>
[LFC] Shrink-to-fit-width needs the available width constraint value only
https://bugs.webkit.org/show_bug.cgi?id=201896
<rdar://problem/55465382>
Reviewed by Antti Koivisto.
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):
2019-09-18 David Kilzer <ddkilzer@apple.com>
REGRESSION (r247566): Leak of UICTFontDescriptor in WebCore::FontDatabase::InstalledFont::InstalledFont()
<https://webkit.org/b/201893>
<rdar://problem/55464115>
Reviewed by Brent Fulgham.
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontDatabase::InstalledFont::InstalledFont): Use
adoptCF() to fix the leak.
2019-09-18 Yusuke Suzuki <ysuzuki@apple.com>
Make all ScriptWrappable IsoHeap-ed
https://bugs.webkit.org/show_bug.cgi?id=201846
<rdar://problem/55407535>
Reviewed by Mark Lam.
This patch puts Event and derived classes under IsoHeap to make all ScriptWrappable classes IsoHeap-ed.
* Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.cpp:
* Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.h:
(WebCore::WebKitPlaybackTargetAvailabilityEvent::create): Deleted.
(WebCore::WebKitPlaybackTargetAvailabilityEvent::availability const): Deleted.
* Modules/applepay/ApplePayPaymentAuthorizedEvent.cpp:
* Modules/applepay/ApplePayPaymentAuthorizedEvent.h:
* Modules/applepay/ApplePayPaymentMethodSelectedEvent.cpp:
* Modules/applepay/ApplePayPaymentMethodSelectedEvent.h:
(WebCore::ApplePayPaymentMethodSelectedEvent::create): Deleted.
(WebCore::ApplePayPaymentMethodSelectedEvent::paymentMethod): Deleted.
* Modules/applepay/ApplePayShippingContactSelectedEvent.cpp:
* Modules/applepay/ApplePayShippingContactSelectedEvent.h:
* Modules/applepay/ApplePayShippingMethodSelectedEvent.cpp:
* Modules/applepay/ApplePayShippingMethodSelectedEvent.h:
* Modules/applepay/ApplePayValidateMerchantEvent.cpp:
* Modules/applepay/ApplePayValidateMerchantEvent.h:
(WebCore::ApplePayValidateMerchantEvent::create): Deleted.
(WebCore::ApplePayValidateMerchantEvent::validationURL const): Deleted.
* Modules/encryptedmedia/MediaKeyMessageEvent.cpp:
* Modules/encryptedmedia/MediaKeyMessageEvent.h:
* Modules/encryptedmedia/legacy/WebKitMediaKeyMessageEvent.cpp:
* Modules/encryptedmedia/legacy/WebKitMediaKeyMessageEvent.h:
(WebCore::WebKitMediaKeyMessageEvent::create): Deleted.
(WebCore::WebKitMediaKeyMessageEvent::message const): Deleted.
(WebCore::WebKitMediaKeyMessageEvent::destinationURL const): Deleted.
* Modules/encryptedmedia/legacy/WebKitMediaKeyNeededEvent.cpp:
* Modules/encryptedmedia/legacy/WebKitMediaKeyNeededEvent.h:
(WebCore::WebKitMediaKeyNeededEvent::create): Deleted.
(WebCore::WebKitMediaKeyNeededEvent::initData const): Deleted.
* Modules/gamepad/GamepadEvent.cpp:
* Modules/gamepad/GamepadEvent.h:
(WebCore::GamepadEvent::create): Deleted.
(WebCore::GamepadEvent::gamepad const): Deleted.
* Modules/indexeddb/IDBRequestCompletionEvent.cpp:
* Modules/indexeddb/IDBRequestCompletionEvent.h:
(WebCore::IDBRequestCompletionEvent::create): Deleted.
* Modules/indexeddb/IDBVersionChangeEvent.cpp:
* Modules/indexeddb/IDBVersionChangeEvent.h:
* Modules/mediarecorder/BlobEvent.cpp:
* Modules/mediarecorder/BlobEvent.h:
* Modules/mediarecorder/MediaRecorderErrorEvent.cpp:
* Modules/mediarecorder/MediaRecorderErrorEvent.h:
* Modules/mediastream/MediaStreamTrackEvent.cpp:
* Modules/mediastream/MediaStreamTrackEvent.h:
* Modules/mediastream/OverconstrainedErrorEvent.cpp: Copied from Source/WebCore/Modules/mediastream/RTCDataChannelEvent.h.
* Modules/mediastream/OverconstrainedErrorEvent.h:
(WebCore::OverconstrainedErrorEvent::create): Deleted.
(WebCore::OverconstrainedErrorEvent::error const): Deleted.
(WebCore::OverconstrainedErrorEvent::OverconstrainedErrorEvent): Deleted.
* Modules/mediastream/RTCDTMFToneChangeEvent.cpp:
* Modules/mediastream/RTCDTMFToneChangeEvent.h:
* Modules/mediastream/RTCDataChannelEvent.cpp:
* Modules/mediastream/RTCDataChannelEvent.h:
* Modules/mediastream/RTCPeerConnectionIceEvent.cpp:
* Modules/mediastream/RTCPeerConnectionIceEvent.h:
(WebCore::RTCPeerConnectionIceEvent::url const): Deleted.
* Modules/mediastream/RTCTrackEvent.cpp:
* Modules/mediastream/RTCTrackEvent.h:
(WebCore::RTCTrackEvent::receiver const): Deleted.
(WebCore::RTCTrackEvent::track const): Deleted.
(WebCore::RTCTrackEvent::streams const): Deleted.
(WebCore::RTCTrackEvent::transceiver const): Deleted.
(WebCore::RTCTrackEvent::eventInterface const): Deleted.
* Modules/paymentrequest/MerchantValidationEvent.cpp:
* Modules/paymentrequest/MerchantValidationEvent.h:
* Modules/paymentrequest/PaymentMethodChangeEvent.cpp:
* Modules/paymentrequest/PaymentMethodChangeEvent.h:
* Modules/paymentrequest/PaymentRequestUpdateEvent.cpp:
* Modules/paymentrequest/PaymentRequestUpdateEvent.h:
* Modules/speech/SpeechSynthesisEvent.cpp:
* Modules/speech/SpeechSynthesisEvent.h:
(WebCore::SpeechSynthesisEvent::charIndex const): Deleted.
(WebCore::SpeechSynthesisEvent::elapsedTime const): Deleted.
(WebCore::SpeechSynthesisEvent::name const): Deleted.
(WebCore::SpeechSynthesisEvent::eventInterface const): Deleted.
* Modules/webaudio/AudioProcessingEvent.cpp:
* Modules/webaudio/AudioProcessingEvent.h:
* Modules/webaudio/OfflineAudioCompletionEvent.cpp:
* Modules/webaudio/OfflineAudioCompletionEvent.h:
* Modules/webgpu/GPUUncapturedErrorEvent.cpp:
* Modules/webgpu/GPUUncapturedErrorEvent.h:
* Modules/websockets/CloseEvent.cpp: Copied from Source/WebCore/dom/BeforeTextInsertedEvent.cpp.
* Modules/websockets/CloseEvent.h:
(WebCore::CloseEvent::create): Deleted.
(WebCore::CloseEvent::wasClean const): Deleted.
(WebCore::CloseEvent::code const): Deleted.
(WebCore::CloseEvent::reason const): Deleted.
(WebCore::CloseEvent::CloseEvent): Deleted.
* Modules/webvr/VRDisplayEvent.cpp:
* Modules/webvr/VRDisplayEvent.h:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* accessibility/AccessibleSetValueEvent.cpp:
* accessibility/AccessibleSetValueEvent.h:
(WebCore::AccessibleSetValueEvent::create): Deleted.
(WebCore::AccessibleSetValueEvent::value const): Deleted.
* animation/AnimationPlaybackEvent.cpp:
* animation/AnimationPlaybackEvent.h:
* bindings/js/ScriptWrappable.cpp: Copied from Source/WebCore/html/canvas/WebGLContextEvent.cpp.
* bindings/js/ScriptWrappable.h:
* dom/AnimationEvent.cpp:
* dom/AnimationEvent.h:
* dom/BeforeLoadEvent.cpp: Copied from Source/WebCore/dom/BeforeTextInsertedEvent.cpp.
* dom/BeforeLoadEvent.h:
* dom/BeforeTextInsertedEvent.cpp:
* dom/BeforeTextInsertedEvent.h:
* dom/BeforeUnloadEvent.cpp:
* dom/BeforeUnloadEvent.h:
* dom/ClipboardEvent.cpp:
* dom/ClipboardEvent.h:
* dom/CompositionEvent.cpp:
* dom/CompositionEvent.h:
* dom/CustomEvent.cpp:
* dom/CustomEvent.h:
* dom/DeviceMotionEvent.cpp:
* dom/DeviceMotionEvent.h:
* dom/DeviceOrientationEvent.cpp:
* dom/DeviceOrientationEvent.h:
* dom/ErrorEvent.cpp:
* dom/ErrorEvent.h:
* dom/Event.cpp:
* dom/Event.h:
* dom/FocusEvent.cpp:
* dom/FocusEvent.h:
* dom/HashChangeEvent.cpp: Copied from Source/WebCore/dom/BeforeTextInsertedEvent.cpp.
* dom/HashChangeEvent.h:
* dom/InputEvent.cpp:
* dom/InputEvent.h:
* dom/KeyboardEvent.cpp:
* dom/KeyboardEvent.h:
* dom/MessageEvent.cpp:
* dom/MessageEvent.h:
* dom/MouseEvent.cpp:
* dom/MouseEvent.h:
* dom/MouseRelatedEvent.cpp:
* dom/MouseRelatedEvent.h:
* dom/MutationEvent.cpp:
* dom/MutationEvent.h:
* dom/OverflowEvent.cpp:
* dom/OverflowEvent.h:
* dom/PageTransitionEvent.cpp:
* dom/PageTransitionEvent.h:
* dom/PointerEvent.cpp:
* dom/PointerEvent.h:
* dom/PopStateEvent.cpp:
* dom/PopStateEvent.h:
* dom/ProgressEvent.cpp:
* dom/ProgressEvent.h:
* dom/PromiseRejectionEvent.cpp:
* dom/PromiseRejectionEvent.h:
* dom/SecurityPolicyViolationEvent.cpp: Copied from Source/WebCore/dom/BeforeTextInsertedEvent.cpp.
* dom/SecurityPolicyViolationEvent.h:
* dom/TextEvent.cpp:
* dom/TextEvent.h:
* dom/TouchEvent.cpp:
* dom/TouchEvent.h:
* dom/TransitionEvent.cpp:
* dom/TransitionEvent.h:
* dom/UIEvent.cpp:
* dom/UIEvent.h:
* dom/UIEventWithKeyState.cpp:
* dom/UIEventWithKeyState.h:
* dom/WebKitAnimationEvent.cpp:
* dom/WebKitAnimationEvent.h:
* dom/WebKitTransitionEvent.cpp:
* dom/WebKitTransitionEvent.h:
* dom/WheelEvent.cpp:
* dom/WheelEvent.h:
* html/MediaEncryptedEvent.cpp:
* html/MediaEncryptedEvent.h:
* html/canvas/WebGLContextEvent.cpp:
* html/canvas/WebGLContextEvent.h:
* html/shadow/ProgressShadowElement.h:
* html/track/TrackEvent.cpp:
* html/track/TrackEvent.h:
* storage/StorageEvent.cpp:
* storage/StorageEvent.h:
(WebCore::StorageEvent::key const): Deleted.
(WebCore::StorageEvent::oldValue const): Deleted.
(WebCore::StorageEvent::newValue const): Deleted.
(WebCore::StorageEvent::url const): Deleted.
(WebCore::StorageEvent::storageArea const): Deleted.
* svg/SVGFEDistantLightElement.h:
* svg/SVGFEFuncAElement.h:
* svg/SVGFEFuncBElement.h:
* svg/SVGFEFuncGElement.h:
* svg/SVGFEFuncRElement.h:
* svg/SVGFEPointLightElement.h:
* svg/SVGFESpotLightElement.h:
* svg/SVGZoomEvent.cpp:
* svg/SVGZoomEvent.h:
* workers/service/ExtendableEvent.cpp:
* workers/service/ExtendableEvent.h:
* workers/service/ExtendableMessageEvent.cpp:
* workers/service/ExtendableMessageEvent.h:
* workers/service/FetchEvent.cpp:
* workers/service/FetchEvent.h:
* xml/XMLHttpRequestProgressEvent.cpp: Copied from Source/WebCore/Modules/encryptedmedia/MediaKeyMessageEvent.cpp.
* xml/XMLHttpRequestProgressEvent.h:
(WebCore::XMLHttpRequestProgressEvent::create): Deleted.
(WebCore::XMLHttpRequestProgressEvent::position const): Deleted.
(WebCore::XMLHttpRequestProgressEvent::totalSize const): Deleted.
(WebCore::XMLHttpRequestProgressEvent::XMLHttpRequestProgressEvent): Deleted.
2019-09-18 Loïc Yhuel <loic.yhuel@softathome.com> and Fujii Hironori <Hironori.Fujii@sony.com>
JPEGImageDecoder: use libjpeg-turbo RGBA output path even for Adobe transform=0 JPEGs
https://bugs.webkit.org/show_bug.cgi?id=200163
Reviewed by Carlos Garcia Campos.
Remove the workaround for old libjpeg-turbo which doesn't support
BGRA output for Adobe transform=0 images. The bug was fixed in
libjpeg-turbo 1.2.1.
No new tests, no behavior change.
* platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
(WebCore::JPEGImageReader::decode): Removed code in #if defined(TURBO_JPEG_RGB_SWIZZLE).
(colorSpaceHasAlpha): Removed an unused inline function.
2019-09-18 Joonghun Park <jh718.park@samsung.com>
Unreviewed. Remove build warning since r248998.
This patch removes build warning below.
warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
No new tests, no behavioral change.
* platform/image-decoders/png/PNGImageDecoder.cpp:
(WebCore::PNGImageDecoder::rowAvailable):
2019-09-18 Fujii Hironori <Hironori.Fujii@sony.com>
[cairo] Incorrect targetRect in BackingStoreBackendCairoImpl::scroll
https://bugs.webkit.org/show_bug.cgi?id=201895
Reviewed by Carlos Garcia Campos.
In BackingStoreBackendCairoImpl::scroll, targetRect is calculated
wrongly by shifting maxX and maxY. Bug 59655 fixed the issue by
removing the shifting, but only for BackingStoreBackendCairoX11::scroll.
No new tests, no behavior change.
* platform/graphics/cairo/BackingStoreBackendCairoImpl.cpp:
(WebCore::BackingStoreBackendCairoImpl::scroll): Take intersection of targetRect and scrollRect.
2019-09-18 Andy Estes <aestes@apple.com>
[Cocoa] Add a WKA extension point
https://bugs.webkit.org/show_bug.cgi?id=201801
<rdar://problem/55372507>
Reviewed by Alexey Proskuryakov.
* Modules/applepay/ApplePayRequestBase.cpp:
(WebCore::requiresSupportedNetworks):
(WebCore::convertAndValidate):
2019-09-17 Chris Dumez <cdumez@apple.com>
Unreviewed, revert change that Alex mistakenly committed at the same time as r250006 and broke the build.
* page/PerformanceObserver.idl:
2019-09-17 Chris Dumez <cdumez@apple.com>
Stop calling Page::setSessionID() from WebKit2
https://bugs.webkit.org/show_bug.cgi?id=201888
Reviewed by Alex Christensen.
Stop calling Page::setSessionID() from WebKit2 since Page's sessionID can never change when
using WebKit2 (We process-swap and create a new Page in a new process when changing data
store). Instead, we now pass the sessionID ID when constructing the Page, as part of the
PageConfiguration structure.
* editing/markup.cpp:
(WebCore::createPageForSanitizingWebContent):
* loader/EmptyClients.cpp:
(WebCore::pageConfigurationWithEmptyClients):
* loader/EmptyClients.h:
* page/Page.cpp:
(WebCore::Page::Page):
(WebCore::Page::setSessionID):
* page/PageConfiguration.cpp:
(WebCore::PageConfiguration::PageConfiguration):
* page/PageConfiguration.h:
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::dataChanged):
* workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::createPageForServiceWorker):
(WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy):
2019-09-17 Mark Lam <mark.lam@apple.com>
Use constexpr instead of const in symbol definitions that are obviously constexpr.
https://bugs.webkit.org/show_bug.cgi?id=201879
Rubber-stamped by Joseph Pecoraro.
No new tests. Covered by existing tests.
* bindings/js/JSDOMConstructorBase.h:
* bindings/js/JSDOMWindowProperties.h:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GeneratePrototypeDeclaration):
* bindings/scripts/test/JS/JSTestActiveDOMObject.h:
* bindings/scripts/test/JS/JSTestEnabledBySetting.h:
* bindings/scripts/test/JS/JSTestEnabledForContext.h:
* bindings/scripts/test/JS/JSTestEventTarget.h:
* bindings/scripts/test/JS/JSTestGlobalObject.h:
* bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h:
* bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h:
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h:
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h:
* bindings/scripts/test/JS/JSTestNamedGetterCallWith.h:
* bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h:
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h:
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h:
* bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.h:
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.h:
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.h:
* bindings/scripts/test/JS/JSTestObj.h:
* bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
* bindings/scripts/test/JS/JSTestPluginInterface.h:
* bindings/scripts/test/JS/JSTestTypedefs.h:
* bridge/objc/objc_runtime.h:
* bridge/runtime_array.h:
* bridge/runtime_method.h:
* bridge/runtime_object.h:
2019-09-17 Ross Kirsling <ross.kirsling@sony.com>
Unreviewed restabilization of non-unified build.
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::resolveContext const):
* platform/win/BString.h:
* svg/PatternAttributes.h:
* svg/SVGLengthValue.cpp:
* svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
* workers/service/ServiceWorkerJob.cpp:
* workers/service/WorkerSWClientConnection.cpp:
* workers/service/server/SWServerRegistration.cpp:
2019-09-17 Keith Rollin <krollin@apple.com>
Remove some support for < iOS 12
https://bugs.webkit.org/show_bug.cgi?id=201851
<rdar://problem/55422044>
Reviewed by Jiewen Tan and Alexey Proskuryakov.
Remove some support for iOS versions less than 12.0.
Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED
and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have
values >= 120000. This means that expressions like
"__IPHONE_OS_VERSION_MIN_REQUIRED < 101200" are always False and
"__IPHONE_OS_VERSION_MIN_REQUIRED >= 101200" are always True.
This removal is part of a series of patches effecting such removal.
No new tests -- no new or changed functionality.
* crypto/mac/CryptoKeyRSAMac.cpp:
(WebCore::CryptoKeyRSA::create):
(WebCore::castDataArgumentToCCRSACryptorCreateFromDataIfNeeded): Deleted.
2019-09-17 Nikolas Zimmermann <zimmermann@kde.org>
SVG <animateMotion> does not reset the element to its first animation frame if its fill is "remove"
https://bugs.webkit.org/show_bug.cgi?id=201565
Reviewed by Said Abou-Hallawa.
Fix fill="remove" support for <animateMotion>: properly trigger visual updates.
Motion animations are implemented by provding an additional transformation on
SVGGraphicsElements: the supplementalTransform().
When an <animateMotion> element specifies fill="remove" the supplemental transform is
correctly reset, when the animation is finished. However, nobody is notified about the
change of transformation matrix. Fix by marking the target elements renderer as
setNeedsTransformUpdate() and call markForLayoutAndParentResourceInvalidation().
<animate> elements are not affected by the bug:
SVGAnimateElementBase::clearAnimatedType()
-> invokes SVGAttributeAnimator::stop()
-> invokes applyAnimatedPropertyChange() [via SVGAnimatedPropertyAnimator]
-> invokes SVGXXXElement::svgAttributeChanged().
When animating e.g. the 'transform' attribute SVGGraphicsElement::svgAttributeChanged()
will use exactly the same mechanism to trigger visul updates: first call
setNeedsTransformUpdate() on the associated renderer, followd by a call to
markForLayoutAndParentResourceInvalidation().
--> Both code paths are now consistent.
Also fixes http://web-platform-tests.live/svg/animations/animateMotion-fill-remove.html.
Tests: svg/animations/fill-remove-support.html
svg/animations/animateMotion-remove-freeze-use.svg
* svg/SVGAnimateMotionElement.cpp:
(WebCore::SVGAnimateMotionElement::clearAnimatedType): Call applyResultsToTarget().
(WebCore::SVGAnimateMotionElement::calculateAnimatedValue): Stop calling
setNeedsTransformUpdate() on the target elements renderer, since applyResultsToTarget()
is responsible for modifications of the renderer state.
(WebCore::SVGAnimateMotionElement::applyResultsToTarget): Always mark the renderer
as setNeedsTransformUpdate() when applying the results, before the call to
RenderSVGResource::markForLayoutAndParentResourceInvalidation(). This is more consistent
with respect to the code path that updates the SVGElements instances (<use> support).
2019-09-17 Andy Estes <aestes@apple.com>
[Cocoa] Add a WKA extension point
https://bugs.webkit.org/show_bug.cgi?id=201801
<rdar://problem/55372507>
Reviewed by Alexey Proskuryakov.
* Modules/applepay/ApplePayRequestBase.cpp:
(WebCore::requiresSupportedNetworks):
(WebCore::convertAndValidate):
2019-09-17 Antti Koivisto <antti@apple.com>
TextIterator should convert tabs to spaces
https://bugs.webkit.org/show_bug.cgi?id=201863
Reviewed by Zalan Bujtas.
As seen in tests
imported/w3c/web-platform-tests/innerText/getter.html
imported/w3c/web-platform-tests/html/dom/elements/the-innertext-idl-attribute/getter.html
The old simple line layout path in TextIterator used to do this.
* editing/TextIterator.cpp:
(WebCore::TextIterator::handleTextBox):
2019-09-17 Zalan Bujtas <zalan@apple.com>
[LFC[MarginCollapsing] MarginCollapse::estimatedMarginBefore should take pre-computed non-collapsed margin values.
https://bugs.webkit.org/show_bug.cgi?id=201848
<rdar://problem/55419419>
Reviewed by Antti Koivisto.
This is in preparation for using constraint values instead of querying the display tree for containing block geometry information.
See webkit.org/b/201795
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPosition):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginBefore):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginAfter):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::estimatedMarginBefore):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeIgnoringCollapsingThrough):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::collapsedVerticalValues):
2019-09-17 Zalan Bujtas <zalan@apple.com>
[First-letter] Use WeakPtr for the first-letter insertion point.
https://bugs.webkit.org/show_bug.cgi?id=201842
<rdar://problem/51373788>
Reviewed by Antti Koivisto.
The about-to-be-removed first letter renderer's sibling could potentially be destroyed too as the result of the anonymous subtree collapsing logic (when the next sibling is a generated anonymous block and it is not needed anymore.)
Test: fast/text/first-letter-with-columns-crash.html
* rendering/updating/RenderTreeBuilderFirstLetter.cpp:
(WebCore::RenderTreeBuilder::FirstLetter::updateStyle):
2019-09-17 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Cannot create EGL window surface: EGL_BAD_ALLOC
https://bugs.webkit.org/show_bug.cgi?id=201505
Reviewed by Žan Doberšek.
This happens because eglCreateWindowSurface() is called twice for the same window when not using the WPE
renderer. New versions of Mesa fail the second time with a EGL_BAD_ALLOC.
* platform/graphics/egl/GLContextEGL.cpp:
(WebCore::GLContextEGL::createWindowContext): Check surface is nullptr before falling back to use
eglCreateWindowSurface().
2019-09-17 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthn] Use WebPreferences instead of RuntimeEnabledFeatures in UIProcess
https://bugs.webkit.org/show_bug.cgi?id=198176
<rdar://problem/55285709>
Reviewed by Youenn Fablet.
No changes of behavior.
* Modules/webauthn/PublicKeyCredential.cpp:
(WebCore::PublicKeyCredential::isUserVerifyingPlatformAuthenticatorAvailable):
Resolves the promise with false immediately when the feature flag is false.
2019-09-17 Rob Buis <rbuis@igalia.com>
Access-Control-Expose-Headers parsed incorrectly
https://bugs.webkit.org/show_bug.cgi?id=172357
Reviewed by Youenn Fablet.
When parsing the list, strip HTTP spaces and verify
that the list items are valid HTTP tokens.
Behavior matches Firefox and Chrome.
Test: imported/w3c/web-platform-tests/cors/access-control-expose-headers-parsing.window.html
* platform/network/HTTPParsers.h:
(WebCore::addToAccessControlAllowList):
(WebCore::parseAccessControlAllowList):
2019-09-17 Youenn Fablet <youenn@apple.com>
Content-Type should be preserved on responses created from DOMCache
https://bugs.webkit.org/show_bug.cgi?id=201815
Reviewed by Alex Christensen.
Covered by updated test expectations
* Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::create):
Update content type when creating the response from DOMCache.
2019-09-16 Antti Koivisto <antti@apple.com>
Move code for traversing reversed text boxes from TextIterator to TextBoxIterator
https://bugs.webkit.org/show_bug.cgi?id=201819
Reviewed by Zalan Bujtas.
Handle traversal order in TextBoxIterator.
* editing/TextIterator.cpp:
(WebCore::TextIterator::handleTextNode):
(WebCore::TextIterator::handleTextBox):
(WebCore::TextIterator::handleTextNodeFirstLetter):
* editing/TextIterator.h:
* rendering/line/LineLayoutInterfaceTextBoxes.cpp:
(WebCore::LineLayoutInterface::TextBox::rect const):
(WebCore::LineLayoutInterface::TextBox::logicalRect const):
(WebCore::LineLayoutInterface::TextBox::hasHyphen const):
(WebCore::LineLayoutInterface::TextBox::isLeftToRightDirection const):
(WebCore::LineLayoutInterface::TextBox::dirOverride const):
(WebCore::LineLayoutInterface::TextBox::text const):
(WebCore::LineLayoutInterface::TextBox::localStartOffset const):
(WebCore::LineLayoutInterface::TextBox::localEndOffset const):
(WebCore::LineLayoutInterface::TextBox::length const):
(WebCore::LineLayoutInterface::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutInterface::TextBoxIterator::traverseNextInVisualOrder):
(WebCore::LineLayoutInterface::TextBoxIterator::traverseNextInTextOrder):
(WebCore::LineLayoutInterface::TextBoxIterator::operator== const):
(WebCore::LineLayoutInterface::TextBoxIterator::atEnd const):
(WebCore::LineLayoutInterface::Provider::firstTextBoxInVisualOrderFor):
(WebCore::LineLayoutInterface::Provider::firstTextBoxInTextOrderFor):
(WebCore::LineLayoutInterface::Provider::textBoxRangeFor):
* rendering/line/LineLayoutInterfaceTextBoxes.h:
(WebCore::LineLayoutInterface::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutInterface::TextBoxIterator::operator++):
(WebCore::LineLayoutInterface::Provider::firstTextBoxFor):
2019-09-16 Fujii Hironori <Hironori.Fujii@sony.com>
[WinCairo][curl] Don't compile unused CertificateCFWin.cpp
https://bugs.webkit.org/show_bug.cgi?id=201860
Reviewed by Alex Christensen.
Curl port is using ResourceHandle::setClientCertificateInfo
instead of ResourceHandle::setClientCertificate.
* PlatformWin.cmake: Added CertificateCFWin.cpp to WebCore_SOURCES only if USE_CFURLCONNECTION.
* platform/network/ResourceHandle.h: Removed an unused method setClientCertificate.
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::setClientCertificate): Deleted.
2019-09-16 Fujii Hironori <Hironori.Fujii@sony.com>
[AppleWin] Assertion failure in defaultSupportedImageTypes in UTIRegistry.cpp
https://bugs.webkit.org/show_bug.cgi?id=198286
Reviewed by Brent Fulgham.
Some image types aren't supported by CG for Windows.
No new tests, covered by existing tests.
* platform/graphics/cg/ImageSourceCGWin.cpp:
(WebCore::MIMETypeForImageType): Return the correct MIME types for
com.microsoft.cur and com.microsoft.ico.
* platform/graphics/cg/UTIRegistry.cpp:
(WebCore::defaultSupportedImageTypes): Excluded public.jpeg-2000 and public.mpo-image if PLATFORM(WIN).
2019-09-16 Fujii Hironori <Hironori.Fujii@sony.com>
[Cairo] Image::drawTiled → Cairo::drawSurface → cairo_paint_with_alpha → segfault happens in pixman
https://bugs.webkit.org/show_bug.cgi?id=201755
Reviewed by Don Olmstead.
Segmentation faults happened in pixman while painting a image. In
Cairo::drawSurface, originalSrcRect can be slightly larger than
the surface size because of floating number calculations.
Cairo::drawSurface created a subsurface which is running over the
parent surface boundaries.
* platform/graphics/cairo/CairoOperations.cpp:
(WebCore::Cairo::drawSurface): Calculated a intersection with
expandedSrcRect and the parent surface size for subsurface size.
2019-09-16 Eric Liang <ericliang@apple.com>
AX: USER: VO: Messages > Message > Shift-VO-M doesn't reveal correct actions
https://bugs.webkit.org/show_bug.cgi?id=201840
Reviewed by Chris Fleizach.
menuForEvent: expects event-position in window's space, but we pass the position in Core's space. In this case, we need to convert core's space to window's space.
Tested that existing tests passed with WK1 and WK2
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityShowContextMenu]):
2019-09-16 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthn] Support more than two FIDO protocol versions
https://bugs.webkit.org/show_bug.cgi?id=198408
<rdar://problem/51292176>
Reviewed by Chris Dumez.
Covered by new API tests.
* Modules/webauthn/fido/DeviceResponseConverter.cpp:
(fido::readCTAPGetInfoResponse):
Remove the check for the array size.
2019-09-16 Brent Fulgham <bfulgham@apple.com>
[FTW] Correct lifespan of other SharedBitmaps
https://bugs.webkit.org/show_bug.cgi?id=201800
Reviewed by Dean Jackson.
The pop-up menu code creates its own SharedBitmap in the WebContent process,
which needs to release its handle before destruction, otherwise the UIProcess
will be unable to access the GPU texture (since it will have been cleaned up).
This patch also audits other uses of SharedBitmap to make sure a similar
problem doesn't exist elsewhere.
* platform/graphics/win/Direct2DUtilities.cpp:
(WebCore::Direct2D::toDXGIDevice): Switch to IDXGIDevice1 (since that is our
minimum target DX).
(WebCore::Direct2D::factoryForDXGIDevice): Ditto.
(WebCore::Direct2D::swapChainOfSizeForWindowAndDevice): Added.
* platform/graphics/win/Direct2DUtilities.h:
* platform/graphics/win/GraphicsContextDirect2D.cpp:
(WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate): Correct
a very silly use-after-move in the implementation.
* platform/graphics/win/PlatformContextDirect2D.h:
(WebCore::PlatformContextDirect2D::d3dDevice const): Added.
(WebCore::PlatformContextDirect2D::setD3DDevice):
2019-09-16 Chris Dumez <cdumez@apple.com>
Simplify WebResourceLoadObserver now that we have one WebProcess per session
https://bugs.webkit.org/show_bug.cgi?id=201821
Reviewed by Brent Fulgham.
* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::connect):
* loader/ResourceLoadObserver.h:
(WebCore::ResourceLoadObserver::logWebSocketLoading):
(WebCore::ResourceLoadObserver::statisticsForURL):
* testing/Internals.cpp:
(WebCore::Internals::resourceLoadStatisticsForURL):
2019-09-16 ChangSeok Oh <changseok@webkit.org>
[GTK] Remove GraphicsContext3D dependency from the outside of WebGL
https://bugs.webkit.org/show_bug.cgi?id=201748
Reviewed by Alex Christensen.
This is a preliminary change to bring ANGLE support for WebGL to GTK port.
GraphicsContext3DANGLE has its own egl context but we want to make ANGLE egl context
for WebGL and other GL contexts (i.e., glx, gles/egl) for TextureMapper live together.
Mixed uses of GraphicsContext3D outside of WebGL code could cause unintended behaviors.
We want to make sure that only WebGL code uses it.
No new tests since no functionality changed.
* platform/graphics/GLContext.cpp:
* platform/graphics/GLContext.h:
* platform/graphics/glx/GLContextGLX.cpp:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::GstVideoFrameHolder::platformLayerBuffer):
(WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):
* platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:
2019-09-16 Zalan Bujtas <zalan@apple.com>
[LFC] Make the nested Geometry/MarginCollapse/Quirks c'tors private.
https://bugs.webkit.org/show_bug.cgi?id=201825
<rdar://problem/55403474>
Reviewed by Antti Koivisto.
The Geometry/MarginCollapse/Quirks objects should be constructed through the corresponding accessor functions.
This is also a preparation for being able to pass the layout box in to these stack objects and call geometry(layoutBox)->outOfFlowVerticalGeometry() vs. geometry()->outOfFlowVerticalGeometry(layoutBox).
* layout/FormattingContext.h:
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
* layout/blockformatting/BlockFormattingContextQuirks.cpp:
(WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):
* layout/inlineformatting/InlineFormattingContext.h:
* layout/tableformatting/TableFormattingContext.h:
2019-09-16 Jon Davis <jond@apple.com>
Update feature status for Battery Status API, WebGL 2, and Dialog Element
https://bugs.webkit.org/show_bug.cgi?id=201469
Reviewed by Joseph Pecoraro.
* features.json:
2019-09-16 Andres Gonzalez <andresg_22@apple.com>
Rename [WebAccessibilityObjectWrapper _accessibilityInsertText] to accessibilityInsertText to match accessibility client.
https://bugs.webkit.org/show_bug.cgi?id=201820
Reviewed by Chris Fleizach.
No new tests necessary since this is a method rename.
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityInsertText:]):
(-[WebAccessibilityObjectWrapper _accessibilityInsertText:]): Deleted.
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityInsertText:]):
(-[WebAccessibilityObjectWrapper _accessibilityInsertText:]): Deleted.
2019-09-16 Zalan Bujtas <zalan@apple.com>
[LFC] Always provide a containing block width value to compute* functions.
https://bugs.webkit.org/show_bug.cgi?id=201809
<rdar://problem/55383153>
Reviewed by Antti Koivisto.
The caller can always make a more informative decision about the default value when the containing block width is not available.
(Currently the only case is when computing the preferred width.)
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeBorderAndPadding):
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inFlowPositionedPositionOffset const):
(WebCore::Layout::FormattingContext::Geometry::computedPadding const):
(WebCore::Layout::FormattingContext::Geometry::computedHorizontalMargin const):
(WebCore::Layout::FormattingContext::Geometry::computedVerticalMargin const):
* layout/LayoutUnits.h:
(WebCore::Layout::UsedHorizontalValues::UsedHorizontalValues):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin const):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot):
(WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox):
* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):
2019-09-16 Zalan Bujtas <zalan@apple.com>
[LFC][BFC] BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin should not read containing block's width
https://bugs.webkit.org/show_bug.cgi?id=201807
<rdar://problem/55381342>
Reviewed by Antti Koivisto.
This is in preparation for using constraint values instead of querying the display tree for containing block geometry information.
See webkit.org/b/201795
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
2019-09-16 Antti Koivisto <antti@apple.com>
Eliminate separate simple line layout path from TextIterator
https://bugs.webkit.org/show_bug.cgi?id=201760
Reviewed by Zalan Bujtas.
Use the new line layout iterator to implement linebox traversal in TextIterator.
* WebCore.xcodeproj/project.pbxproj:
* editing/TextIterator.cpp:
(WebCore::TextIterator::advance):
(WebCore::TextIterator::handleTextNode):
(WebCore::TextIterator::handleTextBox):
InlineTextBox* -> LineLayoutInterface::TextBoxIterator
Delete the seperate simple line layout path.
(WebCore::TextIterator::handleTextNodeFirstLetter):
(WebCore::TextIterator::emitCharacter):
(WebCore::TextIterator::emitText):
* editing/TextIterator.h:
* rendering/RenderTreeAsText.cpp:
(WebCore::RenderTreeAsText::writeRenderObject):
(WebCore::write):
* rendering/SimpleLineLayoutResolver.cpp:
(WebCore::SimpleLineLayout::RunResolver::Iterator::Iterator):
(WebCore::SimpleLineLayout::RunResolver::Iterator::advanceLines):
* rendering/SimpleLineLayoutResolver.h:
(WebCore::SimpleLineLayout::RunResolver::Iterator::resolver const):
(WebCore::SimpleLineLayout::RunResolver::Iterator::inQuirksMode const):
(WebCore::SimpleLineLayout::RunResolver::Iterator::operator== const):
(WebCore::SimpleLineLayout::RunResolver::Iterator::simpleRun const):
Make RunResolver::Iterator copyable (so TextBoxIterator becomes copyable too).
* rendering/SimpleLineLayoutTextFragmentIterator.cpp:
(WebCore::SimpleLineLayout::TextFragmentIterator::findNextTextFragment):
* rendering/line/LineLayoutInterfaceTextBoxes.cpp:
(WebCore::LineLayoutInterface::TextBox::rect const):
(WebCore::LineLayoutInterface::TextBox::logicalRect const):
(WebCore::LineLayoutInterface::TextBox::hasHyphen const):
(WebCore::LineLayoutInterface::TextBox::isLeftToRightDirection const):
(WebCore::LineLayoutInterface::TextBox::dirOverride const):
(WebCore::LineLayoutInterface::TextBox::text const):
(WebCore::LineLayoutInterface::TextBox::localStartOffset const):
(WebCore::LineLayoutInterface::TextBox::localEndOffset const):
(WebCore::LineLayoutInterface::TextBox::length const):
Add offset and length functions.
(WebCore::LineLayoutInterface::TextBox::iterator const):
(WebCore::LineLayoutInterface::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutInterface::TextBoxIterator::traverseNext):
(WebCore::LineLayoutInterface::TextBoxIterator::operator== const):
(WebCore::LineLayoutInterface::TextBoxIterator::atEnd const):
(WebCore::LineLayoutInterface::Provider::firstTextBoxFor):
(WebCore::LineLayoutInterface::Provider::textBoxRangeFor):
(WebCore::LineLayoutInterface::Provider::iteratorForInlineTextBox):
Add Provider class for making iterators. It constructs and keeps SimpleLineLayout::Resolvers alive during traversal as needed.
* rendering/line/LineLayoutInterfaceTextBoxes.h:
(WebCore::LineLayoutInterface::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutInterface::TextBoxIterator::operator bool const):
(WebCore::LineLayoutInterface::TextBoxIterator::operator== const):
(WebCore::LineLayoutInterface::TextBoxIterator::operator!= const):
(WebCore::LineLayoutInterface::TextBoxIterator::operator* const):
(WebCore::LineLayoutInterface::TextBoxIterator::operator-> const):
Make TextBoxIterator privately inherit TextBox. This way we don't need to construct temporaries and can easily implement operator->.
(WebCore::LineLayoutInterface::TextBoxRange::TextBoxRange):
(WebCore::LineLayoutInterface::TextBoxRange::begin const):
(WebCore::LineLayoutInterface::TextBoxRange::end const):
Use separate end() type of C++17 ranges.
2019-09-16 Andres Gonzalez <andresg_22@apple.com>
Expose misspelling ranges for editable content to accessibility clients.
https://bugs.webkit.org/show_bug.cgi?id=201752
<rdar://problem/49556828>
Reviewed by Chris Fleizach.
Test: accessibility/misspelling-range.html
Added [WebAccessibilityObjectWrapper misspellingTextMarkerRange] and
underlying AccessibilityObject implementation to expose misspellings to
accessibility clients that provide an alternative user interface to
spell checking.
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::getMisspellingRange const):
* accessibility/AccessibilityObject.h:
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper misspellingTextMarkerRange:direction:]):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(accessibilityMisspellingSearchCriteriaForParameterizedAttribute):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
2019-09-15 Andy Estes <aestes@apple.com>
[WebIDL] Derived dictionaries should inherit their inherited dictionaries' partials
https://bugs.webkit.org/show_bug.cgi?id=201802
Reviewed by Sam Weinig.
Prior to this change, a dictionary D that inherits from dictionary B would not inherit B's
partial dictionaries. Fixed this by moving supplemental dependencies processing from
generate-bindings.pl to CodeGenerator.pm and reusing it in GetDictionaryByType.
Added new bindings tests.
* bindings/scripts/CodeGenerator.pm:
(new):
(ProcessDocument):
(ProcessSupplementalDependencies):
(shouldPropertyBeExposed):
(GetDictionaryByType):
* bindings/scripts/generate-bindings.pl:
(generateBindings):
(shouldPropertyBeExposed): Deleted.
* bindings/scripts/test/JS/JSTestDerivedDictionary.cpp: Added.
(WebCore::convertDictionary<TestDerivedDictionary>):
(WebCore::convertDictionaryToJS):
* bindings/scripts/test/JS/JSTestDerivedDictionary.h: Added.
* bindings/scripts/test/JS/JSTestInheritedDictionary.cpp: Added.
(WebCore::convertDictionary<TestInheritedDictionary>):
(WebCore::convertDictionaryToJS):
* bindings/scripts/test/JS/JSTestInheritedDictionary.h: Added.
* bindings/scripts/test/TestDerivedDictionary.idl: Added.
* bindings/scripts/test/TestInheritedDictionary.idl: Added.
* bindings/scripts/test/TestSupplemental.idl:
2019-09-15 David Kilzer <ddkilzer@apple.com>
Missing call to [self init] in -[WebScrollbarPartAnimation initWithScrollbar:featureToAnimate:animateFrom:animateTo:duration:]
<https://webkit.org/b/201806>
Reviewed by Simon Fraser.
* platform/mac/ScrollAnimatorMac.mm:
(-[WebScrollbarPartAnimation initWithScrollbar:featureToAnimate:animateFrom:animateTo:duration:]):
Call [self init] and return early if the result is nil.
2019-09-14 Justin Fan <justin_fan@apple.com>
[WebGPU] Make WebGPURenderPipeline and WebGPUComputePipeline inherit from GPUObjectBase
https://bugs.webkit.org/show_bug.cgi?id=201207
Reviewed by Dean Jackson.
Make remaining WebGPU "client" classes manage their error scopes, instead of the internal classes.
Matches Web/GPUBuffer, and allows "invalid" WebGPU objects to create errors.
Covered by existing tests.
* Modules/webgpu/WebGPUComputePipeline.cpp:
(WebCore::WebGPUComputePipeline::create):
(WebCore::WebGPUComputePipeline::WebGPUComputePipeline):
* Modules/webgpu/WebGPUComputePipeline.h:
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createRenderPipeline const):
(WebCore::WebGPUDevice::createComputePipeline const):
* Modules/webgpu/WebGPURenderPipeline.cpp:
(WebCore::WebGPURenderPipeline::create):
(WebCore::WebGPURenderPipeline::WebGPURenderPipeline):
* Modules/webgpu/WebGPURenderPipeline.h:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/gpu/GPUComputePipeline.h:
* platform/graphics/gpu/GPURenderPipeline.h:
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm:
(WebCore::GPUComputePipeline::tryCreate):
(WebCore::GPUComputePipeline::GPUComputePipeline):
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::GPURenderPipeline::tryCreate):
(WebCore::GPURenderPipeline::GPURenderPipeline):
2019-09-14 Yusuke Suzuki <ysuzuki@apple.com>
Retire x86 32bit JIT support
https://bugs.webkit.org/show_bug.cgi?id=201790
Reviewed by Mark Lam.
* cssjit/FunctionCall.h:
(WebCore::FunctionCall::callAndBranchOnBooleanReturnValue):
(WebCore::FunctionCall::swapArguments):
2019-09-14 Zalan Bujtas <zalan@apple.com>
[LFC] FormattingContext::Geometry::inFlowPositionedPositionOffset should not read containing block's width
https://bugs.webkit.org/show_bug.cgi?id=201797
<rdar://problem/55366244>
Reviewed by Antti Koivisto.
This is in preparation for using constraint values instead of querying the display tree for containing block geometry information.
See webkit.org/b/201795
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::inFlowPositionedPositionOffset const):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::placeInFlowPositionedChildren):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):
2019-09-14 Zalan Bujtas <zalan@apple.com>
[LFC] FormattingContext::Geometry::inlineReplacedHeightAndMargin should not read containing block's width
https://bugs.webkit.org/show_bug.cgi?id=201796
<rdar://problem/55366109>
Reviewed by Antti Koivisto.
This is in preparation for using constraint values instead of querying the display tree for containing block geometry information.
See webkit.org/b/201795
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases const):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin const):
2019-09-14 Zalan Bujtas <zalan@apple.com>
[LFC] FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry should not read containing block's width.
https://bugs.webkit.org/show_bug.cgi?id=201794
<rdar://problem/55365669>
Reviewed by Antti Koivisto.
This is in preparation for using constraint values instead of querying the display tree for containing block geometry information.
See webkit.org/b/201795
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry const):
2019-09-14 Chris Dumez <cdumez@apple.com>
newController may be moved several times under SWClientConnection::notifyClientsOfControllerChange()
https://bugs.webkit.org/show_bug.cgi?id=201792
<rdar://problem/55351284>
Reviewed by Youenn Fablet.
Stop WTFMove()'ing inside the for loop.
* workers/service/SWClientConnection.cpp:
(WebCore::SWClientConnection::notifyClientsOfControllerChange):
2019-09-14 Zalan Bujtas <zalan@apple.com>
[LFC] FormattingContext::Geometry::computedHeightValue should not read containing block's height.
https://bugs.webkit.org/show_bug.cgi?id=201791
<rdar://problem/55361695>
Reviewed by Antti Koivisto.
While sizing/positioning a particular box, we oftentimes need some containing block geometry information.
The idea here is that instead of calling formattingContext().geometry(containingBlock), these constraint values
would be pushed in to those compute* functions. It helps controlling the access to the display box tree and
prevents formatting context escaping.
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::computedHeightValue const):
(WebCore::Layout::FormattingContext::Geometry::computedMaxHeight const):
(WebCore::Layout::FormattingContext::Geometry::computedMinHeight const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
* layout/LayoutUnits.h:
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
2019-09-11 Dean Jackson <dino@apple.com>
Provide a prototype for AR QuickLook to trigger processing in the originating page
https://bugs.webkit.org/show_bug.cgi?id=201371
<rdar://54904781>
Reviewed by Simon Fraser.
* dom/Document.cpp:
(WebCore::Document::dispatchSystemPreviewActionEvent): Create and dispatch a MessageEvent.
* dom/Document.h:
* html/HTMLAnchorElement.cpp: Send along the page and frame identifiers for this
object to ensure that any reply goes to the correct place.
(WebCore::HTMLAnchorElement::handleClick):
* loader/FrameLoadRequest.h: Use the new SystemPreviewInfo type.
(WebCore::FrameLoadRequest::isSystemPreview const):
(WebCore::FrameLoadRequest::systemPreviewInfo const):
(WebCore::FrameLoadRequest::systemPreviewRect const): Deleted.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadURL):
* loader/FrameLoaderTypes.h: Provide encoders for the type.
(WebCore::SystemPreviewInfo::encode const):
(WebCore::SystemPreviewInfo::decode):
* platform/network/ResourceRequestBase.cpp: Use the new type.
(WebCore::ResourceRequestBase::isSystemPreview const):
(WebCore::ResourceRequestBase::systemPreviewInfo const):
(WebCore::ResourceRequestBase::setSystemPreviewInfo):
(WebCore::ResourceRequestBase::setSystemPreview): Deleted.
(WebCore::ResourceRequestBase::systemPreviewRect const): Deleted.
(WebCore::ResourceRequestBase::setSystemPreviewRect): Deleted.
* platform/network/ResourceRequestBase.h:
* testing/Internals.cpp: Expose the frame and page identifiers to testing.
(WebCore::Internals::frameIdentifier const):
(WebCore::Internals::pageIdentifier const):
* testing/Internals.h:
* testing/Internals.idl:
2019-09-13 Chris Dumez <cdumez@apple.com>
Crash under WebCore::firstPositionInNode()
https://bugs.webkit.org/show_bug.cgi?id=201764
<rdar://problem/54823754>
Reviewed by Wenson Hsieh and Geoff Garen.
Make sure to keep a Ref<> to the textNode when we call insertNodeAtTabSpanPosition()
or insertNodeAt().
Test: editing/firstPositionInNode-crash.html
* editing/InsertTextCommand.cpp:
(WebCore::InsertTextCommand::positionInsideTextNode):
2019-09-13 Youenn Fablet <youenn@apple.com>
Partition processes running service workers by session ID
https://bugs.webkit.org/show_bug.cgi?id=201643
Reviewed by Chris Dumez.
Move the creation of service worker context connection management to SWServer.
This allows to partition service worker context connections by registrable domain and sessionID.
WebKit2 is still responsible to create the IPC creation through a Function given to SWServer at construction
time.
SWServer now keeps a map of registrable domain -> context connection to use for running workers.
It also keeps a map of being-created connections.
In case a context connection is removed from the SWServer, the SWServer will notify all related worker instances
that they are not running. The SWServer will also recreate a context connection if needed.
This allows removing the global server context connection map.
Make SWServerToContextConnection no longer refcounted to simplify the lifetime management.
Covered by API test.
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::SWServer):
(WebCore::SWServer::tryInstallContextData):
(WebCore::SWServer::contextConnectionCreated):
(WebCore::SWServer::unregisterServiceWorkerClient):
(WebCore::SWServer::needsContextConnectionForRegistrableDomain const):
(WebCore::SWServer::addContextConnection):
(WebCore::SWServer::removeContextConnection):
(WebCore::SWServer::createContextConnection):
* workers/service/server/SWServer.h:
(WebCore::SWServer::contextConnectionForRegistrableDomain):
* workers/service/server/SWServerToContextConnection.cpp:
(WebCore::SWServerToContextConnection::SWServerToContextConnection):
(WebCore::SWServerToContextConnection::~SWServerToContextConnection):
* workers/service/server/SWServerToContextConnection.h:
* workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::contextConnection):
2019-09-13 Zalan Bujtas <zalan@apple.com>
[LFC] Do not create FormattingContext unless the root has child boxes.
https://bugs.webkit.org/show_bug.cgi?id=201766
<rdar://problem/55344449>
Reviewed by Antti Koivisto.
Just because a box establishes a formatting context, it does not necessarily mean we need to create a formatting context object for it.
The established formatting context is responsible for laying out the descendant content. The formatting context root itself is
laid out in the formatting context it lives in. So if there's no descendent content, we don't need to construct the context objects.
<body><div style="float: left;"></div></body> <- this div establishes a block formatting context (float) but it does not have any content so laying
it out simply means sizing and positioning it in the initial block formatting context.
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::FormattingContext):
(WebCore::Layout::FormattingContext::layoutOutOfFlowContent):
(WebCore::Layout::FormattingContext::mapTopToFormattingContextRoot const):
(WebCore::Layout::FormattingContext::mapLeftToFormattingContextRoot const):
(WebCore::Layout::FormattingContext::mapRightToFormattingContextRoot const):
(WebCore::Layout::FormattingContext::validateGeometryConstraintsAfterLayout const):
* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::root const):
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):
(WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
* layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::layoutFormattingContextSubtree):
(WebCore::Layout::LayoutState::establishedFormattingState const):
(WebCore::Layout::LayoutState::createFormattingStateForFormattingRootIfNeeded):
(WebCore::Layout::LayoutState::createFormattingContext):
* layout/LayoutState.h:
(WebCore::Layout::LayoutState::hasFormattingState const):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::BlockFormattingContext):
(WebCore::Layout::BlockFormattingContext::layoutInFlowContent):
(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider const):
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot):
(WebCore::Layout::BlockFormattingContext::computedIntrinsicWidthConstraints):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::intrinsicWidthConstraints):
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough const):
* layout/floats/FloatingContext.h:
(WebCore::Layout::FloatingContext::root const):
* layout/floats/FloatingState.cpp:
(WebCore::Layout::FloatingState::FloatingState):
(WebCore::Layout::FloatingState::bottom const):
(WebCore::Layout::FloatingState::top const):
* layout/floats/FloatingState.h:
(WebCore::Layout::FloatingState::create):
(WebCore::Layout::FloatingState::root const):
(WebCore::Layout::FloatingState::leftBottom const):
(WebCore::Layout::FloatingState::rightBottom const):
(WebCore::Layout::FloatingState::bottom const):
(WebCore::Layout::FloatingState::FloatItem::isDescendantOfFormattingRoot const):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::InlineFormattingContext):
(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot):
(WebCore::Layout::InlineFormattingContext::collectInlineContent const):
* layout/inlineformatting/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::InlineLayout::formattingRoot const):
* layout/inlineformatting/InlineFormattingContextQuirks.cpp:
(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::TableFormattingContext):
(WebCore::Layout::TableFormattingContext::layoutTableCellBox):
(WebCore::Layout::TableFormattingContext::setComputedGeometryForSections):
(WebCore::Layout::TableFormattingContext::ensureTableGrid):
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns):
* layout/tableformatting/TableFormattingContext.h:
2019-09-13 Ali Juma <ajuma@chromium.org>
IntersectionObserverEntry#intersectionRatio can be larger than 1
https://bugs.webkit.org/show_bug.cgi?id=200776
Reviewed by Simon Fraser.
When computing the intersection between a target and an intersection observer's
root, RenderBox::computeVisibleRectInContainer is used to map the target rect
up the containing block chain, clipping along the way. When a RenderBox has
a transform, this method expands the given rect to the enclosing rect in device
pixels. This is fine for the use case of computing an invalidation rect, but for
the intersection observer use case it means that it is possible for the computed
intersection rect to be slightly larger than the original target rect, resulting
in an intersection ratio greater than 1.
Fix this by performing a final intersection between the intersection rect as
computed above and the target rect.
Test: intersection-observer/intersection-clipped-to-target.html
* dom/Document.cpp:
(WebCore::computeIntersectionState):
2019-09-13 Nikolas Zimmermann <zimmermann@kde.org>
SMIL animations of SVG <view> element have no effect
https://bugs.webkit.org/show_bug.cgi?id=94469
Reviewed by Said Abou-Hallawa.
SMIL animations of the attributes associated with SVGViewElement work fine, but without any
visual effect. When loading an SVG document with a given fragment identifier
(e.g. test.svg#customView) where 'customView' references to an embedded SVGViewElement, the
viewBox/preserveAspectRatio settings should be taken from the SVGViewElement. Currently
there is no link between the SVGViewElement and the SVGSVGElement. The settings from the
SVGViewElement are only pasrsed onco in SVGSVGElement::scrollToFragment(). Dynamic updates
of the 'viewBox' and 'preserveAspectRatio' attributes of the SVGViewElement thus have no
visual effect, since the SVGSVGElement does not re-evaluates its viewBox.
Store a RefPtr to the currently used SVGViewElement in SVGSVGElement, and a WeakPtr back
to the SVGSVGElement that currently references the SVGViewElement. This allows us to
propagate SVGViewElement attribute changes to SVGSVGElement and re-evaluate the viewBox
stored in SVGSVGElement and trigger visual updates.
Tests: svg/custom/animation-on-view-element.html
svg/custom/multiple-view-elements.html
* svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::scrollToFragment):
* svg/SVGSVGElement.h:
* svg/SVGViewElement.cpp:
(WebCore::SVGViewElement::svgAttributeChanged): Add missing implementation, tracked by
webkit.org/b/196554. Correctly handle SVGFitToViewBox property changes. Update the viewBox
stored in the SVGSVGElement, that references the SVGViewElement. Afterwards invalidate the
renderer associated with the SVGSVGElement, which properly triggers visual updates.
* svg/SVGViewElement.h:
2019-09-13 Brent Fulgham <bfulgham@apple.com>
[FTW] ImageBuffer/ImageBufferData is highly inefficient
https://bugs.webkit.org/show_bug.cgi?id=201594
Reviewed by Said Abou-Hallawa.
My initial implementation of ImageBuffer and ImageBufferData for Direct2D involves too
much moving of data from GPU to CPU and back. We only need to make a renderable version
of the ImageBuffer when ImageBuffer::sinkIntoNativeImage or ImageBuffer::copyNativeImage
are called.
Currently, each ImageBuffer putData operation uploads the data to the GPU, and each
ImageBuffer getData pulls the data from the GPU.
This patch does the following:
1. It makes the assumption that the ID2D1Bitmap it holds is under its control (i.e.,
external draw operations do not manipulate the bitmap without marking it dirty).
2. It holds a CPU copy of the data from the ID2D1Bitmap originally used to create it.
It uses this data for all manipulations, and uploads to the bitmap only when
an ID2D1Bitmap is requested for drawing, and before a drawing operation is performed
on the associated ImageBuffer context.
3. It does not read back from the ID2D1Bitmap unless it is told that it is dirty.
4. It does not call 'ID2D1RenderTarget::SetTags' if ASSERTS are disabled because
they are costly, and don't help in release builds.
* platform/graphics/win/Direct2DOperations.cpp:
(WebCore::Direct2D::fillRect): Use new 'setTags' method.
(WebCore::Direct2D::fillRoundedRect): Ditto.
(WebCore::Direct2D::fillRectWithRoundedHole): Ditto.
(WebCore::Direct2D::fillRectWithGradient): Ditto.
(WebCore::Direct2D::fillPath): Ditto.
(WebCore::Direct2D::strokeRect): Ditto.
(WebCore::Direct2D::strokePath): Ditto.
(WebCore::Direct2D::drawPath): Ditto.
(WebCore::Direct2D::drawWithShadow): Notify observers before and after we drew.
(WebCore::Direct2D::drawWithoutShadow): Ditto.
(WebCore::Direct2D::clearRect): Use new 'setTags' method.
(WebCore::Direct2D::drawGlyphs): Ditto.
(WebCore::Direct2D::drawNativeImage): Ditto.
(WebCore::Direct2D::drawRect): Ditto.
(WebCore::Direct2D::drawLine): Ditto.
(WebCore::Direct2D::fillEllipse): Ditto.
(WebCore::Direct2D::drawEllipse): Ditto.
(WebCore::Direct2D::flush): Notify observer after we drew.
* platform/graphics/win/GradientDirect2D.cpp:
(WebCore::Gradient::fill): Don't call SetTags in non-ASSERT builds.
* platform/graphics/win/ImageBufferDataDirect2D.cpp:
(WebCore::ImageBufferData::ensureBackingStore const): Added.
(WebCore::ImageBufferData::getData const): Only read from the GPU if the in-memory
store is empty or out-of-sync.
(WebCore::ImageBufferData::putData): Mark the bitmap as out-of-sync, but don't
upload the data yet.
(WebCore::ImageBufferData::loadDataToBitmapIfNeeded): Helper function to upload data to the GPU.
(WebCore::ImageBufferData::compatibleBitmap): Only upload data if the relevant
bitmap is out of date.
* platform/graphics/win/ImageBufferDataDirect2D.h:
* platform/graphics/win/ImageBufferDirect2D.cpp:
(WebCore::ImageBuffer::ImageBuffer): Update constructor to register the ImageBufferData
lambdas as observer for draw operations.
* platform/graphics/win/PlatformContextDirect2D.cpp:
(WebCore::PlatformContextDirect2D::PlatformContextDirect2D): Update constructor to accept
lambdas to run before and after draw operations.
(WebCore::PlatformContextDirect2D::setTags): Added.
(WebCore::PlatformContextDirect2D::notifyPreDrawObserver): Added.
(WebCore::PlatformContextDirect2D::notifyPostDrawObserver): Added.
* platform/graphics/win/PlatformContextDirect2D.h:
(WebCore::PlatformContextDirect2D::PlatformContextDirect2D):
2019-09-13 Russell Epstein <repstein@apple.com>
Unreviewed, rolling out r249709.
Layout test added in this patch has been consistently failing
since it landed.
Reverted changeset:
"Option + arrow moves caret past whitespace on iOS"
https://bugs.webkit.org/show_bug.cgi?id=201575
https://trac.webkit.org/changeset/249709
2019-09-13 Zalan Bujtas <zalan@apple.com>
[LFC] Rename FormattingContext::layout to layoutInFlowContent()
https://bugs.webkit.org/show_bug.cgi?id=201763
<rdar://problem/55340435>
Reviewed by Antti Koivisto.
FormattingContext::layout() only takes care of the inflow content. Out-out-flow boxes are laid out through FormattingContext::layoutOutOfFlowContent.
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::layoutOutOfFlowContent):
* layout/FormattingContext.h:
* layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::layoutFormattingContextSubtree):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layoutInFlowContent):
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot):
(WebCore::Layout::BlockFormattingContext::layout): Deleted.
* layout/blockformatting/BlockFormattingContext.h:
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot):
(WebCore::Layout::InlineFormattingContext::layout): Deleted.
* layout/inlineformatting/InlineFormattingContext.h:
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::layoutInFlowContent):
(WebCore::Layout::TableFormattingContext::layoutTableCellBox):
(WebCore::Layout::TableFormattingContext::layout): Deleted.
* layout/tableformatting/TableFormattingContext.h:
2019-09-13 Zalan Bujtas <zalan@apple.com>
[LFC] FormattingContext::displayBoxForLayoutBox should be split into 2 functions
https://bugs.webkit.org/show_bug.cgi?id=201754
<rdar://problem/55328753>
Reviewed by Antti Koivisto.
1. FormattingContext::geometryForBox() returns a const Display::Box. Use this function to access
already computed geometry such as the containing block's content box width.
This function can escape the current formatting context in certain cases and read geometry from parent/ancestor formatting contexts.
2. FormattingState::displayBox() returns a non-const version of the Display::Box. Use this function to
create/get the display box of a particular layout box to set computed values. This call should never escape the
current formatting context (as no one should mutate ancestor boxes).
Normally while laying out a particular box, we need to collect some geometry information from other boxes in the tree like previous sibling, containing block.
<div style="width: 100px"><div></div></div> <- the inner div's used width is based on the outer div's width.
However we should never mutate the geometry information on those other boxes (outer div). This patch helps avoiding accidental mutation on ancestors by
returning a const version of the Display::Box.
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):
(WebCore::Layout::FormattingContext::computeBorderAndPadding):
(WebCore::Layout::mapHorizontalPositionToAncestor):
(WebCore::Layout::FormattingContext::mapTopToFormattingContextRoot const):
(WebCore::Layout::FormattingContext::mapLeftToFormattingContextRoot const):
(WebCore::Layout::FormattingContext::mapRightToFormattingContextRoot const):
(WebCore::Layout::FormattingContext::geometryForBox const):
(WebCore::Layout::FormattingContext::validateGeometryConstraintsAfterLayout const):
(WebCore::Layout::FormattingContext::displayBoxForLayoutBox const): Deleted.
* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::hasDisplayBox const): Deleted.
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::computedHeightValue const):
(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):
(WebCore::Layout::FormattingContext::Geometry::staticVerticalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::staticHorizontalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inFlowPositionedPositionOffset const):
* layout/FormattingContextQuirks.cpp:
(WebCore::Layout::FormattingContext::Quirks::heightValueOfNearestContainingBlockWithFixedHeight):
* layout/FormattingState.cpp:
(WebCore::Layout::FormattingState::displayBox const):
* layout/FormattingState.h:
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider const):
(WebCore::Layout::BlockFormattingContext::placeInFlowPositionedChildren):
(WebCore::Layout::BlockFormattingContext::computeStaticVerticalPosition):
(WebCore::Layout::BlockFormattingContext::computeStaticHorizontalPosition):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPosition):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFloatClear):
(WebCore::Layout::BlockFormattingContext::computeFloatingPosition):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats):
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::verticalPositionWithMargin const):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::Geometry::staticVerticalPosition const):
(WebCore::Layout::BlockFormattingContext::Geometry::staticHorizontalPosition const):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
* layout/blockformatting/BlockFormattingContextQuirks.cpp:
(WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::hasClearance const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithPreviousSiblingMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithFirstInFlowChildMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithSiblingMarginBeforeWithClearance const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithLastInFlowChildMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updateMarginAfterForPreviousSibling const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::estimatedMarginBefore):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updatePositiveNegativeMarginValues):
(WebCore::Layout::hasClearance): Deleted.
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
(WebCore::Layout::FloatingContext::absoluteDisplayBoxCoordinates const):
(WebCore::Layout::FloatingContext::mapToFloatingStateRoot const):
(WebCore::Layout::FloatingContext::mapTopToFloatingStateRoot const):
(WebCore::Layout::FloatingContext::mapPointFromFormattingContextRootToFloatingStateRoot const):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layout):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::initializeMarginBorderAndPaddingForGenericInlineBox):
(WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPaddingForInlineContainer):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
(WebCore::Layout::InlineFormattingContext::computeHorizontalMargin):
(WebCore::Layout::InlineFormattingContext::computeWidthAndMargin):
(WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot):
* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin const):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::inlineItemWidth):
(WebCore::Layout::LineLayout::placeInlineItem):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):
* layout/inlineformatting/InlineFormattingContextQuirks.cpp:
(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::isInlineContainerConsideredEmpty):
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::inlineItemContentHeight const):
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::layout):
(WebCore::Layout::TableFormattingContext::layoutTableCellBox):
(WebCore::Layout::TableFormattingContext::positionTableCells):
(WebCore::Layout::TableFormattingContext::setComputedGeometryForRows):
(WebCore::Layout::TableFormattingContext::setComputedGeometryForSections):
(WebCore::Layout::TableFormattingContext::computedTableWidth):
2019-09-13 Youenn Fablet <youenn@apple.com>
Use WebProcess processIdentifier to identify Service Worker connections
https://bugs.webkit.org/show_bug.cgi?id=201459
Reviewed by Chris Dumez.
No observable change of behavior.
* workers/service/ServiceWorkerClient.cpp:
(WebCore::ServiceWorkerClient::postMessage):
Pass sessionID to ease NetworkProcess selection of the client process connection.
* workers/service/ServiceWorkerTypes.h:
Mark server connection identifier be process identifier based.
* workers/service/context/SWContextManager.h:
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::Connection::Connection):
* workers/service/server/SWServer.h:
Let connection identifier be set in constructor instead of generated.
2019-09-13 Adrian Perez de Castro <aperez@igalia.com>
Factor out duplicated functions from HTTPParsers.cpp and HTTPHeaderField.cpp
https://bugs.webkit.org/show_bug.cgi?id=201721
Reviewed by Don Olmstead.
No new tests needed.
* loader/HTTPHeaderField.cpp: Remove "static" from prototypes of functions needed in HTTPParsers.cpp.
(WebCore::RFC7230::isDelimiter):
(WebCore::RFC7230::isQuotedPairSecondOctet):
(WebCore::RFC7230::isCommentText):
* loader/HTTPHeaderField.h: Add prototypes of functions needed in HTTPParsers.cpp.
* platform/network/HTTPParsers.cpp: Use functionality from WebCore::RFC7230 where possible.
(WebCore::skipWhile): Moved to allow implementing skipWhiteSpace() in terms of skipWhile().
(WebCore::skipWhiteSpace): Implement using skipWhile() and the RFC7230::isWhitespace() predicate.
(WebCore::isValidAcceptHeaderValue): Replace usage of isDelimiterCharacter() with RFC7230::isDelimiter().
(WebCore::isValidHTTPToken): Replace usage of isHTTPTokenCharacter() with RFC7230::isTokenCharacter().
(WebCore::skipQuotedPair): Partially reimplement in terms of RFC7230::isQuotedPairSecondOctet().
(WebCore::skipComment): Replace usage of isCommentTextCharacter() with RFC7230::isCommentText().
(WebCore::skipHTTPToken): Replace usage of isHTTPTokenCharacter() with RFC7230::isTokenCharacter().
2019-09-12 Zan Dobersek <zdobersek@igalia.com>
Unreviewed debug build fix for GLib-based ports.
* platform/glib/UserAgentGLib.cpp: Add the HTTPParsers.h header
inclusion to bring in the isValidUserAgentHeaderValue() declaration as
required for an assertion check.
2019-09-12 Said Abou-Hallawa <sabouhallawa@apple.com>
SVGLengthValue should use two enums for 'type' and 'mode' instead of one unsigned for 'units'
https://bugs.webkit.org/show_bug.cgi?id=201663
Reviewed by Simon Fraser, Nikolas Zimmermann.
SVGLengthValue had one unsigned to store SVGLengthMode and SVGLengthType.
It used to allocate the least significant 4 bits of this unsigned to the
SVGLengthMode while it leaves the rest for SVGLengthType.
This will not be needed if SVGLengthMode and SVGLengthType are made of
size uint_8.
Also in this patch:
-- SVGLengthNegativeValuesMode is made enum class.
-- SVGLengthValue::blend() is moved to SVGLengthValue.cpp so we do not
need to include SVGLengthContext.h in SVGLengthValue.h.
-- SVGLengthType and SVGLengthMode are moved to SVGLengthValue.h. Instead
of having SVGLengthValue.h includes SVGLengthConttext.h, the opposite
will happen.
-- SVGAnimatedPropertyDescription.h is deleted. It should have been deleted
with the SVG tear off objects removal.
-- SVGPropertyTraits<SVGAngleValue> and SVGPropertyTraits<SVGLengthValue>
are deleted. They should have been deleted with SVGAnimatedType removal.
-- SVGLengthValue::lengthModeForAnimatedLengthAttribute() is deleted. It
was only called from SVGPropertyTraits<SVGLengthValue>.
* WebCore.xcodeproj/project.pbxproj:
* css/StyleResolver.h:
* page/animation/CSSPropertyAnimation.cpp:
(WebCore::blendFunc):
* rendering/style/SVGRenderStyle.h:
(WebCore::SVGRenderStyle::initialBaselineShiftValue):
(WebCore::SVGRenderStyle::initialKerning):
* rendering/svg/RenderSVGEllipse.cpp:
(WebCore::RenderSVGEllipse::calculateRadiiAndCenter):
* rendering/svg/RenderSVGRect.cpp:
(WebCore::RenderSVGRect::updateShapeFromElement):
* rendering/svg/SVGPathData.cpp:
(WebCore::pathFromCircleElement):
(WebCore::pathFromEllipseElement):
(WebCore::pathFromRectElement):
* rendering/svg/SVGTextLayoutEngineBaseline.cpp:
(WebCore::SVGTextLayoutEngineBaseline::calculateBaselineShift const):
* rendering/svg/SVGTextLayoutEngineSpacing.cpp:
(WebCore::SVGTextLayoutEngineSpacing::calculateCSSKerningAndSpacing):
* svg/LinearGradientAttributes.h:
(WebCore::LinearGradientAttributes::LinearGradientAttributes):
* svg/RadialGradientAttributes.h:
(WebCore::RadialGradientAttributes::RadialGradientAttributes):
* svg/SVGAngleValue.h:
(WebCore::SVGPropertyTraits<SVGAngleValue>::initialValue): Deleted.
(WebCore::SVGPropertyTraits<SVGAngleValue>::toString): Deleted.
* svg/SVGCircleElement.cpp:
(WebCore::SVGCircleElement::parseAttribute):
* svg/SVGCircleElement.h:
* svg/SVGCursorElement.cpp:
(WebCore::SVGCursorElement::parseAttribute):
* svg/SVGCursorElement.h:
* svg/SVGEllipseElement.cpp:
(WebCore::SVGEllipseElement::parseAttribute):
* svg/SVGEllipseElement.h:
* svg/SVGFilterElement.cpp:
(WebCore::SVGFilterElement::parseAttribute):
* svg/SVGFilterElement.h:
* svg/SVGFilterPrimitiveStandardAttributes.cpp:
(WebCore::SVGFilterPrimitiveStandardAttributes::parseAttribute):
* svg/SVGFilterPrimitiveStandardAttributes.h:
* svg/SVGForeignObjectElement.cpp:
(WebCore::SVGForeignObjectElement::parseAttribute):
* svg/SVGForeignObjectElement.h:
* svg/SVGImageElement.cpp:
(WebCore::SVGImageElement::parseAttribute):
* svg/SVGImageElement.h:
* svg/SVGLength.h:
(WebCore::SVGLength::unitType const):
(WebCore::SVGLength::setValueForBindings):
(WebCore::SVGLength::newValueSpecifiedUnits):
(WebCore::SVGLength::convertToSpecifiedUnits):
(WebCore::SVGLength::unitType): Deleted.
* svg/SVGLengthContext.cpp:
(WebCore::SVGLengthContext::valueForLength):
(WebCore::SVGLengthContext::convertValueToUserUnits const):
(WebCore::SVGLengthContext::convertValueFromUserUnits const):
(WebCore::SVGLengthContext::convertValueFromUserUnitsToPercentage const):
(WebCore::SVGLengthContext::convertValueFromPercentageToUserUnits const):
* svg/SVGLengthContext.h:
(): Deleted.
* svg/SVGLengthList.h:
(WebCore::SVGLengthList::create):
* svg/SVGLengthValue.cpp:
(WebCore::lengthTypeToString):
(WebCore::parseLengthType):
(WebCore::primitiveTypeToLengthType):
(WebCore::lengthTypeToPrimitiveType):
(WebCore::SVGLengthValue::SVGLengthValue):
(WebCore::SVGLengthValue::construct):
(WebCore::SVGLengthValue::blend):
(WebCore::SVGLengthValue::fromCSSPrimitiveValue):
(WebCore::SVGLengthValue::toCSSPrimitiveValue):
(WebCore::SVGLengthValue::setValueAsString):
(WebCore::SVGLengthValue::valueAsString const):
(WebCore::SVGLengthValue::valueForBindings const):
(WebCore::SVGLengthValue::setValue):
(WebCore::SVGLengthValue::convertToSpecifiedUnits):
(WebCore::storeUnit): Deleted.
(WebCore::extractMode): Deleted.
(WebCore::extractType): Deleted.
(WebCore::SVGLengthValue::operator== const): Deleted.
(WebCore::SVGLengthValue::operator!= const): Deleted.
(WebCore::SVGLengthValue::unitType const): Deleted.
(WebCore::SVGLengthValue::unitMode const): Deleted.
(WebCore::SVGLengthValue::valueAsPercentage const): Deleted.
(WebCore::SVGLengthValue::newValueSpecifiedUnits): Deleted.
(WebCore::SVGLengthValue::lengthModeForAnimatedLengthAttribute): Deleted.
* svg/SVGLengthValue.h:
(WebCore::SVGLengthValue::lengthType const):
(WebCore::SVGLengthValue::lengthMode const):
(WebCore::SVGLengthValue::isZero const):
(WebCore::SVGLengthValue::isRelative const):
(WebCore::SVGLengthValue::valueAsPercentage const):
(WebCore::SVGLengthValue::valueInSpecifiedUnits const):
(WebCore::operator==):
(WebCore::operator!=):
(WebCore::SVGLengthValue::blend const): Deleted.
(WebCore::SVGPropertyTraits<SVGLengthValue>::initialValue): Deleted.
(WebCore::SVGPropertyTraits<SVGLengthValue>::parse): Deleted.
(WebCore::SVGPropertyTraits<SVGLengthValue>::toString): Deleted.
* svg/SVGLineElement.cpp:
(WebCore::SVGLineElement::parseAttribute):
* svg/SVGLineElement.h:
* svg/SVGLinearGradientElement.cpp:
(WebCore::SVGLinearGradientElement::parseAttribute):
* svg/SVGLinearGradientElement.h:
* svg/SVGMarkerElement.cpp:
(WebCore::SVGMarkerElement::parseAttribute):
* svg/SVGMarkerElement.h:
* svg/SVGMaskElement.cpp:
(WebCore::SVGMaskElement::parseAttribute):
* svg/SVGMaskElement.h:
* svg/SVGPatternElement.cpp:
(WebCore::SVGPatternElement::parseAttribute):
* svg/SVGPatternElement.h:
* svg/SVGRadialGradientElement.cpp:
(WebCore::SVGRadialGradientElement::parseAttribute):
* svg/SVGRadialGradientElement.h:
* svg/SVGRectElement.cpp:
(WebCore::SVGRectElement::parseAttribute):
* svg/SVGRectElement.h:
* svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::parseAttribute):
(WebCore::SVGSVGElement::hasIntrinsicWidth const):
(WebCore::SVGSVGElement::hasIntrinsicHeight const):
(WebCore::SVGSVGElement::intrinsicWidth const):
(WebCore::SVGSVGElement::intrinsicHeight const):
* svg/SVGSVGElement.h:
* svg/SVGTextContentElement.cpp:
(WebCore::SVGTextContentElement::parseAttribute):
(WebCore::SVGTextContentElement::textLengthAnimated):
* svg/SVGTextContentElement.h:
* svg/SVGTextPathElement.cpp:
(WebCore::SVGTextPathElement::parseAttribute):
* svg/SVGTextPathElement.h:
* svg/SVGTextPositioningElement.h:
* svg/SVGUseElement.cpp:
(WebCore::SVGUseElement::parseAttribute):
* svg/SVGUseElement.h:
* svg/properties/SVGAnimatedPropertyAccessorImpl.h:
* svg/properties/SVGAnimatedPropertyDescription.h: Removed.
* svg/properties/SVGAnimationAdditiveListFunctionImpl.h:
(WebCore::SVGAnimationLengthListFunction::animate):
* svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
(WebCore::SVGAnimationLengthFunction::animate):
* svg/properties/SVGValuePropertyAnimatorImpl.h:
* svg/properties/SVGValuePropertyListAnimatorImpl.h:
2019-09-12 Chris Dumez <cdumez@apple.com>
Node.replaceChild()'s pre-replacement validations are not done in the right order
https://bugs.webkit.org/show_bug.cgi?id=201741
Reviewed by Geoffrey Garen.
Node.replaceChild()'s pre-replacement validations are not done in the right order (spec order):
- https://dom.spec.whatwg.org/#concept-node-replace
In particular, we do not do check 3 (If child’s parent is not parent, then throw a
"NotFoundError" DOMException.) at the right time, because we were making this check
*after* checkPreReplacementValidity(), instead of *during*.
No new tests, rebaselined existing test.
* dom/ContainerNode.cpp:
(WebCore::checkAcceptChild):
(WebCore::ContainerNode::ensurePreInsertionValidity):
(WebCore::checkPreReplacementValidity):
(WebCore::ContainerNode::replaceChild):
2019-09-12 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r249801.
Caused two servier worker layout tests to become flaky.
Reverted changeset:
"Use WebProcess processIdentifier to identify Service Worker
connections"
https://bugs.webkit.org/show_bug.cgi?id=201459
https://trac.webkit.org/changeset/249801
2019-09-12 Chris Dumez <cdumez@apple.com>
[WKTR] Drop TestRunner.setPrivateBrowsingEnabled_DEPRECATED()
https://bugs.webkit.org/show_bug.cgi?id=201546
Reviewed by Alex Christensen.
Drop TestRunner.setPrivateBrowsingEnabled_DEPRECATED() from WebKitTestRunner as it does not do
the right thing for WebKit2 and tests have been rewritten to not use it.
* page/PageGroup.cpp:
(WebCore::PageGroup::addPage):
(WebCore::PageGroup::setSessionIDForTesting): Deleted.
* page/PageGroup.h:
(): Deleted.
2019-09-12 Saam Barati <sbarati@apple.com>
[WHLSL] Slim down WSLMatrix and inline constructors in native code
https://bugs.webkit.org/show_bug.cgi?id=201568
Reviewed by Robin Morisset.
Before, our WSL Matrix in MSL had templates to figure out how we're
constructing it. For example, with a list of elements, or a list of
columns. However, we can remove this template code since when we're
emitting Metal code, we know exactly how we're constructing the WSL
matrix. So the NativeFunctionWriter now inlines the proper stores
into the WSLMatrix elements.
This patch speeds up Metal compile times in boids by ~4ms (16%) with
a p-value of 0.0001.
Covered by existing tests.
* Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.cpp:
(WebCore::WHLSL::Metal::metalCodePrologue):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::inlineNativeFunction):
2019-09-12 Wenson Hsieh <wenson_hsieh@apple.com>
[Cocoa] Text indicator for an image link on the front page of apple.com looks wrong
https://bugs.webkit.org/show_bug.cgi?id=201724
<rdar://problem/54622894>
Reviewed by Tim Horton.
When computing the bounds of the range (<a>, 0) to (<a>, 1) for a text indicator snapshot where <a> is a link
with a single non-breaking whitespace character, we currently use the text rect of the single space. This leads
to a confusing text indicator, as the resulting snapshot is a tiny blank square in the top left corner of the
link. This problem manifests when starting a drag or showing the system context menu on iOS, or force clicking
or three-finger tapping to show a preview on macOS.
To address this scenario, tweak the heuristic in the case where the text indicator option
TextIndicatorOptionUseBoundingRectAndPaintAllContentForComplexRanges is specified, such that we consider a range
containing only text with whitespaces to be "complex"; additionally, instead of falling back to the range's
bounding rect (which in this case is still tiny), fall back to the common ancestor container's bounding rect,
which encompasses not only the text inside the range but also the element containing the range (in this case,
the anchor element).
Test: fast/text-indicator/text-indicator-empty-link.html
* page/TextIndicator.cpp:
(WebCore::containsOnlyWhiteSpaceText):
Add a helper to determine whether a Range is comprised only of rendered text that only contains whitespace
characters.
(WebCore::initializeIndicator):
See ChangeLog entry above for more detail.
2019-09-12 Brady Eidson <beidson@apple.com>
PDF exporting on iOS should include URL rects.
<rdar://problem/54900133> and https://bugs.webkit.org/show_bug.cgi?id=201693
Reviewed by Tim Horton.
Turns out that PDF exporting on iOS works fine.
Tracking back through history it was disabled at least pre-2014.
It was almost certainly disabled because it didn't work way back then,
but it works great now.
* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::GraphicsContext::setURLForRect): Remove the iOS platform exclusion.
2019-09-12 Adrian Perez de Castro <aperez@igalia.com>
[GTK][WPE] webkit_settings_set_user_agent() allows content forbidden in HTTP headers
https://bugs.webkit.org/show_bug.cgi?id=201077
Reviewed by Carlos Garcia Campos.
Add a function to validate whether a string contains a valid value
which can be used in a HTTP User-Agent header.
Covered by new WebCore API test HTTPParsers.ValidateUserAgentValues.
* platform/glib/UserAgentGLib.cpp:
(WebCore::standardUserAgent): Assert that the returned string is a valid User-Agent.
(WebCore::standardUserAgentForURL): Ditto.
* platform/network/HTTPParsers.cpp: Added a series of helper functions which skip over
characters of a string, which can be used to scan over the different elements of an
User-Agent value; all of them receive the position from the input string where to start
scanning, updating it to the position right after the scanned item (this follow the
convention already in use by other functions in the source file). Each of them has
been annotated with the RFC number and section which contains the definition of the
scanned item, and the corresponding BNF rules to make the code easier to follow.
(WebCore::skipWhile): Added.
(WebCore::isVisibleCharacter): Added.
(WebCore::isOctectInFieldContentCharacter): Added.
(WebCore::isCommentTextCharacter): Added.
(WebCore::isHTTPTokenCharacter): Added.
(WebCore::isValidHTTPToken): Refactored to use the new isHTTPTokenCharacter()
helper function instead of having the test inside the loop.
(WebCore::skipCharacter): Added.
(WebCore::skipQuotedPair): Added.
(WebCore::skipComment): Added.
(WebCore::skipHTTPToken): Added.
(WebCore::skipUserAgentProduct): Added.
(WebCore::isValidUserAgentHeaderValue): Added.
* platform/network/HTTPParsers.h: Add prototype for isValidUserAgentHeaderValue().
2019-09-12 Mark Lam <mark.lam@apple.com>
Harden JSC against the abuse of runtime options.
https://bugs.webkit.org/show_bug.cgi?id=201597
<rdar://problem/55167068>
Reviewed by Filip Pizlo.
No new tests. Covered by existing tests.
Enable Options::useDollarVM before we tell the JSGlobalObject to exposeDollarVM().
The $vm utility is now hardened to require that Options::useDollarVM be
enabled in order for it to be used.
* testing/js/WebCoreTestSupport.cpp:
(WebCoreTestSupport::injectInternalsObject):
2019-09-12 Youenn Fablet <youenn@apple.com>
Use typed identifiers for IDB connection identifiers
https://bugs.webkit.org/show_bug.cgi?id=201682
Reviewed by Chris Dumez.
Migrate from uint64_t to a typed identifier for IDB connection identifiers.
The identifier is reusing the process identifier type.
No change of behavior.
* Modules/indexeddb/client/IDBConnectionProxy.h:
(WebCore::IDBClient::IDBConnectionProxy::serverConnectionIdentifier const):
* Modules/indexeddb/client/IDBConnectionToServer.cpp:
(WebCore::IDBClient::IDBConnectionToServer::identifier const):
* Modules/indexeddb/client/IDBConnectionToServer.h:
* Modules/indexeddb/client/IDBConnectionToServerDelegate.h:
* Modules/indexeddb/server/IDBConnectionToClient.cpp:
(WebCore::IDBServer::IDBConnectionToClient::identifier const):
* Modules/indexeddb/server/IDBConnectionToClient.h:
* Modules/indexeddb/server/IDBConnectionToClientDelegate.h:
* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::getAllDatabaseNames):
(WebCore::IDBServer::IDBServer::performGetAllDatabaseNames):
(WebCore::IDBServer::IDBServer::didGetAllDatabaseNames):
* Modules/indexeddb/server/IDBServer.h:
* Modules/indexeddb/shared/IDBRequestData.cpp:
(WebCore::IDBRequestData::serverConnectionIdentifier const):
* Modules/indexeddb/shared/IDBRequestData.h:
* Modules/indexeddb/shared/IDBResourceIdentifier.cpp:
(WebCore::IDBResourceIdentifier::IDBResourceIdentifier):
(WebCore::IDBResourceIdentifier::emptyValue):
(WebCore::IDBResourceIdentifier::deletedValue):
(WebCore::IDBResourceIdentifier::isHashTableDeletedValue const):
(WebCore::IDBResourceIdentifier::loggingString const):
* Modules/indexeddb/shared/IDBResourceIdentifier.h:
(WebCore::IDBResourceIdentifier::hash const):
(WebCore::IDBResourceIdentifier::connectionIdentifier const):
(WTF::crossThreadCopy):
* Modules/indexeddb/shared/InProcessIDBServer.cpp:
(WebCore::InProcessIDBServer::identifier const):
* Modules/indexeddb/shared/InProcessIDBServer.h:
2019-09-12 Youenn Fablet <youenn@apple.com>
Use WebProcess processIdentifier to identify Service Worker connections
https://bugs.webkit.org/show_bug.cgi?id=201459
Reviewed by Chris Dumez.
No observable change of behavior.
* workers/service/ServiceWorkerClient.cpp:
(WebCore::ServiceWorkerClient::postMessage):
Pass sessionID to ease NetworkProcess selection of the client process connection.
* workers/service/ServiceWorkerTypes.h:
Mark server connection identifier be process identifier based.
* workers/service/context/SWContextManager.h:
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::Connection::Connection):
* workers/service/server/SWServer.h:
Let connection identifier be set in constructor instead of generated.
2019-09-11 Youenn Fablet <youenn@apple.com>
Disable DTLS1.0
https://bugs.webkit.org/show_bug.cgi?id=201679
Reviewed by Alex Christensen.
Add an option to force to use DTLS1.0 and nothing else.
Add internals API to enter in that mode to verify that normal configurations cannot communicate with DTLS1.0.
Test: webrtc/datachannel/dtls10.html
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::LibWebRTCProvider::setEnableWebRTCEncryption):
(WebCore::LibWebRTCProvider::setUseDTLS10):
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
* testing/Internals.cpp:
(WebCore::Internals::setUseDTLS10):
* testing/Internals.h:
* testing/Internals.idl:
2019-09-11 Keith Rollin <krollin@apple.com>
Log timeoutValue passed on to CFNetwork
https://bugs.webkit.org/show_bug.cgi?id=201701
<rdar://problem/55279683>
Reviewed by Chris Dumez.
Export ResourceRequest::timeoutValue for use in WebKit.
No new tests -- no new or changed functionality.
* platform/network/ResourceRequestBase.h:
2019-09-11 Saam Barati <sbarati@apple.com>
[WHLSL] Remove null from the standard library
https://bugs.webkit.org/show_bug.cgi?id=201672
Reviewed by Robin Morisset.
I meant to remove `null` from the standard library in r249351, but
I had omitted the code I wrote to do that when I rebased that patch.
This patch removes it and ensures all tests pass when parsing the entire
standard library.
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
2019-09-11 Chris Dumez <cdumez@apple.com>
Use same parser for <meta http-equiv="refresh"> and `Refresh` HTTP header
https://bugs.webkit.org/show_bug.cgi?id=201694
Reviewed by Alex Christensen.
Use same parser for <meta http-equiv="refresh"> and `Refresh` HTTP header. This aligns
our behavior with Blink and makes us more compliant on web-platform-tests. This also
simplifies our code.
No new tests, rebaselined existing test.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::receivedFirstData):
* platform/network/HTTPParsers.cpp:
(WebCore::parseHTTPRefresh): Deleted.
* platform/network/HTTPParsers.h:
2019-09-11 Saam Barati <sbarati@apple.com>
[WHLSL] Ensure structs/arrays with pointers as fields are disallowed
https://bugs.webkit.org/show_bug.cgi?id=201525
Reviewed by Robin Morisset.
This patch adds a pass which both ensures that references are always initialized with
concrete values and that we support logical mode validation by disallowing nested references.
Specifically, the pass:
1. Disallows structs to have fields which are references. This prevents us from having to
figure out how to default initialize such a struct. We could relax this in the future if we
did an analysis on which structs contain reference fields, and ensure such struct variables
always have initializers. This would also require us to create constructors for structs which
initialize each field.
2. We also do the same for arrays.
3. References can only be one level deep. So no pointers to pointers. No references to
references, etc. This is to support logical mode validation rules.
Test: webgpu/whlsl/ensure-proper-pointer-usage.html
* Modules/webgpu/WHLSL/WHLSLCheckReferenceTypes.cpp: Added.
(WebCore::WHLSL::checkReferenceTypes):
* Modules/webgpu/WHLSL/WHLSLCheckReferenceTypes.h: Added.
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2019-09-11 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: instrument WebGPUDevice instead of GPUCanvasContext
https://bugs.webkit.org/show_bug.cgi?id=201650
Reviewed by Joseph Pecoraro.
Most of the actual "work" done with Web GPU actually uses a `WebGPUDevice`.
A `GPUCanvasContext` is basically just a display "client" of the device, and isn't even
required (e.g. compute pipeline). We should treat the `GPUCanvasContext` almost like a
`-webkit-canvas` client of a `WebGPUDevice`.
Tests: inspector/canvas/create-context-webgpu.html
inspector/canvas/requestClientNodes-webgpu.html
inspector/canvas/resolveContext-webgpu.html
* Modules/webgpu/WebGPUAdapter.cpp:
(WebCore::WebGPUAdapter::requestDevice const):
Notify web inspector after a device is created.
* Modules/webgpu/WebGPUDevice.idl:
* Modules/webgpu/WebGPUDevice.h:
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::instances): Added.
(WebCore::WebGPUDevice::instancesMutex): Added.
(WebCore::WebGPUDevice::~WebGPUDevice): Added.
Notify web inspector when the device is about to be destructed.
* Modules/webgpu/GPUCanvasContext.h:
* Modules/webgpu/GPUCanvasContext.cpp:
(WebCore::GPUCanvasContext::create):
(WebCore::GPUCanvasContext::configureSwapChain):
* inspector/InspectorCanvas.h:
* inspector/InspectorCanvas.cpp:
(WebCore::canvasIfContextMatchesDevice): Added.
(WebCore::InspectorCanvas::create):
(WebCore::InspectorCanvas::InspectorCanvas):
(WebCore::InspectorCanvas::canvasContext const): Added.
(WebCore::InspectorCanvas::canvasElement const): Added.
(WebCore::InspectorCanvas::isDeviceForCanvasContext const): Added.
(WebCore::InspectorCanvas::deviceContext const): Added.
(WebCore::InspectorCanvas::scriptExecutionContext const): Added.
(WebCore::InspectorCanvas::resolveContext const): Added.
(WebCore::InspectorCanvas::clientNodes const): Added.
(WebCore::InspectorCanvas::canvasChanged):
(WebCore::InspectorCanvas::resetRecordingData):
(WebCore::InspectorCanvas::recordAction):
(WebCore::InspectorCanvas::buildObjectForCanvas):
(WebCore::InspectorCanvas::releaseObjectForRecording):
(WebCore::InspectorCanvas::getCanvasContentAsDataURL):
(WebCore::InspectorCanvas::buildInitialState):
(WebCore::InspectorCanvas::canvasElement): Deleted.
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didCreateWebGPUDeviceImpl): Added.
(WebCore::InspectorInstrumentation::willDestroyWebGPUDeviceImpl): Added.
(WebCore::InspectorInstrumentation::willConfigureSwapChainImpl): Added.
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didCreateWebGPUDevice): Added.
(WebCore::InspectorInstrumentation::willDestroyWebGPUDevice): Added.
(WebCore::InspectorInstrumentation::willConfigureSwapChain): Added.
* inspector/agents/InspectorCanvasAgent.h:
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::enable):
(WebCore::InspectorCanvasAgent::requestClientNodes): Added.
(WebCore::InspectorCanvasAgent::resolveContext): Added.
(WebCore::InspectorCanvasAgent::startRecording):
(WebCore::InspectorCanvasAgent::stopRecording):
(WebCore::InspectorCanvasAgent::frameNavigated):
(WebCore::InspectorCanvasAgent::didChangeCSSCanvasClientNodes):
(WebCore::InspectorCanvasAgent::didChangeCanvasMemory):
(WebCore::InspectorCanvasAgent::canvasDestroyed):
(WebCore::InspectorCanvasAgent::recordCanvasAction):
(WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
(WebCore::InspectorCanvasAgent::didCreateWebGPUDevice): Added.
(WebCore::InspectorCanvasAgent::willDestroyWebGPUDevice): Added.
(WebCore::InspectorCanvasAgent::willConfigureSwapChain): Added.
(WebCore::InspectorCanvasAgent::clearCanvasData):
(WebCore::InspectorCanvasAgent::bindCanvas):
(WebCore::InspectorCanvasAgent::unbindCanvas):
(WebCore::InspectorCanvasAgent::findInspectorCanvas):
(WebCore::InspectorCanvasAgent::requestCSSCanvasClientNodes): Deleted.
(WebCore::contextAsScriptValue): Deleted.
(WebCore::InspectorCanvasAgent::resolveCanvasContext): Deleted.
* inspector/InspectorShaderProgram.cpp:
(WebCore::InspectorShaderProgram::context const):
2019-09-11 Chris Dumez <cdumez@apple.com>
Posting a message to a redundant service worker should fail silently instead of throwing
https://bugs.webkit.org/show_bug.cgi?id=201696
Reviewed by Geoffrey Garen.
Posting a message to a redundant service worker should fail silently instead of throwing:
- https://w3c.github.io/ServiceWorker/#dom-serviceworker-postmessage-message-options
- https://w3c.github.io/ServiceWorker/#run-service-worker (step 2)
No new tests, rebaselined existing test.
* workers/service/ServiceWorker.cpp:
(WebCore::ServiceWorker::postMessage):
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::runServiceWorkerIfNecessary):
2019-09-11 Chris Dumez <cdumez@apple.com>
Align our XPath API with the specification and other browsers
https://bugs.webkit.org/show_bug.cgi?id=201660
Reviewed by Geoffrey Garen.
Align our XPath API with the specification and other browsers:
- Document/XPathEvaluator.createExpression()'s first parameter should be mandatory
- Document/XPathEvaluator.evaluate()'s first 2 parameters should be mandatory
- XPathExpression.evaluate()'s first parameter should be mandatory
I have confirmed in the latest Chrome and Firefox that they match the specification.
No new tests, rebaselined existing test.
* dom/Document.cpp:
(WebCore::Document::evaluate):
* dom/Document.h:
* dom/Document.idl:
* inspector/InspectorNodeFinder.cpp:
(WebCore::InspectorNodeFinder::searchUsingXPath):
* xml/XPathEvaluator.cpp:
(WebCore::XPathEvaluator::evaluate):
* xml/XPathEvaluator.h:
* xml/XPathEvaluator.idl:
* xml/XPathExpression.cpp:
(WebCore::XPathExpression::evaluate):
* xml/XPathExpression.h:
* xml/XPathExpression.idl:
* xml/XPathUtil.cpp:
(WebCore::XPath::isValidContextNode):
* xml/XPathUtil.h:
2019-09-11 Simon Fraser <simon.fraser@apple.com>
REGRESSION (iOS 13): Top fixed element on apple.com flickers in size while pinching in
https://bugs.webkit.org/show_bug.cgi?id=201668
rdar://problem/51934041
Reviewed by Frédéric Wang.
When computing the new layout viewport rect in ScrollingTreeFrameScrollingNode, use
"StickToDocumentBounds" mode, not "StickToViewportBounds", because otherwise we'll compute
a layout viewport that has negative top/left offsets which causes fixed elements to jump outside
the viewport. The only code that should be moving things outside the viewport (a temporary effect
that happens when pinching) is the 'isBelowMinimumScale' path in WebPageProxy::computeCustomFixedPositionRect().
With this change ScrollingTreeFrameScrollingNode no longer needs m_behaviorForFixed; it can be removed later.
Not currently testable, since it involves pinching in past minimum zoom and transients state.
* page/scrolling/ScrollingTreeFrameScrollingNode.cpp:
(WebCore::ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition const):
2019-09-11 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r249753.
caused inspector/canvas/shaderProgram-add-remove-webgl.html to
crash on all Mac platforms.
Reverted changeset:
"Web Inspector: Canvas: instrument WebGPUDevice instead of
GPUCanvasContext"
https://bugs.webkit.org/show_bug.cgi?id=201650
https://trac.webkit.org/changeset/249753
2019-09-11 Antti Koivisto <antti@apple.com>
REGRESSION (245006): can't scroll in "read more" view in Eventbrite app
https://bugs.webkit.org/show_bug.cgi?id=201683
<rdar://problem/54582602>
Reviewed by Simon Fraser.
* platform/RuntimeApplicationChecks.h:
* platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::IOSApplication::isEventbrite):
2019-09-11 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r249758.
Breaks the watchOS build.
Reverted changeset:
"[WHLSL] Ensure structs/arrays with pointers as fields are
disallowed"
https://bugs.webkit.org/show_bug.cgi?id=201525
https://trac.webkit.org/changeset/249758
2019-09-11 Ali Juma <ajuma@chromium.org>
Prevent reentrancy FrameLoader::dispatchUnloadEvents()
https://bugs.webkit.org/show_bug.cgi?id=200738
Reviewed by Brady Eidson.
Reentrancy causes m_pageDismissalEventBeingDispatched to be incorrectly
updated, so don't allow reentrancy.
Since this prevents m_pageDismissalEventBeingDispatched from being reset
inside a reentrant call, it can have the unintended effect of causing
FrameLoader::stopAllLoaders to early-out when called from
FrameLoader::detachFromParent while a frame's unload event handler
calls document.open() on a parent frame and causes itself to become
detached. Allowing a load to continue in a detached frame will lead to
a crash. To prevent this, add a new argument to FrameLoader::stopAllLoaders
that FrameLoader::detachFromParent can use to prevent an early-out.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::stopAllLoaders):
(WebCore::FrameLoader::detachFromParent):
(WebCore::FrameLoader::dispatchUnloadEvents):
(WebCore::FrameLoader::dispatchBeforeUnloadEvent):
Ensure that m_pageDismissalEventBeingDispatched is reset to its previous value, even if this is not None.
* loader/FrameLoader.h:
* loader/FrameLoaderTypes.h:
Add a StopLoadingPolicy enum.
2019-09-11 Charlie Turner <cturner@igalia.com>
[GStreamer] Do not adopt floating references.
https://bugs.webkit.org/show_bug.cgi?id=201685
Reviewed by Carlos Garcia Campos.
Covered by existing tests.
* platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::initializeGStreamer): gst_element_factory_make returns
floating references, you do not adopt such references, rather you
sink them.
2019-09-11 Saam Barati <sbarati@apple.com>
[WHLSL] Ensure structs/arrays with pointers as fields are disallowed
https://bugs.webkit.org/show_bug.cgi?id=201525
Reviewed by Robin Morisset.
This patch adds a pass which both ensures that references are always initialized with
concrete values and that we support logical mode validation by disallowing nested references.
Specifically, the pass:
1. Disallows structs to have fields which are references. This prevents us from having to
figure out how to default initialize such a struct. We could relax this in the future if we
did an analysis on which structs contain reference fields, and ensure such struct variables
always have initializers. This would also require us to create constructors for structs which
initialize each field.
2. We also do the same for arrays.
3. References can only be one level deep. So no pointers to pointers. No references to
references, etc. This is to support logical mode validation rules.
Test: webgpu/whlsl/ensure-proper-pointer-usage.html
* Modules/webgpu/WHLSL/WHLSLCheckReferenceTypes.cpp: Added.
(WebCore::WHLSL::checkReferenceTypes):
* Modules/webgpu/WHLSL/WHLSLCheckReferenceTypes.h: Added.
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2019-09-10 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: instrument WebGPUDevice instead of GPUCanvasContext
https://bugs.webkit.org/show_bug.cgi?id=201650
Reviewed by Joseph Pecoraro.
Most of the actual "work" done with Web GPU actually uses a `WebGPUDevice`.
A `GPUCanvasContext` is basically just a display "client" of the device, and isn't even
required (e.g. compute pipeline). We should treat the `GPUCanvasContext` almost like a
`-webkit-canvas` client of a `WebGPUDevice`.
Tests: inspector/canvas/create-context-webgpu.html
inspector/canvas/requestClientNodes-webgpu.html
inspector/canvas/resolveContext-webgpu.html
* Modules/webgpu/WebGPUAdapter.cpp:
(WebCore::WebGPUAdapter::requestDevice const):
Notify web inspector after a device is created.
* Modules/webgpu/WebGPUDevice.idl:
* Modules/webgpu/WebGPUDevice.h:
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::instances): Added.
(WebCore::WebGPUDevice::instancesMutex): Added.
(WebCore::WebGPUDevice::~WebGPUDevice): Added.
Notify web inspector when the device is about to be destructed.
* Modules/webgpu/GPUCanvasContext.h:
* Modules/webgpu/GPUCanvasContext.cpp:
(WebCore::GPUCanvasContext::create):
(WebCore::GPUCanvasContext::configureSwapChain):
* inspector/InspectorCanvas.h:
* inspector/InspectorCanvas.cpp:
(WebCore::canvasIfContextMatchesDevice): Added.
(WebCore::InspectorCanvas::create):
(WebCore::InspectorCanvas::InspectorCanvas):
(WebCore::InspectorCanvas::canvasContext const): Added.
(WebCore::InspectorCanvas::canvasElement const): Added.
(WebCore::InspectorCanvas::isDeviceForCanvasContext const): Added.
(WebCore::InspectorCanvas::deviceContext const): Added.
(WebCore::InspectorCanvas::scriptExecutionContext const): Added.
(WebCore::InspectorCanvas::resolveContext const): Added.
(WebCore::InspectorCanvas::clientNodes const): Added.
(WebCore::InspectorCanvas::canvasChanged):
(WebCore::InspectorCanvas::resetRecordingData):
(WebCore::InspectorCanvas::recordAction):
(WebCore::InspectorCanvas::buildObjectForCanvas):
(WebCore::InspectorCanvas::releaseObjectForRecording):
(WebCore::InspectorCanvas::getCanvasContentAsDataURL):
(WebCore::InspectorCanvas::buildInitialState):
(WebCore::InspectorCanvas::canvasElement): Deleted.
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didCreateWebGPUDeviceImpl): Added.
(WebCore::InspectorInstrumentation::willDestroyWebGPUDeviceImpl): Added.
(WebCore::InspectorInstrumentation::willConfigureSwapChainImpl): Added.
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didCreateWebGPUDevice): Added.
(WebCore::InspectorInstrumentation::willDestroyWebGPUDevice): Added.
(WebCore::InspectorInstrumentation::willConfigureSwapChain): Added.
* inspector/agents/InspectorCanvasAgent.h:
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::enable):
(WebCore::InspectorCanvasAgent::requestClientNodes): Added.
(WebCore::InspectorCanvasAgent::resolveContext): Added.
(WebCore::InspectorCanvasAgent::startRecording):
(WebCore::InspectorCanvasAgent::stopRecording):
(WebCore::InspectorCanvasAgent::frameNavigated):
(WebCore::InspectorCanvasAgent::didChangeCSSCanvasClientNodes):
(WebCore::InspectorCanvasAgent::didChangeCanvasMemory):
(WebCore::InspectorCanvasAgent::canvasDestroyed):
(WebCore::InspectorCanvasAgent::recordCanvasAction):
(WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
(WebCore::InspectorCanvasAgent::didCreateWebGPUDevice): Added.
(WebCore::InspectorCanvasAgent::willDestroyWebGPUDevice): Added.
(WebCore::InspectorCanvasAgent::willConfigureSwapChain): Added.
(WebCore::InspectorCanvasAgent::clearCanvasData):
(WebCore::InspectorCanvasAgent::bindCanvas):
(WebCore::InspectorCanvasAgent::unbindCanvas):
(WebCore::InspectorCanvasAgent::findInspectorCanvas):
(WebCore::InspectorCanvasAgent::requestCSSCanvasClientNodes): Deleted.
(WebCore::contextAsScriptValue): Deleted.
(WebCore::InspectorCanvasAgent::resolveCanvasContext): Deleted.
* inspector/InspectorShaderProgram.cpp:
(WebCore::InspectorShaderProgram::context const):
2019-09-10 Chris Dumez <cdumez@apple.com>
Nullptr crash in Page::sessionID() via WebKit::WebFrameLoaderClient::detachedFromParent2()
https://bugs.webkit.org/show_bug.cgi?id=201625
Reviewed by Ryosuke Niwa.
This is based on a patch from Ryosuke Niwa.
Drop setHasFrameSpecificStorageAccess() in WebCore and call it from the WebKit layer instead.
* dom/DocumentStorageAccess.cpp:
(WebCore::DocumentStorageAccess::requestStorageAccess):
(WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): Deleted.
* dom/DocumentStorageAccess.h:
* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoaderClient.h:
2019-09-10 Brady Eidson <beidson@apple.com>
Add SPI to save a PDF from the contents of a WKWebView.
<rdar://problem/48955900> and https://bugs.webkit.org/show_bug.cgi?id=195765
Reviewed by Tim Horton.
Covered by API tests.
* page/FrameView.cpp:
(WebCore::FrameView::paintContents): Don't paint the debug color outside of the FrameRect.
* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::GraphicsContext::setURLForRect):
* rendering/PaintPhase.h: Add "AnnotateLinks" option to always gather and annotation links.
* rendering/RenderElement.cpp:
(WebCore::RenderElement::hasOutlineAnnotation const): Also return true when the PaintOptions include "AnnotateLinks"
2019-09-10 Jiewen Tan <jiewen_tan@apple.com>
REGRESSION: [ Catalina WK2 ] http/wpt/webauthn/public-key-credential-create-success-u2f.https.html is failing
https://bugs.webkit.org/show_bug.cgi?id=201620
<rdar://problem/51524958>
Reviewed by Alex Christensen.
Covered by existing tests.
* Modules/webauthn/fido/U2fResponseConverter.cpp:
(fido::WebCore::createAttestedCredentialDataFromU2fRegisterResponse):
Change the way how the aaguid is initialized to see if that fixes the issue.
2019-09-10 Chris Dumez <cdumez@apple.com>
Add missing origin check for Service-Worker-Allowed header
https://bugs.webkit.org/show_bug.cgi?id=201653
Reviewed by Geoffrey Garen.
Add missing origin check for Service-Worker-Allowed header:
- https://w3c.github.io/ServiceWorker/#update-algorithm (step 15. 2.)
* workers/service/ServiceWorkerJob.cpp:
(WebCore::ServiceWorkerJob::didReceiveResponse):
2019-09-10 Sihui Liu <sihui_liu@apple.com>
IndexedDB: cache prepared SQLiteStatement in SQLiteIDBCursor
https://bugs.webkit.org/show_bug.cgi?id=201548
Reviewed by Alex Christensen.
This should be a performance improvement as we don't compile the same SQLiteStatement everytime it is used.
No new tests, no behavior change.
* Modules/indexeddb/server/SQLiteIDBCursor.cpp:
(WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord):
* Modules/indexeddb/server/SQLiteIDBCursor.h:
2019-09-10 Youenn Fablet <youenn@apple.com>
RTCPeerConnection can only be instantiated in documents
https://bugs.webkit.org/show_bug.cgi?id=201639
Reviewed by Alex Christensen.
Make it clear that RTCDataChannel expects Document since peer connections
and data channels can only be instantiated in document environments.
We keep one downcast in RTCPeerConnection constructor due to a limitation
in binding generator for JS built-ins.
No change of behavior.
* Modules/mediastream/RTCDataChannel.cpp:
(WebCore::RTCDataChannel::create):
(WebCore::RTCDataChannel::RTCDataChannel):
* Modules/mediastream/RTCDataChannel.h:
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::create):
(WebCore::RTCPeerConnection::RTCPeerConnection):
(WebCore::RTCPeerConnection::certificatesFromConfiguration):
(WebCore::RTCPeerConnection::createDataChannel):
(WebCore::RTCPeerConnection::document):
* Modules/mediastream/RTCPeerConnection.h:
* Modules/mediastream/RTCPeerConnection.idl:
* Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:
(WebCore::LibWebRTCDataChannelHandler::channelEvent):
* Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::OnDataChannel):
2019-09-10 Youenn Fablet <youenn@apple.com>
Remove MediaStreamPrivate::scheduleDeferredTask
https://bugs.webkit.org/show_bug.cgi?id=200975
Reviewed by Eric Carlson.
All calls to scheduleDeferredTask are done on the main thread.
This was initially done to trigger less reconfiguration.
But this makes the implementation significantly more complex.
For instance, we have to wait for the document to update its media state
and send it to UIProcess before calling the allow completion handler.
Covered by existing tests.
* Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::MediaStream):
Make sure to update the document media state once the tracks have been added, similarly to the other constructor.
This ensures the document media state is computed with the new MediaStreamTrack.
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::isMediaStreamCorrectlyStarted):
(WebCore::UserMediaRequest::allow):
(WebCore::UserMediaRequest::stop):
(WebCore::UserMediaRequest::mediaStreamDidFail):
* Modules/mediastream/UserMediaRequest.h:
* page/MediaProducer.h:
(WebCore::MediaProducer::isCapturing):
Make sure to include getDisplayMedia as part of capture check.
* platform/mediastream/MediaStreamPrivate.cpp:
(WebCore::MediaStreamPrivate::trackMutedChanged):
(WebCore::MediaStreamPrivate::trackEnabledChanged):
(WebCore::MediaStreamPrivate::trackStarted):
(WebCore::MediaStreamPrivate::trackEnded):
* platform/mediastream/MediaStreamPrivate.h:
2019-09-10 Youenn Fablet <youenn@apple.com>
Audio sometimes fail to capture in WebRTC
https://bugs.webkit.org/show_bug.cgi?id=180748
<rdar://problem/36032346>
Reviewed by Eric Carlson.
In some cases, Safari is not receiving unsuspend notifications.
In that case, the capture unit might stay in suspend state forever.
To work around that, we force to unsuspend whenever there is a new capture happening.
This will make it so that reloading the page will unsuspend the page.
Manually tested by triggering Siri, starting to use the microphone and quickly going back to a capturing page.
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioSharedUnit::provideSpeakerData):
When suspension happens, the buffer size might change.
Since this is only an issue if there are some references data, we now do not fail the capture when there
is no reference data.
(WebCore::CoreAudioSharedUnit::resume):
(WebCore::CoreAudioSharedUnit::prepareForNewCapture):
Make sure to start with a clean slate by setting suspend state to false for the shared unit.
And failing all previous sources in case we are going back from suspension.
(WebCore::CoreAudioSharedUnit::startInternal):
(WebCore::CoreAudioCaptureSourceFactory::audioCaptureDeviceManager):
(WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource):
2019-09-10 Adrian Perez de Castro <aperez@igalia.com>
[GTK][WPE] Fixes for non-unified builds after r249022
https://bugs.webkit.org/show_bug.cgi?id=201610
Reviewed by Joseph Pecoraro.
No new tests needed.
* fileapi/NetworkSendQueue.h: Add missing inclusion of wtf/WeakPtr.h; add the namespace to WTF::WeakPtr
which is needed because there is no "using" clause.
* inspector/InspectorInstrumentation.cpp: Add missing inclusion of the PageDOMDebuggerAgent.h header.
* inspector/agents/WebDebuggerAgent.cpp: Add missing inclusion of the ScriptExecutionContext.h header.
* inspector/agents/page/PageDOMDebuggerAgent.cpp: Add missing inclusion of the InstrumentingAgents.h header.
2019-09-10 Youenn Fablet <youenn@apple.com>
Add support to RTCDataChannel.send(Blob)
https://bugs.webkit.org/show_bug.cgi?id=201377
Reviewed by Chris Dumez.
Make use of NetworkSendQueue to enqueue and send properly messages.
Test: imported/w3c/web-platform-tests/webrtc/RTCDataChannel-send-blob-order.html
* Modules/mediastream/RTCDataChannel.cpp:
(WebCore::RTCDataChannel::createMessageQueue):
(WebCore::RTCDataChannel::RTCDataChannel):
(WebCore::RTCDataChannel::send):
(WebCore::RTCDataChannel::close):
* Modules/mediastream/RTCDataChannel.h:
2019-09-10 Ryosuke Niwa <rniwa@webkit.org>
Option + arrow moves caret past whitespace on iOS
https://bugs.webkit.org/show_bug.cgi?id=201575
Reviewed by Wenson Hsieh.
The bug was caused by findNextWordFromIndex on iOS behaving differently from macOS and UIKit by skipping
trailing whitespace after a word when moving forward and not skipping leading whitespace when moving backward.
This patch introduces a new mode (StopAfterWord) of findNextWordFromIndex in iOS that better matches
the behavior of findNextWordFromIndex on macOS and UIKit, and use it in various modify* functions of
FrameSelection when the selection update is triggered by user.
The legacy mode (LegacyStopBeforeWord) is used in all other call sites as well as when modify* functions
are invoked from author scripts.
Test: editing/selection/ios/move-by-word-with-keyboard.html
* editing/FrameSelection.cpp:
(WebCore::nextWordWhitespaceModeInIOS): Added. A helper to convert EUserTriggered to NextWordModeInIOS.
(WebCore::FrameSelection::nextWordPositionForPlatform):
(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::FrameSelection::modify):
(WebCore::FrameSelection::updateAppearance):
* editing/FrameSelection.h:
* editing/TextIterator.cpp:
(WebCore::SearchBuffer::isWordStartMatch const):
* editing/VisibleUnits.cpp:
(WebCore::previousWordPositionBoundary):
(WebCore::previousWordPosition):
(WebCore::nextWordPositionBoundary):
(WebCore::nextWordPosition):
* editing/VisibleUnits.h:
* platform/text/TextBoundaries.cpp:
(WebCore::findNextWordFromIndex):
* platform/text/TextBoundaries.h:
* platform/text/mac/TextBoundaries.mm:
(WebCore::findNextWordFromIndex): Added a new mode.
2019-09-09 Chris Dumez <cdumez@apple.com>
REGRESSION: http/tests/resourceLoadStatistics/do-not-capture-statistics-for-simple-top-navigations.html is frequently timing out on iOS EWS bots
https://bugs.webkit.org/show_bug.cgi?id=201550
Reviewed by Alex Christensen.
* loader/ResourceLoadObserver.h:
(WebCore::ResourceLoadObserver::hasStatistics const):
2019-09-09 Timothy Hatcher <timothy@apple.com>
Tap and hold on Facebook sometimes creates a tall empty selection.
https://bugs.webkit.org/show_bug.cgi?id=201618
rdar://53630145
Reviewed by Megan Gardner.
API Test: SelectionTests.ByWordAtEndOfDocument
* editing/VisibleUnits.cpp:
(WebCore::wordRangeFromPosition):
Remove special case code for the possibility of an empty paragraph and at the end
of the document. This is no longer needed and was causing a large selection to be
created on Facebook due to large areas of non-selectable content on the page.
2019-09-09 Joonghun Park <jh718.park@samsung.com>
getComputedStyle for line-height: normal should return the keyword instead of a length
https://bugs.webkit.org/show_bug.cgi?id=201296
Reviewed by Ryosuke Niwa.
Per https://github.com/w3c/csswg-drafts/issues/3749,
Gecko and Blink has this behavior already.
This patch makes WebKit has the same behavior with them.
Tests: imported/w3c/web-platform-tests/css/css-inline/parsing/line-height-computed.html
imported/w3c/web-platform-tests/css/cssom/getComputedStyle-line-height.html
imported/w3c/web-platform-tests/html/rendering/replaced-elements/the-select-element/select-1-line-height.html
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::lineHeightFromStyle):
2019-09-09 Alex Christensen <achristensen@webkit.org>
Disable TLS 1.0 and 1.1 in WebSockets
https://bugs.webkit.org/show_bug.cgi?id=201573
Reviewed by Youenn Fablet.
This expands on what I started in r249019 when I disabled legacy TLS for our use of NSURLSession.
Since our WebSocket implementation uses a different network interface, disable legacy TLS for them, too.
I use the same temporary default to re-enable legacy TLS. I also add a unit test for both WebSockets and NSURLSession use.
* platform/network/cf/SocketStreamHandleImpl.h:
* platform/network/cf/SocketStreamHandleImplCFNet.cpp:
(WebCore::Function<bool):
(WebCore::SocketStreamHandleImpl::setLegacyTLSEnabledCheck):
(WebCore::SocketStreamHandleImpl::createStreams):
2019-09-09 Saam Barati <sbarati@apple.com>
Unreviewed follow up to r249630. We need padding for ADDRESS32 CPUs to allow replaceWith to work on the intended types.
* Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
2019-09-09 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Introduce cell spacing.
https://bugs.webkit.org/show_bug.cgi?id=201605
<rdar://problem/55184009>
Reviewed by Antti Koivisto.
This patch adds support for horizontal and vertical cell spacing (border-spacing). Now LFC matches table geometry for simple table content with multiple columns and rows.
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const): Now we can use the generic, check the inflow content logic for table height.
* layout/LayoutUnits.h:
(WebCore::Layout::HorizontalEdges::width const):
(WebCore::Layout::VerticalEdges::height const):
* layout/Verification.cpp:
(WebCore::Layout::verifyAndOutputSubtree):
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::layout):
(WebCore::Layout::TableFormattingContext::layoutTableCellBox):
(WebCore::Layout::TableFormattingContext::positionTableCells):
(WebCore::Layout::TableFormattingContext::setComputedGeometryForRows):
(WebCore::Layout::TableFormattingContext::setComputedGeometryForSections):
(WebCore::Layout::TableFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::TableFormattingContext::ensureTableGrid):
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns):
(WebCore::Layout::TableFormattingContext::computedTableWidth):
(WebCore::Layout::TableFormattingContext::useAsContentLogicalWidth):
* layout/tableformatting/TableFormattingContext.h:
* layout/tableformatting/TableFormattingContextGeometry.cpp:
(WebCore::Layout::TableFormattingContext::Geometry::tableCellHeightAndMargin const):
* layout/tableformatting/TableGrid.cpp:
(WebCore::Layout::TableGrid::appendCell):
(WebCore::Layout::TableGrid::widthConstraints const):
(WebCore::Layout::TableGrid::ColumnsContext::useAsLogicalWidth): Deleted.
* layout/tableformatting/TableGrid.h:
(WebCore::Layout::TableGrid::setHorizontalSpacing):
(WebCore::Layout::TableGrid::horizontalSpacing const):
(WebCore::Layout::TableGrid::setVerticalSpacing):
(WebCore::Layout::TableGrid::verticalSpacing const):
(WebCore::Layout::TableGrid::ColumnsContext::logicalWidth const):
2019-09-09 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r249574.
Caused fast/mediastream/media-stream-track-source-failure.html
to become flaky.
Reverted changeset:
"Remove MediaStreamPrivate::scheduleDeferredTask"
https://bugs.webkit.org/show_bug.cgi?id=200975
https://trac.webkit.org/changeset/249574
2019-09-09 Rob Buis <rbuis@igalia.com>
[GTK][WPE] Remove attributes deprecated from MathML3
https://bugs.webkit.org/show_bug.cgi?id=197492
Reviewed by Frédéric Wang.
Remove some MathML3 deprecated attributes:
https://github.com/mathml-refresh/mathml/issues/5#issuecomment-475506856
This change also maps the dir attribute to direction for MathML Core.
Test: imported/w3c/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html
* mathml/MathMLElement.cpp:
(WebCore::MathMLElement::collectStyleForPresentationAttribute):
2019-09-09 Youenn Fablet <youenn@apple.com>
Move checkProcessLocalPortForActivity from provider to registry
https://bugs.webkit.org/show_bug.cgi?id=201400
Reviewed by Alex Christensen.
Update the registry to take a callback that is used to implement checkProcessLocalPortForActivity.
This allows WK1 and WK2 to have their own implementation.
Make the call to checkProcessLocalPortForActivity directly on the registry.
Remove unneeded worker checkProcessLocalPortForActivity method.
No change of behavior.
* dom/messageports/MessagePortChannel.cpp:
(WebCore::MessagePortChannel::checkRemotePortForActivity):
* dom/messageports/MessagePortChannelProvider.h:
* dom/messageports/MessagePortChannelProviderImpl.cpp:
(WebCore::createMessagePortChannelRegistry):
(WebCore::MessagePortChannelProviderImpl::MessagePortChannelProviderImpl):
(WebCore::MessagePortChannelProviderImpl::checkProcessLocalPortForActivity): Deleted.
* dom/messageports/MessagePortChannelProviderImpl.h:
* dom/messageports/MessagePortChannelRegistry.cpp:
(WebCore::MessagePortChannelRegistry::MessagePortChannelRegistry):
(WebCore::MessagePortChannelRegistry::checkProcessLocalPortForActivity):
* dom/messageports/MessagePortChannelRegistry.h:
(WebCore::MessagePortChannelRegistry::provider): Deleted.
* dom/messageports/WorkerMessagePortChannelProvider.cpp:
(WebCore::WorkerMessagePortChannelProvider::checkProcessLocalPortForActivity): Deleted.
* dom/messageports/WorkerMessagePortChannelProvider.h:
2019-09-08 Saam Barati <sbarati@apple.com>
[WHLSL] Add back a version of the property resolver
https://bugs.webkit.org/show_bug.cgi?id=201251
Reviewed by Robin Morisset.
This patch adds back the property resolver to aid in how we emit metal code.
The goal of the new property resolver phase is to allow two things:
1. For property access expressions, metal codegen should be allowed to evaluate
the base, and if it's an index expression, the index, as many times as needed.
So this patch ensures that if Metal evaluates such things, effects aren't performed
more than once.
2. For ReadModifyWrite expressions, metal codegen should be able to evaluate the
leftValueExpression as many times as it'd like without performing the effects of
leftValueExpression more than once.
Here are a couple examples of this transformation:
`a()[b()]` -> `(temp1 = a(), temp2 = b(), temp1[temp2])`
`(*a())[b()] += 42;` -> `(temp1 = &*a(), temp2 = b(), (*temp1)[temp2] += 42)`
The interesting rules break down like:
- When the base is an lvalue, we take its address and replace the old base
with a dereference of the new pointer variable.
- When the base is an rvalue, we evaluate it and store it in a temporary
variable, and switch the base to be a reference of that variable.
- All indices are evaluated before the property access instruction and
replaced with a reference to the temporary variable.
Test: webgpu/whlsl/property-evaluation-order.html
* Modules/webgpu/WHLSL/AST/WHLSLExpression.cpp:
(WebCore::WHLSL::AST::Expression::mayBeEffectful const):
* Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
* Modules/webgpu/WHLSL/WHLSLHighZombieFinder.cpp:
(WebCore::WHLSL::findHighZombies):
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::PropertyResolver::handleLeftHandSideBase):
(WebCore::WHLSL::PropertyResolver::handlePropertyAccess):
(WebCore::WHLSL::resolveProperties):
2019-09-07 Chris Dumez <cdumez@apple.com>
Add support for postMessage buffering between the service worker and window
https://bugs.webkit.org/show_bug.cgi?id=201169
Reviewed by Youenn Fablet.
As per the Service Worker specification, a service worker client's message
queue is initially disabled and only gets enabled after:
- The DOMContentLoaded event has been fired
or
- The client sets the navigator.serviceWorker.onmessage event handler
or
- navigator.serviceWorker.startMessages() is called
While the message queue is disabled, messages posted by the service worker
to the client simply get queued and only get processed once the queue gets
enabled.
No new tests, rebaselined existing test.
* dom/Document.cpp:
(WebCore::Document::finishedParsing):
Call startMessages() on the ServiceWorkerContainer once the DOMContentLoaded event has
been fired.
* dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::ensureServiceWorkerContainer):
* dom/ScriptExecutionContext.h:
* workers/service/SWClientConnection.cpp:
(WebCore::SWClientConnection::postMessageToServiceWorkerClient):
Fix a bug where a service worker would not be able to post a message to a client until
that client has accessed navigator.serviceWorker (since the ServiceWorkerContainer is
lazy initialized). To address the issue, we now initialize the ServiceWorkerContainer
when a message is received from the service worker. Previously, messages were just
getting dropped.
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::ServiceWorkerContainer):
When the ServiceWorkerContainer is constructed, suspend its message queue if its context
document is still parsing.
(WebCore::ServiceWorkerContainer::startMessages):
Resume the message queue when startMessages() is called.
(WebCore::ServiceWorkerContainer::postMessage):
Enqueue the event instead of firing it right away.
(WebCore::ServiceWorkerContainer::addEventListener):
if navigator.serviceWorker.onmessage event handler gets set by the JavaScript, call
startMessages().
* workers/service/ServiceWorkerContainer.h:
2019-09-07 Chris Dumez <cdumez@apple.com>
[Service Workers] Drop support for registration resurrection
https://bugs.webkit.org/show_bug.cgi?id=201584
Reviewed by Alex Christensen.
Drop support for registration resurrection (Unregistering then quickly re-registering would resurrect
the original registration instead of creating a new one). This behavior is no longer in the
specification (No more "isUninstalling" flag on the registration, and the registration is removed
from the "scope to registration map" right away upon unregistering).
This resurrection behavior was causing a lot of flakiness in the tests so it is likely we will be able
to unskip some tests. This is also what was causing the flakiness that caused Bug 201169 to be rolled
out.
No new tests, updated existing tests.
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::activeWorkerFromRegistrationID):
(WebCore::SWServer::getRegistration):
(WebCore::SWServer::addRegistration):
(WebCore::SWServer::removeRegistration):
(WebCore::SWServer::getRegistrations):
(WebCore::SWServer::clearAll):
(WebCore::SWServer::clear):
(WebCore::SWServer::terminatePreinstallationWorker):
(WebCore::SWServer::didFinishActivation):
(WebCore::SWServer::claim):
(WebCore::SWServer::addClientServiceWorkerRegistration):
(WebCore::SWServer::removeClientServiceWorkerRegistration):
(WebCore::SWServer::installContextData):
(WebCore::SWServer::runServiceWorker):
(WebCore::SWServer::doRegistrationMatching):
(WebCore::SWServer::registrationFromServiceWorkerIdentifier):
(WebCore::SWServer::registerServiceWorkerClient):
(WebCore::SWServer::unregisterServiceWorkerClient):
(WebCore::SWServer::removeFromScopeToRegistrationMap):
(WebCore::SWServer::performGetOriginsWithRegistrationsCallbacks):
* workers/service/server/SWServer.h:
* workers/service/server/SWServerJobQueue.cpp:
(WebCore::SWServerJobQueue::runRegisterJob):
(WebCore::SWServerJobQueue::runUnregisterJob):
(WebCore::SWServerJobQueue::runUpdateJob):
* workers/service/server/SWServerRegistration.cpp:
(WebCore::SWServerRegistration::clear):
(WebCore::SWServerRegistration::handleClientUnload):
(WebCore::SWServerRegistration::isUnregistered const):
* workers/service/server/SWServerRegistration.h:
(WebCore::SWServerRegistration::scopeURLWithoutFragment const):
* workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::SWServerWorker):
(WebCore::m_scriptResourceMap):
(WebCore::SWServerWorker::contextData const):
(WebCore::SWServerWorker::skipWaiting):
(WebCore::SWServerWorker::setHasPendingEvents):
(WebCore::SWServerWorker::setState):
(WebCore::SWServerWorker::registration const):
* workers/service/server/SWServerWorker.h:
2019-09-07 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r249353.
The test for this change is a flaky failure.
Reverted changeset:
"Add support for postMessage buffering between the service
worker and window"
https://bugs.webkit.org/show_bug.cgi?id=201169
https://trac.webkit.org/changeset/249353
2019-09-07 Alex Christensen <achristensen@webkit.org>
Deprecate WKContextGetWebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=200050
Reviewed by Geoff Garen.
* platform/network/CacheValidation.cpp:
(WebCore::collectVaryingRequestHeaders):
(WebCore::verifyVaryingRequestHeaders):
* platform/network/CacheValidation.h:
Replace a few NetworkStorageSession& with NetworkStorageSession*
so I can replace defaultStorageSession with the correct NetworkStorageSession in NetworkCache.cpp.
2019-09-06 Brent Fulgham <bfulgham@apple.com>
[FTW] Minor cleanups to avoid crashes during web browsing
https://bugs.webkit.org/show_bug.cgi?id=201572
Reviewed by Alexey Proskuryakov.
This patch addresses a few crashes seen when doing general web browsing using
the FTW build of WebKit:
1. ImageBuffer::sinkIntoImage was attempting to use a render target after WTFMoving it elsewhere.
2. ImageBuffer::copyNativeImage was not properly checking the type of the render
target to make sure it was suitable for Bitmap operations.
3. BackingStoreBackendDirect2DImpl::scroll would crash if the scroll offset was
outside the bounds of the current view. In that case, it would attempt to allocate
a zero-size texture, which triggered a crash.
* platform/graphics/win/BackingStoreBackendDirect2DImpl.cpp:
(WebCore::BackingStoreBackendDirect2DImpl::scroll):
* platform/graphics/win/ImageBufferDirect2D.cpp:
(WebCore::ImageBuffer::sinkIntoImage):
(WebCore::ImageBuffer::copyNativeImage const):
2019-09-06 Wenson Hsieh <wenson_hsieh@apple.com>
Incorrect selection rect revealed after pasting images in a contenteditable element
https://bugs.webkit.org/show_bug.cgi?id=201549
<rdar://problem/50956429>
Reviewed by Simon Fraser.
Editor::replaceSelectionWithFragment currently scrolls to reveal the selection after inserting the given
DocumentFragment. However, this scrolling occurs before any inserted images have loaded yet, which causes the
wrong caret rect to be revealed, since all image elements inserted during paste will be empty.
To fix this, we defer revealing the selection after inserting the fragment until after all images that have
been inserted are done loading. While waiting for images to load, if any layers which may be scrolled as a
result of revealing the selection are scrolled, we additionally cancel the deferred selection reveal. See
comments below for more detail.
Tests: editing/pasteboard/do-not-reveal-selection-after-programmatic-scroll.html
editing/pasteboard/reveal-selection-after-pasting-images.html
PasteImage.RevealSelectionAfterPastingImage
* editing/Editing.cpp:
(WebCore::visibleImageElementsInRangeWithNonLoadedImages):
Add a new helper to iterate through a range and collect all image elements in that range, that contain cached
images that have not finished loading yet.
* editing/Editing.h:
* editing/Editor.cpp:
(WebCore::Editor::replaceSelectionWithFragment):
Instead of always immediately revealing the selection after applying the ReplaceSelectionCommand, collect the
image elements that were just inserted, and avoid immediately revealing the selection if any of these images
have non-null cached images, but are not loaded yet. Instead, hold on to these images in a set, remove them once
they finish loading using the new method below, and once all images are removed, reveal the selection.
(WebCore::Editor::revealSelectionIfNeededAfterLoadingImageForElement):
(WebCore::Editor::renderLayerDidScroll):
Called whenever a scrollable RenderLayer is scrolled (or in the case of FrameView, the root layer). In the case
where Editor is waiting to reveal the selection, we check to see if the scrolled layer is an ancestor of the
layer enclosing the start of the selection.
(WebCore::Editor::respondToChangedSelection):
If the selection changes between pasting and waiting for pasted images to load, just cancel waiting to reveal
the selection after pasting.
* editing/Editor.h:
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::insertedContentRange const):
Add a helper method to grab the Range of content inserted after applying the command.
* editing/ReplaceSelectionCommand.h:
* page/FrameView.cpp:
(WebCore::FrameView::scrollPositionChanged):
* page/FrameView.h:
* page/Page.cpp:
(WebCore::Page::didFinishLoadingImageForElement):
Notify Editor after an image finishes loading.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollTo):
2019-09-06 Brent Fulgham <bfulgham@apple.com>
PathDirect2D Cleanups
https://bugs.webkit.org/show_bug.cgi?id=201534
Reviewed by Fujii Hironori.
1. Add a COMPtr<> move operator.
2. Reduce copying ID2D1Geometry objects.
3. Protect against using the ID2D1PathGeometry after the
ID2D1GeometrySink's Close operation is used.
4. Add a debug-only 'refCount' function to COMPtr to help
track down memory errors.
* platform/graphics/Path.h:
(WebCore::Path::activePath const): Deleted.
* platform/graphics/win/Direct2DOperations.cpp:
(WebCore::Direct2D::fillPath):
(WebCore::Direct2D::drawPath):
* platform/graphics/win/PathDirect2D.cpp:
* platform/win/COMPtr.h:
(COMPtr::COMPtr):
(=):
(refCount):
2019-09-06 Chris Dumez <cdumez@apple.com>
Move the ResourceLoadObserver logic to WebKit2
https://bugs.webkit.org/show_bug.cgi?id=201517
Reviewed by Brent Fulgham.
Move the ResourceLoadObserver logic to WebKit2 since it is not used by WebKit1. This allows us to simplify
code.
In a follow-up patch, I will simplify the code even further by leveraging the fact that a WebContent process
is always associated with a single WebsiteDataStore / sessionID:
- No need for a HashMap of sessionIDs
- No need to even allocate the ResourceLoadObserver if the WebProcess is associated with an ephemeral session.
* dom/Document.h:
* loader/ResourceLoadObserver.cpp:
(WebCore::sharedObserver):
(WebCore::ResourceLoadObserver::setShared):
(WebCore::ResourceLoadObserver::shared):
* loader/ResourceLoadObserver.h:
(WebCore::ResourceLoadObserver::~ResourceLoadObserver):
(WebCore::ResourceLoadObserver::logSubresourceLoading):
(WebCore::ResourceLoadObserver::logWebSocketLoading):
(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
(WebCore::ResourceLoadObserver::logFontLoad):
(WebCore::ResourceLoadObserver::logCanvasRead):
(WebCore::ResourceLoadObserver::logCanvasWriteOrMeasure):
(WebCore::ResourceLoadObserver::logNavigatorAPIAccessed):
(WebCore::ResourceLoadObserver::logScreenAPIAccessed):
(WebCore::ResourceLoadObserver::statisticsForURL):
(WebCore::ResourceLoadObserver::updateCentralStatisticsStore):
(WebCore::ResourceLoadObserver::clearState):
(WebCore::ResourceLoadObserver::setShouldLogUserInteraction):
* page/DeprecatedGlobalSettings.h:
2019-09-06 Justin Fan <justin_fan@apple.com>
[WebGPU] Update several interface and enum names to match spec
https://bugs.webkit.org/show_bug.cgi?id=201564
Reviewed by Dean Jackson.
Rename GPUShaderStageBit -> GPUShaderStage.
Rename GPUColorWriteBits -> GPUColorWrite.
Rename TRANSFER_SRC/DST -> COPY_SRC/DST.
Rename GPUPipelineStageDescriptor -> GPUProgrammableStageDescriptor.
Existing tests trivially updated to match.
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Modules/webgpu/GPUBindGroupLayoutBinding.h:
* Modules/webgpu/GPUBufferUsage.idl:
* Modules/webgpu/GPUColorStateDescriptor.idl:
* Modules/webgpu/GPUColorWrite.idl: Renamed from Source/WebCore/Modules/webgpu/GPUColorWriteBits.idl.
* Modules/webgpu/GPUShaderStage.h: Renamed from Source/WebCore/Modules/webgpu/GPUShaderStageBit.h.
* Modules/webgpu/GPUShaderStage.idl: Renamed from Source/WebCore/Modules/webgpu/GPUShaderStageBit.idl.
* Modules/webgpu/GPUTextureUsage.idl:
* Modules/webgpu/WebGPUComputePipelineDescriptor.cpp:
(WebCore::WebGPUComputePipelineDescriptor::tryCreateGPUComputePipelineDescriptor const):
* Modules/webgpu/WebGPUComputePipelineDescriptor.h:
* Modules/webgpu/WebGPUComputePipelineDescriptor.idl:
* Modules/webgpu/WebGPUDevice.cpp:
* Modules/webgpu/WebGPUProgrammableStageDescriptor.cpp: Renamed from Source/WebCore/Modules/webgpu/WebGPUPipelineStageDescriptor.cpp.
(WebCore::WebGPUProgrammableStageDescriptor::tryCreateGPUProgrammableStageDescriptor const):
* Modules/webgpu/WebGPUProgrammableStageDescriptor.h: Renamed from Source/WebCore/Modules/webgpu/WebGPUPipelineStageDescriptor.h.
* Modules/webgpu/WebGPUProgrammableStageDescriptor.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUPipelineStageDescriptor.idl.
* Modules/webgpu/WebGPURenderPipelineDescriptor.cpp:
(WebCore::WebGPURenderPipelineDescriptor::tryCreateGPURenderPipelineDescriptor const):
* Modules/webgpu/WebGPURenderPipelineDescriptor.h:
* Modules/webgpu/WebGPURenderPipelineDescriptor.idl:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* platform/graphics/gpu/GPUBuffer.h:
(WebCore::GPUBuffer::isCopySource const):
(WebCore::GPUBuffer::isCopyDestination const):
(WebCore::GPUBuffer::isTransferSource const): Deleted.
(WebCore::GPUBuffer::isTransferDestination const): Deleted.
* platform/graphics/gpu/GPUBufferUsage.h:
* platform/graphics/gpu/GPUColorStateDescriptor.h:
* platform/graphics/gpu/GPUColorWrite.h: Renamed from Source/WebCore/platform/graphics/gpu/GPUColorWriteBits.h.
* platform/graphics/gpu/GPUComputePipelineDescriptor.h:
(WebCore::GPUComputePipelineDescriptor::GPUComputePipelineDescriptor):
* platform/graphics/gpu/GPUPipelineDescriptorBase.h:
* platform/graphics/gpu/GPUProgrammableStageDescriptor.h: Renamed from Source/WebCore/platform/graphics/gpu/GPUPipelineStageDescriptor.h.
(WebCore::GPUProgrammableStageDescriptor::GPUProgrammableStageDescriptor):
* platform/graphics/gpu/GPURenderPipelineDescriptor.h:
(WebCore::GPURenderPipelineDescriptor::GPURenderPipelineDescriptor):
* platform/graphics/gpu/GPUTexture.h:
(WebCore::GPUTexture::isCopySource const):
(WebCore::GPUTexture::isCopyDestination const):
(WebCore::GPUTexture::isReadOnly const):
(WebCore::GPUTexture::isTransferSource const): Deleted.
(WebCore::GPUTexture::isTransferDestination const): Deleted.
* platform/graphics/gpu/GPUTextureUsage.h:
* platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:
(WebCore::GPUBindGroupLayout::tryCreate):
* platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
(WebCore::GPUBindGroup::tryCreate):
* platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
* platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
(WebCore::GPUCommandBuffer::copyBufferToBuffer):
(WebCore::GPUCommandBuffer::copyBufferToTexture):
(WebCore::GPUCommandBuffer::copyTextureToBuffer):
(WebCore::GPUCommandBuffer::copyTextureToTexture):
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm:
(WebCore::trySetFunctions):
* platform/graphics/gpu/cocoa/GPUPipelineMetalConvertLayout.cpp:
(WebCore::convertShaderStageFlags):
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::mtlColorWriteMaskForGPUColorWriteFlags):
(WebCore::trySetFunctions):
* platform/graphics/gpu/cocoa/GPUTextureMetal.mm:
(WebCore::mtlTextureUsageForGPUTextureUsageFlags):
2019-09-06 Said Abou-Hallawa <sabouhallawa@apple.com>
REGRESSION (r249367): m_decodingPromises grows indefinitely until ImageLoader destruction
https://bugs.webkit.org/show_bug.cgi?id=201402
Reviewed by Youenn Fablet and Daniel Bates.
Add the static functions resolvePromises() and rejectPromises(). These
functions take an lvalue reference to a Vector of promises. Inside them,
the lvalue reference argument are exchanged with an empty Vector of
promises then the promises are processed. This clears m_decodingPromises
and fixes the leak.
Add an internal API which returns the count of the pending promises of
an HTMLImageElement. This internal API will be used in the attached test.
Test: fast/images/decode-resolve-reject-no-leak.html
* html/HTMLImageElement.h:
(WebCore::HTMLImageElement::pendingDecodePromisesCountForTesting const):
* loader/ImageLoader.cpp:
(WebCore::resolvePromises):
ImageLoader::decode() calls BitmapImage::decode() and moves m_decodingPromises
in capture. When decoding finishes, this function is called to resolve the
promises. But ImageLoader might get deleted before the image decoding
finishes. So this function has to be static.
(WebCore::rejectPromises):
(WebCore::ImageLoader::resolveDecodePromises):
(WebCore::ImageLoader::rejectDecodePromises):
(WebCore::ImageLoader::notifyFinished):
(WebCore::ImageLoader::decode):
(WebCore::resolveDecodePromises): Deleted.
(WebCore::rejectDecodePromises): Deleted.
* loader/ImageLoader.h:
(WebCore::ImageLoader::pendingDecodePromisesCountForTesting const):
* testing/Internals.cpp:
(WebCore::Internals::imagePendingDecodePromisesCountForTesting):
* testing/Internals.h:
* testing/Internals.idl:
2019-09-06 Said Abou-Hallawa <sabouhallawa@apple.com>
Prefer null namespace 'href' over 'xlink:href' on SVG elements
https://bugs.webkit.org/show_bug.cgi?id=195802
Reviewed by Youenn Fablet.
-- When the attribute "href" is set, its value is always reflected in
SVGURIReference::m_href.
-- When the attribute "href" is removed, the value of the attribute
"xlink:href" is always reflected in SVGURIReference::m_href.
-- When the "xlink:href" is set, its value is reflected in
SVGURIReference::m_href only if the attribute "href" is not set.
Tests: svg/custom/href-xlink-href-gradient-element-expected.svg
svg/custom/href-xlink-href-gradient-element.svg
svg/custom/href-xlink-href-use-element-expected.svg
svg/custom/href-xlink-href-use-element.svg
* svg/SVGURIReference.cpp:
(WebCore::SVGURIReference::parseAttribute):
2019-09-06 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Set computed row width.
https://bugs.webkit.org/show_bug.cgi?id=201533
<rdar://problem/55098828>
Reviewed by Antti Koivisto.
Decouple cell box layout/display box setup and set the computed row width.
* layout/Verification.cpp:
(WebCore::Layout::LayoutState::verifyAndOutputMismatchingLayoutTree const):
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::layout):
2019-09-06 Zalan Bujtas <zalan@apple.com>
[LFC] A formatting context root is always a containing block for relative: static boxes.
https://bugs.webkit.org/show_bug.cgi?id=201554
<rdar://problem/55123295>
Reviewed by Antti Koivisto.
"For other elements, if the element's position is 'relative' or 'static', the containing block is formed by the content
edge of the nearest ancestor box that is a block container or which establishes a formatting context."
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::containingBlock const):
* page/FrameViewLayoutContext.cpp:
(WebCore::layoutUsingFormattingContext):
2019-09-06 Sihui Liu <sihui_liu@apple.com>
IndexedDB: use SQL COUNT statement for count operation
https://bugs.webkit.org/show_bug.cgi?id=201465
Reviewed by Geoffrey Garen.
We did count operation by moving objectStore/index iterator from begin to end and counting the steps. We can
utilize the SQL COUNT statement, and improve the performance further by caching the statement.
Tested on release build minibrowser. Without the change, the mean time to complete one iteration in
PerformanceTests/IndexedDB/basic/index-count.html and PerformanceTests/IndexedDB/basic/objectStore-count.html is
about 50ms. With the change it is about 2ms.
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::getCount):
(WebCore::IDBServer::SQLiteIDBBackingStore::cachedStatement):
(WebCore::IDBServer::SQLiteIDBBackingStore::closeSQLiteDB):
* Modules/indexeddb/server/SQLiteIDBBackingStore.h:
2019-09-06 Alex Christensen <achristensen@webkit.org>
When disabling legacy private browsing for testing, change the SessionID back to what it was, not the defaultSessionID
https://bugs.webkit.org/show_bug.cgi?id=201480
Reviewed by Youenn Fablet.
No change in behavior, but this blocks bug 200050 which will make WebKitTestRunner use a persistent, non-default session.
Without this change, that change causes lots of test failures because we are switching from the legacy private browsing session
to the default session instead of the session we were using.
* page/Page.cpp:
(WebCore::Page::enableLegacyPrivateBrowsing): Deleted.
* page/Page.h:
* page/PageGroup.cpp:
(WebCore::PageGroup::addPage):
(WebCore::PageGroup::setSessionIDForTesting):
(WebCore::PageGroup::enableLegacyPrivateBrowsingForTesting): Deleted.
* page/PageGroup.h:
* storage/StorageNamespaceProvider.cpp:
(WebCore::StorageNamespaceProvider::setSessionIDForTesting):
(WebCore::StorageNamespaceProvider::enableLegacyPrivateBrowsingForTesting): Deleted.
* storage/StorageNamespaceProvider.h:
2019-09-06 Youenn Fablet <youenn@apple.com>
Remove MediaStreamPrivate::scheduleDeferredTask
https://bugs.webkit.org/show_bug.cgi?id=200975
Reviewed by Eric Carlson.
All calls to scheduleDeferredTask are done on the main thread.
This was initially done to trigger less reconfiguration.
But this makes the implementation significantly more complex.
For instance, we have to wait for the document to update its media state
and send it to UIProcess before calling the allow completion handler.
Covered by existing tests.
* Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::MediaStream):
Make sure to update the document media state once the tracks have been added, similarly to the other constructor.
This ensures the document media state is computed with the new MediaStreamTrack.
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::isMediaStreamCorrectlyStarted):
(WebCore::UserMediaRequest::allow):
(WebCore::UserMediaRequest::stop):
(WebCore::UserMediaRequest::mediaStreamDidFail):
* Modules/mediastream/UserMediaRequest.h:
* page/MediaProducer.h:
(WebCore::MediaProducer::isCapturing):
Make sure to include getDisplayMedia as part of capture check.
* platform/mediastream/MediaStreamPrivate.cpp:
(WebCore::MediaStreamPrivate::trackMutedChanged):
(WebCore::MediaStreamPrivate::trackEnabledChanged):
(WebCore::MediaStreamPrivate::trackStarted):
(WebCore::MediaStreamPrivate::trackEnded):
* platform/mediastream/MediaStreamPrivate.h:
2019-09-06 Rob Buis <rbuis@igalia.com>
Implement MathML DOM
https://bugs.webkit.org/show_bug.cgi?id=200470
Reviewed by Ryosuke Niwa.
Expose MathML DOM as specified here [1].
[1] https://mathml-refresh.github.io/mathml-core/#dom-mathmlelement
Tests: imported/w3c/web-platform-tests/mathml/relations/html5-tree/clipboard-event-handlers.tentative.html
imported/w3c/web-platform-tests/mathml/relations/html5-tree/css-inline-style-dynamic.tentative.html
imported/w3c/web-platform-tests/mathml/relations/html5-tree/css-inline-style-interface.tentative.html
imported/w3c/web-platform-tests/mathml/relations/html5-tree/html-or-foreign-element-interfaces.tentative.html
imported/w3c/web-platform-tests/mathml/relations/html5-tree/integration-point-4.html
imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html
mathml/focus-event-handling.html
mathml/tabindex-order.html
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSElementCustom.cpp:
(WebCore::createNewElementWrapper):
* bindings/js/JSNodeCustom.cpp:
(WebCore::createWrapperInline):
* mathml/MathMLElement.cpp:
(WebCore::MathMLElement::parseAttribute):
* mathml/MathMLElement.idl: Copied from Source/WebCore/html/HTMLOrForeignElement.idl.
* mathml/MathMLMathElement.idl: Copied from Source/WebCore/html/HTMLOrForeignElement.idl.
* mathml/mathtags.in:
2019-09-06 Zan Dobersek <zdobersek@igalia.com>
[GStreamer] YUV buffers on iMX platforms have to be treated as RGBA
https://bugs.webkit.org/show_bug.cgi?id=201537
Reviewed by Philippe Normand.
The imxvpudecoder element on iMX platforms decodes YUV data in a
platform-specific way, gathering the YUV data in a single texture and
then relying on the sampler in the Vivante graphics drivers to
automagically decode that YUV data into RGBA values.
To correctly display such decoded data, we have to represent that
single texture as an RGBA texture, even when the GStreamer buffer is
crafted as containing planar YUV data.
* platform/graphics/gstreamer/GStreamerCommon.h:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::GstVideoFrameHolder::GstVideoFrameHolder):
(WebCore::GstVideoFrameHolder::platformLayerBuffer):
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
(WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
2019-09-06 Andres Gonzalez <andresg_22@apple.com>
AccessibilityRenderObject::setSelectedTextRange fails to set the selection passed an empty line.
https://bugs.webkit.org/show_bug.cgi?id=201518
<rdar://problem/54835122>
Reviewed by Ryosuke Niwa.
Test: accessibility/set-selected-text-range-after-newline.html
In the case of an empty line, the CharacterIterator range start and end
were not equal, thus we were not advancing the iterator and returning
the iterator range end, which is not correct. With this change we are
always advancing the iterator if its text is just '\n'. This covers all
the cases we fixed before plus empty lines.
* editing/Editing.cpp:
(WebCore::visiblePositionForIndexUsingCharacterIterator):
2019-09-05 Fujii Hironori <Hironori.Fujii@sony.com>
[Win] Add support for MouseEvent.buttons
https://bugs.webkit.org/show_bug.cgi?id=201445
Reviewed by Brent Fulgham.
Spec: <https://www.w3.org/TR/uievents/#dom-mouseevent-buttons>
* platform/win/GDIUtilities.h:
(buttonsForEvent): Added.
* platform/win/PlatformMouseEventWin.cpp:
(WebCore::PlatformMouseEvent::PlatformMouseEvent):
Set m_buttons.
2019-09-05 Fujii Hironori <Hironori.Fujii@sony.com>
[Win] Support Per-Monitor (V2) DPI Awareness
https://bugs.webkit.org/show_bug.cgi?id=201450
Reviewed by Don Olmstead.
* platform/win/GDIUtilities.cpp:
(WebCore::deviceScaleFactorForWindow): Use GetDpiForWindow if available by using soft linking.
2019-09-05 Charlie Turner <cturner@igalia.com>
[EME] Introduce a Proxy CDM for thread-safe access to CDM instances from background decryption threads
https://bugs.webkit.org/show_bug.cgi?id=201339
Reviewed by Xabier Rodriguez-Calvar.
Covered by existing tests.
* platform/encryptedmedia/CDMInstance.h:
* platform/encryptedmedia/clearkey/CDMClearKey.cpp:
(WebCore::isolatedKey):
(WebCore::ProxyCDMClearKey::isolatedKeys const):
(WebCore::CDMInstanceClearKey::CDMInstanceClearKey):
* platform/encryptedmedia/clearkey/CDMClearKey.h:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::cdmInstanceAttached):
* platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:
(handleKeyResponse):
(findAndSetKey):
(decrypt):
* platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
(isCDMInstanceAvailable):
(sinkEventHandler):
(setContext):
* platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.h:
* testing/MockCDMFactory.cpp:
(WebCore::MockCDMInstance::proxyCDM const):
* testing/MockCDMFactory.h:
2019-09-05 Zalan Bujtas <zalan@apple.com>
[LFC] LayoutState should not need the initial containing block
https://bugs.webkit.org/show_bug.cgi?id=201511
<rdar://problem/55079241>
Reviewed by Antti Koivisto.
Throw-away layouts should just be able to initialize a dedicated LayoutState without passing in the ICB.
* layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::markNeedsUpdate):
(WebCore::Layout::LayoutState::run):
(WebCore::Layout::LayoutState::LayoutState): Deleted.
* layout/LayoutState.h:
(WebCore::Layout::LayoutState::initialContainingBlock const): Deleted.
* layout/Verification.cpp:
(WebCore::Layout::LayoutState::verifyAndOutputMismatchingLayoutTree const):
* layout/floats/FloatingContext.cpp: Fix a (very sad)typo.
(WebCore::Layout::FloatingContext::constraints const):
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::printLayoutTreeForLiveDocuments):
2019-09-05 Justin Fan <justin_fan@apple.com>
[WebGPU] Implement GPUUncapturedErrorEvent
https://bugs.webkit.org/show_bug.cgi?id=199676
Reviewed by Dean Jackson.
Implement GPUUncapturedErrorEvent and "uncapturederror" event name.
Add the onuncapturederror EventHandler attribute to GPUDevice.
Test: webgpu/uncaptured-errors.html
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Modules/webgpu/GPUUncapturedErrorEvent.cpp:
(WebCore::GPUUncapturedErrorEvent::create):
(WebCore::GPUUncapturedErrorEvent::GPUUncapturedErrorEvent):
(WebCore::GPUUncapturedErrorEvent::eventInterface const):
* Modules/webgpu/GPUUncapturedErrorEvent.h:
* Modules/webgpu/GPUUncapturedErrorEvent.idl:
* Modules/webgpu/WebGPUAdapter.cpp: Must now provide ScriptExecutionContext to any created GPUDevice.
(WebCore::WebGPUAdapter::requestDevice const):
* Modules/webgpu/WebGPUAdapter.h:
* Modules/webgpu/WebGPUAdapter.idl:
* Modules/webgpu/WebGPUDevice.cpp: Is now an EventTarget.
(WebCore::WebGPUDevice::tryCreate):
(WebCore::WebGPUDevice::WebGPUDevice):
(WebCore::printValidationErrorToConsole):
(WebCore::WebGPUDevice::dispatchUncapturedError): Events should only be fired from the main thread.
* Modules/webgpu/WebGPUDevice.h:
* Modules/webgpu/WebGPUDevice.idl:
* Modules/webgpu/WebGPUDeviceEventHandler.idl:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* dom/EventNames.h:
* dom/EventNames.in:
* dom/EventTargetFactory.in:
* platform/graphics/gpu/GPUError.cpp: GPUErrors can only be created internally; creation should never fail.
(WebCore::createError):
* platform/graphics/gpu/GPUError.h:
* platform/graphics/gpu/GPUErrorScopes.cpp:
(WebCore::GPUErrorScopes::create):
(WebCore::GPUErrorScopes::GPUErrorScopes):
(WebCore::GPUErrorScopes::generateError): Use a callback for now, since GPUErrorScopes is still under platform.
* platform/graphics/gpu/GPUErrorScopes.h:
(WebCore::GPUErrorScopes::create): Deleted.
2019-09-05 Antti Koivisto <antti@apple.com>
Generate event region for both the main graphics layer and the scrolled contents layer
https://bugs.webkit.org/show_bug.cgi?id=201487
Reviewed by Simon Fraser.
We currently generate region for one of them only. With borders both need it.
Also share more code with painting paths.
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateEventRegion):
Generate region for both layers.
(WebCore::RenderLayerBacking::paintIntoLayer):
Add event region context parameter so we can use this function for event region update too.
* rendering/RenderLayerBacking.h:
2019-09-05 Ryosuke Niwa <rniwa@webkit.org>
REGRESSION (iOS 13): Bulleted list copied from Notes to Mail results in Times New Roman
https://bugs.webkit.org/show_bug.cgi?id=201490
Reviewed by Daniel Bates.
The bug was caused by an element in the pasted content not having any explicit font name resolving
to use the font-family value of `-webkit-standard`. When such an inline style is inserted into
Mail's WKWebView which sets a different font family, ReplaceSelectionCommand would fail to strip away,
making the pasted content using the default font family of Times New Roman.
Fixed the bug by stripping away font-family set to -webkit-standard in the sanitization document
since that's indicative of the pasted content not having any font family being specified.
In the future, we should consider making regular copy (as opposed to the copy for sanitization)
resolve generic font family names to concrete font names since different WKWebView might be using
different concrete font names. Unfortuantely, such a change is quite involved and risky since various
paste side code in EditingStyle that removes redundant inline styles (i.e. redundant `font-family`)
need to be aware of this special font family resolution.
Tests: editing/pasteboard/paste-cocoa-writer-markup-with-webkit-standard-font-family.html
PasteHTML.DoesNotAddStandardFontFamily
* editing/EditingStyle.cpp:
(WebCore::EditingStyle::mergeInlineAndImplicitStyleOfElement):
(WebCore::EditingStyle::wrappingStyleForSerialization):
(WebCore::familyNameFromCSSPrimitiveValue): Added.
(WebCore::loneFontFamilyName): Extracted from usesForbiddenSystemFontAsOnlyFontFamilyName. Fixed
a bug that it was not handling the case when `font-family` property's value is a CSSPrimitiveValue
instead of a CSSValueList.
(WebCore::usesForbiddenSystemFontAsOnlyFontFamilyName): Deleted.
(WebCore::EditingStyle::mergeStyleFromRulesForSerialization): Remove `font-family` property when
StandardFontFamilySerializationMode::Strip is specified and its value is `-webkit-standard`.
* editing/EditingStyle.h:
* editing/markup.cpp:
(WebCore::StyledMarkupAccumulator::StyledMarkupAccumulator): Added
StandardFontFamilySerializationMode as an argument.
(WebCore::StyledMarkupAccumulator::appendStartTag):
(WebCore::StyledMarkupAccumulator::serializeNodes):
(WebCore::serializePreservingVisualAppearanceInternal): Ditto.
(WebCore::serializePreservingVisualAppearance): Use StandardFontFamilySerializationMode::Keep
to preserve the pre-existing behavior.
(WebCore::sanitizedMarkupForFragmentInDocument): Use StandardFontFamilySerializationMode::Strip
as this is the code used by sanitization code.
2019-09-05 Chris Fleizach <cfleizach@apple.com>
AX: children cache are not re-computed if tab index is removed
https://bugs.webkit.org/show_bug.cgi?id=201502
Reviewed by Zalan Bujtas.
Test: accessibility/tabindex-removed.html
If the tabindex changes, it can potentially affect whether an element is accessible. If we don't update the children cache
information can be stale and lead to incorrect navigation with VoiceOver.
* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::handleAttributeChange):
2019-09-05 Konstantin Tokarev <annulen@yandex.ru>
Don't call PlatformMediaSessionManager methods when neither VIDEO nor WEB_AUDIO is enabled
https://bugs.webkit.org/show_bug.cgi?id=201508
Reviewed by Jer Noble.
Definitions of these methods are guarded with #if ENABLE(VIDEO) || ENABLE(WEB_AUDIO),
so calling them causes linking errors.
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setShouldDeactivateAudioSession):
* testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::processWillSuspend):
(WebCore::Internals::processDidResume):
(WebCore::Internals::setIsPlayingToAutomotiveHeadUnit):
2019-09-05 Keith Rollin <krollin@apple.com>
Fix implicit conversion that loses precision
https://bugs.webkit.org/show_bug.cgi?id=201476
<rdar://problem/55043129>
Reviewed by Youenn Fablet, Alex Christensen.
Building for watchOS results in the following error:
.../Source/WebCore/fileapi/NetworkSendQueue.cpp:66:42: error: implicit conversion loses integer precision: 'unsigned long long' to 'unsigned int' [-Werror,-Wshorten-64-to-32]
enqueue(JSC::ArrayBuffer::create(byteLength, 1), 0, 0);
Fix this by replacing byteLength (which is known to be zero at this
point) with 0U.
No new tests -- no new or changed functionality.
* fileapi/NetworkSendQueue.cpp:
(WebCore::NetworkSendQueue::enqueue):
2019-09-05 Youenn Fablet <youenn@apple.com>
Introduce WorkerSWClientConnection to make SWClientConnection mono-thread
https://bugs.webkit.org/show_bug.cgi?id=201430
Reviewed by Alex Christensen.
Make SWClientConnection RefCounted.
Add a WorkerSWClientConnection dedicated to be used by worker/service worker contexts.
Simplify ServiceWorkerContainer logic based on this refactoring.
Covered by existing tests.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::swClientConnection):
* workers/WorkerGlobalScope.h:
* workers/service/SWClientConnection.cpp:
(WebCore::SWClientConnection::scheduleJob):
(WebCore::SWClientConnection::failedFetchingScript):
(WebCore::SWClientConnection::postTaskForJob):
* workers/service/SWClientConnection.h:
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::mainThreadConnection):
(WebCore::ServiceWorkerContainer::ready):
(WebCore::ServiceWorkerContainer::scheduleJob):
(WebCore::ServiceWorkerContainer::getRegistration):
(WebCore::ServiceWorkerContainer::updateRegistrationState):
(WebCore::ServiceWorkerContainer::getRegistrations):
(WebCore::ServiceWorkerContainer::notifyRegistrationIsSettled):
(WebCore::ServiceWorkerContainer::jobFinishedLoadingScript):
(WebCore::ServiceWorkerContainer::notifyFailedFetchingScript):
(WebCore::ServiceWorkerContainer::ensureSWClientConnection):
(WebCore::ServiceWorkerContainer::stop):
* workers/service/ServiceWorkerContainer.h:
* workers/service/ServiceWorkerFetchResult.h:
(WebCore::ServiceWorkerFetchResult::isolatedCopy const):
* workers/service/WorkerSWClientConnection.cpp: Added.
(WebCore::WorkerSWClientConnection::WorkerSWClientConnection):
(WebCore::WorkerSWClientConnection::~WorkerSWClientConnection):
(WebCore::WorkerSWClientConnection::matchRegistration):
(WebCore::WorkerSWClientConnection::getRegistrations):
(WebCore::WorkerSWClientConnection::whenRegistrationReady):
(WebCore::WorkerSWClientConnection::addServiceWorkerRegistrationInServer):
(WebCore::WorkerSWClientConnection::removeServiceWorkerRegistrationInServer):
(WebCore::WorkerSWClientConnection::didResolveRegistrationPromise):
(WebCore::WorkerSWClientConnection::postMessageToServiceWorker):
(WebCore::WorkerSWClientConnection::serverConnectionIdentifier const):
(WebCore::WorkerSWClientConnection::mayHaveServiceWorkerRegisteredForOrigin const):
(WebCore::WorkerSWClientConnection::syncTerminateWorker):
(WebCore::WorkerSWClientConnection::registerServiceWorkerClient):
(WebCore::WorkerSWClientConnection::unregisterServiceWorkerClient):
(WebCore::WorkerSWClientConnection::finishFetchingScriptInServer):
(WebCore::WorkerSWClientConnection::isThrottleable const):
(WebCore::WorkerSWClientConnection::updateThrottleState):
(WebCore::WorkerSWClientConnection::scheduleJob):
(WebCore::WorkerSWClientConnection::scheduleJobInServer):
* workers/service/WorkerSWClientConnection.h: Added.
2019-09-04 Fujii Hironori <Hironori.Fujii@sony.com>
[Win][Clang] InspectorNetworkAgent.cpp(1122,20): error: cannot decompose this type; 'std::tuple_size<const WTF::KeyValuePair<WTF::String, WTF::RefPtr<WTF::JSONImpl::Value, WTF::DumbPtrTraits<WTF::JSONImpl::Value> > >>::value' is not a valid integral const
https://bugs.webkit.org/show_bug.cgi?id=201489
Unreviewed build fix for clang-cl.
clang-cl 8 can't use a structured binding for a const struct.
No behavior change.
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::interceptWithResponse): Not to use a structured binding for a const struct.
2019-09-04 Chris Dumez <cdumez@apple.com>
Unreviewed, another build fix after r249501.
* loader/EmptyFrameLoaderClient.h:
2019-09-04 Timothy Hatcher <timothy@apple.com>
Mail appears to be double inverting code copied from Notes, Xcode, or Terminal.
https://bugs.webkit.org/show_bug.cgi?id=201368
rdar://problem/40529867
Reviewed by Ryosuke Niwa.
Dark mode content that is pasted should have the inline styles inverse color
transformed by the color filter to match the color filtered document contents.
Layout Test: editing/pasteboard/paste-dark-mode-color-filtered.html
API Tests: PasteHTML.TransformColorsOfDarkContent, PasteHTML.DoesNotTransformColorsOfLightContent,
PasteRTFD.TransformColorsOfDarkContent, PasteRTFD.DoesNotTransformColorsOfLightContent
* editing/EditingStyle.cpp:
(WebCore::EditingStyle::inverseTransformColorIfNeeded): Added caret-color to the transformed properties.
* editing/ReplaceSelectionCommand.cpp:
(WebCore::fragmentNeedsColorTransformed): Added.
(WebCore::ReplaceSelectionCommand::inverseTransformColor): Added.
(WebCore::ReplaceSelectionCommand::doApply): Call fragmentNeedsColorTransformed() and inverseTransformColor().
* editing/ReplaceSelectionCommand.h:
2019-09-04 Chris Dumez <cdumez@apple.com>
Unreviewed, drop extra whitespace added in r249515.
* loader/EmptyFrameLoaderClient.h:
2019-09-04 Chris Dumez <cdumez@apple.com>
Unreviewed build fix after r249501.
r249501 seems to have exposed the fact that EmptyFrameLoaderClient.h is missing a #pragma once.
* loader/EmptyFrameLoaderClient.h:
2019-09-06 Simon Fraser <simon.fraser@apple.com>
REGRESSION (iOS 13): If an overflow:hidden with a non-zero scroll position is toggled to overflow:scroll, some other scroll causes its scroll position to get reset
https://bugs.webkit.org/show_bug.cgi?id=201528
rdar://problem/55044885
Reviewed by Frédéric Wang.
If, when an overflow scrolling node is created, the scroller has non-zero scroll
position (for example, via toggling to overflow:hidden, setting scrollTop, then toggling
to overflow:scroll), then on the next update its scroll position will reset back to zero.
The bug was that newly created ScrollingTreeScrollingNodes didn't set m_currentScrollPosition
to the scroll position coming from the state node, so a subsequent update could cause
the 0,0 currentScrollPosition to get applied. If we're making a new node, and there's no
requestedScrollPosition, then initialize m_currentScrollPosition.
Test: scrollingcoordinator/ios/scroller-initial-scroll-position.html
* page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeScrollingNode::commitStateAfterChildren):
* page/scrolling/ScrollingTreeScrollingNode.h:
2019-09-04 Yusuke Suzuki <ysuzuki@apple.com>
[JSC] Make Promise implementation faster
https://bugs.webkit.org/show_bug.cgi?id=200898
Reviewed by Saam Barati.
* Modules/streams/ReadableStream.js:
(pipeThrough):
* Modules/streams/ReadableStreamInternals.js:
(readableStreamError):
(readableStreamReaderGenericRelease):
2019-09-04 Tim Horton <timothy_horton@apple.com>
Line artifacts in note body after viewing note with <attachment>s
https://bugs.webkit.org/show_bug.cgi?id=201474
<rdar://problem/51306108>
Reviewed by Simon Fraser.
Test: fast/attachment/attachment-border-should-stay-inside-attachment.html
* rendering/RenderThemeIOS.mm:
(WebCore::attachmentBorderPath):
(WebCore::paintAttachmentBorder):
Inset the border rect by half the width, so that <attachment> doesn't
paint out-of-bounds.
2019-09-04 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Local Overrides - Provide substitution content for resource loads (URL based)
https://bugs.webkit.org/show_bug.cgi?id=201262
<rdar://problem/13108764>
Reviewed by Devin Rousso.
Tests: http/tests/inspector/network/local-resource-override-basic.html
http/tests/inspector/network/local-resource-override-main-resource.html
http/tests/inspector/network/local-resource-override-script-tag.html
http/tests/inspector/network/resource-response-inspector-override.html
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* Headers.cmake:
New files.
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::willInterceptRequestImpl):
(WebCore::InspectorInstrumentation::shouldInterceptResponseImpl):
(WebCore::InspectorInstrumentation::interceptResponseImpl):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::hasFrontends):
(WebCore::InspectorInstrumentation::willInterceptRequest):
(WebCore::InspectorInstrumentation::shouldInterceptResponse):
(WebCore::InspectorInstrumentation::interceptResponse):
(WebCore::InspectorInstrumentation::frontendCreated):
(WebCore::InspectorInstrumentation::frontendDeleted):
* inspector/InspectorInstrumentationPublic.cpp:
* inspector/InspectorInstrumentationPublic.h:
* inspector/InspectorInstrumentationWebKit.cpp:
(WebCore::InspectorInstrumentationWebKit::shouldInterceptResponseInternal):
(WebCore::InspectorInstrumentationWebKit::interceptResponseInternal):
* inspector/InspectorInstrumentationWebKit.h: Added.
(WebCore::InspectorInstrumentationWebKit::shouldInterceptResponse):
(WebCore::InspectorInstrumentationWebKit::interceptResponse):
Provide a slim InspectorInstrumentation API that can be used in the WebKit
layer without a ton of includes.
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::responseSource):
(WebCore::InspectorNetworkAgent::disable):
(WebCore::InspectorNetworkAgent::continuePendingResponses):
(WebCore::InspectorNetworkAgent::setInterceptionEnabled):
(WebCore::InspectorNetworkAgent::addInterception):
(WebCore::InspectorNetworkAgent::removeInterception):
(WebCore::InspectorNetworkAgent::willInterceptRequest):
(WebCore::InspectorNetworkAgent::shouldInterceptResponse):
(WebCore::InspectorNetworkAgent::interceptResponse):
(WebCore::InspectorNetworkAgent::interceptContinue):
(WebCore::InspectorNetworkAgent::interceptWithResponse):
Manage a list of URLs that will be intercepted and send
intercepts to an active frontend for response content.
* inspector/agents/InspectorNetworkAgent.h:
(WebCore::InspectorNetworkAgent::PendingInterceptResponse::PendingInterceptResponse):
(WebCore::InspectorNetworkAgent::PendingInterceptResponse::~PendingInterceptResponse):
(WebCore::InspectorNetworkAgent::PendingInterceptResponse::originalResponse):
(WebCore::InspectorNetworkAgent::PendingInterceptResponse::respondWithOriginalResponse):
(WebCore::InspectorNetworkAgent::PendingInterceptResponse::respond):
Callback for an eventual intercept response.
* platform/network/ResourceResponseBase.h:
New ResponseSource - Inspector Override.
* loader/DocumentLoader.cpp:
(WebCore::logResourceResponseSource):
* testing/Internals.cpp:
(WebCore::responseSourceToString):
Handle new response sources.
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):
(WebCore::CachedResourceLoader::preload):
Avoid preloading or using the cache for URLs that would be intercepted
by an active Inspector frontend.
* loader/cache/MemoryCache.cpp:
(WebCore::MemoryCache::remove):
Assertion to help detect if we ever get override content into the MemoryCache.
* loader/ResourceLoader.h:
(WebCore::DocumentLoader::responseReceived):
* loader/ResourceLoader.cpp:
Fix typos.
2019-09-04 Chris Dumez <cdumez@apple.com>
Expose WebPageProxy identifier to the Network Process
https://bugs.webkit.org/show_bug.cgi?id=201467
Reviewed by Geoffrey Garen.
* loader/EmptyFrameLoaderClient.h:
(isType):
* loader/FrameLoaderClient.h:
2019-09-04 Alex Christensen <achristensen@webkit.org>
Remove unused SPI that accesses MemoryCache directly
https://bugs.webkit.org/show_bug.cgi?id=201468
Reviewed by Tim Horton.
* loader/cache/MemoryCache.cpp:
(WebCore::dummyCachedImageClient): Deleted.
(WebCore::MemoryCache::addImageToCache): Deleted.
(WebCore::MemoryCache::removeImageFromCache): Deleted.
* loader/cache/MemoryCache.h:
2019-09-04 Zalan Bujtas <zalan@apple.com>
[LFC] Assert on FormattingContext escaping
https://bugs.webkit.org/show_bug.cgi?id=201464
<rdar://problem/55029574>
Reviewed by Antti Koivisto.
This patch asserts on accidental formatting context escaping. This is only a correctness issue at the moment,
since we don't support multithreaded subtree layout yet.
Normally we should not need to access display boxes in different formatting contexts during layout, but there are a few, justified cases when it is required.
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::displayBoxForLayoutBox const):
* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::displayBoxForLayoutBox const): Deleted.
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):
(WebCore::Layout::FormattingContext::Geometry::staticVerticalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::staticHorizontalPositionForOutOfFlowPositioned const):
* layout/FormattingContextQuirks.cpp:
(WebCore::Layout::FormattingContext::Quirks::heightValueOfNearestContainingBlockWithFixedHeight):
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingContext::absoluteDisplayBoxCoordinates const):
(WebCore::Layout::FloatingContext::mapToFloatingStateRoot const):
(WebCore::Layout::FloatingContext::mapTopToFloatingStateRoot const):
(WebCore::Layout::FloatingContext::mapPointFromFormattingContextRootToFloatingStateRoot const):
* page/FrameViewLayoutContext.cpp:
(WebCore::layoutUsingFormattingContext):
2019-09-04 Zalan Bujtas <zalan@apple.com>
[LFC] FormattingContext::map* functions are too generic.
https://bugs.webkit.org/show_bug.cgi?id=201447
<rdar://problem/55005733>
Reviewed by Antti Koivisto.
We don't need such generic mapping functions yet. This patch is also in preparation for
asserting on formatting context escaping.
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::mapTopToFormattingContextRoot const):
(WebCore::Layout::FormattingContext::mapLeftToFormattingContextRoot const):
(WebCore::Layout::FormattingContext::mapRightToFormattingContextRoot const):
(WebCore::Layout::FormattingContext::mapLeftToAncestor const): Deleted.
(WebCore::Layout::FormattingContext::mapRightToAncestor const): Deleted.
(WebCore::Layout::FormattingContext::mapBoxToAncestor const): Deleted.
(WebCore::Layout::FormattingContext::mapTopToAncestor const): Deleted.
(WebCore::Layout::FormattingContext::mapPointToAncestor const): Deleted.
(WebCore::Layout::FormattingContext::mapPointToDescendent const): Deleted.
* layout/FormattingContext.h:
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider const):
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::positionForFormattingContextRoot const):
(WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
(WebCore::Layout::FloatingContext::constraints const):
(WebCore::Layout::FloatingContext::append):
(WebCore::Layout::FloatingContext::absoluteDisplayBoxCoordinates const):
(WebCore::Layout::FloatingContext::mapToFloatingStateRoot const):
(WebCore::Layout::FloatingContext::mapTopToFloatingStateRoot const):
(WebCore::Layout::FloatingContext::mapPointFromFormattingContextRootToFloatingStateRoot const):
(WebCore::Layout::mapToFormattingContextRoot): Deleted.
* layout/floats/FloatingContext.h:
* page/FrameViewLayoutContext.cpp:
(WebCore::layoutUsingFormattingContext):
2019-09-04 Antoine Quint <graouts@apple.com>
[iPadOS] Unable to change sheets on Airtable.com
https://bugs.webkit.org/show_bug.cgi?id=201456
<rdar://problem/51557377>
Reviewed by Dean Jackson.
Simulated mouse events are required to be able to manipulate cells and and columns on Airtable.com. However, dispatching a "mousedown" event on
tabs allowing to pick a different sheet ends up calling preventDefault() and prevent "click" events from being dispatched, which makes it
impossible to change sheet. We now limit the dispatch of simulated mouse events to the grid.
* page/Quirks.cpp:
(WebCore::Quirks::simulatedMouseEventTypeForTarget const):
2019-09-04 Youenn Fablet <youenn@apple.com>
Abstract out WebSocketChannel message queue
https://bugs.webkit.org/show_bug.cgi?id=201359
Reviewed by Alex Christensen.
Move BlobLoader in its own file.
Introduce NetworkSendQueue class to handle the sending of messages, some of them being blobs.
This class ensures that messages will be sent in order, even though blob data is resolved asynchronously.
Covered by existing tests.
* Headers.cmake:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* fileapi/BlobLoader.h: Added.
(WebCore::BlobLoader::BlobLoader):
(WebCore::BlobLoader::~BlobLoader):
(WebCore::BlobLoader::didFinishLoading):
(WebCore::BlobLoader::didFail):
(WebCore::BlobLoader::complete):
* fileapi/NetworkSendQueue.cpp: Added.
(WebCore::NetworkSendQueue::NetworkSendQueue):
(WebCore::NetworkSendQueue::enqueue):
(WebCore::NetworkSendQueue::clear):
(WebCore::NetworkSendQueue::processMessages):
* fileapi/NetworkSendQueue.h: Added.
2019-09-04 Rob Buis <rbuis@igalia.com>
Allow checking whether image was created from JavaScript
https://bugs.webkit.org/show_bug.cgi?id=200662
Reviewed by Darin Adler.
No behavior change.
* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::HTMLImageElement):
(WebCore::HTMLImageElement::create):
* html/HTMLImageElement.h:
(WebCore::HTMLImageElement::createdByParser const):
* html/HTMLTagNames.in:
2019-09-04 Zan Dobersek <zdobersek@igalia.com>
Remove unused ScrollingTreeOverflowScrollProxyNode implementation
https://bugs.webkit.org/show_bug.cgi?id=201376
Reviewed by Simon Fraser.
Remove the unused ScrollingTreeOverflowScrollProxyNode implementation
and header files that were added in r246723 but are not included in any
build. Cocoa-specific implementation remains untouched, and other
scrolling systems should be providing their own (as is the case with
other types of nodes).
* page/scrolling/ScrollingTreeOverflowScrollProxyNode.cpp: Removed.
* page/scrolling/ScrollingTreeOverflowScrollProxyNode.h: Removed.
2019-09-04 Philippe Normand <pnormand@igalia.com>
[GStreamer] Sound is down-pitched when playing video from YLE Areena
https://bugs.webkit.org/show_bug.cgi?id=201399
Reviewed by Xabier Rodriguez-Calvar.
If the FDK-AAC decoder is available, promote it and downrank the
libav AAC decoders, due to their broken LC support, as reported in:
https://ffmpeg.org/pipermail/ffmpeg-devel/2019-July/247063.html
* platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::initializeGStreamer):
2019-09-04 Pablo Saavedra <psaavedra@igalia.com>
[GTK] Build failure in Debian Stable and Ubuntu LTS bots after r249427
https://bugs.webkit.org/show_bug.cgi?id=201434
Reviewed by Xabier Rodriguez-Calvar.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::GstVideoFrameHolder::waitForCPUSync):
2019-09-03 Wenson Hsieh <wenson_hsieh@apple.com>
[macCatalyst] Unable to upload non-image files using drag and drop
https://bugs.webkit.org/show_bug.cgi?id=201438
Reviewed by Tim Horton.
On recent builds of macOS 10.15, NSItemProviders that are produced when dropping files from Finder into a
macCatalyst app no longer contain `kUTTypeFileURL` as a registered type identifier. This means that the current
heuristic for figuring out whether or not an item provider can be represented as a file upload is broken, since
it thinks all dropped content is inline data.
On iOS, we treat an NSItemProvider as an "uploaded" file as long as it hasn't been explicitly marked as inline
data, such as a dragged selection from a native text field. However, on macCatalyst, all item providers return
preferredPresentationStyle of UIPreferredPresentationStyleUnspecified, regardless of the source, so this check
is useless on macCatalyst since it would consider all dropped content as a file upload (text selections, plain
URLs, etc.).
Luckily, NSItemProvider's -suggestedName is now populated in recent macOS builds, which means we have a much
stronger (and more robust) hint that a dropped item provider is actually a file. For the time being, use this
instead of always returning `NO`.
* platform/ios/WebItemProviderPasteboard.mm:
(-[WebItemProviderLoadResult canBeRepresentedAsFileUpload]):
Make a minor tweak to move the UIPreferredPresentationStyleInline check to shared code, such that when
<rdar://55002929> is fixed, our code will automatically correctly treat inline item providers that have been
explicitly marked as such.
2019-09-03 Antti Koivisto <antti@apple.com>
Remove redundant painting phase arguments from GraphicsLayerClient functions
https://bugs.webkit.org/show_bug.cgi?id=201443
Reviewed by Simon Fraser.
It is available from the GraphicsLayer.
* page/PageOverlayController.cpp:
(WebCore::PageOverlayController::paintContents):
* page/PageOverlayController.h:
* page/mac/ServicesOverlayController.h:
* page/mac/ServicesOverlayController.mm:
(WebCore::ServicesOverlayController::Highlight::paintContents):
* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::paintGraphicsLayerContents):
* platform/graphics/GraphicsLayerClient.h:
(WebCore::GraphicsLayerClient::paintContents):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::paintIntoLayer):
(WebCore::RenderLayerBacking::paintFlagsForLayer const):
Factor into a function.
(WebCore::RenderLayerBacking::paintContents):
* rendering/RenderLayerBacking.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::paintContents):
* rendering/RenderLayerCompositor.h:
2019-09-03 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Implement SampleLevel(), SampleBias(), and SampleGrad()
https://bugs.webkit.org/show_bug.cgi?id=201385
Reviewed by Dean Jackson.
These are used in the Babylon.js demo.
Tests: webgpu/whlsl/textures-sample-bias.html
webgpu/whlsl/textures-sample-grad.html
webgpu/whlsl/textures-sample-level.html
* Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h:
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::sampleType):
(WebCore::WHLSL::Metal::inlineNativeFunction):
* Modules/webgpu/WHLSL/WHLSLIntrinsics.cpp:
(WebCore::WHLSL::Intrinsics::addFullTexture):
(WebCore::WHLSL::Intrinsics::addDepthTexture):
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
2019-09-03 Chris Dumez <cdumez@apple.com>
FrameLoader::FrameProgressTracker::progressCompleted() does not need a pageID
https://bugs.webkit.org/show_bug.cgi?id=201431
Reviewed by Antti Koivisto.
FrameLoader::FrameProgressTracker::progressCompleted() does not need to request a pageID
from the client. It can merely pass the Page object and the upper layers can very easily
get the identifier of that page.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::FrameProgressTracker::progressCompleted):
* loader/LoaderStrategy.h:
2019-09-03 Devin Rousso <drousso@apple.com>
REGRESSION (r249078): Flaky crash in com.apple.JavaScriptCore: Inspector::InjectedScriptModule::ensureInjected
https://bugs.webkit.org/show_bug.cgi?id=201201
<rdar://problem/54771560>
Reviewed by Joseph Pecoraro.
Tests: inspector/debugger/tail-deleted-frames-this-value.html
inspector/heap/getRemoteObject.html
* inspector/CommandLineAPIModuleSource.js:
Avoid executing functions when injecting. Instead, modify the `CommandLineAPI` directly.
2019-09-03 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Initialize <thead><tbody><tfoot> display boxes.
https://bugs.webkit.org/show_bug.cgi?id=201235
<rdar://problem/54807060>
Reviewed by Antti Koivisto.
Set them as blank for now.
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::layout const):
2019-09-03 Zalan Bujtas <zalan@apple.com>
[LFC][Floating] Replace all LayoutState::displayBoxForLayoutBox() calls with FormattingContext::displayBoxForLayoutBox()
https://bugs.webkit.org/show_bug.cgi?id=201414
<rdar://problem/54963302>
Reviewed by Antti Koivisto.
Fix the final LayoutState::displayBoxForLayoutBox() callsites. Now all displayBoxForLayoutBox() calls are directed to the
established FormattingContext.
* layout/FormattingContext.cpp:
(WebCore::Layout::mapHorizontalPositionToAncestor):
(WebCore::Layout::FormattingContext::mapLeftToAncestor const):
(WebCore::Layout::FormattingContext::mapRightToAncestor const):
(WebCore::Layout::FormattingContext::mapBoxToAncestor const):
(WebCore::Layout::FormattingContext::mapTopToAncestor const):
(WebCore::Layout::FormattingContext::mapPointToAncestor const):
(WebCore::Layout::FormattingContext::mapPointToDescendent const):
(WebCore::Layout::FormattingContext::mapLeftToAncestor): Deleted.
(WebCore::Layout::FormattingContext::mapRightToAncestor): Deleted.
(WebCore::Layout::FormattingContext::mapBoxToAncestor): Deleted.
(WebCore::Layout::FormattingContext::mapTopToAncestor): Deleted.
(WebCore::Layout::FormattingContext::mapPointToAncestor): Deleted.
(WebCore::Layout::FormattingContext::mapPointToDescendent): Deleted.
* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::root const):
(WebCore::Layout::FormattingContext::formattingState const):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layout):
(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider const):
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::mapToFormattingContextRoot):
(WebCore::Layout::FloatingContext::FloatingContext):
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::positionForFormattingContextRoot const):
(WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
(WebCore::Layout::FloatingContext::constraints const):
(WebCore::Layout::FloatingContext::append):
* layout/floats/FloatingContext.h:
(WebCore::Layout::FloatingContext::formattingContext const):
(WebCore::Layout::FloatingContext::root const):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):
2019-09-04 Simon Fraser <simon.fraser@apple.com>
Cancelled transitions on Google image search leave content with opacity 0 sometimes
https://bugs.webkit.org/show_bug.cgi?id=201482
rdar://problem/54921036
Reviewed by Tim Horton.
If, in a single rendering update, we started an accelerated opacity transition, and then removed
it, we'd still push the transition onto the CALayer with fillForwards and never remove it, so its
effects would last forever.
Fix by making GraphicsLayerCA::removeAnimation() remove animations from the uncomittedAnimations
list as well.
Also fix layer names in debug; if a layer's primaryLayerID changed, we'd fail to rename the
CALayer, causing confusion when logging at layer dumps. Fix by adding the layer ID just
before pushing the name to the platform layer.
Some drive-by logging cleanup.
Test: legacy-animation-engine/compositing/transitions/add-remove-transition.html
* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::debugName const):
* platform/graphics/GraphicsLayer.h:
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::setName):
(WebCore::GraphicsLayerCA::debugName const):
(WebCore::GraphicsLayerCA::addAnimation):
(WebCore::GraphicsLayerCA::pauseAnimation):
(WebCore::GraphicsLayerCA::seekAnimation):
(WebCore::GraphicsLayerCA::removeAnimation):
(WebCore::GraphicsLayerCA::platformCALayerAnimationStarted):
(WebCore::GraphicsLayerCA::platformCALayerAnimationEnded):
(WebCore::GraphicsLayerCA::updateNames):
(WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
* platform/graphics/ca/GraphicsLayerCA.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::logLayerInfo):
2019-09-03 Zalan Bujtas <zalan@apple.com>
[LFC] FloatingState should not need to query for display boxes.
https://bugs.webkit.org/show_bug.cgi?id=201408
<rdar://problem/54958348>
Reviewed by Antti Koivisto.
This is in preparation for transitioning the floating codebase to use the formatting context for
retrieving display boxes.
FloatingContext should be responsible for adding/removing the new/existing float boxes to the state.
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot):
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingContext::append):
(WebCore::Layout::FloatingContext::remove):
* layout/floats/FloatingContext.h:
* layout/floats/FloatingState.cpp:
(WebCore::Layout::FloatingState::append):
(WebCore::Layout::belongsToThisFloatingContext): Deleted.
* layout/floats/FloatingState.h:
(WebCore::Layout::FloatingState::FloatItem::horizontalMargin const):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):
2019-09-03 Zalan Bujtas <zalan@apple.com>
[LFC][Floats] Do not pass FloatingState to FloatItem
https://bugs.webkit.org/show_bug.cgi?id=201406
<rdar://problem/54957097>
Reviewed by Antti Koivisto.
This is in preparation for transitioning the floating codebase to use the formatting context for
retrieving display boxes. Now FloatItems don't need the FloatingState to compute absolute display boxes.
* layout/floats/FloatingState.cpp:
(WebCore::Layout::FloatingState::FloatItem::FloatItem):
(WebCore::Layout::FloatingState::append):
* layout/floats/FloatingState.h:
2019-09-03 Zalan Bujtas <zalan@apple.com>
[LFC][Floats] Do not pass FloatingState to FloatAvoider/FloatBox
https://bugs.webkit.org/show_bug.cgi?id=201405
<rdar://problem/54956381>
Reviewed by Antti Koivisto.
This is in preparation for transitioning the floating codebase to use the formatting context for
retrieving display boxes. Now FloatAvoiders/FloatBoxes don't need the FloatingState to compute absolute display boxes.
* layout/floats/FloatAvoider.cpp:
(WebCore::Layout::FloatAvoider::FloatAvoider):
(WebCore::Layout::FloatAvoider::setHorizontalConstraints):
(WebCore::Layout::FloatAvoider::initialHorizontalPosition const):
(WebCore::Layout::FloatAvoider::overflowsContainingBlock const):
(WebCore::Layout::FloatAvoider::rectInContainingBlock const):
* layout/floats/FloatAvoider.h:
(WebCore::Layout::FloatAvoider::floatingState const): Deleted.
* layout/floats/FloatBox.cpp:
(WebCore::Layout::FloatBox::FloatBox):
(WebCore::Layout::FloatBox::initialVerticalPosition const):
* layout/floats/FloatBox.h:
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::mapToFormattingContextRoot):
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::positionForFormattingContextRoot const):
* platform/graphics/LayoutPoint.h:
(WebCore::LayoutPoint::isZero const):
2019-09-03 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthn] Enable WebAuthn by default for MobileSafari and SafariViewService
https://bugs.webkit.org/show_bug.cgi?id=201369
<rdar://problem/54903724>
Reviewed by Brent Fulgham.
* platform/RuntimeApplicationChecks.h:
* platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::IOSApplication::isSafariViewService):
Adds a way to detect SafariViewService.
2019-09-03 Simon Fraser <simon.fraser@apple.com>
Cache "compositingAncestor" during the compositing updateBackingAndHierarchy() tree walk
https://bugs.webkit.org/show_bug.cgi?id=201403
Reviewed by Antti Koivisto.
Finding a layer's compositingAncestor requires an ancestor tree walk. We can avoid this during
compositing updates, since we're already in the middle of a paint-order tree walk, and can just
keep track of the current compositingAncestor on the way down.
Shaves a few % off time in updateCompositingLayers().
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateConfiguration):
(WebCore::ComputedOffsets::ComputedOffsets):
(WebCore::ComputedOffsets::fromAncestorGraphicsLayer):
(WebCore::RenderLayerBacking::computePrimaryGraphicsLayerRect const):
(WebCore::RenderLayerBacking::updateGeometry):
* rendering/RenderLayerBacking.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::UpdateBackingTraversalState::UpdateBackingTraversalState):
(WebCore::RenderLayerCompositor::UpdateBackingTraversalState::stateForDescendants const):
(WebCore::RenderLayerCompositor::updateCompositingLayers):
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::updateBackingAndHierarchy):
(WebCore::RenderLayerCompositor::updateLayerCompositingState):
(WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):
(WebCore::RenderLayerCompositor::coordinatedScrollingRolesForLayer const):
(WebCore::RenderLayerCompositor::updateScrollCoordinationForLayer):
(WebCore::RenderLayerCompositor::updateScrollingNodeForPositioningRole):
* rendering/RenderLayerCompositor.h:
2019-09-03 Simon Fraser <simon.fraser@apple.com>
Make "clips compositing descendants" an indirect compositing reason
https://bugs.webkit.org/show_bug.cgi?id=201381
Reviewed by Antti Koivisto.
Whether a layer has to composite to clip composited descendants is an "indirect" reason,
just like having to composite for filters if there's a composited descendant. So add
IndirectCompositingReason::Clipping, and have computeIndirectCompositingReason() compute this,
replacing the code that ran in computeCompositingRequirements().
This is some preparatory cleanup for webkit.org/b/201330.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayer.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::requiresCompositingLayer const):
(WebCore::RenderLayerCompositor::reasonsForCompositing const):
(WebCore::RenderLayerCompositor::computeIndirectCompositingReason const):
(WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason const): Deleted.
* rendering/RenderLayerCompositor.h:
2019-09-03 Zalan Bujtas <zalan@apple.com>
[LFC][Floats] Move FloatingState::constraints to FloatingContext
https://bugs.webkit.org/show_bug.cgi?id=201393
<rdar://problem/54939361>
Reviewed by Antti Koivisto.
This is in preparation for transitioning the floating codebase to use the formatting context for
retrieving display boxes. Now FloatingContext (just like any other formatting context) holds on to the formatting
context root.
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layout):
(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFloatClear):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats):
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingContext::FloatingContext):
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::positionForFormattingContextRoot const):
(WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
(WebCore::Layout::FloatingContext::constraints const):
* layout/floats/FloatingContext.h:
(WebCore::Layout::FloatingContext::isEmpty const):
(WebCore::Layout::FloatingContext::root const):
* layout/floats/FloatingState.cpp:
(WebCore::Layout::FloatingState::constraints const): Deleted.
* layout/floats/FloatingState.h:
(WebCore::Layout::FloatingState::last const):
(WebCore::Layout::FloatingState::isEmpty const): Deleted.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):
2019-09-03 Chris Lord <clord@igalia.com>
[GStreamer] Add support to copy YUV video textures into images
https://bugs.webkit.org/show_bug.cgi?id=200922
Reviewed by Philippe Normand and Xabier Rodriguez-Calvar.
Use gst_gl_color_convert to convert to RGB before using ImageGStreamer
with gstreamer-gl.
No new tests, not changing behavior.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::paint):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
2019-09-03 Chris Lord <clord@igalia.com>
[GStreamer] Add support to copy YUV video textures into platform textures
https://bugs.webkit.org/show_bug.cgi?id=200914
Reviewed by Xabier Rodriguez-Calvar and Miguel Gomez.
Enable YUV (including planar and semi-planar) video texture to platform
texture copy in VideoTextureCopierGStreamer.
No new tests, not changing behavior.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::GstVideoFrameHolder::platformLayerBuffer):
(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):
* platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:
(WebCore::VideoTextureCopierGStreamer::VideoTextureCopierGStreamer):
(WebCore::VideoTextureCopierGStreamer::copyVideoTextureToPlatformTexture):
* platform/graphics/gstreamer/VideoTextureCopierGStreamer.h:
* platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h:
(WebCore::TextureMapperPlatformLayerBuffer::textureVariant):
2019-09-03 Zan Dobersek <zdobersek@igalia.com> and Chris Lord <clord@igalia.com>
[Texmap][GStreamer] Add support to upload more color formats into the texture
https://bugs.webkit.org/show_bug.cgi?id=132869
Reviewed by Xabier Rodriguez-Calvar.
Support non-interleaved YUV color for gstreamer-gl
This adds direct support for rendering I420, I444, YV12, YV21, Y42B,
NV12, NV21 and VUYA color formats using GLGL shaders when using
gstreamer-gl for video rendering. This avoids a surface copy on the GPU
in those cases.
No new tests, not changing behavior.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::GstVideoFrameHolder::GstVideoFrameHolder):
(WebCore::GstVideoFrameHolder::waitForCPUSync):
(WebCore::GstVideoFrameHolder::hasMappedTextures const):
(WebCore::GstVideoFrameHolder::videoFrame const):
(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamerBase::createVideoSinkGL):
* platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:
(WebCore::VideoTextureCopierGStreamer::VideoTextureCopierGStreamer):
* platform/graphics/texmap/TextureMapperGL.cpp:
(WebCore::optionsForFilterType):
(WebCore::TextureMapperGL::drawTexture):
(WebCore::prepareTransformationMatrixWithFlags):
(WebCore::TextureMapperGL::drawTexturePlanarYUV):
(WebCore::TextureMapperGL::drawTextureSemiPlanarYUV):
(WebCore::TextureMapperGL::drawTexturePackedYUV):
(WebCore::TextureMapperGL::drawTexturedQuadWithProgram):
* platform/graphics/texmap/TextureMapperGL.h:
* platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:
(WebCore::TextureMapperPlatformLayerBuffer::TextureMapperPlatformLayerBuffer):
(WebCore::TextureMapperPlatformLayerBuffer::~TextureMapperPlatformLayerBuffer):
(WebCore::TextureMapperPlatformLayerBuffer::clone):
(WebCore::TextureMapperPlatformLayerBuffer::paintToTextureMapper):
* platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h:
* platform/graphics/texmap/TextureMapperShaderProgram.cpp:
(WebCore::TextureMapperShaderProgram::create):
* platform/graphics/texmap/TextureMapperShaderProgram.h:
2019-09-03 Rob Buis <rbuis@igalia.com>
Remove support for load/error on link=prefetch
https://bugs.webkit.org/show_bug.cgi?id=201348
Reviewed by Youenn Fablet.
Remove support for firing load/error on link=prefetch
to address tracking concerns.
Tests: http/wpt/prefetch/load-events-dynamic.html
http/wpt/prefetch/load-events.html
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::linkLoaded):
(WebCore::HTMLLinkElement::linkLoadingErrored):
* html/HTMLLinkElement.h:
* testing/Internals.cpp:
(WebCore::Internals::addPrefetchLoadEventListener):
2019-09-02 Yusuke Suzuki <ysuzuki@apple.com>
[WebCore] Resource usage accounting should accept non KERN_SUCCESS
https://bugs.webkit.org/show_bug.cgi?id=201409
Reviewed by Andreas Kling.
While iterating threads, we are not suspending these threads. Underlying threads can have gone
at any time and we will get non KERN_SUCCESS error code when a thread has gone. We should ignore
these threads.
* page/cocoa/ResourceUsageThreadCocoa.mm:
(WebCore::threadInfos):
2019-09-02 Fujii Hironori <Hironori.Fujii@sony.com>
[SVG] fragment-only url 'url(#fragment)' should be resolved against the current document with regardless to HTML <base> element
https://bugs.webkit.org/show_bug.cgi?id=189499
<rdar://problem/44466206>
Reviewed by Said Abou-Hallawa.
Fragment-only URL 'url(#fragment)' should be resolved against the
current document even if HTML <base> element is specified.
Spec: <https://drafts.csswg.org/css-values/#local-urls>
Tests: css3/filters/effect-reference-local-url-with-base.html
css3/masking/clip-path-reference-local-url-with-base.html
http/tests/svg/local-url-with-valid-base-and-resource.html
svg/animations/local-url-target-reference.html
svg/custom/local-url-reference-clip-path.html
svg/custom/local-url-reference-fill.html
svg/custom/local-url-reference-filter.html
svg/custom/local-url-reference-marker.html
svg/custom/local-url-reference-mask.html
svg/custom/local-url-reference-pattern.html
svg/custom/local-url-reference-radial-gradient.html
svg/custom/local-url-reference-srcdoc.html
svg/custom/local-url-reference-stroke.html
svg/custom/local-url-reference-use.html
svg/text/textpath-local-url-reference.html
* svg/SVGURIReference.cpp:
(WebCore::SVGURIReference::fragmentIdentifierFromIRIString): Return the fragment if the URL starts with '#'.
2019-09-02 Fujii Hironori <Hironori.Fujii@sony.com>
[Win] Remove a unused PlatformWheelEvent constructor
https://bugs.webkit.org/show_bug.cgi?id=201398
Reviewed by Don Olmstead.
No behavior change.
* platform/PlatformWheelEvent.h:
* platform/win/WheelEventWin.cpp:
Removed a unused PlatformWheelEvent constructor.
2019-09-02 Brent Fulgham <bfulgham@apple.com>
[FTW] NativeImagePtr is drawn with invalid scaling
https://bugs.webkit.org/show_bug.cgi?id=201391
Reviewed by Don Olmstead.
The current implementation of FTW improperly applies scaling factors to native images,
resulting in blocky images (in some cases).
This patch corrects the handling of native images, corrects a bug in bitmap render
context scaling, and retrieves more data from the ImageDecoder's metadata system.
* platform/graphics/win/Direct2DUtilities.cpp:
(WebCore::Direct2D::createBitmapRenderTargetOfSize): Supply an appropriately sized
pixel dimension for non-unity scale factors.
* platform/graphics/win/ImageBufferDirect2D.cpp:
(WebCore::ImageBuffer::ImageBuffer): Include the scale factor when creating a
bitmap render target.
* platform/graphics/win/ImageDecoderDirect2D.cpp:
(WebCore::ImageDecoderDirect2D::frameOrientationAtIndex const): Read the orientation
data form the image metadata.
(WebCore::ImageDecoderDirect2D::frameAllowSubsamplingAtIndex const): Always return
true, to match the CG implementation.
(WebCore::ImageDecoderDirect2D::frameHasAlphaAtIndex const): Correct to match the
behavior of CG.
* platform/graphics/win/NativeImageDirect2D.cpp:
(WebCore::drawNativeImage): Pass through the Direct2DOperations helper method, which
handles scaling and subsampling properly.
2019-09-02 Youenn Fablet <youenn@apple.com>
Introduce WorkerMessagePortChannelRegistry
https://bugs.webkit.org/show_bug.cgi?id=201333
Reviewed by Alex Christensen.
This patch introduces a dedicated registry for workers.
This registry will hop to the main thread and use the
regular main thread registry to do the actual processing.
Covered by existing tests.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/Document.cpp:
(WebCore::Document::messagePortChannelProvider):
* dom/Document.h:
* dom/MessageChannel.cpp:
(WebCore::MessageChannel::MessageChannel):
* dom/MessagePort.cpp:
(WebCore::MessagePort::entangle):
(WebCore::MessagePort::postMessage):
(WebCore::MessagePort::disentangle):
(WebCore::MessagePort::close):
(WebCore::MessagePort::dispatchMessages):
(WebCore::MessagePort::hasPendingActivity const):
* dom/messageports/MessagePortChannel.cpp:
(WebCore::MessagePortChannel::takeAllMessagesForPort):
(WebCore::MessagePortChannel::checkRemotePortForActivity):
* dom/messageports/MessagePortChannel.h:
* dom/messageports/MessagePortChannelProvider.cpp:
(WebCore::MessagePortChannelProvider::singleton):
(WebCore::MessagePortChannelProvider::fromContext):
* dom/messageports/MessagePortChannelProvider.h:
* dom/messageports/MessagePortChannelProviderImpl.cpp:
(WebCore::MessagePortChannelProviderImpl::takeAllMessagesForPort):
(WebCore::MessagePortChannelProviderImpl::checkRemotePortForActivity):
* dom/messageports/MessagePortChannelProviderImpl.h:
* dom/messageports/MessagePortChannelRegistry.cpp:
(WebCore::MessagePortChannelRegistry::takeAllMessagesForPort):
(WebCore::MessagePortChannelRegistry::checkRemotePortForActivity):
* dom/messageports/MessagePortChannelRegistry.h:
* dom/messageports/WorkerMessagePortChannelProvider.cpp: Added.
(WebCore::WorkerMessagePortChannelProvider::WorkerMessagePortChannelProvider):
(WebCore::WorkerMessagePortChannelProvider::~WorkerMessagePortChannelProvider):
(WebCore::WorkerMessagePortChannelProvider::createNewMessagePortChannel):
(WebCore::WorkerMessagePortChannelProvider::entangleLocalPortInThisProcessToRemote):
(WebCore::WorkerMessagePortChannelProvider::messagePortDisentangled):
(WebCore::WorkerMessagePortChannelProvider::messagePortClosed):
(WebCore::WorkerMessagePortChannelProvider::postMessageToRemote):
(WebCore::WorkerMessagePortChannelProvider::takeAllMessagesForPort):
(WebCore::WorkerMessagePortChannelProvider::checkRemotePortForActivity):
(WebCore::WorkerMessagePortChannelProvider::checkProcessLocalPortForActivity):
* dom/messageports/WorkerMessagePortChannelProvider.h: Added.
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::messagePortChannelProvider):
* workers/WorkerGlobalScope.h:
2019-09-01 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Resources don't work when only a subset of a bind group is referenced by a shader
https://bugs.webkit.org/show_bug.cgi?id=201383
Reviewed by Dean Jackson.
Bind groups correspond to argument buffers in Metal. Both the Metal API and Metal Shading Language
have to agree on the layout of exactly which resources lie at which byte offsets within an argument
buffer.
Before this patch, we only emitted code for the items in the argument buffer that were actually
referenced by the shader source code. However, because these items are held inside a struct, if
we omit one item from the middle of the struct, the byte offets of all the successive items would
be wrong. This means that the Metal API and the shader would disagree about how to access these
resources, making the resources inaccessible (and causing security problems).
Tests: webgpu/whlsl/sparse-bind-group-2.html
webgpu/whlsl/sparse-bind-group-3.html
webgpu/whlsl/sparse-bind-group.html
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
(WebCore::WHLSL::Metal::EntryPointScaffolding::emitResourceHelperTypes):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::emitHelperTypes):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::emitHelperTypes):
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::emitHelperTypes):
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h:
* Modules/webgpu/WHLSL/WHLSLSemanticMatcher.cpp:
(WebCore::WHLSL::matchResources):
(WebCore::WHLSL::matchVertexAttributes):
(WebCore::WHLSL::matchColorAttachments):
2019-09-01 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r249369.
https://bugs.webkit.org/show_bug.cgi?id=201394
broke WHLSL tests (Requested by litherum on #webkit).
Reverted changeset:
"[WHLSL] Resources don't work when only a subset of a bind
group is referenced by a shader"
https://bugs.webkit.org/show_bug.cgi?id=201383
https://trac.webkit.org/changeset/249369
2019-09-01 Fujii Hironori <Hironori.Fujii@sony.com>
Unreviewed, rolling out r249366.
WinCairo WebKit2 crashes in some websites and the device scale
factor is not correct in high DPI.
Reverted changeset:
"[WinCairo, FTW] Properly handle device scale factor"
https://bugs.webkit.org/show_bug.cgi?id=201361
https://trac.webkit.org/changeset/249366
2019-09-01 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Resources don't work when only a subset of a bind group is referenced by a shader
https://bugs.webkit.org/show_bug.cgi?id=201383
Reviewed by Dean Jackson.
Bind groups correspond to argument buffers in Metal. Both the Metal API and Metal Shading Language
have to agree on the layout of exactly which resources lie at which byte offsets within an argument
buffer.
Before this patch, we only emitted code for the items in the argument buffer that were actually
referenced by the shader source code. However, because these items are held inside a struct, if
we omit one item from the middle of the struct, the byte offets of all the successive items would
be wrong. This means that the Metal API and the shader would disagree about how to access these
resources, making the resources inaccessible (and causing security problems).
Tests: webgpu/whlsl/sparse-bind-group-2.html
webgpu/whlsl/sparse-bind-group-3.html
webgpu/whlsl/sparse-bind-group.html
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
(WebCore::WHLSL::Metal::EntryPointScaffolding::emitResourceHelperTypes):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::emitHelperTypes):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::emitHelperTypes):
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::emitHelperTypes):
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h:
* Modules/webgpu/WHLSL/WHLSLSemanticMatcher.cpp:
(WebCore::WHLSL::matchResources):
(WebCore::WHLSL::matchVertexAttributes):
(WebCore::WHLSL::matchColorAttachments):
2019-09-01 Said Abou-Hallawa <sabouhallawa@apple.com>
HTMLImageElement::decode() should return a resolved promise for decoding non bitmap images
https://bugs.webkit.org/show_bug.cgi?id=201243
Reviewed by Youenn Fablet.
The specs: https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-decode
states that, decode() should resolve the pending promise if the decoding
was requested for a non bitmap image.
Test: fast/images/decode-non-bitmap-image-resolve.html
* loader/ImageLoader.cpp:
(WebCore::resolveDecodePromises):
(WebCore::rejectDecodePromises):
(WebCore::ImageLoader::notifyFinished):
(WebCore::ImageLoader::decode):
(WebCore::ImageLoader::decodeError): Deleted.
* loader/ImageLoader.h:
(WebCore::ImageLoader::hasPendingDecodePromises const):
2019-08-30 Brent Fulgham <bfulgham@apple.com>
[WinCairo, FTW] Properly handle device scale factor
https://bugs.webkit.org/show_bug.cgi?id=201361
Reviewed by Don Olmstead.
Update the Direct2D ImageBuffer/ImageBufferData classes to correctly handle
the device scale factor.
* platform/graphics/win/ImageBufferDataDirect2D.cpp:
(WebCore::ImageBufferData::putData):
* platform/graphics/win/ImageBufferDirect2D.cpp:
(WebCore::ImageBuffer::putByteArray):
2019-08-31 Said Abou-Hallawa <sabouhallawa@apple.com>
EXIF orientation should be respected when rendering images
https://bugs.webkit.org/show_bug.cgi?id=201123
Reviewed by Simon Fraser.
-- Image::size() will return the rendered size based on the image
orientation. If image orientation is FromImage, ImageSource will query
the actual image orientation from the ImageDecoder. The low level APIs
might transpose the size just before calling the system API to draw
the image.
-- RenderElement::imageOrientation() will return ImageOrientation::FromImage
for all images and for all ports till the CSS image-orientation specs
is finalized.
-- The default of ImagePaintingOptions argument of GraphicsContext::drawImage()
will be changed to { ImageOrientation::FromImage }.
-- Image element: RenderImage::paintIntoRect() will pass imageOrientation()
which returns ImageOrientation::FromImage to GraphicsContext::drawImage().
-- CSS background image: RenderBoxModelObject::paintFillLayerExtended will
pass ImageOrientation::FromImage by default to GraphicsContext::drawTiledImage().
-- Images on canvas: CanvasRenderingContext2DBase::drawImage() will pass
ImageOrientation::FromImage by default to GraphicsContext::drawImage().
-- SVG images: RenderSVGImage::paintForeground() calls GraphicsContext::drawImage()
with the default ImagePaintingOptions which is now { ImageOrientation::FromImage }.
-- SVG feImage filters: FEImage::platformApplySoftware() calls
GraphicsContext::drawImage() with the default ImagePaintingOptions
which is now { ImageOrientation::FromImage }.
-- ImageDocument: RenderElement::imageOrientation() returns FromImage
always and for all ports.
Tests: fast/images/exif-orientation-background.html
fast/images/exif-orientation-canvas.html
fast/images/exif-orientation-content.html
fast/images/exif-orientation-element-object-fit.html
fast/images/exif-orientation-element.html
fast/images/exif-orientation-image-object.html
fast/images/exif-orientation-svg-feimage.html
fast/images/exif-orientation-svg-image.html
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::drawImage):
* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::imageSizeForRenderer const):
* platform/graphics/BitmapImage.h:
* platform/graphics/CrossfadeGeneratedImage.h:
* platform/graphics/GeneratedImage.h:
* platform/graphics/GraphicsContext.h:
(WebCore::GraphicsContext::drawImage):
* platform/graphics/Image.h:
* platform/graphics/ImageFrame.h:
(WebCore::ImageFrame::sizeRespectingOrientation const): Deleted.
* platform/graphics/ImageSource.cpp:
(WebCore::ImageSource::ImageSource):
(WebCore::ImageSource::orientation):
(WebCore::ImageSource::size):
(WebCore::ImageSource::sizeRespectingOrientation): Deleted.
* platform/graphics/ImageSource.h:
* platform/graphics/cg/PDFDocumentImage.cpp:
(WebCore::PDFDocumentImage::size const):
* platform/graphics/cg/PDFDocumentImage.h:
* platform/mac/DragImageMac.mm:
(WebCore::createDragImageFromImage):
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::paintFillLayerExtended):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::imageOrientation const):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::paintIntoRect):
* svg/graphics/SVGImage.h:
* svg/graphics/SVGImageForContainer.cpp:
(WebCore::SVGImageForContainer::size const):
* svg/graphics/SVGImageForContainer.h:
2019-08-31 Rob Buis <rbuis@igalia.com>
XMLHttpRequest: responseXML returns null if the Content-Type is valid (end in +xml) in some cases
https://bugs.webkit.org/show_bug.cgi?id=46146
Reviewed by Youenn Fablet.
Make response MIME type fallback to text/xml in case mimeType could
not be extracted [1] and use the stricter ParsedContentType for that.
Behavior matches Firefox.
Test: web-platform-tests/xhr/responsexml-media-type.htm
[1] https://xhr.spec.whatwg.org/#response-mime-type
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::responseMIMEType const):
2019-08-31 Frederic Wang <fwang@igalia.com>
Fix interpretation of fraction shifts
https://bugs.webkit.org/show_bug.cgi?id=201242
Reviewed by Rob Buis.
In fractions, numerator/denominator shifts are currently interpreted relative to the math
axis while they should be relative to the baseline [1]. This patch refactors the
RenderMathMLFraction to do that and aligns more on MathML Core [2] [3]. This fixes serious
rendering bugs in fractions.
[1] https://github.com/mathml-refresh/mathml/issues/123
[2] https://mathml-refresh.github.io/mathml-core/#fraction-with-nonzero-line-thickness
[3] https://mathml-refresh.github.io/mathml-core/#fraction-with-zero-line-thickness
No new tests, existing tests updated.
* rendering/mathml/RenderMathMLFraction.h: ascentOverHorizontalAxis() is replaced with
fractionAscent() which gives the actual baseline position rather than the math axis position.
fractionParameters() and stackParameters() are modified so that they only return the shifts,
now stored in a shared FractionParameters struct.
* rendering/mathml/RenderMathMLFraction.cpp:
(WebCore::RenderMathMLFraction::fractionParameters const): Store existing parameters in local
variables and perform adjustments to the shift values so that the minimal gap constraints
are satisfied. Return them as a FractionParameters.
(WebCore::RenderMathMLFraction::stackParameters const): Ditto.
(WebCore::RenderMathMLFraction::fractionAscent const): This calculates the ascent above
the baseline as described in [2] [3] and replaces ascentOverHorizontalAxis. To minimize
changeset, this continues to ignore contribution of denominator size and not to distinguish
ink or non-ink metrics.
(WebCore::RenderMathMLFraction::layoutBlock): The position of the denominator is now just
calculated as a shift from the baseline. The height is given by the bottom of the
denominator. The old "ascent + mathAxisHeight() + denominatorDescent" does not make any
sense.
(WebCore::RenderMathMLFraction::paint): Use fractionAscent() instead of
ascentOverHorizontalAxis().
(WebCore::RenderMathMLFraction::firstLineBaseline const): Ditto.
2019-08-31 Chris Dumez <cdumez@apple.com>
DocumentStorageAccess::hasStorageAccess() / requestStorageAccess() don't need to know about pageID / frameID
https://bugs.webkit.org/show_bug.cgi?id=201364
Reviewed by John Wilander.
DocumentStorageAccess::hasStorageAccess() / requestStorageAccess() don't need to know about pageID / frameID. pageID is
redundant since it is being ignored by the callee. For the frame, simply pass the frame object in.
* dom/DocumentStorageAccess.cpp:
(WebCore::DocumentStorageAccess::hasStorageAccess):
(WebCore::DocumentStorageAccess::requestStorageAccess):
* page/ChromeClient.h:
(WebCore::ChromeClient::hasStorageAccess):
(WebCore::ChromeClient::requestStorageAccess):
2019-08-30 Zalan Bujtas <zalan@apple.com>
[LFC] Transition from Geometry(formattingContext()) to formattingContext().quirks()
https://bugs.webkit.org/show_bug.cgi?id=201372
<rdar://problem/54905514>
Reviewed by Antti Koivisto.
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::computedHeightValue const):
* layout/FormattingContextQuirks.cpp:
(WebCore::Layout::FormattingContext::Quirks::heightValueOfNearestContainingBlockWithFixedHeight):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
* layout/blockformatting/BlockFormattingContextQuirks.cpp:
(WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginBefore):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::estimatedMarginBefore):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::close):
2019-08-30 Zalan Bujtas <zalan@apple.com>
[LFC] Proxy LayoutState::displayBoxForLayoutBox() calls through FormattingContext
https://bugs.webkit.org/show_bug.cgi?id=201365
<rdar://problem/54900815>
Reviewed by Antti Koivisto.
This patch is in preparation for enforcing displayBoxForLayoutBox() calls to stay within the current formatting context.
(There are a few odd cases left (floats and coordinate mapping) and they are going to be addressed in a separate patch.)
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):
(WebCore::Layout::FormattingContext::computeBorderAndPadding):
(WebCore::Layout::FormattingContext::validateGeometryConstraintsAfterLayout const):
* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::displayBoxForLayoutBox const):
(WebCore::Layout::FormattingContext::hasDisplayBox const):
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::computedHeightValue const):
(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):
(WebCore::Layout::FormattingContext::Geometry::staticVerticalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::staticHorizontalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inFlowPositionedPositionOffset const):
* layout/FormattingContextQuirks.cpp:
(WebCore::Layout::FormattingContext::Quirks::heightValueOfNearestContainingBlockWithFixedHeight):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider const):
(WebCore::Layout::BlockFormattingContext::placeInFlowPositionedChildren):
(WebCore::Layout::BlockFormattingContext::computeStaticVerticalPosition):
(WebCore::Layout::BlockFormattingContext::computeStaticHorizontalPosition):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPosition):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFloatClear):
(WebCore::Layout::BlockFormattingContext::computeFloatingPosition):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats):
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::verticalPositionWithMargin const):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::Geometry::staticVerticalPosition const):
(WebCore::Layout::BlockFormattingContext::Geometry::staticHorizontalPosition const):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
* layout/blockformatting/BlockFormattingContextQuirks.cpp:
(WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::hasClearance):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithPreviousSiblingMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithFirstInFlowChildMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithSiblingMarginBeforeWithClearance const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithLastInFlowChildMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updateMarginAfterForPreviousSibling const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::estimatedMarginBefore):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updatePositiveNegativeMarginValues):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layout):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::initializeMarginBorderAndPaddingForGenericInlineBox):
(WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPaddingForInlineContainer):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
(WebCore::Layout::InlineFormattingContext::computeHorizontalMargin):
(WebCore::Layout::InlineFormattingContext::computeWidthAndMargin):
(WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot):
* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin const):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::inlineItemWidth):
(WebCore::Layout::LineLayout::formattingContext const):
(WebCore::Layout::LineLayout::LineLayout):
(WebCore::Layout::LineLayout::placeInlineItem):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):
(WebCore::Layout::LineLayout::layoutState const): Deleted.
* layout/inlineformatting/InlineFormattingContextQuirks.cpp:
(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::isInlineContainerConsideredEmpty):
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::inlineItemContentHeight const):
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::layout):
(WebCore::Layout::TableFormattingContext::computedTableWidth):
2019-08-30 Chris Dumez <cdumez@apple.com>
WebPage::fromCorePage() to take and return a C++ reference
https://bugs.webkit.org/show_bug.cgi?id=201367
Reviewed by Antti Koivisto.
* page/Chrome.cpp:
(WebCore::Chrome::createWindow const):
2019-08-30 Chris Dumez <cdumez@apple.com>
Add support for postMessage buffering between the service worker and window
https://bugs.webkit.org/show_bug.cgi?id=201169
Reviewed by Youenn Fablet.
As per the Service Worker specification, a service worker client's message
queue is initially disabled and only gets enabled after:
- The DOMContentLoaded event has been fired
or
- The client sets the navigator.serviceWorker.onmessage event handler
or
- navigator.serviceWorker.startMessages() is called
While the message queue is disabled, messages posted by the service worker
to the client simply get queued and only get processed once the queue gets
enabled.
No new tests, rebaselined existing test.
* dom/Document.cpp:
(WebCore::Document::finishedParsing):
Call startMessages() on the ServiceWorkerContainer once the DOMContentLoaded event has
been fired.
* dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::ensureServiceWorkerContainer):
* dom/ScriptExecutionContext.h:
* workers/service/SWClientConnection.cpp:
(WebCore::SWClientConnection::postMessageToServiceWorkerClient):
Fix a bug where a service worker would not be able to post a message to a client until
that client has accessed navigator.serviceWorker (since the ServiceWorkerContainer is
lazy initialized). To address the issue, we now initialize the ServiceWorkerContainer
when a message is received from the service worker. Previously, messages were just
getting dropped.
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::ServiceWorkerContainer):
When the ServiceWorkerContainer is constructed, suspend its message queue if its context
document is still parsing.
(WebCore::ServiceWorkerContainer::startMessages):
Resume the message queue when startMessages() is called.
(WebCore::ServiceWorkerContainer::postMessage):
Enqueue the event instead of firing it right away.
(WebCore::ServiceWorkerContainer::addEventListener):
if navigator.serviceWorker.onmessage event handler gets set by the JavaScript, call
startMessages().
* workers/service/ServiceWorkerContainer.h:
2019-08-30 Simon Fraser <simon.fraser@apple.com>
Minor optimization in determineNonLayerDescendantsPaintedContent()
https://bugs.webkit.org/show_bug.cgi?id=201352
Reviewed by Antti Koivisto.
It's cheaper to call renderText.hasRenderedText() than renderText.linesBoundingBox(), because
the latter has to traverse all the InlineTextBoxes. This code path is fairly hot when
scrolling twitter feeds, since it's called from RenderLayer::updateLayerPositionsAfterScroll()
which calls RenderLayer::isVisuallyNonEmpty().
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
2019-08-30 Saam Barati <sbarati@apple.com>
[WHLSL] Remove getters/setters/anders
https://bugs.webkit.org/show_bug.cgi?id=201008
Reviewed by Robin Morisset.
This patch changes WHLSL in a significant way. This patch removes getters/setters/anders
from the language. In our experience writing WHLSL shaders, these parts of the language
went unused, and they added a lot of complexity to the implementation of the compiler.
This patch now treats field accesses and array indexes as intrinsics inside the compiler.
This patch removes all notions of named operators, anders, and indexed operators
from the compiler and the standard library. The checker now intrinsically knows the
return type for property accesses and indexed expressions based on what the
base type is.
To make this work in practice was difficult, since getters/setters/anders
solved a lot of the difficult problems we had in generating metal code. For
example, all swizzle operators were getters and setters, so assigning to a
swizzle fell out naturally from implementing setters. However, during metal
codegen, all we see is a dot expression with "xy" as a property. Our previous
architecture of emitting Metal code using pointers which represent lvalues
doesn't work because you can't take the address of a swizzle. For example,
"auto* x = &vector.yz" is invalid metal code.
So, this patch changes the entire metal code generator to emit WHLSL expressions
as Metal expressions. To do this, I had to change a lot about how the compiler
was implemented:
- I changed the indexed accesses of matrices to return columns instead of
rows. This allowed WHLSL code like `mat[0].xy = 42` to be compiled into
the equivalent metal code of `mat[0].xy = 42`.
- I changed the native function inliner to emit expressions instead of
statements.
- We also simplify the language by removing null and requiring all
reference type variables to have an initializer. This means that
null is no longer a valid value, which allows us to omit null checks
inside the metal code generator. To make this work with array
accesses, we now clamp accesses instead of returning null for OOB
accesses.
I've also filed one required bug as a followup. I didn't include it in this
patch to make it easier to review along. Currently, there are two places in
metal codegen where we evaluate effects twice. That will be fixed in:
https://bugs.webkit.org/show_bug.cgi?id=201251
Tests: webgpu/whlsl/address-of-swizzle.html
webgpu/whlsl/array-oob-alias.html
webgpu/whlsl/matrix-index-assign.html
webgpu/whlsl/matrix-index-order.html
webgpu/whlsl/oob-access-2.html
webgpu/whlsl/operator-syntax.html
* Modules/webgpu/WHLSL/AST/WHLSLAST.h:
* Modules/webgpu/WHLSL/AST/WHLSLConstantExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLDotExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLExpression.cpp:
(WebCore::WHLSL::AST::Expression::destroy):
(WebCore::WHLSL::AST::Expression::destruct):
(WebCore::WHLSL::AST::PropertyAccessExpression::getterFunctionName const): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::setterFunctionName const): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::anderFunctionName const): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
(WebCore::WHLSL::AST::Expression::copyTypeTo const):
(WebCore::WHLSL::AST::Expression::isMakePointerExpression const):
(WebCore::WHLSL::AST::Expression::isNullLiteral const): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h: Removed.
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteralType.cpp: Removed.
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteralType.h: Removed.
* Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:
(WebCore::WHLSL::AST::PropertyAccessExpression::getterFunction): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::anderFunction): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::threadAnderFunction): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::setterFunction): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::setGetterFunction): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::setAnderFunction): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::setThreadAnderFunction): Deleted.
(WebCore::WHLSL::AST::PropertyAccessExpression::setSetterFunction): Deleted.
(): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLType.cpp:
(WebCore::WHLSL::AST::Type::destroy):
(WebCore::WHLSL::AST::Type::destruct):
(WebCore::WHLSL::AST::ResolvableType::canResolve const):
(WebCore::WHLSL::AST::ResolvableType::conversionCost const):
* Modules/webgpu/WHLSL/AST/WHLSLType.h:
(WebCore::WHLSL::AST::Type::isIntegerLiteralType const):
(WebCore::WHLSL::AST::Type::isNullLiteralType const): Deleted.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::HoistedVariableCollector::HoistedVariableCollector):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::emitLoop):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::emitConstantExpressionString):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::appendRightValueWithNullability): Deleted.
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::appendRightValue): Deleted.
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::appendLeftValue): Deleted.
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::takeLastValue): Deleted.
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::takeLastValueAndNullability): Deleted.
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::takeLastLeftValue): Deleted.
* Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.cpp:
(WebCore::WHLSL::Metal::metalCodePrologue):
(WebCore::WHLSL::Metal::generateMetalCode):
(WebCore::WHLSL::Metal::metalCodeProlog): Deleted.
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::inlineNativeFunction):
(WebCore::WHLSL::Metal::vectorInnerType): Deleted.
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.h:
* Modules/webgpu/WHLSL/Metal/WHLSLNativeTypeWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeType):
* Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:
(WebCore::WHLSL::ASTDumper::visit):
* Modules/webgpu/WHLSL/WHLSLASTDumper.h:
* Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
(WebCore::WHLSL::checkDuplicateFunctions):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveByInstantiation):
(WebCore::WHLSL::checkOperatorOverload):
(WebCore::WHLSL::Checker::wrappedUintType):
(WebCore::WHLSL::Checker::normalizedTypeForFunctionKey):
(WebCore::WHLSL::Checker::visit):
(WebCore::WHLSL::matchAndCommit):
(WebCore::WHLSL::Checker::resolveFunction):
(WebCore::WHLSL::Checker::assignConcreteType):
(WebCore::WHLSL::resolveWithOperatorLength): Deleted.
(WebCore::WHLSL::Checker::genericPointerType): Deleted.
(WebCore::WHLSL::Checker::finishVisiting): Deleted.
* Modules/webgpu/WHLSL/WHLSLHighZombieFinder.cpp:
(WebCore::WHLSL::findHighZombies):
(): Deleted.
* Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:
(WebCore::WHLSL::matchAndCommit):
(WebCore::WHLSL::commit):
* Modules/webgpu/WHLSL/WHLSLIntrinsics.h:
(WebCore::WHLSL::Intrinsics::boolVectorTypeForSize const):
(WebCore::WHLSL::Intrinsics::uintVectorTypeForSize const):
(WebCore::WHLSL::Intrinsics::intVectorTypeForSize const):
(WebCore::WHLSL::Intrinsics::floatVectorTypeForSize const):
* Modules/webgpu/WHLSL/WHLSLLexer.cpp:
(WebCore::WHLSL::Lexer::consumeTokenFromStream):
* Modules/webgpu/WHLSL/WHLSLLiteralTypeChecker.cpp:
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseConstantExpression):
(WebCore::WHLSL::Parser::parseEnumerationMember):
(WebCore::WHLSL::Parser::parseTerm):
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
* Modules/webgpu/WHLSL/WHLSLProgram.cpp: Added.
(WebCore::WHLSL::Program::isValidVectorProperty):
* Modules/webgpu/WHLSL/WHLSLProgram.h:
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::resolveProperties):
(WebCore::WHLSL::PropertyResolver::visit): Deleted.
(WebCore::WHLSL::wrapAnderCallArgument): Deleted.
(WebCore::WHLSL::anderCallArgument): Deleted.
(WebCore::WHLSL::setterCall): Deleted.
(WebCore::WHLSL::getterCall): Deleted.
(WebCore::WHLSL::modify): Deleted.
(WebCore::WHLSL::PropertyResolver::simplifyRightValue): Deleted.
(WebCore::WHLSL::LeftValueSimplifier::finishVisiting): Deleted.
(WebCore::WHLSL::LeftValueSimplifier::visit): Deleted.
(WebCore::WHLSL::PropertyResolver::simplifyLeftValue): Deleted.
* Modules/webgpu/WHLSL/WHLSLPruneUnreachableStandardLibraryFunctions.cpp:
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
* Modules/webgpu/WHLSL/WHLSLStandardLibraryUtilities.cpp:
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp: Removed.
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.h: Removed.
* Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
(WebCore::WHLSL::synthesizeEnumerationFunctions):
* Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
(WebCore::WHLSL::Visitor::visit):
* Modules/webgpu/WHLSL/WHLSLVisitor.h:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2019-08-30 Zalan Bujtas <zalan@apple.com>
[LFC] Pass FormattingContext to Geometry/Quirks/BlockMarginCollapsing classes
https://bugs.webkit.org/show_bug.cgi?id=201355
<rdar://problem/54895959>
Reviewed by Antti Koivisto.
This is in preparation for enforcing LFC to not call outside of the formatting context.
LayoutState::displayBoxForLayoutBox calls will be forced to go through the FormattingContext class to
check LFC escaping.
* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::isBlockFormattingContext const):
(WebCore::Layout::FormattingContext::isInlineFormattingContext const):
(WebCore::Layout::FormattingContext::isTableFormattingContext const):
(WebCore::Layout::FormattingContext::Geometry::layoutState const):
(WebCore::Layout::FormattingContext::Geometry::layoutState):
(WebCore::Layout::FormattingContext::Geometry::formattingContext const):
(WebCore::Layout::FormattingContext::geometry const):
(WebCore::Layout::FormattingContext::Quirks::layoutState const):
(WebCore::Layout::FormattingContext::Quirks::layoutState):
(WebCore::Layout::FormattingContext::Quirks::formattingContext const):
(WebCore::Layout::FormattingContext::quirks const):
(WebCore::Layout::FormattingContext::Geometry::Geometry):
(WebCore::Layout::FormattingContext::Quirks::Quirks):
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::computedHeightValue const):
* layout/FormattingContextQuirks.cpp:
(WebCore::Layout::FormattingContext::Quirks::heightValueOfNearestContainingBlockWithFixedHeight):
* layout/blockformatting/BlockFormattingContext.h:
(WebCore::Layout::BlockFormattingContext::Geometry::formattingContext const):
(WebCore::Layout::BlockFormattingContext::geometry const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::layoutState):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::layoutState const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::formattingContext const):
(WebCore::Layout::BlockFormattingContext::marginCollapse const):
(WebCore::Layout::BlockFormattingContext::Quirks::formattingContext const):
(WebCore::Layout::BlockFormattingContext::quirks const):
(WebCore::Layout::BlockFormattingContext::Geometry::Geometry):
(WebCore::Layout::BlockFormattingContext::Quirks::Quirks):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::MarginCollapse):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
* layout/blockformatting/BlockFormattingContextQuirks.cpp:
(WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginBefore):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::estimatedMarginBefore):
* layout/inlineformatting/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::InlineLayout::layoutState const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::formattingContext const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::formattingRoot const):
(WebCore::Layout::InlineFormattingContext::Quirks::formattingContext const):
(WebCore::Layout::InlineFormattingContext::quirks const):
(WebCore::Layout::InlineFormattingContext::Geometry::formattingContext const):
(WebCore::Layout::InlineFormattingContext::geometry const):
(WebCore::Layout::InlineFormattingContext::Geometry::Geometry):
(WebCore::Layout::InlineFormattingContext::Quirks::Quirks):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::LineLayout::LineLayout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::InlineLayout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
(WebCore::Layout::Line::inlineItemContentHeight const):
(WebCore::Layout::Line::layoutState const):
(WebCore::Layout::Line::formattingContext const):
* layout/inlineformatting/InlineLine.h:
* layout/tableformatting/TableFormattingContext.h:
(WebCore::Layout::TableFormattingContext::Geometry::formattingContext const):
(WebCore::Layout::TableFormattingContext::geometry const):
(WebCore::Layout::TableFormattingContext::Geometry::Geometry):
* page/FrameViewLayoutContext.cpp:
(WebCore::layoutUsingFormattingContext):
2019-08-30 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r249338.
Caused 500+ layout test failures on WK1
Reverted changeset:
"Add support for postMessage buffering between the service
worker and window"
https://bugs.webkit.org/show_bug.cgi?id=201169
https://trac.webkit.org/changeset/249338
2019-08-30 Alex Christensen <achristensen@webkit.org>
Remove HAVE_CFNETWORK_WITH_IGNORE_HSTS conditional
https://bugs.webkit.org/show_bug.cgi?id=201279
Reviewed by Darin Adler.
* platform/network/mac/WebCoreURLResponse.mm:
(WebCore::synthesizeRedirectResponseIfNecessary):
(WebCore::schemeWasUpgradedDueToDynamicHSTS): Deleted.
2019-08-30 Wenson Hsieh <wenson_hsieh@apple.com>
Caret does not appear in text field inside a transformed, overflow: hidden container
https://bugs.webkit.org/show_bug.cgi?id=201317
<rdar://problem/54859264>
Reviewed by Simon Fraser.
This patch refactors the heuristic for determining whether to suppress selection gestures and UI in a way that
fixes the corner case encountered in this bug. To understand why this test case fails with our existing
heuristic, consider the below test case.
Let's say we have an input field inside an "overflow: hidden;" container, which is positioned in such a way that
it is completely clipped by its enclosing container which is also "overflow: hidden". Our existing logic would
appropriately identify this as a hidden editable element.
However, let's now apply a transform to the input field's closest "overflow: hidden" ancestor, such that the
field is now visible. Since RenderLayer::offsetFromAncestor doesn't take transforms into account when we try to
find the offset of the "overflow: hidden" layer relative to the root view, we end up passing an offsetFromRoot
of (0, 100vw) to RenderLayer::calculateClipRects, which computes a background clip rect of (0, 0, 100vw, 100vh).
This means that at the end of RenderLayer::calculateClipRects, we end up intersecting the background clip rect
(0, 0, 100vw, 100vh) against (100vw, 0, 100vw, 100vh), which results in the empty rect, and subsequently makes
us believe we're editing a hidden editable element.
Instead of tacking on more logic to isTransparentOrFullyClippedRespectingParentFrames, we can fix this by using
RenderObject::computeVisibleRectInContainer instead, performing a similar walk up the render tree to compute the
visible rect of each focused element or subframe relative to its root. This is capable of taking transforms into
account. See comments below for more details.
Test: editing/selection/ios/show-selection-in-transformed-container-2.html
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::isTransparentRespectingParentFrames const):
Split out isTransparentOrFullyClippedRespectingParentFrames into two methods: RenderLayer's
isTransparentRespectingParentFrames, and RenderObject's hasNonEmptyVisibleRectRespectingParentFrames. The
transparency check starts at the enclosing layer and walks up the layer tree, while the non-empty visible rect
check looks for renderers that are completely empty relative to their root views.
* rendering/RenderLayer.h:
* rendering/RenderObject.cpp:
(WebCore::RenderObject::hasNonEmptyVisibleRectRespectingParentFrames const):
Rewrite logic for detecting completely clipped editable areas (that formerly lived in
isTransparentOrFullyClippedRespectingParentFrames) to use computeVisibleRectInContainer instead.
* rendering/RenderObject.h:
2019-08-30 Chris Dumez <cdumez@apple.com>
Add support for postMessage buffering between the service worker and window
https://bugs.webkit.org/show_bug.cgi?id=201169
Reviewed by Youenn Fablet.
As per the Service Worker specification, a service worker client's message
queue is initially disabled and only gets enabled after:
- The DOMContentLoaded event has been fired
or
- The client sets the navigator.serviceWorker.onmessage event handler
or
- navigator.serviceWorker.startMessages() is called
While the message queue is disabled, messages posted by the service worker
to the client simply get queued and only get processed once the queue gets
enabled.
No new tests, rebaselined existing test.
* dom/Document.cpp:
(WebCore::Document::finishedParsing):
Call startMessages() on the ServiceWorkerContainer once the DOMContentLoaded event has
been fired.
* dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::ensureServiceWorkerContainer):
* dom/ScriptExecutionContext.h:
* workers/service/SWClientConnection.cpp:
(WebCore::SWClientConnection::postMessageToServiceWorkerClient):
Fix a bug where a service worker would not be able to post a message to a client until
that client has accessed navigator.serviceWorker (since the ServiceWorkerContainer is
lazy initialized). To address the issue, we now initialize the ServiceWorkerContainer
when a message is received from the service worker. Previously, messages were just
getting dropped.
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::ServiceWorkerContainer):
When the ServiceWorkerContainer is constructed, suspend its message queue if its context
document is still parsing.
(WebCore::ServiceWorkerContainer::startMessages):
Resume the message queue when startMessages() is called.
(WebCore::ServiceWorkerContainer::postMessage):
Enqueue the event instead of firing it right away.
(WebCore::ServiceWorkerContainer::addEventListener):
if navigator.serviceWorker.onmessage event handler gets set by the JavaScript, call
startMessages().
* workers/service/ServiceWorkerContainer.h:
2019-08-30 Simon Fraser <simon.fraser@apple.com>
Add system tracing points for compositing updates, and touch-event dispatching
https://bugs.webkit.org/show_bug.cgi?id=201327
Reviewed by Alex Christensen.
TraceScope in RenderLayerCompositor::updateCompositingLayers().
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateCompositingLayers):
2019-08-30 Brent Fulgham <bfulgham@apple.com>
[FTW] Use DirectX SharedResource as basis for SharedBitmap
https://bugs.webkit.org/show_bug.cgi?id=201157
Reviewed by Alex Christensen.
Currently an ID2D1Bitmap is used as the backing store for the SharedBitmap that is the
base type for sharing data between the WebContent Process and the UIProcess. However, this
involves moving GPU memory to local memory, copying that memory into the SharedMemory member
of the SharedBitmap, then building a new GPU bitmap on the UIProcess side from that SharedMemory.
Profiling indicates that this is the single largest place FTW WebKit spends its time.
Instead, we should use Direct2D's ability to render to an IDXGISurface, which can be shared
between multiple processes. This should avoid the GPU->CPU copy, the Direct2D-allocated
CPU->Shared Memory copy, and the shared memory to GPU copy.
* platform/graphics/win/BackingStoreBackendDirect2D.h:
(WebCore::BackingStoreBackendDirect2D::renderTarget const): Change type.
(WebCore::BackingStoreBackendDirect2D::dxSurface const): Added.
(WebCore::BackingStoreBackendDirect2D::BackingStoreBackendDirect2D): Require a DXD11 device.
* platform/graphics/win/BackingStoreBackendDirect2DImpl.cpp:
(WebCore::BackingStoreBackendDirect2DImpl::BackingStoreBackendDirect2DImpl): Use Direct2D's
IDXGISurface to make a render target we can use to support our fast cross-process sharing.
(WebCore::BackingStoreBackendDirect2DImpl::scroll):
* platform/graphics/win/BackingStoreBackendDirect2DImpl.h:
* platform/graphics/win/Direct2DOperations.cpp:
(WebCore::Direct2D::fillRect): Remove unneeded PlatformContextStateSaver.
(WebCore::Direct2D::fillRoundedRect): Ditto.
(WebCore::Direct2D::fillRectWithGradient): Ditto.
(WebCore::Direct2D::fillPath): Ditto.
(WebCore::Direct2D::strokePath): Ditto.
* platform/graphics/win/Direct2DUtilities.cpp:
(WebCore::Direct2D::pixelFormat): Switch to constants for bitmap format.
(WebCore::Direct2D::createDXGISurfaceOfSize): Added.
(WebCore::Direct2D::createSurfaceRenderTarget): Added.
(WebCore::Direct2D::writeDiagnosticPNGToPath):
(WebCore::Direct2D::dxgiImmediateContext): Added.
(WebCore::Direct2D::defaultDirectXDevice): Added.
(WebCore::Direct2D::createDeviceAndContext): Added.
(WebCore::Direct2D::toDXGIDevice): Added.
(WebCore::Direct2D::factoryForDXGIDevice): Added.
* platform/graphics/win/Direct2DUtilities.h:
2019-08-30 Sihui Liu <sihui_liu@apple.com>
IndexedDB: update size of database when database operation is completed
https://bugs.webkit.org/show_bug.cgi?id=201057
Reviewed by Youenn Fablet.
Currently when a database operation was completed, we re-computed the disk usage of the origin. This computation
listed all databases in the origin directory and read the size of each database file, which was very inefficient
because the completed operation should only affect one database.
This patch makes UniqueIDBDatabase keep track of database size and reports size change to QuotaUser.
Tested PerformanceTests/IndexedDB/basic/objectstore-add.html on release build minibrowser. This change makes
the test over 50% faster.
* Modules/indexeddb/server/IDBBackingStore.h:
* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::QuotaUser::increaseSpaceUsed):
(WebCore::IDBServer::IDBServer::QuotaUser::decreaseSpaceUsed):
(WebCore::IDBServer::IDBServer::computeSpaceUsedForOrigin):
(WebCore::IDBServer::IDBServer::increaseSpaceUsed):
(WebCore::IDBServer::IDBServer::decreaseSpaceUsed):
(WebCore::IDBServer::IDBServer::setSpaceUsed): Deleted.
* Modules/indexeddb/server/IDBServer.h:
* Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
(WebCore::IDBServer::MemoryIDBBackingStore::databaseSize const):
(WebCore::IDBServer::MemoryIDBBackingStore::close):
(WebCore::IDBServer::MemoryIDBBackingStore::databasesSizeForOrigin const): Deleted.
* Modules/indexeddb/server/MemoryIDBBackingStore.h:
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::databasesSizeForDirectory):
(WebCore::IDBServer::SQLiteIDBBackingStore::databaseSize const):
(WebCore::IDBServer::SQLiteIDBBackingStore::close):
(WebCore::IDBServer::SQLiteIDBBackingStore::databasesSizeForFolder): Deleted.
(WebCore::IDBServer::SQLiteIDBBackingStore::databasesSizeForOrigin const): Deleted.
* Modules/indexeddb/server/SQLiteIDBBackingStore.h:
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::deleteBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::shutdownForClose):
(WebCore::IDBServer::UniqueIDBDatabase::didShutdownForClose):
(WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::openBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::didOpenBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTaskReply):
(WebCore::IDBServer::UniqueIDBDatabase::updateSpaceUsedIfNeeded):
* Modules/indexeddb/server/UniqueIDBDatabase.h:
2019-08-30 Alicia Boya García <aboya@igalia.com>
[MSE][GStreamer] Replaying the video should update currentTime
https://bugs.webkit.org/show_bug.cgi?id=201307
Reviewed by Xabier Rodriguez-Calvar.
While writing a test to confirm that https://bugs.webkit.org/show_bug.cgi?id=190050
has indeed been fixed I noticed a non-conformity: when the video has
ended, right after calling .play() for a second playback currentTime
did not return zero, but the video duration.
This turned to be due to the m_isEndReached flag not being reseted on
seeks (replaying a video incurs in a seek done from multi-platform
code).
Test: imported/w3c/web-platform-tests/media-source/mediasource-replay.html
* platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
(WebCore::MediaPlayerPrivateGStreamerMSE::seek):
2019-08-30 Zalan Bujtas <zalan@apple.com>
[LFC] Make Geometry/Quirk/MarginCollapse subclasses stateful.
https://bugs.webkit.org/show_bug.cgi?id=201343
<rdar://problem/54883787>
Reviewed by Antti Koivisto.
This is in preparation for enforcing LFC to not call outside of the formatting context.
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):
(WebCore::Layout::FormattingContext::computeBorderAndPadding):
(WebCore::Layout::FormattingContext::layoutOutOfFlowContent):
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const): Deleted.
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const): Deleted.
(WebCore::Layout::FormattingContext::computeBorderAndPadding const): Deleted.
(WebCore::Layout::FormattingContext::layoutOutOfFlowContent const): Deleted.
* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::Geometry::layoutState const):
(WebCore::Layout::FormattingContext::Geometry::layoutState):
(WebCore::Layout::FormattingContext::geometry const):
(WebCore::Layout::FormattingContext::Quirks::layoutState const):
(WebCore::Layout::FormattingContext::Quirks::layoutState):
(WebCore::Layout::FormattingContext::quirks const):
(WebCore::Layout::FormattingContext::Geometry::Geometry):
(WebCore::Layout::FormattingContext::Quirks::Quirks):
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::computedHeightValue const):
(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):
(WebCore::Layout::FormattingContext::Geometry::computedValueIfNotAuto const):
(WebCore::Layout::FormattingContext::Geometry::fixedValue const):
(WebCore::Layout::FormattingContext::Geometry::computedMaxHeight const):
(WebCore::Layout::FormattingContext::Geometry::computedMinHeight const):
(WebCore::Layout::FormattingContext::Geometry::staticVerticalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::staticHorizontalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases const):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inFlowPositionedPositionOffset const):
(WebCore::Layout::FormattingContext::Geometry::computedBorder const):
(WebCore::Layout::FormattingContext::Geometry::computedPadding const):
(WebCore::Layout::FormattingContext::Geometry::computedHorizontalMargin const):
(WebCore::Layout::FormattingContext::Geometry::computedVerticalMargin const):
(WebCore::Layout::FormattingContext::Geometry::constrainByMinMaxWidth const):
(WebCore::Layout::FormattingContext::Geometry::computedHeightValue): Deleted.
(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot): Deleted.
(WebCore::Layout::FormattingContext::Geometry::computedValueIfNotAuto): Deleted.
(WebCore::Layout::FormattingContext::Geometry::fixedValue): Deleted.
(WebCore::Layout::FormattingContext::Geometry::computedMaxHeight): Deleted.
(WebCore::Layout::FormattingContext::Geometry::computedMinHeight): Deleted.
(WebCore::Layout::staticVerticalPositionForOutOfFlowPositioned): Deleted.
(WebCore::Layout::staticHorizontalPositionForOutOfFlowPositioned): Deleted.
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry): Deleted.
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry): Deleted.
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry): Deleted.
(WebCore::Layout::FormattingContext::Geometry::complicatedCases): Deleted.
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin): Deleted.
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin): Deleted.
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry): Deleted.
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin): Deleted.
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin): Deleted.
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin): Deleted.
(WebCore::Layout::FormattingContext::Geometry::inFlowPositionedPositionOffset): Deleted.
(WebCore::Layout::FormattingContext::Geometry::computedBorder): Deleted.
(WebCore::Layout::FormattingContext::Geometry::computedPadding): Deleted.
(WebCore::Layout::FormattingContext::Geometry::computedHorizontalMargin): Deleted.
(WebCore::Layout::FormattingContext::Geometry::computedVerticalMargin): Deleted.
(WebCore::Layout::FormattingContext::Geometry::constrainByMinMaxWidth): Deleted.
* layout/FormattingContextQuirks.cpp:
(WebCore::Layout::FormattingContext::Quirks::heightValueOfNearestContainingBlockWithFixedHeight):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layout):
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot):
(WebCore::Layout::BlockFormattingContext::placeInFlowPositionedChildren):
(WebCore::Layout::BlockFormattingContext::computeStaticVerticalPosition):
(WebCore::Layout::BlockFormattingContext::computeStaticHorizontalPosition):
(WebCore::Layout::BlockFormattingContext::computeStaticPosition):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPosition):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForAncestors):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFormattingRoot):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFloatClear):
(WebCore::Layout::BlockFormattingContext::computeFloatingPosition):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats):
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::BlockFormattingContext::verticalPositionWithMargin const):
(WebCore::Layout::BlockFormattingContext::setEstimatedMarginBefore):
(WebCore::Layout::BlockFormattingContext::layout const): Deleted.
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const): Deleted.
(WebCore::Layout::BlockFormattingContext::placeInFlowPositionedChildren const): Deleted.
(WebCore::Layout::BlockFormattingContext::computeStaticVerticalPosition const): Deleted.
(WebCore::Layout::BlockFormattingContext::computeStaticHorizontalPosition const): Deleted.
(WebCore::Layout::BlockFormattingContext::computeStaticPosition const): Deleted.
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPosition const): Deleted.
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForAncestors const): Deleted.
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFormattingRoot const): Deleted.
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFloatClear const): Deleted.
(WebCore::Layout::BlockFormattingContext::computeFloatingPosition const): Deleted.
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const): Deleted.
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const): Deleted.
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const): Deleted.
(WebCore::Layout::BlockFormattingContext::computedIntrinsicWidthConstraints const): Deleted.
(WebCore::Layout::BlockFormattingContext::setEstimatedMarginBefore const): Deleted.
* layout/blockformatting/BlockFormattingContext.h:
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::geometry const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::layoutState):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::layoutState const):
(WebCore::Layout::BlockFormattingContext::marginCollapse const):
(WebCore::Layout::BlockFormattingContext::quirks const):
(WebCore::Layout::BlockFormattingContext::removeEstimatedMarginBefore):
(WebCore::Layout::BlockFormattingContext::Geometry::Geometry):
(WebCore::Layout::BlockFormattingContext::Quirks::Quirks):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::MarginCollapse):
(WebCore::Layout::BlockFormattingContext::removeEstimatedMarginBefore const): Deleted.
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::Geometry::staticVerticalPosition const):
(WebCore::Layout::BlockFormattingContext::Geometry::staticHorizontalPosition const):
(WebCore::Layout::BlockFormattingContext::Geometry::staticPosition const):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::intrinsicWidthConstraints):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin): Deleted.
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin): Deleted.
(WebCore::Layout::BlockFormattingContext::Geometry::staticVerticalPosition): Deleted.
(WebCore::Layout::BlockFormattingContext::Geometry::staticHorizontalPosition): Deleted.
(WebCore::Layout::BlockFormattingContext::Geometry::staticPosition): Deleted.
* layout/blockformatting/BlockFormattingContextQuirks.cpp:
(WebCore::Layout::BlockFormattingContext::Quirks::needsStretching const):
(WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):
(WebCore::Layout::BlockFormattingContext::Quirks::shouldIgnoreCollapsedQuirkMargin const):
(WebCore::Layout::BlockFormattingContext::Quirks::needsStretching): Deleted.
(WebCore::Layout::BlockFormattingContext::Quirks::shouldIgnoreCollapsedQuirkMargin): Deleted.
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithPreviousSiblingMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithFirstInFlowChildMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithSiblingMarginBeforeWithClearance const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithParentMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithParentMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithLastInFlowChildMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithNextSiblingMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updateMarginAfterForPreviousSibling const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginBefore):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeMarginAfter):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::estimatedMarginBefore):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeIgnoringCollapsingThrough):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updatePositiveNegativeMarginValues):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::collapsedVerticalValues):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginAfter): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginBefore): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithPreviousSiblingMarginAfter): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithFirstInFlowChildMarginBefore): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithSiblingMarginBeforeWithClearance): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithParentMarginBefore): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithParentMarginAfter): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithLastInFlowChildMarginAfter): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithNextSiblingMarginBefore): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updateMarginAfterForPreviousSibling): Deleted.
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layout):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::initializeMarginBorderAndPaddingForGenericInlineBox):
(WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPaddingForInlineContainer):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
(WebCore::Layout::InlineFormattingContext::computeHorizontalMargin):
(WebCore::Layout::InlineFormattingContext::computeWidthAndMargin):
(WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot):
(WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox):
(WebCore::Layout::InlineFormattingContext::layout const): Deleted.
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints const): Deleted.
(WebCore::Layout::InlineFormattingContext::initializeMarginBorderAndPaddingForGenericInlineBox const): Deleted.
(WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPaddingForInlineContainer const): Deleted.
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot const): Deleted.
(WebCore::Layout::InlineFormattingContext::computeHorizontalMargin const): Deleted.
(WebCore::Layout::InlineFormattingContext::computeWidthAndMargin const): Deleted.
(WebCore::Layout::InlineFormattingContext::computeHeightAndMargin const): Deleted.
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const): Deleted.
(WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox const): Deleted.
* layout/inlineformatting/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::quirks const):
(WebCore::Layout::InlineFormattingContext::geometry const):
(WebCore::Layout::InlineFormattingContext::Geometry::Geometry):
(WebCore::Layout::InlineFormattingContext::Quirks::Quirks):
* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin const):
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin): Deleted.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::LineLayout::LineLayout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):
* layout/inlineformatting/InlineFormattingContextQuirks.cpp:
(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):
(WebCore::Layout::InlineFormattingContext::Quirks::lineHeightConstraints const):
(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing): Deleted.
(WebCore::Layout::InlineFormattingContext::Quirks::lineHeightConstraints): Deleted.
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::close):
* layout/inlineformatting/InlineLine.h:
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::layout):
(WebCore::Layout::TableFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::TableFormattingContext::ensureTableGrid):
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns):
(WebCore::Layout::TableFormattingContext::computedTableWidth):
(WebCore::Layout::TableFormattingContext::distributeAvailableWidth):
(WebCore::Layout::TableFormattingContext::layout const): Deleted.
(WebCore::Layout::TableFormattingContext::computedIntrinsicWidthConstraints const): Deleted.
(WebCore::Layout::TableFormattingContext::ensureTableGrid const): Deleted.
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns const): Deleted.
(WebCore::Layout::TableFormattingContext::computedTableWidth const): Deleted.
(WebCore::Layout::TableFormattingContext::distributeAvailableWidth const): Deleted.
* layout/tableformatting/TableFormattingContext.h:
(WebCore::Layout::TableFormattingContext::geometry const):
(WebCore::Layout::TableFormattingContext::Geometry::Geometry):
* layout/tableformatting/TableFormattingContextGeometry.cpp:
(WebCore::Layout::TableFormattingContext::Geometry::tableCellHeightAndMargin const):
(WebCore::Layout::TableFormattingContext::Geometry::tableCellHeightAndMargin): Deleted.
2019-08-30 Keith Rollin <krollin@apple.com>
Remove AppKitCompatibilityDeclarations.h
https://bugs.webkit.org/show_bug.cgi?id=201283
<rdar://problem/54822042>
Reviewed by Alexey Proskuryakov.
The two copies of these files -- on in WTF, one in MiniBrowser -- are
empty and can be removed.
No new tests -- no new or changed functionality.
* WebCorePrefix.h:
2019-08-30 Alicia Boya García <aboya@igalia.com>
[MSE][GStreamer] Gracefully fail on invalid non-first initialization segment
https://bugs.webkit.org/show_bug.cgi?id=201322
Reviewed by Xabier Rodriguez-Calvar.
In normal operation of AppendPipeline, except during tear down,
qtdemux never removes a pad. Even if a new initialization segment is
appended, the pad is reused.
There is an exception though: when the new initialization segment has
an incompatible set of tracks. This is invalid under the MSE spec and
should produce an error, but in this case this was making an assertion
fail -- in particular by sending an EOS to the to-be-removed pad, which
AppendPipeline doesn't expect.
This patch changes the assertion with graceful error handling for that
error.
Fixes media/media-source/media-source-seek-detach-crash.html
* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::AppendPipeline::AppendPipeline):
(WebCore::AppendPipeline::handleErrorConditionFromStreamingThread):
(WebCore::AppendPipeline::handleErrorSyncMessage):
* platform/graphics/gstreamer/mse/AppendPipeline.h:
2019-08-30 Charlie Turner <cturner@igalia.com>
[GStreamer] Do not ref the player count from background threads.
https://bugs.webkit.org/show_bug.cgi?id=201222
Reviewed by Xabier Rodriguez-Calvar.
Test: imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.https.html
In the sync-message handler, a ref() was being taken waiting for a
CDM instance to be attached. This hits asserts since you are not
allowed to ref() an object created on the main thread
(BasePlayer) on a background thread.
The protection condition was overly scoped, tidied up the locking
and made it more granular. To avoid needing to hold a ref() in the
background thread, use instead a semaphore to signal when a CDM
instance is attached, or the player has been destroyed.
Also remove an erroneous safe-guard, the operator= in
isCDMInstanceAvailable will ref() the CDMInstance for us. This use
of holding a reference to CDMInstance in the decryptors is not
thread-safe, and now we have a problem since there's no clean way
to communicate with CDMInstance from background threads without
being thread unsafe. For ClearKey and Widevine, a thread safe
ProxyCDM needs to be designed and passed to background
threads (upcoming patch).
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::handleSyncMessage):
(WebCore::MediaPlayerPrivateGStreamerBase::cdmInstanceAttached):
(WebCore::MediaPlayerPrivateGStreamerBase::cdmInstanceDetached):
(WebCore::MediaPlayerPrivateGStreamerBase::handleProtectionEvent):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
(isCDMInstanceAvailable):
2019-08-30 Sihui Liu <sihui_liu@apple.com>
[wk2] LayoutTest imported/w3c/web-platform-tests/IndexedDB/fire-error-event-exception.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=169621
Reviewed by Alex Christensen.
Event handlers of IDB objects were called in unexpected order because of race, which made the console messages
in the tests come out of order.
Usually, an operation/request result is handled as follows:
1. IDBServer sends IDBResultData to IDBClient.
2. IDBClient receives IDBResultData and finishes a IDBTransaction operation with that result.
3. IDBTransaction schedules operation completed timer.
4. (Some time later) Timer fires, and IDBTransaction completes a request with the result and dispatches event.
5. (Some time later) IDBTransaction is notified that event is dispatched. If there are other results received,
IDBTransaction schedules operation completed timer.
In previous implementation, if the IDBClient received a second IDBResultData for the same IDBTransaction between
step 3 and step 4, it would not schedule timer because timer was still active; if it received the result between
step 4 and step 5, it would schedule timer again.
Consider a flow like this:
result1 of transaction1 received, timer of transaction1 scheduled
result2 of transaction2 received, timer of transaction2 scheduled
result3 of transaction1 is received, timer of transaction1 active so no scheduling
timer of transaction1 fired, event1 to be dispatched to request1
timer of transaction2 fired, event2 to be dispatched to request2
result4 of transaction2 received, timer of transaction2 scheduled
event1 dispatched, timer of transaction1 scheduled (for handling result3)
event2 dispatched, timer of transaction2 active so no scheduling
timer of transaction2 fired, event3 to dispatch to request4
timer of transaction1 fired, event4 to dispatch to request3
request4 would get event before request3, though result3 was received before result4. We should stop scheduling
event if an IDBTransaction is in between step 4 and 5, which means its m_currentlyCompletingRequest is not null.
* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::operationCompletedOnServer):
2019-08-29 Devin Rousso <drousso@apple.com>
Web Inspector: Debugger: async event listener stack traces should be available in Workers
https://bugs.webkit.org/show_bug.cgi?id=200903
Reviewed by Joseph Pecoraro.
Tests: inspector/worker/dom-debugger-event-interval-breakpoints.html
inspector/worker/dom-debugger-event-listener-breakpoints.html
inspector/worker/dom-debugger-event-timeout-breakpoints.html
inspector/worker/dom-debugger-url-breakpoints.html
* inspector/agents/WebDebuggerAgent.h:
* inspector/agents/WebDebuggerAgent.cpp:
(WebCore::WebDebuggerAgent::enabled const): Added.
(WebCore::WebDebuggerAgent::enable):
(WebCore::WebDebuggerAgent::disable):
(WebCore::WebDebuggerAgent::didAddEventListener): Added.
(WebCore::WebDebuggerAgent::willRemoveEventListener): Added.
(WebCore::WebDebuggerAgent::willHandleEvent): Added.
(WebCore::WebDebuggerAgent::didPostMessage): Added.
(WebCore::WebDebuggerAgent::didFailPostMessage): Added.
(WebCore::WebDebuggerAgent::willDispatchPostMessage): Added.
(WebCore::WebDebuggerAgent::didDispatchPostMessage): Added.
(WebCore::WebDebuggerAgent::didClearAsyncStackTraceData): Added.
* inspector/agents/page/PageDebuggerAgent.h:
* inspector/agents/page/PageDebuggerAgent.cpp:
(WebCore::PageDebuggerAgent::enabled const): Added.
(WebCore::PageDebuggerAgent::enable):
(WebCore::PageDebuggerAgent::disable):
(WebCore::PageDebuggerAgent::didClearAsyncStackTraceData): Deleted.
(WebCore::PageDebuggerAgent::didAddEventListener): Deleted.
(WebCore::PageDebuggerAgent::willRemoveEventListener): Deleted.
(WebCore::PageDebuggerAgent::willHandleEvent): Deleted.
(WebCore::PageDebuggerAgent::didPostMessage): Deleted.
(WebCore::PageDebuggerAgent::didFailPostMessage): Deleted.
(WebCore::PageDebuggerAgent::willDispatchPostMessage): Deleted.
(WebCore::PageDebuggerAgent::didDispatchPostMessage): Deleted.
Move various `InspectorInstrumentation` calls from `PageDebuggerAgent` to `WebDebuggerAgent`
so that `WorkerDebuggerAgent` also inherits them.
* inspector/InstrumentingAgents.h:
(WebCore::InstrumentingAgents::webDebuggerAgent const): Added.
(WebCore::InstrumentingAgents::setWebDebuggerAgent): Added.
(WebCore::InstrumentingAgents::inspectorDebuggerAgent const): Deleted.
(WebCore::InstrumentingAgents::setInspectorDebuggerAgent): Deleted.
* inspector/InstrumentingAgents.cpp:
(WebCore::InstrumentingAgents::reset):
* inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::mainFrameStartedLoading):
(WebCore::InspectorTimelineAgent::startProgrammaticCapture):
(WebCore::InspectorTimelineAgent::stopProgrammaticCapture):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didClearWindowObjectInWorldImpl):
(WebCore::InspectorInstrumentation::isDebuggerPausedImpl):
(WebCore::InspectorInstrumentation::didInstallTimerImpl):
(WebCore::InspectorInstrumentation::didRemoveTimerImpl):
(WebCore::InspectorInstrumentation::didAddEventListenerImpl):
(WebCore::InspectorInstrumentation::willRemoveEventListenerImpl):
(WebCore::InspectorInstrumentation::didPostMessageImpl):
(WebCore::InspectorInstrumentation::didFailPostMessageImpl):
(WebCore::InspectorInstrumentation::willDispatchPostMessageImpl):
(WebCore::InspectorInstrumentation::didDispatchPostMessageImpl):
(WebCore::InspectorInstrumentation::willHandleEventImpl):
(WebCore::InspectorInstrumentation::didHandleEventImpl):
(WebCore::InspectorInstrumentation::willFireTimerImpl):
(WebCore::InspectorInstrumentation::didFireTimerImpl):
(WebCore::InspectorInstrumentation::scriptExecutionBlockedByCSPImpl):
(WebCore::InspectorInstrumentation::didCommitLoadImpl):
(WebCore::InspectorInstrumentation::frameStartedLoadingImpl):
(WebCore::InspectorInstrumentation::frameStoppedLoadingImpl):
(WebCore::InspectorInstrumentation::addMessageToConsoleImpl):
(WebCore::InspectorInstrumentation::didRequestAnimationFrameImpl):
(WebCore::InspectorInstrumentation::didCancelAnimationFrameImpl):
(WebCore::InspectorInstrumentation::willFireAnimationFrameImpl):
(WebCore::InspectorInstrumentation::didFireAnimationFrameImpl):
Replace `inspectorDebuggerAgent` with `webDebuggerAgent` so the right instrumentation hooks
are available.
2019-08-29 Chris Dumez <cdumez@apple.com>
Add "IsolatedCopy" in the name of String getters that call isolatedCopy() on the string
https://bugs.webkit.org/show_bug.cgi?id=201318
Reviewed by Alex Christensen.
Add "IsolatedCopy" in the name of String getters that call isolatedCopy() on the string, for clarity.
* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::createBackingStore):
(WebCore::IDBServer::IDBServer::performGetAllDatabaseNames):
(WebCore::IDBServer::IDBServer::removeDatabasesModifiedSinceForVersion):
(WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesModifiedSince):
(WebCore::IDBServer::IDBServer::removeDatabasesWithOriginsForVersion):
(WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesForOrigins):
(WebCore::IDBServer::IDBServer::computeSpaceUsedForOrigin):
(WebCore::IDBServer::IDBServer::upgradeFilesIfNecessary):
* Modules/indexeddb/server/IDBServer.h:
(WebCore::IDBServer::IDBServer::databaseDirectoryPathIsolatedCopy const):
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::fullDatabaseDirectoryWithUpgrade):
(WebCore::IDBServer::SQLiteIDBBackingStore::databasesSizeForOrigin const):
(WebCore::IDBServer::SQLiteIDBBackingStore::deleteBackingStore):
* Modules/indexeddb/server/SQLiteIDBBackingStore.h:
(WebCore::IDBServer::SQLiteIDBBackingStore::databaseRootDirectoryIsolatedCopy const):
* Modules/webdatabase/Database.cpp:
(WebCore::Database::markAsDeletedAndClose):
(WebCore::Database::stringIdentifierIsolatedCopy const):
(WebCore::Database::displayNameIsolatedCopy const):
(WebCore::Database::expectedVersionIsolatedCopy const):
(WebCore::Database::fileNameIsolatedCopy const):
(WebCore::Database::details const):
(WebCore::Database::didCommitWriteTransaction):
(WebCore::Database::didExceedQuota):
* Modules/webdatabase/Database.h:
* Modules/webdatabase/DatabaseTracker.cpp:
(WebCore::DatabaseTracker::maximumSize):
(WebCore::DatabaseTracker::doneCreatingDatabase):
(WebCore::DatabaseTracker::addOpenDatabase):
(WebCore::DatabaseTracker::removeOpenDatabase):
* Modules/webdatabase/SQLError.h:
(WebCore::SQLError::messageIsolatedCopy const):
* Modules/webdatabase/SQLError.idl:
* Modules/webdatabase/SQLTransaction.cpp:
(WebCore::SQLTransaction::openTransactionAndPreflight):
* workers/service/server/RegistrationDatabase.cpp:
(WebCore::RegistrationDatabase::openSQLiteDatabase):
(WebCore::RegistrationDatabase::clearAll):
* workers/service/server/RegistrationDatabase.h:
(WebCore::RegistrationDatabase::databaseDirectoryIsolatedCopy const):
2019-08-29 Keith Rollin <krollin@apple.com>
Update .xcconfig symbols to reflect the current set of past and future product versions.
https://bugs.webkit.org/show_bug.cgi?id=200720
<rdar://problem/54305032>
Reviewed by Alex Christensen.
Remove version symbols related to old OS's we no longer support,
ensure that version symbols are defined for OS's we do support.
No new tests -- no new or changed functionality.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* Configurations/Version.xcconfig:
2019-08-29 Timothy Hatcher <timothy@apple.com>
Copying and pasting two paragraphs with a newline between them results in stray paragraph with newline inside.
https://bugs.webkit.org/show_bug.cgi?id=201306
Reviewed by Wenson Hsieh.
Test: editing/pasteboard/paste-without-nesting.html
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::moveNodeOutOfAncestor): Consider the ancestor node safe to remove
if there is no rendered text inside, not just if there are any child nodes.
2019-08-29 Devin Rousso <drousso@apple.com>
Web Inspector: DOMDebugger: support event breakpoints in Worker contexts
https://bugs.webkit.org/show_bug.cgi?id=200651
Reviewed by Joseph Pecoraro.
Tests: inspector/worker/dom-debugger-dom-breakpoints.html
inspector/worker/dom-debugger-event-animation-frame-breakpoints.html
inspector/worker/dom-debugger-event-interval-breakpoints.html
inspector/worker/dom-debugger-event-listener-breakpoints.html
inspector/worker/dom-debugger-event-timeout-breakpoints.html
inspector/worker/dom-debugger-url-breakpoints.html
* inspector/agents/InspectorDOMDebuggerAgent.h:
* inspector/agents/InspectorDOMDebuggerAgent.cpp:
(WebCore::InspectorDOMDebuggerAgent::InspectorDOMDebuggerAgent):
(WebCore::InspectorDOMDebuggerAgent::enabled const):
(WebCore::InspectorDOMDebuggerAgent::enable):
(WebCore::InspectorDOMDebuggerAgent::disable):
(WebCore::InspectorDOMDebuggerAgent::debuggerWasEnabled):
(WebCore::InspectorDOMDebuggerAgent::debuggerWasDisabled):
(WebCore::InspectorDOMDebuggerAgent::setEventBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::removeEventBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::~InspectorDOMDebuggerAgent): Deleted.
(WebCore::InspectorDOMDebuggerAgent::frameDocumentUpdated): Deleted.
(WebCore::InspectorDOMDebuggerAgent::willInvalidateStyleAttr): Deleted.
(WebCore::InspectorDOMDebuggerAgent::didInsertDOMNode): Deleted.
(WebCore::InspectorDOMDebuggerAgent::didRemoveDOMNode): Deleted.
(WebCore::domTypeForName): Deleted.
(WebCore::domTypeName): Deleted.
(WebCore::InspectorDOMDebuggerAgent::setDOMBreakpoint): Deleted.
(WebCore::InspectorDOMDebuggerAgent::removeDOMBreakpoint): Deleted.
(WebCore::InspectorDOMDebuggerAgent::willInsertDOMNode): Deleted.
(WebCore::InspectorDOMDebuggerAgent::willRemoveDOMNode): Deleted.
(WebCore::InspectorDOMDebuggerAgent::willModifyDOMAttr): Deleted.
(WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent): Deleted.
(WebCore::InspectorDOMDebuggerAgent::hasBreakpoint): Deleted.
(WebCore::InspectorDOMDebuggerAgent::updateSubtreeBreakpoints): Deleted.
(WebCore::InspectorDOMDebuggerAgent::willFireAnimationFrame): Deleted.
* inspector/agents/page/PageDOMDebuggerAgent.h: Added.
* inspector/agents/page/PageDOMDebuggerAgent.cpp: Added.
(WebCore::domTypeForName):
(WebCore::domTypeName):
(WebCore::PageDOMDebuggerAgent::PageDOMDebuggerAgent):
(WebCore::PageDOMDebuggerAgent::enabled const):
(WebCore::PageDOMDebuggerAgent::enable):
(WebCore::PageDOMDebuggerAgent::disable):
(WebCore::PageDOMDebuggerAgent::setDOMBreakpoint):
(WebCore::PageDOMDebuggerAgent::removeDOMBreakpoint):
(WebCore::PageDOMDebuggerAgent::frameDocumentUpdated):
(WebCore::PageDOMDebuggerAgent::willInsertDOMNode):
(WebCore::PageDOMDebuggerAgent::didInsertDOMNode):
(WebCore::PageDOMDebuggerAgent::willRemoveDOMNode):
(WebCore::PageDOMDebuggerAgent::didRemoveDOMNode):
(WebCore::PageDOMDebuggerAgent::willModifyDOMAttr):
(WebCore::PageDOMDebuggerAgent::willFireAnimationFrame):
(WebCore::PageDOMDebuggerAgent::willInvalidateStyleAttr):
(WebCore::PageDOMDebuggerAgent::setAnimationFrameBreakpoint):
(WebCore::PageDOMDebuggerAgent::descriptionForDOMEvent):
(WebCore::PageDOMDebuggerAgent::updateSubtreeBreakpoints):
(WebCore::PageDOMDebuggerAgent::hasBreakpoint):
* inspector/agents/worker/WorkerDOMDebuggerAgent.h: Added.
* inspector/agents/worker/WorkerDOMDebuggerAgent.cpp: Added.
(WebCore::WorkerDOMDebuggerAgent::WorkerDOMDebuggerAgent):
(WebCore::WorkerDOMDebuggerAgent::setDOMBreakpoint):
(WebCore::WorkerDOMDebuggerAgent::removeDOMBreakpoint):
(WebCore::WorkerDOMDebuggerAgent::setAnimationFrameBreakpoint):
Split the `InspectorDOMDebuggerAgent` into two subclasses depending on the inspected target
type, as certain `DOMDebugger` commands don't make sense for a `Worker` context:
- DOM breakpoints, as there is no DOM in a `Worker` context
- animation frame event breakpoints, as there is no `requestAnimationFrame` function
* inspector/InspectorController.cpp:
(WebCore::InspectorController::createLazyAgents):
* inspector/WorkerInspectorController.cpp:
(WebCore::WorkerInspectorController::createLazyAgents):
* inspector/InstrumentingAgents.h:
(WebCore::InstrumentingAgents::pageDOMDebuggerAgent const): Added.
(WebCore::InstrumentingAgents::setPageDOMDebuggerAgent): Added.
* inspector/InstrumentingAgents.cpp:
(WebCore::InstrumentingAgents::reset):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::willInsertDOMNodeImpl):
(WebCore::InspectorInstrumentation::didInsertDOMNodeImpl):
(WebCore::InspectorInstrumentation::willRemoveDOMNodeImpl):
(WebCore::InspectorInstrumentation::didRemoveDOMNodeImpl):
(WebCore::InspectorInstrumentation::willModifyDOMAttrImpl):
(WebCore::InspectorInstrumentation::willInvalidateStyleAttrImpl):
(WebCore::InspectorInstrumentation::frameDocumentUpdatedImpl):
(WebCore::InspectorInstrumentation::willFireAnimationFrameImpl):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2019-08-29 Keith Rollin <krollin@apple.com>
Remove CCBigNum fallback code
https://bugs.webkit.org/show_bug.cgi?id=201250
<rdar://problem/54814330>
Reviewed by Jiewen Tan.
Bug 184637 added support for CCRSAGetCRTComponents, falling back to
the older CCBigNum code if CCRSAGetCRTComponents was not available. We
now only support OS's that have CCRSAGetCRTComponents so remove the
fallback code.
No new tests -- no new or changed functionality.
* crypto/CommonCryptoUtilities.cpp:
(WebCore::CCBigNum::CCBigNum): Deleted.
(WebCore::CCBigNum::~CCBigNum): Deleted.
(WebCore::CCBigNum::operator=): Deleted.
(WebCore::CCBigNum::data const): Deleted.
(WebCore::CCBigNum::operator- const): Deleted.
(WebCore::CCBigNum::operator% const): Deleted.
(WebCore::CCBigNum::inverse const): Deleted.
* crypto/CommonCryptoUtilities.h:
* crypto/mac/CryptoKeyRSAMac.cpp:
(WebCore::getPrivateKeyComponents):
2019-08-29 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Initialize <tr> display boxes.
https://bugs.webkit.org/show_bug.cgi?id=201232
<rdar://problem/54806789>
Reviewed by Antti Koivisto.
Set them as blank for now.
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::initializeDisplayBoxToBlank const):
(WebCore::Layout::TableFormattingContext::layout const):
* layout/tableformatting/TableFormattingContext.h:
* layout/tableformatting/TableGrid.cpp:
(WebCore::Layout::TableGrid::Row::Row):
(WebCore::Layout::TableGrid::appendCell):
* layout/tableformatting/TableGrid.h:
(WebCore::Layout::TableGrid::Row::box const):
2019-08-29 Youenn Fablet <youenn@apple.com>
document.fonts.ready is resolved too quickly
https://bugs.webkit.org/show_bug.cgi?id=174030
<rdar://problem/33083550>
Reviewed by Frédéric Wang.
As described in https://drafts.csswg.org/css-font-loading/#font-face-set-ready, the ready promise
is only fulfilled after layout operations complete and no additional font loads are necessary.
This patch implements this by notifying the FontFaceSet created for the document when the document
is finished loading. At that time, the promise will be resolved as soon as fonts are finished loading if any.
Test: imported/w3c/web-platform-tests/infrastructure/assumptions/document-fonts-ready.html
* css/CSSFontSelector.cpp:
(WebCore::CSSFontSelector::optionalFontFaceSet):
* css/CSSFontSelector.h:
* css/FontFaceSet.cpp:
(WebCore::FontFaceSet::FontFaceSet):
(WebCore::FontFaceSet::startedLoading):
(WebCore::FontFaceSet::didFirstLayout):
(WebCore::FontFaceSet::completedLoading):
* css/FontFaceSet.h:
* dom/Document.cpp:
(WebCore::Document::implicitClose):
2019-08-29 Zalan Bujtas <zalan@apple.com>
[LFC][BFC] BlockFormattingContext::usedAvailableWidthForFloatAvoider should only be called on float avoiders.
https://bugs.webkit.org/show_bug.cgi?id=201238
<rdar://problem/54807663>
Reviewed by Antti Koivisto.
Make the horizontal available space logic for float avoiders more explicit/readable.
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider const):
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
2019-08-29 Zalan Bujtas <zalan@apple.com>
[LFC] Inline content logging should have some extra space for better readability
https://bugs.webkit.org/show_bug.cgi?id=201236
<rdar://problem/54807336>
Reviewed by Antti Koivisto.
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::outputInlineRuns):
2019-08-29 Simon Fraser <simon.fraser@apple.com>
Avoid running the outline painting phase if no renderers have outlines
https://bugs.webkit.org/show_bug.cgi?id=201284
Reviewed by Said Abou-Hallawa.
The outline painting phase (paintOutlineForFragments()) can take up to 20% of the painting time
even when there are no outlines. Keep track of which renderers have outlines, and only run the phase
when printing (for hasOutlineAnnotation()) or if there are any renderers with outlines.
* rendering/RenderElement.cpp:
(WebCore::RenderElement::styleWillChange):
(WebCore::RenderElement::styleDidChange):
(WebCore::RenderElement::willBeDestroyed):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintLayerContents):
* rendering/RenderView.h:
2019-08-29 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Use the "complicated-cases" category for computing the TFC root's height
https://bugs.webkit.org/show_bug.cgi?id=201230
<rdar://problem/54806131>
Reviewed by Antti Koivisto.
This might change in the future but for now let's use the "complicated cases" when we need to compute the TFC's height and vertical margin.
This is very BFC specific since (block)TFC is always parented in a BFC.
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
2019-08-29 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] The table wrapper box is a block level box
https://bugs.webkit.org/show_bug.cgi?id=201229
<rdar://problem/54805515>
Reviewed by Antti Koivisto.
This is the anonymous box that we inject as the parent of the table caption/actual table box.
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::complicatedCases):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForAncestors const):
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::establishesBlockFormattingContext const):
(WebCore::Layout::Box::isFloatAvoider const):
(WebCore::Layout::Box::isBlockLevelBox const):
2019-08-29 Youenn Fablet <youenn@apple.com>
Skip fetch event dispatching if no fetch event handler is added at script evaluation time
https://bugs.webkit.org/show_bug.cgi?id=201174
Reviewed by Chris Dumez.
At end of worker script evaluation, store whether a fetch event handler is registered.
Send it back to the SWServer that will store it in the corresponding SWServerWorker.
Add support for soft update directly from the registration.
This will trigger a soft-update from the worker context itself.
In theory, this should be started by the job queue but we do not have a way yet to implement this as per spec.
Test: http/wpt/service-workers/skipFetchEvent.https.html
* workers/DedicatedWorkerThread.h:
(WebCore::DedicatedWorkerThread::start):
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):
* workers/WorkerThread.cpp:
(WebCore::WorkerThread::workerThread):
* workers/WorkerThread.h:
(WebCore::WorkerThread::finishedEvaluatingScript):
* workers/service/context/SWContextManager.cpp:
(WebCore::SWContextManager::registerServiceWorkerThreadForInstall):
(WebCore::SWContextManager::startedServiceWorker):
(WebCore::SWContextManager::softUpdate):
* workers/service/context/SWContextManager.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::postFetchTask):
(WebCore::ServiceWorkerThread::softUpdate):
(WebCore::ServiceWorkerThread::finishedEvaluatingScript):
(WebCore::ServiceWorkerThread::start):
* workers/service/context/ServiceWorkerThread.h:
(WebCore::ServiceWorkerThread::doesHandleFetch const):
* workers/service/server/SWServer.h:
* workers/service/server/SWServerRegistration.cpp:
(WebCore::SWServerRegistration::shouldSoftUpdate const):
(WebCore::SWServerRegistration::softUpdate):
* workers/service/server/SWServerRegistration.h:
(WebCore::SWServerRegistration::isStale const):
* workers/service/server/SWServerToContextConnection.cpp:
(WebCore::SWServerToContextConnection::generateConnectionIdentifier):
(WebCore::SWServerToContextConnection::SWServerToContextConnection):
(WebCore::SWServerToContextConnection::scriptContextStarted):
* workers/service/server/SWServerToContextConnection.h:
* workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::scriptContextStarted):
(WebCore::SWServerWorker::setState):
* workers/service/server/SWServerWorker.h:
(WebCore::SWServerWorker::shouldSkipFetchEvent const):
2019-08-29 Keith Rollin <krollin@apple.com>
Remove support for macOS < 10.13 (part 3)
https://bugs.webkit.org/show_bug.cgi?id=201224
<rdar://problem/54795934>
Reviewed by Darin Adler.
Remove symbols in WebKitTargetConditionals.xcconfig related to macOS
10.13, including WK_MACOS_1013 and WK_MACOS_BEFORE_1013, and suffixes
like _MACOS_SINCE_1013.
No new tests -- no new or changed functionality.
* Configurations/WebKitTargetConditionals.xcconfig:
2019-08-29 Charlie Turner <cturner@igalia.com>
[GStreamer] Do not use makeWeakPtr from streaming thread.
https://bugs.webkit.org/show_bug.cgi?id=201220
Reviewed by Xabier Rodriguez-Calvar.
Test: imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.https.html
Recently some asserts were added that you can't create WeakPtr's
from streaming threads when the factory is created on the
main-thread. The fix is to eagerly create the WeakPtr at player
initialization time, rather than lazily when the streaming thread
first asks for it.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
2019-08-29 Rob Buis <rbuis@igalia.com>
Address some MathML FIXMEs
https://bugs.webkit.org/show_bug.cgi?id=201293
Reviewed by Frédéric Wang.
Add element tag checks for data, time and dialog.
* mathml/MathMLOperatorDictionary.h:
* mathml/MathMLPresentationElement.cpp:
(WebCore::MathMLPresentationElement::isPhrasingContent):
(WebCore::MathMLPresentationElement::isFlowContent):
2019-08-29 Zan Dobersek <zdobersek@igalia.com>
[Nicosia] Nicosia::Animation is missing the copy assignment operator
https://bugs.webkit.org/show_bug.cgi?id=201298
Reviewed by Carlos Garcia Campos.
Along with the copy constructor, the Nicosia::Animation class also
requires the copy assignment operator that's invoked whenever
the containing Nicosia::Animations object is copied across different
state objects.
Much like the constructor, the copy assignment should clone the
TimingFunction object to make it safely reusable in other contexts.
This fixes the assertion failures in debug configurations over the
improper cross-thread RefCounted usage.
* platform/graphics/nicosia/NicosiaAnimation.cpp:
(Nicosia::Animation::operator=):
* platform/graphics/nicosia/NicosiaAnimation.h:
Explicitly default the move constructor and assignment operator,
providing the whole quartet.
2019-08-29 Rob Buis <rbuis@igalia.com>
https://bugs.webkit.org/show_bug.cgi?id=200917
Do not call addHTTPOriginIfNeeded for window.open
window.open() always uses GET requests and addHTTPOriginIfNeeded
has no effect for GET, so do not call it.
Reviewed by Frédéric Wang.
* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
2019-08-29 Carlos Garcia Campos <cgarcia@igalia.com>
WebSockets: first-party for cookies not set in handshake request when using platform APIs
https://bugs.webkit.org/show_bug.cgi?id=200165
Reviewed by Youenn Fablet.
* Modules/websockets/ThreadableWebSocketChannel.cpp:
(WebCore::ThreadableWebSocketChannel::webSocketConnectRequest):
2019-08-29 Rob Buis <rbuis@igalia.com>
Implement HTMLOrForeignElement
https://bugs.webkit.org/show_bug.cgi?id=201219
Reviewed by Frédéric Wang.
Add FIXME for updating the spec link.
* html/HTMLOrForeignElement.idl:
2019-08-28 Zan Dobersek <zdobersek@igalia.com>
[Nicosia] Implement layer representation retain, release mechanics
https://bugs.webkit.org/show_bug.cgi?id=201133
Reviewed by Carlos Garcia Campos.
* page/scrolling/nicosia/ScrollingStateNodeNicosia.cpp:
(WebCore::LayerRepresentation::retainPlatformLayer):
Type-cast the layer object to the reference-counted
Nicosia::PlatformLayer type and reference that object.
(WebCore::LayerRepresentation::releasePlatformLayer):
Ditto, but dereference the object.
2019-08-28 Zan Dobersek <zdobersek@igalia.com>
[Nicosia] Add Nicosia::PlatformLayer::accessStaging() helper
https://bugs.webkit.org/show_bug.cgi?id=201132
Reviewed by Carlos Garcia Campos.
* platform/graphics/nicosia/NicosiaPlatformLayer.h:
(Nicosia::CompositionLayer::accessStaging):
Add an accessor into the staging state of the Nicosia::PlatformLayer
object. This will be needed for the application of scrolling changes
in the asynchronous scrolling system.
2019-08-28 Zan Dobersek <zdobersek@igalia.com>
[CoordGraphics] Expose Nicosia layer as the underlying CoordinatedGraphicsLayer platform layer
https://bugs.webkit.org/show_bug.cgi?id=201131
Reviewed by Carlos Garcia Campos.
Add the CoordinatedGraphicsLayer::platformLayer() override, returning
the Nicosia::CompositionLayer object as the underlying platform layer.
This will come in handy for asynchronous scrolling.
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::platformLayer const):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
2019-08-28 Zan Dobersek <zdobersek@igalia.com>
[Nicosia] Polish ScrollingCoordinator implementation
https://bugs.webkit.org/show_bug.cgi?id=201130
Reviewed by Carlos Garcia Campos.
These changes primarily mirror the Mac implementation of this class.
* page/scrolling/nicosia/ScrollingCoordinatorNicosia.cpp:
(WebCore::ScrollingCoordinatorNicosia::pageDestroyed):
Upon releasing the ThreadedScrollingTree, it should also be invalidated
on the scrolling thread.
(WebCore::ScrollingCoordinatorNicosia::commitTreeState):
Invoke willCommitTree() at the beginning of this method. Additionally
the pending-commit-count is incremented for the ThreadedScrollingTree
object.
2019-08-28 Ryosuke Niwa <rniwa@webkit.org>
Make tabIndex IDL attribute reflect its content attribute
https://bugs.webkit.org/show_bug.cgi?id=199606
<rdar://problem/52811448>
Reviewed by Chris Dumez.
This patch makes tabIndex IDL attribute no longer return 0 when the element is focusable
to match the latest HTML5 specification. Instead, the IDL attribute simply reflect the tabindex
content attribute with some elements having 0 as the default tab index (see r248784):
https://html.spec.whatwg.org/multipage/interaction.html#the-tabindex-attribute
The practical implication is that tabIndex IDL attribute on a root editable element (a.k.a.
editing host in HTML5 spec term), body element in design mode, and media elements with
media controls would start returning -1 instead of 0.
Mechanically, this is accomplished by removing the special case in Element::tabIndexForBindings
when supportsFocus returned true. The effect, if any, this patch has on each element which
overrides Element::supportsFocus is summarized as follows (indentation simplies inheritance):
HTMLAnchorElement -> No effect since defaultTabIndex returns 0.
HTMLAreaElement -> Ditto.
HTMLBodyElement -> Changes to return -1 in design mode.
HTMLElement -> Changes to return -1 on a root editable element.
HTMLFormControlElement
HTMLButtonElement -> No effect since defaultTabIndex returns 0.
HTMLFieldSetElement -> No effect since this is an override to use HTMLElement's supportsFocus.
HTMLFormControlElementWithState
HTMLKeygenElement -> No effect since defaultTabIndex returns 0.
HTMLSelectElement -> Ditto.
HTMLTextFormControlElement -> Ditto.
HTMLInputElement -> Ditto.
HTMLTextAreaElement -> Ditto.
HTMLOutputElement -> No effect since this is an override to use HTMLElement's supportsFocus.
HTMLFrameElementBase - No change. Added defaultTabIndex on HTMLIFrameElement and HTMLFrameElement
to returns 0.
HTMLImageElement - No impact since it only affects when an image is set to be editable via SPI.
HTMLMediaElement - Changes to return -1 when media controls is present.
HTMLPlugInElement - applet and embed elements change to return -1 when the plugin is available.
HTMLSummaryElement - No change. Added defaultTabIndex to return 0 when it's active to match
supportsFocus as well as the HTML5 specification.
MathMLElement - No effect since tabIndex IDL attribute does not exist in MathML.
SVGAElement - No effect since defaultTabIndex returns 0.
SVGClipPathElement - No effect since it always returns false.
SVGDefsElement - No effect since it always returns false.
Tests: fast/dom/tabindex-defaults.html
plugins/focus.html
* dom/Element.cpp:
(WebCore::Element::tabIndexForBindings const): Made the change.
* html/HTMLFrameElement.cpp:
(WebCore::HTMLFrameElement::defaultTabIndex const): Added to preserve the existing behavior.
* html/HTMLFrameElement.h:
* html/HTMLIFrameElement.cpp:
(WebCore::HTMLIFrameElement::defaultTabIndex const): Ditto.
* html/HTMLIFrameElement.h:
* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::defaultTabIndex const): Added. Always return 0 to match the spec.
* html/HTMLObjectElement.h:
* html/HTMLSummaryElement.cpp:
(WebCore::HTMLSummaryElement::defaultTabIndex const): Added. Return 0 when the this summary
is the active summary element of the details element.
* html/HTMLSummaryElement.h:
2019-08-28 Simon Fraser <simon.fraser@apple.com>
Make FillLayer::hasImage() inline
https://bugs.webkit.org/show_bug.cgi?id=201265
Reviewed by Zalan Bujtas.
FillLayer::hasImage() shows up on profiles because it's called from hot functions like
isTransparent() and hasMask(), so make a basic inline version that doens't have
to walk the list.
* rendering/style/FillLayer.cpp:
(WebCore::FillLayer::hasImageInAnyLayer const):
(WebCore::FillLayer::hasImage const): Deleted.
* rendering/style/FillLayer.h:
(WebCore::FillLayer::hasImage const):
2019-08-28 Peng Liu <peng.liu6@apple.com>
REGRESSION: String check: “realtime” Suggesting “real time”
https://bugs.webkit.org/show_bug.cgi?id=201107
<rdar://problem/46372620>
Reviewed by Jer Noble.
Update Localizable.strings.
No new test.
* en.lproj/Localizable.strings:
* platform/LocalizedStrings.cpp:
(WebCore::localizedMediaControlElementString):
2019-08-28 Simon Fraser <simon.fraser@apple.com>
PaintFrequencyTracker triggers too many calls to MonotonicTime::now() on layer painting
https://bugs.webkit.org/show_bug.cgi?id=201261
Reviewed by Zalan Bujtas.
MonotonicTime::now() shows up as expensive when painting layer-heavy content, because PaintFrequencyTracker
makes two calls per layer paint.
Halve the number of calls by storing m_lastPaintTime at the start of the paint; doing so doesn't substantially
change the behavior of the tracker.
* rendering/PaintFrequencyTracker.h:
(WebCore::PaintFrequencyTracker::begin):
(WebCore::PaintFrequencyTracker::end):
2019-08-28 Ross Kirsling <ross.kirsling@sony.com>
Unreviewed. Restabilize non-unified build.
* inspector/agents/WebConsoleAgent.h:
* loader/ResourceLoadObserver.h:
2019-08-28 Simon Fraser <simon.fraser@apple.com>
Devirtualize RenderBox::visualOverflowRect()
https://bugs.webkit.org/show_bug.cgi?id=201231
Reviewed by Zalan Bujtas.
The only override of RenderBox::visualOverflowRect() was in RenderView, for "paintsEntireContents" views, and as
far as I can tell this is not necessary. visualOverflowRect() is hot when called from RenderLayer::localBoundingBox() --
this shows in profiles when scrolling large patch reviews, so making it non-virtual is a performance enhancement.
RenderLayer::localBoundingBox() can also just call visualOverflowRect(), since that returns borderBoxRect()
when there is no overflow.
* rendering/RenderBox.h:
(WebCore::RenderBox::visualOverflowRect const):
* rendering/RenderLayer.cpp:
(WebCore::performOverlapTests): Minor optimization to avoid a call to boundingBox().
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderView.cpp:
(WebCore::RenderView::visualOverflowRect const): Deleted.
* rendering/RenderView.h:
2019-08-28 Austin Eng <enga@chromium.org>
Create ANGLE EGL Context with all extensions disabled by default
https://bugs.webkit.org/show_bug.cgi?id=200900
Reviewed by Alex Christensen.
In WebGL, extensions must be explicitly requested before they are enabled.
Fixes the following WebGL conformance tests with the ANGLE backend
LayoutTests/webgl/*/conformance/extensions/ext-blend-minmax.html
LayoutTests/webgl/*/conformance/extensions/ext-frag-depth.html
LayoutTests/webgl/*/conformance/extensions/ext-shader-texture-lod.html
LayoutTests/webgl/*/conformance/extensions/ext-sRGB.html
LayoutTests/webgl/*/conformance/extensions/oes-standard-derivatives.html
LayoutTests/webgl/*/conformance/extensions/oes-texture-float.html
LayoutTests/webgl/*/conformance/extensions/webgl-compressed-texture-s3tc.html
LayoutTests/webgl/*/conformance/glsl/misc/shader-with-dfdx.frag.html
LayoutTests/webgl/*/conformance/glsl/variables/glsl-built-ins.html
LayoutTests/webgl/*/conformance/textures/misc/texture-npot-video.html
LayoutTests/webgl/*/conformance/textures/misc/texture-npot.html
* html/canvas/ANGLEInstancedArrays.cpp:
(WebCore::ANGLEInstancedArrays::ANGLEInstancedArrays):
(WebCore::ANGLEInstancedArrays::supported):
* html/canvas/WebGLCompressedTextureASTC.cpp:
(WebCore::WebGLCompressedTextureASTC::WebGLCompressedTextureASTC):
* html/canvas/WebGLCompressedTextureATC.cpp:
(WebCore::WebGLCompressedTextureATC::WebGLCompressedTextureATC):
* html/canvas/WebGLCompressedTexturePVRTC.cpp:
(WebCore::WebGLCompressedTexturePVRTC::WebGLCompressedTexturePVRTC):
* html/canvas/WebGLCompressedTextureS3TC.cpp:
(WebCore::WebGLCompressedTextureS3TC::WebGLCompressedTextureS3TC):
(WebCore::WebGLCompressedTextureS3TC::supported):
* html/canvas/WebGLDebugShaders.cpp:
(WebCore::WebGLDebugShaders::WebGLDebugShaders):
* html/canvas/WebGLDepthTexture.cpp:
(WebCore::WebGLDepthTexture::WebGLDepthTexture):
* html/canvas/WebGLDrawBuffers.cpp:
(WebCore::WebGLDrawBuffers::WebGLDrawBuffers):
(WebCore::WebGLDrawBuffers::supported):
* platform/graphics/angle/GraphicsContext3DANGLE.cpp:
(WebCore::GraphicsContext3D::reshapeFBOs):
(WebCore::GraphicsContext3D::validateDepthStencil):
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::GraphicsContext3D::GraphicsContext3D):
2019-08-28 Said Abou-Hallawa <sabouhallawa@apple.com>
All image drawing functions should take an argument of type ImagePaintingOptions
https://bugs.webkit.org/show_bug.cgi?id=201059
Reviewed by Simon Fraser.
In this patch:
-- All the image drawing function will take an argument of type
ImagePaintingOptions instead of passing individual options.
-- ImagePaintingOptions is made like a set of options. It can be
initialized with any number of options and the order does not matter
-- Image::originalSize() is deleted because it returns size() and none
of the Image concrete classes overrides this implementation.
* Headers.cmake:
* WebCore.xcodeproj/project.pbxproj:
* html/ImageBitmap.cpp:
(WebCore::ImageBitmap::createPromise):
(WebCore::ImageBitmap::createFromBuffer):
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::drawImage):
(WebCore::drawImageToContext):
(WebCore::CanvasRenderingContext2DBase::fullCanvasCompositedDrawImage):
* platform/graphics/BitmapImage.cpp:
(WebCore::BitmapImage::draw):
(WebCore::BitmapImage::drawPattern):
* platform/graphics/BitmapImage.h:
* platform/graphics/CrossfadeGeneratedImage.cpp:
(WebCore::drawCrossfadeSubimage):
(WebCore::CrossfadeGeneratedImage::draw):
(WebCore::CrossfadeGeneratedImage::drawPattern):
* platform/graphics/CrossfadeGeneratedImage.h:
* platform/graphics/CustomPaintImage.cpp:
(WebCore::CustomPaintImage::draw):
(WebCore::CustomPaintImage::drawPattern):
* platform/graphics/CustomPaintImage.h:
* platform/graphics/GeneratedImage.h:
(WebCore::GeneratedImage::draw):
(WebCore::GeneratedImage::drawPattern):
* platform/graphics/GradientImage.cpp:
(WebCore::GradientImage::draw):
(WebCore::GradientImage::drawPattern):
* platform/graphics/GradientImage.h:
* platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::drawImage):
(WebCore::GraphicsContext::drawTiledImage):
(WebCore::GraphicsContext::drawImageBuffer):
(WebCore::GraphicsContext::drawConsumingImageBuffer):
* platform/graphics/GraphicsContext.h:
(WebCore::GraphicsContext::drawNativeImage):
(WebCore::GraphicsContext::drawImage):
(WebCore::GraphicsContext::drawTiledImage):
(WebCore::GraphicsContext::drawImageBuffer):
(WebCore::GraphicsContext::drawPattern):
(WebCore::GraphicsContext::drawConsumingImageBuffer):
(WebCore::ImagePaintingOptions::ImagePaintingOptions): Deleted.
(WebCore::ImagePaintingOptions::usesDefaultInterpolation const): Deleted.
* platform/graphics/GraphicsContextImpl.cpp:
(WebCore::GraphicsContextImpl::drawImageImpl):
(WebCore::GraphicsContextImpl::drawTiledImageImpl):
* platform/graphics/GraphicsContextImpl.h:
* platform/graphics/Image.cpp:
(WebCore::Image::drawPattern):
(WebCore::Image::drawTiled):
(WebCore::Image::computeIntrinsicDimensions):
* platform/graphics/Image.h:
(WebCore::Image::drawPattern):
(WebCore::Image::draw):
(WebCore::Image::drawTiled):
(WebCore::Image::originalSize const): Deleted.
* platform/graphics/ImageBuffer.h:
(WebCore::ImageBuffer::draw):
(WebCore::ImageBuffer::drawPattern):
(WebCore::ImageBuffer::drawConsuming):
* platform/graphics/ImagePaintingOptions.h: Added.
(WebCore::ImagePaintingOptions::ImagePaintingOptions):
(WebCore::ImagePaintingOptions::compositeOperator const):
(WebCore::ImagePaintingOptions::blendMode const):
(WebCore::ImagePaintingOptions::decodingMode const):
(WebCore::ImagePaintingOptions::orientation const):
(WebCore::ImagePaintingOptions::interpolationQuality const):
(WebCore::ImagePaintingOptions::setOption):
* platform/graphics/NamedImageGeneratedImage.cpp:
(WebCore::NamedImageGeneratedImage::draw):
(WebCore::NamedImageGeneratedImage::drawPattern):
* platform/graphics/NamedImageGeneratedImage.h:
* platform/graphics/NativeImage.h:
* platform/graphics/cairo/CairoOperations.cpp:
(WebCore::Cairo::drawShadowLayerBuffer):
(WebCore::Cairo::drawShadowImage):
(WebCore::Cairo::drawNativeImage):
(WebCore::Cairo::drawPattern):
* platform/graphics/cairo/CairoOperations.h:
* platform/graphics/cairo/GraphicsContextCairo.cpp:
(WebCore::GraphicsContext::drawNativeImage):
(WebCore::GraphicsContext::drawPattern):
* platform/graphics/cairo/GraphicsContextImplCairo.cpp:
(WebCore::GraphicsContextImplCairo::drawNativeImage):
(WebCore::GraphicsContextImplCairo::drawPattern):
* platform/graphics/cairo/GraphicsContextImplCairo.h:
* platform/graphics/cairo/ImageBufferCairo.cpp:
(WebCore::ImageBuffer::drawConsuming):
(WebCore::ImageBuffer::draw):
(WebCore::ImageBuffer::drawPattern):
* platform/graphics/cairo/NativeImageCairo.cpp:
(WebCore::drawNativeImage):
* platform/graphics/cg/GraphicsContext3DCG.cpp:
(WebCore::GraphicsContext3D::paintToCanvas):
* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::GraphicsContext::drawNativeImage):
(WebCore::GraphicsContext::drawPattern):
* platform/graphics/cg/ImageBufferCG.cpp:
(WebCore::ImageBuffer::drawConsuming):
(WebCore::ImageBuffer::draw):
(WebCore::ImageBuffer::drawPattern):
* platform/graphics/cg/NativeImageCG.cpp:
(WebCore::drawNativeImage):
* platform/graphics/cg/PDFDocumentImage.cpp:
(WebCore::PDFDocumentImage::draw):
* platform/graphics/cg/PDFDocumentImage.h:
* platform/graphics/displaylists/DisplayListItems.cpp:
(WebCore::DisplayList::DrawNativeImage::DrawNativeImage):
(WebCore::DisplayList::DrawNativeImage::apply const):
(WebCore::DisplayList::DrawPattern::DrawPattern):
(WebCore::DisplayList::DrawPattern::apply const):
* platform/graphics/displaylists/DisplayListItems.h:
(WebCore::DisplayList::DrawNativeImage::create):
(WebCore::DisplayList::DrawPattern::create):
(WebCore::DisplayList::DrawPattern::DrawPattern):
* platform/graphics/displaylists/DisplayListRecorder.cpp:
(WebCore::DisplayList::Recorder::drawNativeImage):
(WebCore::DisplayList::Recorder::drawPattern):
* platform/graphics/displaylists/DisplayListRecorder.h:
* platform/graphics/filters/FEBlend.cpp:
(WebCore::FEBlend::platformApplySoftware):
* platform/graphics/filters/FEComposite.cpp:
(WebCore::FEComposite::platformApplySoftware):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::paint):
* platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:
(Nicosia::CairoOperationRecorder::drawNativeImage):
(Nicosia::CairoOperationRecorder::drawPattern):
* platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.h:
* platform/graphics/win/Direct2DOperations.cpp:
(WebCore::Direct2D::drawNativeImage):
(WebCore::Direct2D::drawPattern):
* platform/graphics/win/Direct2DOperations.h:
* platform/graphics/win/GraphicsContextImplDirect2D.h:
* platform/graphics/win/ImageCGWin.cpp:
(WebCore::BitmapImage::getHBITMAPOfSize):
(WebCore::BitmapImage::drawFrameMatchingSourceSize):
* platform/graphics/win/ImageCairoWin.cpp:
(WebCore::BitmapImage::getHBITMAPOfSize):
(WebCore::BitmapImage::drawFrameMatchingSourceSize):
* platform/graphics/win/NativeImageDirect2D.cpp:
(WebCore::drawNativeImage):
* platform/ios/DragImageIOS.mm:
(WebCore::createDragImageFromImage):
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::paintFillLayerExtended):
* rendering/RenderEmbeddedObject.cpp:
(WebCore::RenderEmbeddedObject::paintSnapshotImage):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::paintReplaced):
(WebCore::RenderImage::paintIntoRect):
* rendering/RenderSnapshottedPlugIn.cpp:
(WebCore::RenderSnapshottedPlugIn::paintSnapshot):
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::paintSnapshottedPluginOverlay):
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::drawForContainer):
(WebCore::SVGImage::nativeImageForCurrentFrame):
(WebCore::SVGImage::nativeImage):
(WebCore::SVGImage::drawPatternForContainer):
(WebCore::SVGImage::draw):
* svg/graphics/SVGImage.h:
* svg/graphics/SVGImageForContainer.cpp:
(WebCore::SVGImageForContainer::draw):
(WebCore::SVGImageForContainer::drawPattern):
* svg/graphics/SVGImageForContainer.h:
2019-08-28 Said Abou-Hallawa <sabouhallawa@apple.com>
XLinkNames namespace is required before the 'href' attribute of SVG animate elements
https://bugs.webkit.org/show_bug.cgi?id=201227
Reviewed by Ryosuke Niwa.
To get the animation target element, get the value of the "href" attribute
or the "xlink:href" attribute.
Tests: svg/custom/href-svg-namespace-animate-target.svg
* svg/animation/SVGSMILElement.cpp:
(WebCore::SVGSMILElement::buildPendingResource):
2019-08-28 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r249209.
Broke 19 webgpu/ tests
Reverted changeset:
"[WHLSL] Inline typedef'd types during Metal code generation
to simplify generated code while also making it easier to
read"
https://bugs.webkit.org/show_bug.cgi?id=201185
https://trac.webkit.org/changeset/249209
2019-08-28 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Matrices need to have correct alignment
https://bugs.webkit.org/show_bug.cgi?id=201212
Reviewed by Robin Morisset.
Matrices have particular alignment requirements and size requirements.
Type | Alignment | Size
---------------------------
float2x2 | 8 | 16
float2x3 | 16 | 32
float2x4 | 16 | 32
float3x2 | 8 | 24
float3x3 | 16 | 48
float3x4 | 16 | 48
float4x2 | 8 | 32
float4x3 | 16 | 64
float4x4 | 16 | 64
These are important because they may be a member of a struct, and we don't want to misplace
every successive item in the struct.
Test: webgpu/whlsl/matrix-alignment.html
* Modules/webgpu/WHLSL/Metal/WHLSLNativeTypeWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeType):
2019-08-28 Rob Buis <rbuis@igalia.com>
Implement HTMLOrForeignElement
https://bugs.webkit.org/show_bug.cgi?id=201219
Reviewed by Ryosuke Niwa.
Add the HTMLOrForeignElement [1] interface to share properties
and methods between HTML, SVG and MathML.
[1] https://github.com/mathml-refresh/mathml/issues/83
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/StaticRange.h:
* html/HTMLElement.idl:
* html/HTMLOrForeignElement.idl: Added.
* svg/SVGElement.idl:
2019-08-28 Sam Weinig <weinig@apple.com>
[WHLSL] Inline typedef'd types during Metal code generation to simplify generated code while also making it easier to read
https://bugs.webkit.org/show_bug.cgi?id=201185
Reviewed by Saam Barati.
The current Metal code generation generates many unnecessary typedefs during TypeNamer::emitMetalTypeDefinitions
such as 'typedef float2 type19;' that can be removed by just using resolved type whereever the typedef would have
been used. The only types that actually need to be predefined are the types that declare a new struct or enum, which
means we can stop emitting for AST::TypeReference, AST::Pointer, AST::Array, and AST::TypeDefinition. Instead, the
relevent mangledNameForType constructs the computed name on the fly.
This is a 25% speedup in the metal code generation phase.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
Switch to using auto rather than Mangled*Name when it is obvious and the actual return type
may need to become more complicated (e.g. MangledOrNativeTypeName).
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.h:
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::TypeNamer::visit):
There is no need to generate typenames for AST::TypeDefinitions if they are never used.
(WebCore::WHLSL::Metal::TypeNamer::generateUniquedTypeName):
The only UnnamedType that needs a generated typename now is AST::ArrayReferenceType, which emits a struct interface.
(WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):
Stop generating type definitions for AST::TypeReference, AST::Pointer, AST::Array.
(WebCore::WHLSL::Metal::TypeNamer::emitNamedTypeDefinition):
Stop generating type definitions for AST::TypeDefinition.
(WebCore::WHLSL::Metal::TypeNamer::emitMetalTypeDefinitions):
Update for rename from m_unnamedTypeMapping to m_arrayReferenceTypeMapping.
(WebCore::WHLSL::Metal::TypeNamer::mangledNameForType):
Look into the types and generate a concrete type name when necessary. Lazily cache the constructed
names for AST::ArrayType and AST::Pointer.
2019-08-28 Keith Rollin <krollin@apple.com>
Remove support for macOS < 10.13 (part 2)
https://bugs.webkit.org/show_bug.cgi?id=201197
<rdar://problem/54759985>
Reviewed by Darin Adler.
Update conditionals that reference WK_MACOS_1013 and suffixes like
_MACOS_SINCE_1013, assuming that we're always building on 10.13 or
later and that these conditionals are always True or False.
See Bug 200694 for earlier changes in this area.
No new tests -- no new or changed functionality.
* Configurations/FeatureDefines.xcconfig:
2019-08-28 Chris Dumez <cdumez@apple.com>
geolocation.watchPosition() / getCurrentPosition() should return PERMISSION_DENIED when context is not secure
https://bugs.webkit.org/show_bug.cgi?id=201221
Reviewed by Ryosuke Niwa.
geolocation.watchPosition() / getCurrentPosition() should return PERMISSION_DENIED when context is not secure,
not POSITION_UNAVAILABLE. Both Gecko and Blink agree on PERMISSION_DENIED.
No new tests, updated existing tests.
* Modules/geolocation/Geolocation.cpp:
(WebCore::Geolocation::startRequest):
2019-08-28 Alicia Boya García <aboya@igalia.com>
[MSE][GStreamer] WebKitMediaSrc rework
https://bugs.webkit.org/show_bug.cgi?id=199719
Reviewed by Xabier Rodriguez-Calvar.
This patch reworks the WebKitMediaSrc element and many of the player
private methods that interacted with it.
In comparison with the old WebKitMediaSrc, in the new one seeks have
been massively simplified.
The new WebKitMediaSrc no longer relies on a bin or appsrc, having
greater control over its operation. This made it comparatively much
easier to implement features such as seek before playback or
single-stream flushing.
stream-collection events are emitted from the WebKitMediaSrc to reuse
the track handling in MediaPlayerPrivateGStreamer for playbin3, which
is now used for MSE pipelines.
Additional tests have been added to check some assumptions, and some
bugs that have surfaced with the changes have been fixed but no new
features (like multi-track support) are implemented in this patch.
One instance of these bugs is `resized` events, which were previously
being emitted when frames with different resolutions where appended.
This is a wrong behavior that has not been preserved in the rework, as
resize events should be emitted when the frames are shown, not
just appended.
There are subtler bugfixes, such as ignoring PTS-less frames in
AppendPipeline::appsinkNewSample(). These frames are problematic for
MSE, yet they were somehow passing through the pipelines. Since
WebKitMediaSrc is stricter with assertions, these have to be filtered.
This test gets rid of !m_mseSeekCompleted assertion failures in tests
and potentially other hard to debug bugs in the previous seek
algorithm.
This patch makes the following existing tests pass:
imported/w3c/web-platform-tests/media-source/mediasource-config-change-webm-a-bitrate.html
imported/w3c/web-platform-tests/media-source/mediasource-config-change-webm-v-framesize.html
New test: imported/w3c/web-platform-tests/media-source/mediasource-buffered-seek.html
New test: LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-video-element/video_timeupdate_on_seek.html (non-MSE related)
* Headers.cmake:
* platform/GStreamer.cmake:
* platform/graphics/gstreamer/GRefPtrGStreamer.cpp:
(WTF::adoptGRef):
(WTF::refGPtr<GstMiniObject>):
(WTF::derefGPtr<GstMiniObject>):
* platform/graphics/gstreamer/GRefPtrGStreamer.h:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::playbackPosition const):
(WebCore::MediaPlayerPrivateGStreamer::paused const):
(WebCore::MediaPlayerPrivateGStreamer::updateTracks):
(WebCore::MediaPlayerPrivateGStreamer::enableTrack):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo):
(WebCore::MediaPlayerPrivateGStreamer::sourceSetup):
(WebCore::MediaPlayerPrivateGStreamer::handleSyncMessage):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
(WebCore::MediaPlayerPrivateGStreamer::invalidateCachedPosition):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::naturalSize const):
(WebCore::MediaPlayerPrivateGStreamerBase::naturalSizeFromCaps const):
(WebCore::MediaPlayerPrivateGStreamerBase::samplesHaveDifferentNaturalSize const):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/gstreamer/MediaSampleGStreamer.cpp:
(WebCore::MediaSampleGStreamer::MediaSampleGStreamer):
* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::AppendPipeline::appsinkNewSample):
(WebCore::AppendPipeline::connectDemuxerSrcPadToAppsink):
* platform/graphics/gstreamer/mse/AppendPipeline.h:
(WebCore::AppendPipeline::appsinkCaps):
(WebCore::AppendPipeline::streamType):
(WebCore::AppendPipeline::demuxerSrcPadCaps):
* platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
(WebCore::MediaPlayerPrivateGStreamerMSE::~MediaPlayerPrivateGStreamerMSE):
(WebCore::MediaPlayerPrivateGStreamerMSE::load):
(WebCore::MediaPlayerPrivateGStreamerMSE::play):
(WebCore::MediaPlayerPrivateGStreamerMSE::pause):
(WebCore::MediaPlayerPrivateGStreamerMSE::seek):
(WebCore::MediaPlayerPrivateGStreamerMSE::seekCompleted):
(WebCore::MediaPlayerPrivateGStreamerMSE::setReadyState):
(WebCore::MediaPlayerPrivateGStreamerMSE::sourceSetup):
(WebCore::MediaPlayerPrivateGStreamerMSE::updateStates):
(WebCore::MediaPlayerPrivateGStreamerMSE::didEnd):
(WebCore::MediaPlayerPrivateGStreamerMSE::unblockDurationChanges):
(WebCore::MediaPlayerPrivateGStreamerMSE::durationChanged):
(WebCore::MediaPlayerPrivateGStreamerMSE::trackDetected):
* platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:
* platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp:
(WebCore::MediaSourceClientGStreamerMSE::addSourceBuffer):
(WebCore::MediaSourceClientGStreamerMSE::removedFromMediaSource):
(WebCore::MediaSourceClientGStreamerMSE::flush):
(WebCore::MediaSourceClientGStreamerMSE::enqueueSample):
(WebCore::MediaSourceClientGStreamerMSE::isReadyForMoreSamples):
(WebCore::MediaSourceClientGStreamerMSE::notifyClientWhenReadyForMoreSamples):
(WebCore::MediaSourceClientGStreamerMSE::allSamplesInTrackEnqueued):
* platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.h:
* platform/graphics/gstreamer/mse/MediaSourceGStreamer.cpp:
(WebCore::MediaSourceGStreamer::markEndOfStream):
(WebCore::MediaSourceGStreamer::unmarkEndOfStream):
(WebCore::MediaSourceGStreamer::waitForSeekCompleted):
* platform/graphics/gstreamer/mse/MediaSourceGStreamer.h:
* platform/graphics/gstreamer/mse/PlaybackPipeline.cpp: Removed.
* platform/graphics/gstreamer/mse/PlaybackPipeline.h: Removed.
* platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:
(WebCore::SourceBufferPrivateGStreamer::enqueueSample):
(WebCore::SourceBufferPrivateGStreamer::isReadyForMoreSamples):
(WebCore::SourceBufferPrivateGStreamer::notifyClientWhenReadyForMoreSamples):
* platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.h:
* platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
(WebKitMediaSrcPrivate::streamByName):
(Stream::Stream):
(Stream::StreamingMembers::StreamingMembers):
(Stream::StreamingMembers::durationEnqueued const):
(findPipeline):
(webkit_media_src_class_init):
(webkit_media_src_init):
(webKitMediaSrcFinalize):
(debugProbe):
(collectionPlusStream):
(collectionMinusStream):
(gstStreamType):
(webKitMediaSrcAddStream):
(webKitMediaSrcRemoveStream):
(webKitMediaSrcActivateMode):
(webKitMediaSrcPadLinked):
(webKitMediaSrcStreamNotifyLowWaterLevel):
(webKitMediaSrcLoop):
(webKitMediaSrcEnqueueObject):
(webKitMediaSrcEnqueueSample):
(webKitMediaSrcEnqueueEvent):
(webKitMediaSrcEndOfStream):
(webKitMediaSrcIsReadyForMoreSamples):
(webKitMediaSrcNotifyWhenReadyForMoreSamples):
(webKitMediaSrcChangeState):
(webKitMediaSrcStreamFlushStart):
(webKitMediaSrcStreamFlushStop):
(webKitMediaSrcFlush):
(webKitMediaSrcSeek):
(countStreamsOfType):
(webKitMediaSrcGetProperty):
(webKitMediaSrcUriGetType):
(webKitMediaSrcGetProtocols):
(webKitMediaSrcGetUri):
(webKitMediaSrcSetUri):
(webKitMediaSrcUriHandlerInit):
* platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.h:
* platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamerPrivate.h: Removed.
2019-08-28 Simon Fraser <simon.fraser@apple.com>
Have RenderSVGBlock compute visual overflow just like everyone else
https://bugs.webkit.org/show_bug.cgi?id=201211
Reviewed by Zalan Bujtas.
RenderSVGBlock overrode visualOverflowRect() just to account for text shadow. This prevents callers
optimizing calls to visualOverflowRect(), so instead have RenderSVGBlock implement computeOverflow()
and call addVisualOverflow().
* rendering/svg/RenderSVGBlock.cpp:
(WebCore::RenderSVGBlock::computeOverflow):
(WebCore::RenderSVGBlock::visualOverflowRect const): Deleted.
* rendering/svg/RenderSVGBlock.h:
2019-08-28 Ryosuke Niwa <rniwa@webkit.org>
REGRESSION (r248807): Objects stored in ElementRareData are leaked
https://bugs.webkit.org/show_bug.cgi?id=200954
Reviewed by Antti Koivisto.
Use a custom deleter in std::unique_ptr to call the correct destructor instead of making
NodeRareData's destructor virtual. Added NodeRareData::isElementRareData to differentiate
ElementRareData and NodeRareData by borrowing 1 bit from the frame count.
No new tests since there should be no behavioral change.
* dom/ElementRareData.h:
(WebCore::ElementRareData::ElementRareData):
* dom/Node.cpp:
(WebCore::Node::materializeRareData): Call the constructors of unique_ptr directly since
make_unique does not take a custom deleter. We can't add the support to makeUnique either
without making it three arguments since we need to cast ElementRareData to NodeRareData
in addition to specifying a custom deleter (normal casting wouldn't work due to
the presence of a custom deleter).
(WebCore::Node::NodeRareDataDeleter::operator() const): Added.
* dom/Node.h:
(WebCore::Node::NodeRareDataDeleter): Added.
* dom/NodeRareData.cpp:
* dom/NodeRareData.h:
(WebCore::NodeRareData::NodeRareData): Makes newly added Type.
(WebCore::NodeRareData::isElementRareData): Added.
(WebCore::NodeRareData::~NodeRareData): Deleted.
2019-08-28 Claudio Saavedra <csaavedra@igalia.com>
[SOUP] Shut compilation warning
Unreviewed. RELEASE_LOG_ERROR() needs a channel.
* platform/network/soup/SoupNetworkSession.cpp:
(WebCore::SoupNetworkSession::setupHSTSEnforcer):
2019-08-28 Claudio Saavedra <csaavedra@igalia.com>
[SOUP] Fix the debug build after r249192
Unreviewed build fix.
* platform/network/soup/SoupNetworkSession.cpp:
(WebCore::SoupNetworkSession::setupHSTSEnforcer):
2019-08-28 Carlos Garcia Campos <cgarcia@igalia.com>
Unable to enter text in https://eat.fi
https://bugs.webkit.org/show_bug.cgi?id=193046
Reviewed by Ryosuke Niwa.
This is because the button element inside the label is receiving the click event, which causes the form to be
submitted. According to the spec we should do nothing in this case, because button element is considered to be
interactive content.
"The activation behavior of a label element for events targeted at interactive content descendants of a label
element, and any descendants of those interactive content descendants, must be to do nothing."
https://html.spec.whatwg.org/#the-label-element
This patch adds HTMLElement::isInteractiveContent() according to the HTML spec:
"Interactive content is content that is specifically intended for user interaction.
a (if the href attribute is present), audio (if the controls attribute is present), button, details, embed,
iframe, img (if the usemap attribute is present), input (if the type attribute is not in the Hidden state),
label, object (if the usemap attribute is present), select, textarea, video (if the controls attribute is
present)"
https://html.spec.whatwg.org/#interactive-content-2
That's used in HTMLLabelElement::defaultEventHandler() using the helper method
isEventTargetedAtInteractiveDescendants() to decide whether to simulate a click event or do nothing.
* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::isInteractiveContent const):
* html/HTMLAnchorElement.h:
* html/HTMLButtonElement.h:
* html/HTMLDetailsElement.h:
* html/HTMLElement.h:
(WebCore::HTMLElement::isInteractiveContent const):
* html/HTMLEmbedElement.h:
* html/HTMLIFrameElement.h:
* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::isInteractiveContent const):
* html/HTMLImageElement.h:
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::isInteractiveContent const):
* html/HTMLInputElement.h:
* html/HTMLLabelElement.cpp:
(WebCore::HTMLLabelElement::isEventTargetedAtInteractiveDescendants const):
(WebCore::HTMLLabelElement::defaultEventHandler):
* html/HTMLLabelElement.h:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::isInteractiveContent const):
* html/HTMLMediaElement.h:
* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::isInteractiveContent const):
* html/HTMLObjectElement.h:
* html/HTMLSelectElement.h:
* html/HTMLTextAreaElement.h:
* html/HiddenInputType.h:
* html/InputType.cpp:
(WebCore::InputType::isInteractiveContent const):
* html/InputType.h:
2019-08-28 Claudio Saavedra <csaavedra@igalia.com>
[GTK][WPE] Implement HSTS for the soup network backend
https://bugs.webkit.org/show_bug.cgi?id=192074
Reviewed by Carlos Garcia Campos.
libsoup 2.67.1 introduced HSTS support via a SoupSessionFeature.
Add support to the soup network backend by adding the feature to
SoupNetworkSession and handling HSTS protocol upgrades, by
propagating the scheme change further to clients. This patch adds
the HSTS feature unconditionally, but it still possible to add
a boolean property to the web context class if desired.
Additionally, add API to the WebKitWebsiteDataManager to specify
the directory where the HSTS database is saved. If the directory
is not set or if the data manager is ephemeral, use a
non-persistent, memory only HSTS enforcer.
Implement as well the methods needed to clean-up and delete HSTS
policies from the storage and expose the feature in GTK+ MiniBrowser's
about:data.
* platform/network/soup/GUniquePtrSoup.h:
* platform/network/soup/SoupNetworkSession.cpp:
(WebCore::hstsStorageDirectory):
(WebCore::SoupNetworkSession::SoupNetworkSession):
(WebCore::SoupNetworkSession::setHSTSPersistentStorage):
(WebCore::SoupNetworkSession::setupHSTSEnforcer):
(WebCore::SoupNetworkSession::getHostNamesWithHSTSCache):
(WebCore::SoupNetworkSession::deleteHSTSCacheForHostNames):
(WebCore::SoupNetworkSession::clearHSTSCache):
* platform/network/soup/SoupNetworkSession.h:
2019-08-28 Said Abou-Hallawa <sabouhallawa@apple.com>
SVG2: Add length, item getter and item setter to all SVG lists
https://bugs.webkit.org/show_bug.cgi?id=199526
Reviewed by Simon Fraser.
-- Implement the SVG2 specs for SVG lists:
https://svgwg.org/svg2-draft/types.html#TermListInterface.
-- Match the arguments' names in the IDL files with the specs.
Tests: svg/dom/SVGLengthList-length-indexed-access.xhtml
svg/dom/SVGPathSegList-length-indexed-access.xhtml
* svg/SVGLengthList.idl:
* svg/SVGNumberList.idl:
* svg/SVGPathSegList.h:
* svg/SVGPathSegList.idl:
* svg/SVGPointList.idl:
* svg/SVGStringList.idl:
* svg/SVGTransformList.idl:
* svg/properties/SVGList.h:
(WebCore::SVGList::length const):
(WebCore::SVGList::setItem):
2019-08-27 John Wilander <wilander@apple.com> and Fujii Hironori <Hironori.Fujii@sony.com>
Make FrameLoader::open() set outgoing referrer properly
https://bugs.webkit.org/show_bug.cgi?id=167050
<rdar://problem/27972404>
Reviewed by Youenn Fablet.
In debug builds, an assertion failed in WebCore::SecurityPolicy::generateReferrerHeader:
ASSERTION FAILED: referrer == URL(URL(), referrer).strippedForUseAsReferrer()
In release builds, cached pages with a URL fragment sent its URL fragment in the referrer.
m_outgoingReferrer mistakenly had a URL fragment.
Test: http/tests/navigation/page-cache-fragment-referrer.html
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::open): Set m_outgoingReferrer by using
FrameLoader::setOutgoingReferrer to remove URL fragments.
2019-08-27 Said Abou-Hallawa <sabouhallawa@apple.com>
Unreviewed. Build fix after r249175.
Fix the condition which generates the declaration of vm in
GenerateGetOwnPropertySlotByIndex.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateGetOwnPropertySlotByIndex):
2019-08-27 Justin Fan <justin_fan@apple.com>
[WebGPU] Implement GPUErrors for and relax GPUBuffer validation rules
https://bugs.webkit.org/show_bug.cgi?id=200852
Reviewed by Dean Jackson.
Fix incorrect usage validation during GPUBuffer creation.
Implement GPUError reporting for GPUBuffer creation and methods.
Test: webgpu/buffer-errors.html
* Modules/webgpu/WebGPUBuffer.cpp:
(WebCore::WebGPUBuffer::create):
(WebCore::WebGPUBuffer::WebGPUBuffer):
(WebCore::WebGPUBuffer::unmap):
(WebCore::WebGPUBuffer::destroy):
(WebCore::WebGPUBuffer::rejectOrRegisterPromiseCallback):
* Modules/webgpu/WebGPUBuffer.h: Now inherits from GPUObjectBase.
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createBuffer const):
(WebCore::WebGPUDevice::createBufferMapped const):
* platform/graphics/gpu/GPUBuffer.h: No longer inherits from GPUObjectBase.
* platform/graphics/gpu/GPUObjectBase.h:
(WebCore::GPUObjectBase::errorScopes):
(WebCore::GPUObjectBase::generateError): Deleted.
* platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
(WebCore::GPUBuffer::validateBufferUsage):
(WebCore::GPUBuffer::tryCreate): Alignment issue should be general WebGPU requirement.
(WebCore::GPUBuffer::GPUBuffer):
(WebCore::GPUBuffer::~GPUBuffer): Must do cleanup without generating errors.
(WebCore::GPUBuffer::registerMappingCallback):
(WebCore::GPUBuffer::copyStagingBufferToGPU):
(WebCore::GPUBuffer::unmap):
(WebCore::GPUBuffer::destroy):
2019-08-27 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Layout and position the cell boxes
https://bugs.webkit.org/show_bug.cgi?id=201192
<rdar://problem/54758638>
Reviewed by Antti Koivisto.
Add a very basic (and faily incomplete) table cell layout logic. This is mostly WIP.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot):
(WebCore::Layout::contentHeightForFormattingContextRoot): Deleted.
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::layout const):
(WebCore::Layout::TableFormattingContext::computedTableWidth const):
* layout/tableformatting/TableFormattingContext.h:
* layout/tableformatting/TableFormattingContextGeometry.cpp: Copied from Source/WebCore/layout/tableformatting/TableFormattingContext.h.
(WebCore::Layout::TableFormattingContext::Geometry::tableCellHeightAndMargin):
* layout/tableformatting/TableGrid.cpp:
(WebCore::Layout::TableGrid::Column::setLogicalLeft):
(WebCore::Layout::TableGrid::Column::logicalLeft const):
* layout/tableformatting/TableGrid.h:
(WebCore::Layout::TableGrid::Column::logicalRight const):
(WebCore::Layout::TableGrid::Row::setLogicalTop):
(WebCore::Layout::TableGrid::Row::logicalTop const):
(WebCore::Layout::TableGrid::Row::setLogicalHeight):
(WebCore::Layout::TableGrid::Row::logicalHeight const):
(WebCore::Layout::TableGrid::Row::logicalBottom const):
2019-08-27 Mark Lam <mark.lam@apple.com>
Refactor to use VM& instead of VM* at as many places as possible.
https://bugs.webkit.org/show_bug.cgi?id=201172
Reviewed by Yusuke Suzuki.
No new tests. Covered by existing tests.
* Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp:
(WebCore::CDMSessionClearKey::update):
* Modules/plugins/QuickTimePluginReplacement.mm:
(WebCore::QuickTimePluginReplacement::ensureReplacementScriptInjected):
(WebCore::QuickTimePluginReplacement::installReplacement):
* animation/KeyframeEffect.cpp:
(WebCore::processKeyframeLikeObject):
* bindings/js/GCController.cpp:
(WebCore::GCController::dumpHeap):
* bindings/js/IDBBindingUtilities.cpp:
(WebCore::get):
(WebCore::set):
* bindings/js/JSCSSRuleListCustom.cpp:
(WebCore::JSCSSRuleListOwner::isReachableFromOpaqueRoots):
* bindings/js/JSCustomElementRegistryCustom.cpp:
(WebCore::JSCustomElementRegistry::define):
* bindings/js/JSCustomXPathNSResolver.cpp:
(WebCore::JSCustomXPathNSResolver::lookupNamespaceURI):
* bindings/js/JSDOMConvertRecord.h:
* bindings/js/JSDOMConvertStrings.h:
(WebCore::JSConverter<IDLDOMString>::convert):
(WebCore::JSConverter<IDLByteString>::convert):
(WebCore::JSConverter<IDLUSVString>::convert):
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::getOwnPropertySlotByIndex):
(WebCore::addScopedChildrenIndexes):
(WebCore::JSDOMWindow::defineOwnProperty):
(WebCore::DialogHandler::dialogCreated):
(WebCore::DialogHandler::returnValue const):
(WebCore::JSDOMWindow::setOpener):
(WebCore::JSDOMWindow::setOpenDatabase):
* bindings/js/JSDOMWindowProperties.cpp:
(WebCore::JSDOMWindowProperties::getOwnPropertySlotByIndex):
* bindings/js/JSDeprecatedCSSOMValueCustom.cpp:
(WebCore::JSDeprecatedCSSOMValueOwner::isReachableFromOpaqueRoots):
* bindings/js/JSEventListener.cpp:
(WebCore::JSEventListener::handleEvent):
* bindings/js/JSImageDataCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSLazyEventListener.cpp:
(WebCore::JSLazyEventListener::initializeJSFunction const):
* bindings/js/JSLocationCustom.cpp:
(WebCore::JSLocation::getOwnPropertySlotByIndex):
(WebCore::JSLocation::putByIndex):
* bindings/js/JSNodeListCustom.cpp:
(WebCore::JSNodeListOwner::isReachableFromOpaqueRoots):
* bindings/js/JSPluginElementFunctions.cpp:
(WebCore::pluginElementCustomGetCallData):
* bindings/js/JSRemoteDOMWindowCustom.cpp:
(WebCore::JSRemoteDOMWindow::getOwnPropertySlotByIndex):
* bindings/js/ReadableStreamDefaultController.cpp:
(WebCore::ReadableStreamDefaultController::invoke):
* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::linkAndEvaluateModuleScriptInWorld):
* bindings/js/ScriptModuleLoader.cpp:
(WebCore::ScriptModuleLoader::resolve):
(WebCore::ScriptModuleLoader::importModule):
(WebCore::ScriptModuleLoader::createImportMetaProperties):
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::CloneSerializer):
(WebCore::CloneSerializer::write):
(WebCore::CloneSerializer::serialize):
(WebCore::CloneDeserializer::CachedString::jsString):
(WebCore::CloneDeserializer::readTerminal):
(WebCore::CloneDeserializer::deserialize):
* bindings/js/WebCoreBuiltinNames.h:
(WebCore::WebCoreBuiltinNames::WebCoreBuiltinNames):
* bindings/js/WebCoreJSClientData.cpp:
(WebCore::JSVMClientData::JSVMClientData):
* bindings/js/WindowProxy.cpp:
(WebCore::WindowProxy::clearJSWindowProxiesNotMatchingDOMWindow):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateGetOwnPropertySlotByIndex):
(GenerateGetOwnPropertyNames):
(GeneratePutByIndex):
(GenerateDeletePropertyByIndex):
(GenerateDictionaryImplementationContent):
(addUnscopableProperties):
(GenerateImplementation):
(GenerateAttributeSetterBodyDefinition):
(GenerateOperationDefinition):
(GenerateSerializerDefinition):
(GenerateCallbackImplementationContent):
(GenerateConstructorHelperMethods):
* bindings/scripts/test/JS/JSInterfaceName.cpp:
(WebCore::JSInterfaceNameConstructor::initializeProperties):
* bindings/scripts/test/JS/JSMapLike.cpp:
(WebCore::JSMapLikeConstructor::initializeProperties):
* bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
(WebCore::JSReadOnlyMapLikeConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
(WebCore::JSTestActiveDOMObjectConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
(WebCore::JSTestCEReactionsConstructor::initializeProperties):
(WebCore::setJSTestCEReactionsAttributeWithCEReactionsSetter):
(WebCore::setJSTestCEReactionsReflectAttributeWithCEReactionsSetter):
(WebCore::setJSTestCEReactionsStringifierAttributeSetter):
(WebCore::setJSTestCEReactionsAttributeWithCEReactionsNotNeededSetter):
(WebCore::setJSTestCEReactionsReflectAttributeWithCEReactionsNotNeededSetter):
(WebCore::setJSTestCEReactionsStringifierAttributeNotNeededSetter):
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
(WebCore::JSTestCEReactionsStringifierConstructor::initializeProperties):
(WebCore::setJSTestCEReactionsStringifierValueSetter):
(WebCore::setJSTestCEReactionsStringifierValueWithoutReactionsSetter):
* bindings/scripts/test/JS/JSTestCallTracer.cpp:
(WebCore::JSTestCallTracerConstructor::initializeProperties):
(WebCore::setJSTestCallTracerTestAttributeInterfaceSetter):
(WebCore::setJSTestCallTracerTestAttributeSpecifiedSetter):
(WebCore::setJSTestCallTracerTestAttributeWithVariantSetter):
* bindings/scripts/test/JS/JSTestCallbackInterface.cpp:
(WebCore::convertDictionary<TestCallbackInterface::Dictionary>):
(WebCore::JSTestCallbackInterfaceConstructor::initializeProperties):
(WebCore::JSTestCallbackInterface::callbackWithNoParam):
(WebCore::JSTestCallbackInterface::callbackWithArrayParam):
(WebCore::JSTestCallbackInterface::callbackWithSerializedScriptValueParam):
(WebCore::JSTestCallbackInterface::callbackWithStringList):
(WebCore::JSTestCallbackInterface::callbackWithBoolean):
(WebCore::JSTestCallbackInterface::callbackRequiresThisToPass):
(WebCore::JSTestCallbackInterface::callbackWithAReturnValue):
(WebCore::JSTestCallbackInterface::callbackThatRethrowsExceptions):
(WebCore::JSTestCallbackInterface::callbackThatSkipsInvokeCheck):
(WebCore::JSTestCallbackInterface::callbackWithThisObject):
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
(WebCore::JSTestClassWithJSBuiltinConstructorConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestDOMJIT.cpp:
(WebCore::JSTestDOMJITConstructor::initializeProperties):
(WebCore::jsTestDOMJITPrototypeFunctionGetAttributeWithoutTypeCheck):
(WebCore::jsTestDOMJITPrototypeFunctionItemWithoutTypeCheck):
(WebCore::jsTestDOMJITPrototypeFunctionHasAttributeWithoutTypeCheck):
(WebCore::jsTestDOMJITPrototypeFunctionGetElementByIdWithoutTypeCheck):
(WebCore::jsTestDOMJITPrototypeFunctionGetElementsByNameWithoutTypeCheck):
* bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
(WebCore::JSTestEnabledBySettingConstructor::initializeProperties):
(WebCore::JSTestEnabledBySettingPrototype::finishCreation):
(WebCore::setJSTestEnabledBySettingTestSubObjEnabledBySettingConstructorSetter):
(WebCore::setJSTestEnabledBySettingEnabledBySettingAttributeSetter):
* bindings/scripts/test/JS/JSTestEnabledForContext.cpp:
(WebCore::JSTestEnabledForContextConstructor::initializeProperties):
(WebCore::setJSTestEnabledForContextTestSubObjEnabledForContextConstructorSetter):
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
(WebCore::convertDictionary<TestEventConstructor::Init>):
(WebCore::JSTestEventConstructorConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
(WebCore::JSTestEventTargetConstructor::initializeProperties):
(WebCore::JSTestEventTarget::getOwnPropertySlotByIndex):
(WebCore::JSTestEventTarget::getOwnPropertyNames):
* bindings/scripts/test/JS/JSTestException.cpp:
(WebCore::JSTestExceptionConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
(WebCore::JSTestGenerateIsReachableConstructor::initializeProperties):
(WebCore::JSTestGenerateIsReachablePrototype::finishCreation):
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
(WebCore::JSTestGlobalObjectConstructor::initializeProperties):
(WebCore::setJSTestGlobalObjectRegularAttributeSetter):
(WebCore::setJSTestGlobalObjectPublicAndPrivateAttributeSetter):
(WebCore::setJSTestGlobalObjectPublicAndPrivateConditionalAttributeSetter):
(WebCore::setJSTestGlobalObjectEnabledAtRuntimeAttributeSetter):
(WebCore::setJSTestGlobalObjectTestCEReactionsConstructorSetter):
(WebCore::setJSTestGlobalObjectTestCEReactionsStringifierConstructorSetter):
(WebCore::setJSTestGlobalObjectTestCallTracerConstructorSetter):
(WebCore::setJSTestGlobalObjectTestCallbackInterfaceConstructorSetter):
(WebCore::setJSTestGlobalObjectTestClassWithJSBuiltinConstructorConstructorSetter):
(WebCore::setJSTestGlobalObjectTestDOMJITConstructorSetter):
(WebCore::setJSTestGlobalObjectTestDomainSecurityConstructorSetter):
(WebCore::setJSTestGlobalObjectTestEnabledBySettingConstructorSetter):
(WebCore::setJSTestGlobalObjectTestEnabledForContextConstructorSetter):
(WebCore::setJSTestGlobalObjectTestEventConstructorConstructorSetter):
(WebCore::setJSTestGlobalObjectTestEventTargetConstructorSetter):
(WebCore::setJSTestGlobalObjectTestExceptionConstructorSetter):
(WebCore::setJSTestGlobalObjectTestGenerateIsReachableConstructorSetter):
(WebCore::setJSTestGlobalObjectTestGlobalObjectConstructorSetter):
(WebCore::setJSTestGlobalObjectTestIndexedSetterNoIdentifierConstructorSetter):
(WebCore::setJSTestGlobalObjectTestIndexedSetterThrowingExceptionConstructorSetter):
(WebCore::setJSTestGlobalObjectTestIndexedSetterWithIdentifierConstructorSetter):
(WebCore::setJSTestGlobalObjectTestInterfaceConstructorSetter):
(WebCore::setJSTestGlobalObjectTestInterfaceLeadingUnderscoreConstructorSetter):
(WebCore::setJSTestGlobalObjectTestIterableConstructorSetter):
(WebCore::setJSTestGlobalObjectTestJSBuiltinConstructorConstructorSetter):
(WebCore::setJSTestGlobalObjectTestMapLikeConstructorSetter):
(WebCore::setJSTestGlobalObjectTestMediaQueryListListenerConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedAndIndexedSetterNoIdentifierConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedAndIndexedSetterThrowingExceptionConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedAndIndexedSetterWithIdentifierConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedConstructorConstructorSetter):
(WebCore::setJSTestGlobalObjectAudioConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedDeleterNoIdentifierConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedDeleterThrowingExceptionConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedDeleterWithIdentifierConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedDeleterWithIndexedGetterConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedGetterCallWithConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedGetterNoIdentifierConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedGetterWithIdentifierConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedSetterNoIdentifierConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedSetterThrowingExceptionConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedSetterWithIdentifierConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedSetterWithIndexedGetterConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedSetterWithIndexedGetterAndSetterConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedSetterWithOverrideBuiltinsConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedSetterWithUnforgablePropertiesConstructorSetter):
(WebCore::setJSTestGlobalObjectTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructorSetter):
(WebCore::setJSTestGlobalObjectTestOverloadedConstructorsConstructorSetter):
(WebCore::setJSTestGlobalObjectTestOverloadedConstructorsWithSequenceConstructorSetter):
(WebCore::setJSTestGlobalObjectTestOverrideBuiltinsConstructorSetter):
(WebCore::setJSTestGlobalObjectTestPluginInterfaceConstructorSetter):
(WebCore::setJSTestGlobalObjectTestReadOnlyMapLikeConstructorSetter):
(WebCore::setJSTestGlobalObjectTestReportExtraMemoryCostConstructorSetter):
(WebCore::setJSTestGlobalObjectTestSerializationConstructorSetter):
(WebCore::setJSTestGlobalObjectTestSerializationIndirectInheritanceConstructorSetter):
(WebCore::setJSTestGlobalObjectTestSerializationInheritConstructorSetter):
(WebCore::setJSTestGlobalObjectTestSerializationInheritFinalConstructorSetter):
(WebCore::setJSTestGlobalObjectTestSerializedScriptValueInterfaceConstructorSetter):
(WebCore::setJSTestGlobalObjectTestStringifierConstructorSetter):
(WebCore::setJSTestGlobalObjectTestStringifierAnonymousOperationConstructorSetter):
(WebCore::setJSTestGlobalObjectTestStringifierNamedOperationConstructorSetter):
(WebCore::setJSTestGlobalObjectTestStringifierOperationImplementedAsConstructorSetter):
(WebCore::setJSTestGlobalObjectTestStringifierOperationNamedToStringConstructorSetter):
(WebCore::setJSTestGlobalObjectTestStringifierReadOnlyAttributeConstructorSetter):
(WebCore::setJSTestGlobalObjectTestStringifierReadWriteAttributeConstructorSetter):
(WebCore::setJSTestGlobalObjectTestTypedefsConstructorSetter):
* bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
(WebCore::JSTestIndexedSetterNoIdentifierConstructor::initializeProperties):
(WebCore::JSTestIndexedSetterNoIdentifier::getOwnPropertyNames):
* bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
(WebCore::JSTestIndexedSetterThrowingExceptionConstructor::initializeProperties):
(WebCore::JSTestIndexedSetterThrowingException::getOwnPropertyNames):
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
(WebCore::JSTestIndexedSetterWithIdentifierConstructor::initializeProperties):
(WebCore::JSTestIndexedSetterWithIdentifier::getOwnPropertyNames):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterfaceConstructor::initializeProperties):
(WebCore::setJSTestInterfaceConstructorImplementsStaticAttrSetter):
(WebCore::setJSTestInterfaceImplementsStr2Setter):
(WebCore::setJSTestInterfaceImplementsStr3Setter):
(WebCore::setJSTestInterfaceImplementsNodeSetter):
(WebCore::setJSTestInterfaceConstructorSupplementalStaticAttrSetter):
(WebCore::setJSTestInterfaceSupplementalStr2Setter):
(WebCore::setJSTestInterfaceSupplementalStr3Setter):
(WebCore::setJSTestInterfaceSupplementalNodeSetter):
(WebCore::setJSTestInterfaceReflectAttributeSetter):
* bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
(WebCore::JSTestInterfaceLeadingUnderscoreConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestIterable.cpp:
(WebCore::JSTestIterableConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
(WebCore::JSTestJSBuiltinConstructorConstructor::initializeProperties):
(WebCore::setJSTestJSBuiltinConstructorTestAttributeRWCustomSetter):
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
(WebCore::JSTestMediaQueryListListenerConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
(WebCore::JSTestNamedAndIndexedSetterNoIdentifierConstructor::initializeProperties):
(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::getOwnPropertyNames):
(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::putByIndex):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
(WebCore::JSTestNamedAndIndexedSetterThrowingExceptionConstructor::initializeProperties):
(WebCore::JSTestNamedAndIndexedSetterThrowingException::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedAndIndexedSetterThrowingException::getOwnPropertyNames):
(WebCore::JSTestNamedAndIndexedSetterThrowingException::putByIndex):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
(WebCore::JSTestNamedAndIndexedSetterWithIdentifierConstructor::initializeProperties):
(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::getOwnPropertyNames):
(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::putByIndex):
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::JSTestNamedConstructorConstructor::initializeProperties):
(WebCore::JSTestNamedConstructorNamedConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
(WebCore::JSTestNamedDeleterNoIdentifierConstructor::initializeProperties):
(WebCore::JSTestNamedDeleterNoIdentifier::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedDeleterNoIdentifier::getOwnPropertyNames):
(WebCore::JSTestNamedDeleterNoIdentifier::deletePropertyByIndex):
* bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
(WebCore::JSTestNamedDeleterThrowingExceptionConstructor::initializeProperties):
(WebCore::JSTestNamedDeleterThrowingException::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedDeleterThrowingException::getOwnPropertyNames):
(WebCore::JSTestNamedDeleterThrowingException::deletePropertyByIndex):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
(WebCore::JSTestNamedDeleterWithIdentifierConstructor::initializeProperties):
(WebCore::JSTestNamedDeleterWithIdentifier::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedDeleterWithIdentifier::getOwnPropertyNames):
(WebCore::JSTestNamedDeleterWithIdentifier::deletePropertyByIndex):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
(WebCore::JSTestNamedDeleterWithIndexedGetterConstructor::initializeProperties):
(WebCore::JSTestNamedDeleterWithIndexedGetter::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedDeleterWithIndexedGetter::getOwnPropertyNames):
* bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
(WebCore::JSTestNamedGetterCallWithConstructor::initializeProperties):
(WebCore::JSTestNamedGetterCallWith::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedGetterCallWith::getOwnPropertyNames):
* bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
(WebCore::JSTestNamedGetterNoIdentifierConstructor::initializeProperties):
(WebCore::JSTestNamedGetterNoIdentifier::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedGetterNoIdentifier::getOwnPropertyNames):
* bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
(WebCore::JSTestNamedGetterWithIdentifierConstructor::initializeProperties):
(WebCore::JSTestNamedGetterWithIdentifier::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedGetterWithIdentifier::getOwnPropertyNames):
* bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
(WebCore::JSTestNamedSetterNoIdentifierConstructor::initializeProperties):
(WebCore::JSTestNamedSetterNoIdentifier::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedSetterNoIdentifier::getOwnPropertyNames):
(WebCore::JSTestNamedSetterNoIdentifier::putByIndex):
* bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
(WebCore::JSTestNamedSetterThrowingExceptionConstructor::initializeProperties):
(WebCore::JSTestNamedSetterThrowingException::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedSetterThrowingException::getOwnPropertyNames):
(WebCore::JSTestNamedSetterThrowingException::putByIndex):
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
(WebCore::JSTestNamedSetterWithIdentifierConstructor::initializeProperties):
(WebCore::JSTestNamedSetterWithIdentifier::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedSetterWithIdentifier::getOwnPropertyNames):
(WebCore::JSTestNamedSetterWithIdentifier::putByIndex):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
(WebCore::JSTestNamedSetterWithIndexedGetterConstructor::initializeProperties):
(WebCore::JSTestNamedSetterWithIndexedGetter::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedSetterWithIndexedGetter::getOwnPropertyNames):
(WebCore::JSTestNamedSetterWithIndexedGetter::putByIndex):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
(WebCore::JSTestNamedSetterWithIndexedGetterAndSetterConstructor::initializeProperties):
(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::getOwnPropertyNames):
(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::putByIndex):
* bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:
(WebCore::JSTestNamedSetterWithOverrideBuiltinsConstructor::initializeProperties):
(WebCore::JSTestNamedSetterWithOverrideBuiltins::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedSetterWithOverrideBuiltins::getOwnPropertyNames):
(WebCore::JSTestNamedSetterWithOverrideBuiltins::putByIndex):
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
(WebCore::JSTestNamedSetterWithUnforgablePropertiesConstructor::initializeProperties):
(WebCore::JSTestNamedSetterWithUnforgableProperties::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedSetterWithUnforgableProperties::getOwnPropertyNames):
(WebCore::JSTestNamedSetterWithUnforgableProperties::putByIndex):
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
(WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructor::initializeProperties):
(WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::getOwnPropertySlotByIndex):
(WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::getOwnPropertyNames):
(WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::putByIndex):
* bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::JSTestNodeConstructor::initializeProperties):
(WebCore::JSTestNodePrototype::finishCreation):
(WebCore::setJSTestNodeNameSetter):
(WebCore::JSTestNode::serialize):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::convertDictionary<TestObj::Dictionary>):
(WebCore::convertDictionaryToJS):
(WebCore::convertDictionary<TestObj::DictionaryThatShouldNotTolerateNull>):
(WebCore::convertDictionary<TestObj::DictionaryThatShouldTolerateNull>):
(WebCore::convertDictionary<AlternateDictionaryName>):
(WebCore::convertDictionary<TestObj::ParentDictionary>):
(WebCore::convertDictionary<TestObj::ChildDictionary>):
(WebCore::convertDictionary<TestObj::ConditionalDictionaryA>):
(WebCore::convertDictionary<TestObj::ConditionalDictionaryB>):
(WebCore::convertDictionary<TestObj::ConditionalDictionaryC>):
(WebCore::JSTestObjConstructor::initializeProperties):
(WebCore::JSTestObjPrototype::finishCreation):
(WebCore::JSTestObj::getOwnPropertyNames):
(WebCore::setJSTestObjConstructorStaticStringAttrSetter):
(WebCore::setJSTestObjEnumAttrSetter):
(WebCore::setJSTestObjByteAttrSetter):
(WebCore::setJSTestObjOctetAttrSetter):
(WebCore::setJSTestObjShortAttrSetter):
(WebCore::setJSTestObjClampedShortAttrSetter):
(WebCore::setJSTestObjEnforceRangeShortAttrSetter):
(WebCore::setJSTestObjUnsignedShortAttrSetter):
(WebCore::setJSTestObjLongAttrSetter):
(WebCore::setJSTestObjLongLongAttrSetter):
(WebCore::setJSTestObjUnsignedLongLongAttrSetter):
(WebCore::setJSTestObjStringAttrSetter):
(WebCore::setJSTestObjUsvstringAttrSetter):
(WebCore::setJSTestObjTestObjAttrSetter):
(WebCore::setJSTestObjTestNullableObjAttrSetter):
(WebCore::setJSTestObjLenientTestObjAttrSetter):
(WebCore::setJSTestObjStringAttrTreatingNullAsEmptyStringSetter):
(WebCore::setJSTestObjUsvstringAttrTreatingNullAsEmptyStringSetter):
(WebCore::setJSTestObjByteStringAttrTreatingNullAsEmptyStringSetter):
(WebCore::setJSTestObjStringLongRecordAttrSetter):
(WebCore::setJSTestObjUsvstringLongRecordAttrSetter):
(WebCore::setJSTestObjStringObjRecordAttrSetter):
(WebCore::setJSTestObjStringNullableObjRecordAttrSetter):
(WebCore::setJSTestObjDictionaryAttrSetter):
(WebCore::setJSTestObjNullableDictionaryAttrSetter):
(WebCore::setJSTestObjAnnotatedTypeInUnionAttrSetter):
(WebCore::setJSTestObjAnnotatedTypeInSequenceAttrSetter):
(WebCore::setJSTestObjImplementationEnumAttrSetter):
(WebCore::setJSTestObjXMLObjAttrSetter):
(WebCore::setJSTestObjCreateSetter):
(WebCore::setJSTestObjReflectedStringAttrSetter):
(WebCore::setJSTestObjReflectedUSVStringAttrSetter):
(WebCore::setJSTestObjReflectedIntegralAttrSetter):
(WebCore::setJSTestObjReflectedUnsignedIntegralAttrSetter):
(WebCore::setJSTestObjReflectedBooleanAttrSetter):
(WebCore::setJSTestObjReflectedURLAttrSetter):
(WebCore::setJSTestObjReflectedUSVURLAttrSetter):
(WebCore::setJSTestObjReflectedCustomIntegralAttrSetter):
(WebCore::setJSTestObjReflectedCustomBooleanAttrSetter):
(WebCore::setJSTestObjReflectedCustomURLAttrSetter):
(WebCore::setJSTestObjEnabledAtRuntimeAttributeSetter):
(WebCore::setJSTestObjConstructorEnabledAtRuntimeAttributeStaticSetter):
(WebCore::setJSTestObjTypedArrayAttrSetter):
(WebCore::setJSTestObjCustomAttrSetter):
(WebCore::setJSTestObjOnfooSetter):
(WebCore::setJSTestObjOnwebkitfooSetter):
(WebCore::setJSTestObjWithExecStateAttributeSetter):
(WebCore::setJSTestObjWithCallWithAndSetterCallWithAttributeSetter):
(WebCore::setJSTestObjWithScriptExecutionContextAttributeSetter):
(WebCore::setJSTestObjWithScriptExecutionContextAndExecStateAttributeSetter):
(WebCore::setJSTestObjWithScriptExecutionContextAndExecStateWithSpacesAttributeSetter):
(WebCore::setJSTestObjConditionalAttr1Setter):
(WebCore::setJSTestObjConditionalAttr2Setter):
(WebCore::setJSTestObjConditionalAttr3Setter):
(WebCore::setJSTestObjConditionalAttr4ConstructorSetter):
(WebCore::setJSTestObjConditionalAttr5ConstructorSetter):
(WebCore::setJSTestObjConditionalAttr6ConstructorSetter):
(WebCore::setJSTestObjAnyAttributeSetter):
(WebCore::setJSTestObjObjectAttributeSetter):
(WebCore::setJSTestObjMutablePointSetter):
(WebCore::setJSTestObjStrawberrySetter):
(WebCore::setJSTestObjIdSetter):
(WebCore::setJSTestObjReplaceableAttributeSetter):
(WebCore::setJSTestObjNullableLongSettableAttributeSetter):
(WebCore::setJSTestObjNullableStringSettableAttributeSetter):
(WebCore::setJSTestObjNullableUSVStringSettableAttributeSetter):
(WebCore::setJSTestObjNullableByteStringSettableAttributeSetter):
(WebCore::setJSTestObjAttributeWithReservedEnumTypeSetter):
(WebCore::setJSTestObjPutForwardsAttributeSetter):
(WebCore::setJSTestObjPutForwardsNullableAttributeSetter):
(WebCore::setJSTestObjStringifierAttributeSetter):
(WebCore::setJSTestObjConditionallyReadWriteAttributeSetter):
(WebCore::setJSTestObjConditionalAndConditionallyReadWriteAttributeSetter):
(WebCore::setJSTestObjConditionallyExposedToWindowAttributeSetter):
(WebCore::setJSTestObjConditionallyExposedToWorkerAttributeSetter):
(WebCore::setJSTestObjConditionallyExposedToWindowAndWorkerAttributeSetter):
(WebCore::JSTestObj::serialize):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::JSTestOverloadedConstructorsConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
(WebCore::JSTestOverloadedConstructorsWithSequenceConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
(WebCore::JSTestOverrideBuiltinsConstructor::initializeProperties):
(WebCore::JSTestOverrideBuiltins::getOwnPropertySlotByIndex):
(WebCore::JSTestOverrideBuiltins::getOwnPropertyNames):
* bindings/scripts/test/JS/JSTestPluginInterface.cpp:
(WebCore::JSTestPluginInterfaceConstructor::initializeProperties):
(WebCore::JSTestPluginInterface::getOwnPropertySlotByIndex):
(WebCore::JSTestPluginInterface::putByIndex):
* bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
(WebCore::convertDictionary<TestPromiseRejectionEvent::Init>):
(WebCore::JSTestPromiseRejectionEventConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestSerialization.cpp:
(WebCore::JSTestSerializationConstructor::initializeProperties):
(WebCore::setJSTestSerializationFirstStringAttributeSetter):
(WebCore::setJSTestSerializationSecondLongAttributeSetter):
(WebCore::setJSTestSerializationThirdUnserializableAttributeSetter):
(WebCore::setJSTestSerializationFourthUnrestrictedDoubleAttributeSetter):
(WebCore::setJSTestSerializationFifthLongAttributeSetter):
(WebCore::setJSTestSerializationSixthTypedefAttributeSetter):
(WebCore::setJSTestSerializationSeventhDirectlySerializableAttributeSetter):
(WebCore::setJSTestSerializationEighthIndirectlyAttributeSetter):
(WebCore::setJSTestSerializationNinthOptionalDirectlySerializableAttributeSetter):
(WebCore::setJSTestSerializationTenthFrozenArrayAttributeSetter):
(WebCore::setJSTestSerializationEleventhSequenceAttributeSetter):
(WebCore::setJSTestSerializationTwelfthInterfaceSequenceAttributeSetter):
(WebCore::JSTestSerialization::serialize):
* bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp:
(WebCore::JSTestSerializationIndirectInheritanceConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
(WebCore::JSTestSerializationInheritConstructor::initializeProperties):
(WebCore::setJSTestSerializationInheritInheritLongAttributeSetter):
(WebCore::JSTestSerializationInherit::serialize):
* bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
(WebCore::JSTestSerializationInheritFinalConstructor::initializeProperties):
(WebCore::setJSTestSerializationInheritFinalFinalLongAttributeFooSetter):
(WebCore::setJSTestSerializationInheritFinalFinalLongAttributeBarSetter):
(WebCore::JSTestSerializationInheritFinal::serialize):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::JSTestSerializedScriptValueInterfaceConstructor::initializeProperties):
(WebCore::setJSTestSerializedScriptValueInterfaceValueSetter):
(WebCore::setJSTestSerializedScriptValueInterfaceCachedValueSetter):
* bindings/scripts/test/JS/JSTestStandaloneDictionary.cpp:
(WebCore::convertDictionary<DictionaryImplName>):
(WebCore::convertDictionaryToJS):
* bindings/scripts/test/JS/JSTestStringifier.cpp:
(WebCore::JSTestStringifierConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
(WebCore::JSTestStringifierAnonymousOperationConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
(WebCore::JSTestStringifierNamedOperationConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
(WebCore::JSTestStringifierOperationImplementedAsConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
(WebCore::JSTestStringifierOperationNamedToStringConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
(WebCore::JSTestStringifierReadOnlyAttributeConstructor::initializeProperties):
* bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
(WebCore::JSTestStringifierReadWriteAttributeConstructor::initializeProperties):
(WebCore::setJSTestStringifierReadWriteAttributeIdentifierSetter):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefsConstructor::initializeProperties):
(WebCore::setJSTestTypedefsUnsignedLongLongAttrSetter):
(WebCore::setJSTestTypedefsSerializedScriptValueSetter):
(WebCore::setJSTestTypedefsAttributeWithClampSetter):
(WebCore::setJSTestTypedefsAttributeWithClampInTypedefSetter):
(WebCore::setJSTestTypedefsBufferSourceAttrSetter):
(WebCore::setJSTestTypedefsDomTimeStampAttrSetter):
* bridge/NP_jsobject.cpp:
* bridge/c/c_instance.cpp:
(JSC::Bindings::CInstance::stringValue const):
(JSC::Bindings::CInstance::getPropertyNames):
* bridge/c/c_utility.cpp:
(JSC::Bindings::identifierFromNPIdentifier):
* bridge/objc/WebScriptObject.mm:
(-[WebScriptObject callWebScriptMethod:withArguments:]):
(-[WebScriptObject setValue:forKey:]):
(-[WebScriptObject valueForKey:]):
(-[WebScriptObject removeWebScriptKey:]):
(-[WebScriptObject hasWebScriptKey:]):
* bridge/objc/objc_runtime.mm:
(JSC::Bindings::ObjcFallbackObjectImp::defaultValue):
* bridge/objc/objc_utility.mm:
(JSC::Bindings::convertNSStringToString):
* bridge/runtime_array.cpp:
(JSC::RuntimeArray::getOwnPropertyNames):
* contentextensions/ContentExtensionParser.cpp:
(WebCore::ContentExtensions::loadTrigger):
(WebCore::ContentExtensions::loadAction):
* crypto/SubtleCrypto.cpp:
(WebCore::normalizeCryptoAlgorithmParameters):
* domjit/DOMJITHelpers.h:
(WebCore::DOMJIT::toWrapperSlow):
* html/HTMLMediaElement.cpp:
(WebCore::controllerJSValue):
(WebCore::HTMLMediaElement::updateCaptionContainer):
(WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript):
(WebCore::HTMLMediaElement::setControllerJSProperty):
(WebCore::HTMLMediaElement::didAddUserAgentShadowRoot):
(WebCore::HTMLMediaElement::updateMediaControlsAfterPresentationModeChange):
(WebCore::HTMLMediaElement::getCurrentMediaControlsStatus):
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot):
* inspector/InspectorFrontendHost.cpp:
(WebCore::InspectorFrontendHost::addSelfToGlobalObjectInWorld):
(WebCore::InspectorFrontendHost::showContextMenu):
* inspector/WebInjectedScriptHost.cpp:
(WebCore::WebInjectedScriptHost::subtype):
(WebCore::constructInternalProperty):
(WebCore::objectForPaymentOptions):
(WebCore::objectForPaymentCurrencyAmount):
(WebCore::objectForPaymentItem):
(WebCore::objectForPaymentShippingOption):
(WebCore::objectForPaymentDetailsModifier):
(WebCore::objectForPaymentDetails):
(WebCore::jsStringForPaymentRequestState):
(WebCore::WebInjectedScriptHost::getInternalProperties):
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas):
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::buildObjectForEventListener):
(WebCore::InspectorDOMAgent::scriptValueAsNode):
* inspector/agents/page/PageAuditAgent.cpp:
(WebCore::PageAuditAgent::populateAuditObject):
* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::screenshot):
* platform/graphics/CustomPaintImage.cpp:
(WebCore::CustomPaintImage::doCustomPaint):
* testing/js/WebCoreTestSupport.cpp:
(WebCoreTestSupport::injectInternalsObject):
(WebCoreTestSupport::setupNewlyCreatedServiceWorker):
* worklets/PaintWorkletGlobalScope.cpp:
(WebCore::PaintWorkletGlobalScope::registerPaint):
2019-08-27 Devin Rousso <drousso@apple.com>
Web Inspector: don't attach properties to `injectedScript` for the CommandLineAPI
https://bugs.webkit.org/show_bug.cgi?id=201193
Reviewed by Joseph Pecoraro.
For some reason, adding `injectedScript._inspectObject` inside CommandLineAPIModuleSource.js
causes inspector/debugger/tail-deleted-frames-this-value.html to fail.
We should have a similar approach to adding command line api getters and functions, in that
the CommandLineAPIModuleSource.js calls a function with a callback.
* inspector/CommandLineAPIModuleSource.js:
(injectedScript._inspectObject): Deleted.
2019-08-27 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Align table formatting context code with the existing layout logic.
https://bugs.webkit.org/show_bug.cgi?id=201168
<rdar://problem/54732633>
Reviewed by Antti Koivisto.
Let's make the TFC go through the exisint shrink-to-fit computation. Tables behave slightly different from
other shrink-to-fit boxes as they are streched to their minimum width(MIN) even when 'width' is non-auto and computed to less than MIN.
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::contentHeightForFormattingContextRoot):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::layout const):
(WebCore::Layout::TableFormattingContext::computedIntrinsicWidthConstraints const):
(WebCore::Layout::TableFormattingContext::computedTableWidth const):
(WebCore::Layout::TableFormattingContext::computeTableWidth const): Deleted.
(WebCore::Layout::TableFormattingContext::computeTableHeight const): Deleted.
(WebCore::Layout::TableFormattingContext::distributeAvailableHeight const): Deleted.
* layout/tableformatting/TableFormattingContext.h:
* layout/tableformatting/TableGrid.h:
2019-08-27 Simon Fraser <simon.fraser@apple.com>
Minor optimization in InlineFlowBox::paintBoxDecorations()
https://bugs.webkit.org/show_bug.cgi?id=201199
Reviewed by Zalan Bujtas.
This function can early return before computing localRect, which takes a bit of time (seen
on profiles).
* rendering/InlineFlowBox.cpp:
(WebCore::InlineFlowBox::paintBoxDecorations):
2019-08-27 Carlos Alberto Lopez Perez <clopez@igalia.com>
Drawing an animated image to a canvas via drawImage should draw the first frame
https://bugs.webkit.org/show_bug.cgi?id=74779
<rdar://problem/42282454>
Reviewed by Said Abou-Hallawa.
After this patch, when an animated image is drawn into a canvas via
drawImage, the actual image that the canvas will receive will be
a new Image object with the contents of the first frame of the animation.
It also adds an internal setting to keep the previous behaviour
(draw the current frame playing) because there are several layout
tests that rely on canvas.drawImage() to check that animated images
play properly.
Test: fast/canvas/drawImage-animated-gif-draws-first-frame-and-no-reset-image.html
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::drawImage):
* page/Settings.yaml:
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setAnimatedImageDebugCanvasDrawingEnabled):
* testing/InternalSettings.h:
* testing/InternalSettings.idl:
2019-08-27 Antti Koivisto <antti@apple.com>
InlineTextBox::end() should return first-past-end offset
https://bugs.webkit.org/show_bug.cgi?id=201181
Reviewed by Zalan Bujtas.
It currently points to the last character, except for empty text boxes.
This is awkward in itself and also inconsistent, as we use first-past-end offset everywhere else.
* dom/Position.cpp:
(WebCore::Position::downstream const):
Add a check for zero length case to avoid changing behavior.
* layout/Verification.cpp:
(WebCore::Layout::checkForMatchingTextRuns):
(WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
* rendering/InlineFlowBox.cpp:
(WebCore::InlineFlowBox::placeBoxRangeInInlineDirection):
* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::paint):
(WebCore::InlineTextBox::calculateDocumentMarkerBounds const):
(WebCore::InlineTextBox::collectMarkedTextsForDocumentMarkers const):
(WebCore::InlineTextBox::paintCompositionUnderlines const):
(WebCore::InlineTextBox::paintCompositionUnderline const):
* rendering/InlineTextBox.h:
(WebCore::InlineTextBox::end const):
end = start + len
* rendering/RenderText.cpp:
(WebCore::RenderText::setTextWithOffset):
* rendering/RenderTextLineBoxes.cpp:
(WebCore::localQuadForTextBox):
(WebCore::RenderTextLineBoxes::absoluteRectsForRange const):
(WebCore::RenderTextLineBoxes::absoluteQuadsForRange const):
(WebCore::RenderTextLineBoxes::dirtyRange):
Here the incoming 'end' used linebox style too, move that to the new definition too.
2019-08-27 Chris Dumez <cdumez@apple.com>
Crash under WebCore::jsNotificationConstructorPermission
https://bugs.webkit.org/show_bug.cgi?id=201186
<rdar://problem/53962833>
Reviewed by Youenn Fablet.
Update the Notification API implementation to null-check the page before using. The page becomes null
when using the API in a frame that gets detached from its parent while in the middle of running
script.
Test: http/tests/notifications/request-in-detached-frame.html
* Modules/notifications/Notification.cpp:
(WebCore::Notification::permission):
(WebCore::Notification::requestPermission):
2019-08-27 Youenn Fablet <youenn@apple.com>
Disabled devices should not be taken into account when searching for a capture device
https://bugs.webkit.org/show_bug.cgi?id=201183
<rdar://problem/54353440>
Reviewed by Jer Noble.
Manually tested.
* platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:
(WebCore::CoreAudioCaptureDeviceManager::coreAudioDeviceWithUID):
We currently keep a list of devices, some of which might be disabled.
We should not take into account disabled devices, only enabled devices
when doing this search.
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioSharedUnit::setupAudioUnit):
Improve logging.
2019-08-26 Jer Noble <jer.noble@apple.com>
Removing fullscreen element in rAF() callback after requestFullscreen() can leave fullscreen in inconsistent state.
https://bugs.webkit.org/show_bug.cgi?id=201101
<rdar://problem/54164587>
Reviewed by Eric Carlson.
Test: fullscreen/full-screen-request-removed-with-raf.html
Add a new state variable, m_pendingFullscreenElement, to track which element is about to
become the fullscreen element, so that when elements are removed or cancelFullscreen() is
called, the state machine inside the fullscreen algorithm can cancel effectively.
* dom/FullscreenManager.cpp:
(WebCore::FullscreenManager::requestFullscreenForElement):
(WebCore::FullscreenManager::cancelFullscreen):
(WebCore::FullscreenManager::exitFullscreen):
(WebCore::FullscreenManager::willEnterFullscreen):
(WebCore::FullscreenManager::willExitFullscreen):
(WebCore::FullscreenManager::didExitFullscreen):
(WebCore::FullscreenManager::adjustFullscreenElementOnNodeRemoval):
(WebCore::FullscreenManager::clear):
(WebCore::FullscreenManager::fullscreenElementRemoved): Deleted.
* dom/FullscreenManager.h:
2019-08-27 Peng Liu <peng.liu6@apple.com>
webkitpresentationmodechanged is fired twice when exiting picture in picture
https://bugs.webkit.org/show_bug.cgi?id=193765
Reviewed by Jer Noble.
This patch removes the extra "webkitpresentationmodechanged" event when the browser switches from
picture-in-picture or fullscreen to inline.
The bug was introduced by the fix for bug
https://bugs.webkit.org/show_bug.cgi?id=181095
But now we are using modern media controls and the fix is not necessary.
Reverting that fix can fix the issue.
Also, this patch gets rid of the unnecessary try to call a JavaScript function which is not available
in the modern media controls.
Test: media/presentationmodechanged-fired-once.html
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::exitFullscreen):
(WebCore::HTMLMediaElement::updateMediaControlsAfterPresentationModeChange):
2019-08-27 Wenson Hsieh <wenson_hsieh@apple.com>
Image pasted from screenshot into Mail compose window via share sheet has the wrong aspect ratio
https://bugs.webkit.org/show_bug.cgi?id=201171
<rdar://problem/54671275>
Reviewed by Tim Horton.
Augments an existing app-specific hack to include the Mail composition service, in addition to Mail.
* platform/RuntimeApplicationChecks.h:
* platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::IOSApplication::isMailCompositionService):
Add a new bundle checking method for the Mail composition service (com.apple.MailCompositionService).
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::informationForItemAtIndex):
Only plumb the preferred presentation height through to the web process if the application is neither Mail nor
the Mail composition service. In the future, we should consider putting this hack behind SPI, or maybe only
expose the preferred presentation width in all apps (it isn't difficult to imagine a use case where a "Mail-
compose-like" web app has `img { max-width: 100%; }` in their stylesheet).
2019-08-27 Carlos Garcia Campos <cgarcia@igalia.com>
Origin header not included in WebSocket handshake request when using platform WebSocket API
https://bugs.webkit.org/show_bug.cgi?id=200535
Reviewed by Youenn Fablet.
Add Origin HTTP header to the WebSocket handshake request.
* Modules/websockets/ThreadableWebSocketChannel.cpp:
(WebCore::ThreadableWebSocketChannel::webSocketConnectRequest):
2019-08-27 Youenn Fablet <youenn@apple.com>
Make MediaStreamTrackPrivate RefCounted
https://bugs.webkit.org/show_bug.cgi?id=201040
Reviewed by Darin Adler.
MediaStreamTrackPrivate should not be ref/deref except from the main thread.
The only method called from a background thread is audioSamplesAvailable in which
it is unsafe to ref a MediaStreamTrackPrivate.
Make the track RefCounted will ensure that no ref/deref is made in background threads.
No observable change of behavior.
* platform/mediastream/MediaStreamTrackPrivate.h:
2019-08-26 Yusuke Suzuki <ysuzuki@apple.com>
[WebCore] DataCue should not use gcProtect / gcUnprotect
https://bugs.webkit.org/show_bug.cgi?id=201170
Reviewed by Mark Lam.
JSC::gcProtect and JSC::gcUnprotect are designed for JavaScriptCore.framework and we should not use them in WebCore. It is
checking whether we are holding a JS API lock. But the caller of these API would be the C++ holder's destructor, and this should be
allowed since this destruction must happen in main thread or web thread, and this should not happen while other thread is taking JS API lock.
For example, we are destroying JSC::Strong<>, JSC::Weak<> without taking JS API lock. But since JSC::gcProtect and JSC::gcUnprotect are designed
for JavaScriptCore.framework, they are not accounting this condition, and we are hitting debug assertion in GC stress bot.
Ideally, we should convert this JSValue field to JSValueInWrappedObject. But JSValueInWrappedObject needs extra care. We should
know how the owner and JS wrapper are kept and used to use JSValueInWrappedObject correctly.
As a first step, this patch just replaces raw JSValue + gcProtect/gcUnprotect with JSC::Strong<>.
This change fixes LayoutTests/media/track/track-in-band-metadata-display-order.html crash in GC stress bot. The crash trace is the following.
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 com.apple.JavaScriptCore 0x000000010ee3d980 WTFCrash + 16
1 com.apple.JavaScriptCore 0x000000010ee408ab WTFCrashWithInfo(int, char const*, char const*, int) + 27
2 com.apple.JavaScriptCore 0x000000010feb5327 JSC::Heap::unprotect(JSC::JSValue) + 215
3 com.apple.WebCore 0x0000000120f33b53 JSC::gcUnprotect(JSC::JSCell*) + 51
4 com.apple.WebCore 0x0000000120f329fc JSC::gcUnprotect(JSC::JSValue) + 76
5 com.apple.WebCore 0x0000000120f32968 WebCore::DataCue::~DataCue() + 88
6 com.apple.WebCore 0x0000000120f32ac5 WebCore::DataCue::~DataCue() + 21
7 com.apple.WebCore 0x0000000120f32ae9 WebCore::DataCue::~DataCue() + 25
8 com.apple.WebCore 0x0000000120f37ebf WTF::RefCounted<WebCore::TextTrackCue, std::__1::default_delete<WebCore::TextTrackCue> >::deref() const + 95
9 com.apple.WebCore 0x000000012103a345 void WTF::derefIfNotNull<WebCore::TextTrackCue>(WebCore::TextTrackCue*) + 53
10 com.apple.WebCore 0x000000012103a309 WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> >::~RefPtr() + 41
11 com.apple.WebCore 0x000000012102bfc5 WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> >::~RefPtr() + 21
12 com.apple.WebCore 0x00000001210e91df WTF::VectorDestructor<true, WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> > >::destruct(WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> >*, WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> >*) + 47
13 com.apple.WebCore 0x00000001210e913d WTF::VectorTypeOperations<WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> > >::destruct(WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> >*, WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> >*) + 29
14 com.apple.WebCore 0x00000001210e9100 WTF::Vector<WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> >, 0ul, WTF::CrashOnOverflow, 16ul>::~Vector() + 64
15 com.apple.WebCore 0x00000001210e7a25 WTF::Vector<WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> >, 0ul, WTF::CrashOnOverflow, 16ul>::~Vector() + 21
16 com.apple.WebCore 0x00000001210e93d3 WebCore::TextTrackCueList::~TextTrackCueList() + 51
* html/track/DataCue.cpp:
(WebCore::DataCue::DataCue):
(WebCore::DataCue::~DataCue):
(WebCore::DataCue::setData):
(WebCore::DataCue::value const):
(WebCore::DataCue::setValue):
(WebCore::DataCue::valueOrNull const):
* html/track/DataCue.h:
2019-08-26 Devin Rousso <drousso@apple.com>
Web Inspector: use more C++ keywords for defining agents
https://bugs.webkit.org/show_bug.cgi?id=200959
Reviewed by Joseph Pecoraro.
- make constructors `protected` when the agent isn't meant to be constructed directly
- add `virtual` destructors that are defined in the *.cpp so forward-declarations work
- use `final` wherever possible
- add comments to indicate where any virtual functions come from
* inspector/agents/InspectorApplicationCacheAgent.h:
* inspector/agents/InspectorApplicationCacheAgent.cpp:
* inspector/agents/InspectorCPUProfilerAgent.h:
* inspector/agents/InspectorCPUProfilerAgent.cpp:
* inspector/agents/InspectorCSSAgent.h:
* inspector/agents/InspectorCSSAgent.cpp:
* inspector/agents/InspectorCanvasAgent.h:
* inspector/agents/InspectorCanvasAgent.cpp:
* inspector/agents/InspectorDOMAgent.h:
* inspector/agents/InspectorDOMAgent.cpp:
* inspector/agents/InspectorDOMDebuggerAgent.h:
* inspector/agents/InspectorDOMDebuggerAgent.cpp:
* inspector/agents/InspectorDOMStorageAgent.h:
* inspector/agents/InspectorDOMStorageAgent.cpp:
* inspector/agents/InspectorDatabaseAgent.h:
* inspector/agents/InspectorDatabaseAgent.cpp:
* inspector/agents/InspectorIndexedDBAgent.h:
* inspector/agents/InspectorIndexedDBAgent.cpp:
* inspector/agents/InspectorLayerTreeAgent.h:
* inspector/agents/InspectorLayerTreeAgent.cpp:
* inspector/agents/InspectorMemoryAgent.h:
* inspector/agents/InspectorMemoryAgent.cpp:
* inspector/agents/InspectorNetworkAgent.h:
* inspector/agents/InspectorNetworkAgent.cpp:
* inspector/agents/InspectorPageAgent.h:
* inspector/agents/InspectorPageAgent.cpp:
* inspector/agents/InspectorTimelineAgent.h:
* inspector/agents/InspectorTimelineAgent.cpp:
* inspector/agents/InspectorWorkerAgent.h:
* inspector/agents/InspectorWorkerAgent.cpp:
* inspector/agents/WebConsoleAgent.h:
* inspector/agents/WebConsoleAgent.cpp:
* inspector/agents/WebDebuggerAgent.h:
* inspector/agents/WebDebuggerAgent.cpp:
* inspector/agents/WebHeapAgent.h:
* inspector/agents/WebHeapAgent.cpp:
* inspector/agents/page/PageAuditAgent.h:
* inspector/agents/page/PageAuditAgent.cpp:
* inspector/agents/page/PageConsoleAgent.h:
* inspector/agents/page/PageConsoleAgent.cpp:
* inspector/agents/page/PageDebuggerAgent.h:
* inspector/agents/page/PageDebuggerAgent.cpp:
* inspector/agents/page/PageHeapAgent.h:
* inspector/agents/page/PageHeapAgent.cpp:
* inspector/agents/page/PageNetworkAgent.h:
* inspector/agents/page/PageNetworkAgent.cpp:
* inspector/agents/page/PageRuntimeAgent.h:
* inspector/agents/page/PageRuntimeAgent.cpp:
* inspector/agents/worker/ServiceWorkerAgent.h:
* inspector/agents/worker/ServiceWorkerAgent.cpp:
* inspector/agents/worker/WorkerAuditAgent.h:
* inspector/agents/worker/WorkerAuditAgent.cpp:
* inspector/agents/worker/WorkerConsoleAgent.h:
* inspector/agents/worker/WorkerConsoleAgent.cpp:
* inspector/agents/worker/WorkerDebuggerAgent.h:
* inspector/agents/worker/WorkerNetworkAgent.h:
* inspector/agents/worker/WorkerNetworkAgent.cpp:
* inspector/agents/worker/WorkerRuntimeAgent.h:
* inspector/agents/worker/WorkerRuntimeAgent.cpp:
2019-08-26 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Rewrite all tests to use WHLSL and delete the isWHLSL flag
https://bugs.webkit.org/show_bug.cgi?id=201162
Reviewed by Saam Barati.
We want to keep the MSL codepath for debugging, so the codepath isn't deleted entirely, but it is no longer web exposed.
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createShaderModule const):
* Modules/webgpu/WebGPUShaderModuleDescriptor.h:
* Modules/webgpu/WebGPUShaderModuleDescriptor.idl:
* platform/graphics/gpu/GPUDevice.h:
* platform/graphics/gpu/GPUShaderModuleDescriptor.h:
* platform/graphics/gpu/cocoa/GPUShaderModuleMetal.mm:
(WebCore::GPUShaderModule::tryCreate):
2019-08-26 Chris Dumez <cdumez@apple.com>
Change default value of window.open()'s url argument
https://bugs.webkit.org/show_bug.cgi?id=200882
Reviewed by Ryosuke Niwa.
Update default URL parameter value for window.open() to be "" instead of "about:blank", as per:
- https://github.com/whatwg/html/issues/4762
This aligns our behavior with other Web browser engines.
No new tests, rebaselined existing test.
* page/DOMWindow.idl:
2019-08-26 Devin Rousso <drousso@apple.com>
Web Inspector: unify agent command error messages
https://bugs.webkit.org/show_bug.cgi?id=200950
Reviewed by Joseph Pecoraro.
Different agents can sometimes have different error messages for commands that have a
similar intended effect. We should make our error messages more similar.
* inspector/CommandLineAPIHost.cpp:
* inspector/agents/InspectorApplicationCacheAgent.cpp:
* inspector/agents/InspectorCSSAgent.cpp:
* inspector/agents/InspectorCanvasAgent.h:
* inspector/agents/InspectorCanvasAgent.cpp:
* inspector/agents/InspectorDOMAgent.cpp:
* inspector/agents/InspectorDOMDebuggerAgent.cpp:
* inspector/agents/InspectorDOMStorageAgent.cpp:
* inspector/agents/InspectorIndexedDBAgent.cpp:
* inspector/agents/InspectorLayerTreeAgent.cpp:
* inspector/agents/InspectorMemoryAgent.cpp:
* inspector/agents/InspectorNetworkAgent.cpp:
* inspector/agents/InspectorPageAgent.cpp:
* inspector/agents/InspectorTimelineAgent.cpp:
* inspector/agents/InspectorWorkerAgent.cpp:
* inspector/agents/page/PageAuditAgent.cpp:
* inspector/agents/page/PageConsoleAgent.cpp:
* inspector/agents/page/PageDebuggerAgent.cpp:
* inspector/agents/page/PageNetworkAgent.cpp:
* inspector/agents/page/PageRuntimeAgent.cpp:
* inspector/agents/worker/WorkerAuditAgent.cpp:
* inspector/agents/worker/WorkerDebuggerAgent.cpp:
* inspector/agents/worker/WorkerRuntimeAgent.cpp:
Elide function lists to avoid an extremely large ChangeLog entry.
2019-08-26 Chris Dumez <cdumez@apple.com>
Regression: ITP started doing a lot more IPC after its logic was moved to the network process
https://bugs.webkit.org/show_bug.cgi?id=201155
Reviewed by John Wilander.
ITP started doing a lot more IPC after its logic was moved to the network process. Web processes used to
send their statistics to the UIProcess at most every 5 seconds. However, when the logic got moved to the network
process, we started notifying the network process via IPC after every sub resource load. This is bad for performance
and battery life. This patch restores the 5 second delay to address the issue.
* loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::ResourceLoadObserver):
(WebCore::ResourceLoadObserver::setRequestStorageAccessUnderOpenerCallback):
(WebCore::ResourceLoadObserver::logSubresourceLoading):
(WebCore::ResourceLoadObserver::logWebSocketLoading):
(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
(WebCore::ResourceLoadObserver::scheduleNotificationIfNeeded):
(WebCore::ResourceLoadObserver::updateCentralStatisticsStore):
(WebCore::ResourceLoadObserver::clearState):
* loader/ResourceLoadObserver.h:
2019-08-26 Simon Fraser <simon.fraser@apple.com>
Optimize computation of AbsoluteClipRects clip rects
https://bugs.webkit.org/show_bug.cgi?id=201148
Reviewed by Zalan Bujtas.
When adding layers to the compositing overlap map, we compute AbsoluteClipRects for every
layer which is expensive. This was more expensive than necessary because we converted them
to TemporaryClipRects when crossing painting boundaries, but AbsoluteClipRects don't
care about painting boundaries, so don't do this.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
2019-08-26 Chris Dumez <cdumez@apple.com>
Drop WEBCORE_EXPORT from ChromeClient class
https://bugs.webkit.org/show_bug.cgi?id=201146
Reviewed by Alex Christensen.
Drop WEBCORE_EXPORT from ChromeClient class. All its methods and either pure virtual or inlined in the header.
* page/ChromeClient.h:
2019-08-26 David Kilzer <ddkilzer@apple.com>
Don't compute upconverted characters twice in buildQuery() in DataDetection.mm
<https://webkit.org/b/201144>
<rdar://problem/54689399>
Reviewed by Brent Fulgham.
* editing/cocoa/DataDetection.mm:
(WebCore::buildQuery): Extract common variables to prevent double
conversion for 8-bit strings.
2019-08-26 Brent Fulgham <bfulgham@apple.com>
[FTW] Go back to ID2D1Bitmap as our NativeImage type
https://bugs.webkit.org/show_bug.cgi?id=201122
Reviewed by Alex Christensen.
In Bug 200093 I switched the OS type of NativeImagePtr from ID2D1Bitmap to IWICBitmap.
However, this was an ill-advised approach, because it dramatically harmed performance due
to the heavy use of software rendering.
I originally made this change because I thought this was the only way to get to the backing
bits of the bitmaps, but it turns out that a more recent Direct2D data type (ID2D1Bitmap1)
has the ability to map its memory to CPU-accessible memory, allowing software filter effects.
This patch switches back to the ID2D1Bitap data type, and hooks up the ID2D1Bitmap1 data type
to access the underlying memory of the bitmaps when software filter effects are used.
* platform/graphics/ImageBuffer.h:
* platform/graphics/NativeImage.h:
* platform/graphics/texmap/BitmapTextureGL.cpp:
* platform/graphics/win/Direct2DOperations.cpp:
* platform/graphics/win/Direct2DOperations.h:
* platform/graphics/win/Direct2DUtilities.cpp:
(WebCore::Direct2D::writeDiagnosticPNGToPath):
(WebCore::Direct2D::writeImageToDiskAsPNG): Deleted.
* platform/graphics/win/Direct2DUtilities.h:
* platform/graphics/win/GraphicsContextDirect2D.cpp:
* platform/graphics/win/ImageBufferDataDirect2D.cpp:
* platform/graphics/win/ImageBufferDataDirect2D.h:
* platform/graphics/win/ImageBufferDirect2D.cpp:
* platform/graphics/win/ImageDecoderDirect2D.cpp:
* platform/graphics/win/NativeImageDirect2D.cpp:
* platform/graphics/win/PatternDirect2D.cpp:
* svg/graphics/SVGImage.cpp:
2019-08-26 Sam Weinig <weinig@apple.com>
[WHLSL] TypeNamer can be simplified by replacing BaseTypeNameNode with uniqued AST::UnnamedTypes
https://bugs.webkit.org/show_bug.cgi?id=200632
Reviewed by Saam Barati.
There is no longer a reason to keep a parallel tree of the UnnamedType-like objects
BaseTypeNameNodes. Instead, we can store a single HashMap mapping from UnnamedTypeKeys
to MangledTypeName, and use the the UnnamedType stored in the UnnamedTypeKey while
emitting the metal code. This removes the parallel BaseTypeNameNode type hierarchy
and removes an extra allocation for each UnnamedType.
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedTypeHash.h:
Define HashTraits and DefaultHash specializations for UnnamedTypeKey to simplify
uses of UnnamedTypeKey as a key in HashMap/HashSet.
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.h:
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::TypeNamer::insert): Deleted.
(WebCore::WHLSL::Metal::TypeNamer::generateUniquedTypeName):
Replace old insert function with generateUniquedTypeName, which uniques and generates
names for the UnnamedType and any 'parent' UnnamedTypes.
(WebCore::WHLSL::Metal::BaseTypeNameNode): Deleted.
Remove BaseTypeNameNode and subclasses.
(WebCore::WHLSL::Metal::TypeNamer::find): Deleted.
(WebCore::WHLSL::Metal::TypeNamer::createNameNode): Deleted.
We no longer need the find or createNameNode functions, as the UnnamedTypes can be now be
used directly everywhere.
(WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):
Switch to directly using the UnnamedType and always have the caller pass in the mangled
name, since in the main emit loop, we always have access to the them. Also, inline the
the recursive calls to emitNamedTypeDefinition for 'parent' types to avoid unnecessary
extra switch over the kind getting the parent, and avoid it entirely for TypeReference
which never has a parent.
(WebCore::WHLSL::Metal::TypeNamer::emitNamedTypeDefinition):
Switches to now passing in the neighbors, since they are always available in the main
emit loop. Also move to a switch statement rather than ifs for consistency.
(WebCore::WHLSL::Metal::TypeNamer::emitMetalTypeDefinitions):
Pass keys and values into the emit functions to avoid double lookups.
(WebCore::WHLSL::Metal::TypeNamer::mangledNameForType):
Update to hash lookup.
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
Take advantage of default HashTraits and DefaultHash for UnnamedTypeKey.
2019-08-26 Peng Liu <peng.liu6@apple.com>
REGRESSION (18E140): “return streaming movie to real time” suggesting “resume real time streaming”
https://bugs.webkit.org/show_bug.cgi?id=201108
<rdar://problem/46372525>
Reviewed by Eric Carlson.
Update Localizable.strings.
No new test.
* en.lproj/Localizable.strings:
* platform/LocalizedStrings.cpp:
(WebCore::localizedMediaControlElementHelpText):
2019-08-26 Youenn Fablet <youenn@apple.com>
CacheStorageConnection::computeRealBodySize is not thread-safe
https://bugs.webkit.org/show_bug.cgi?id=201074
Reviewed by Chris Dumez.
In case of a form data, the size computation might require sync IPC to the network process which is not thread-safe
In that case, hop to the main thread to compute the size of the body.
Covered by existing service worker tests in Debug mode.
* Modules/cache/CacheStorageConnection.cpp:
(WebCore::formDataSize):
(WebCore::CacheStorageConnection::computeRealBodySize):
2019-08-26 Youenn Fablet <youenn@apple.com>
MessagePort should be WeakPtrFactoryInitialization::Eager
https://bugs.webkit.org/show_bug.cgi?id=201073
Reviewed by Chris Dumez.
Covered by existing layout tests.
* dom/MessagePort.h:
2019-08-24 Simon Fraser <simon.fraser@apple.com>
Have RenderLayer::calculateClipRects() use offsetFromAncestor() when possible
https://bugs.webkit.org/show_bug.cgi?id=201066
Reviewed by Dean Jackson.
offsetFromAncestor() is a layer tree walk, so faster than localToContainerPoint(),
but we can't use it when there are transforms on the layer and intermediates up
to the ancestor.
canUseConvertToLayerCoords() was trying to answer the question about whether it's
OK to use offsetFromAncestor() (which calls convertToLayerCoords() internally), but
it has insufficient information to make a determination. Leave this issue alone, but
at least rename canUseConvertToLayerCoords().
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateLayerPositions):
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayer.h:
2019-08-24 Simon Fraser <simon.fraser@apple.com>
Page crashes under CGPathAddUnevenCornersRoundedRect
https://bugs.webkit.org/show_bug.cgi?id=201117
Reviewed by Dean Jackson.
Fix crash on https://onehtmlpagechallenge.com/entries/pure-css-still-life-water-lemon.html
We were passing CG radius values where the sum of two radii was greater than the height or
width, caused by rounding when converting from floats to doubles.
Test: fast/borders/renderable-uneven-rounded-rects.html
* platform/graphics/cg/PathCG.cpp:
(WebCore::Path::platformAddPathForRoundedRect):
2019-08-23 Simon Fraser <simon.fraser@apple.com>
RenderLayer::updateLayerPositions() doesn't propagate the ancestor flags correctly
https://bugs.webkit.org/show_bug.cgi?id=201115
Reviewed by Zalan Bujtas.
When an updateLayerPositions() traversal starts at a non-root layer, we failed to populate
the ancestor-related UpdateLayerPositionsFlag flags, leaving layers with missing flags
(e.g. the m_hasTransformedAncestor flag). This is detected by the patch in bug 201066.
Fix by having updateLayerPositionsAfterStyleChange() and updateLayerPositionsAfterLayout()
initialize the flags from the parent layer.
This is a behavior change not detected by any existing test, but will be exercised once
the patch from bug 201066 lands.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::flagsForUpdateLayerPositions):
(WebCore::RenderLayer::updateLayerPositionsAfterStyleChange):
(WebCore::RenderLayer::updateLayerPositionsAfterLayout):
(WebCore::outputPaintOrderTreeLegend):
(WebCore::outputPaintOrderTreeRecursive): Log hasTransformedAncestor().
* rendering/RenderLayer.h:
2019-08-24 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Add section renderers to the layout tree (THEAD/TBODY/TFOOT)
https://bugs.webkit.org/show_bug.cgi?id=201114
<rdar://problem/54664992>
Reviewed by Antti Koivisto.
Section renderers (THEAD/TBODY/TFOOT) are direct children of the RenderTable. Let's include them in the layout tree as well.
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createTableStructure):
(WebCore::Layout::outputInlineRuns):
2019-08-24 Zalan Bujtas <zalan@apple.com>
[LFC] Box::isAnonymous() can not rely on the lack of ElementType.
https://bugs.webkit.org/show_bug.cgi?id=201106
<rdar://problem/54660287>
Reviewed by Antti Koivisto.
Add bool m_isAnonymous member to mark anonymous layout boxes. Anonymous boxes are not rare enough to include this variable in RareData.
* layout/layouttree/LayoutBox.h:
(WebCore::Layout::Box::setIsAnonymous):
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutBox):
2019-08-24 Antti Koivisto <antti@apple.com>
Implement layout system independent text box iterator
https://bugs.webkit.org/show_bug.cgi?id=201076
Reviewed by Zalan Bujtas.
Add a generic way to traverse line layout without caring about the details of the underlying layout system.
This patch adds basic support for traversing text boxes and uses it to remove layout path specific branches in RenderTreeAsText.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/RenderTreeAsText.cpp:
(WebCore::RenderTreeAsText::writeRenderObject):
(WebCore::writeTextBox):
(WebCore::write):
(WebCore::writeTextRun): Deleted.
(WebCore::writeSimpleLine): Deleted.
* rendering/line/LineLayoutInterfaceTextBoxes.cpp: Added.
(WebCore::LineLayoutInterface::TextBox::rect const):
(WebCore::LineLayoutInterface::TextBox::logicalRect const):
(WebCore::LineLayoutInterface::TextBox::hasHyphen const):
(WebCore::LineLayoutInterface::TextBox::isLeftToRightDirection const):
(WebCore::LineLayoutInterface::TextBox::dirOverride const):
(WebCore::LineLayoutInterface::TextBox::text const):
(WebCore::LineLayoutInterface::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutInterface::TextBoxIterator::traverseNext):
(WebCore::LineLayoutInterface::TextBoxIterator::operator== const):
(WebCore::LineLayoutInterface::simpleLineRunResolverForText):
(WebCore::LineLayoutInterface::rangeForText):
(WebCore::LineLayoutInterface::TextBoxRange::TextBoxRange):
(WebCore::LineLayoutInterface::textBoxes):
* rendering/line/LineLayoutInterfaceTextBoxes.h: Added.
(WebCore::LineLayoutInterface::TextBox::TextBox):
(WebCore::LineLayoutInterface::TextBoxIterator::operator++):
(WebCore::LineLayoutInterface::TextBoxIterator::operator!= const):
(WebCore::LineLayoutInterface::TextBoxIterator::operator* const):
(WebCore::LineLayoutInterface::TextBoxRange::begin const):
(WebCore::LineLayoutInterface::TextBoxRange::end const):
2019-08-24 Zalan Bujtas <zalan@apple.com>
[LFC][BFC] Non-inline formatting context(table, grid etc) root container should not collapse through.
https://bugs.webkit.org/show_bug.cgi?id=201099
<rdar://problem/54658946>
Reviewed by Antti Koivisto.
I didn't manage to find it in the spec, but surely formatting contexts like table, grid and flex should behave like
block so that their vertical margins are not adjoining, when they have at least one inflow child.
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough):
2019-08-24 Zalan Bujtas <zalan@apple.com>
[LFC] Add THEAD/TBODY/TFOOT output to Layout::showLayoutTree
https://bugs.webkit.org/show_bug.cgi?id=201113
<rdar://problem/54664134>
Reviewed by Antti Koivisto.
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::outputLayoutBox):
2019-08-24 Zalan Bujtas <zalan@apple.com>
[LFC] Remove redundant Layout::Box::ElementType::TableRowGroup
https://bugs.webkit.org/show_bug.cgi?id=201112
<rdar://problem/54663833>
Reviewed by Antti Koivisto.
Use Layout::Box::ElementType::TableBodyGroup instead.
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::isPaddingApplicable const):
* layout/layouttree/LayoutBox.h:
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutBox):
2019-08-23 Simon Fraser <simon.fraser@apple.com>
RenderLayerModelObject should not call private RenderLayer functions
https://bugs.webkit.org/show_bug.cgi?id=201111
Reviewed by Zalan Bujtas.
Make RenderLayerModelObject no longer a friend class of RenderLayer, giving it a public
willRemoveChildWithBlendMode() function to call. Also make the UpdateLayerPositionsFlag
enum private, providing a updateLayerPositionsAfterStyleChange() for RenderLayerModelObject,
and changing the arguments of updateLayerPositionsAfterLayout() for FrameView.
No behavior change.
* page/FrameView.cpp:
(WebCore::FrameView::didLayout):
(WebCore::updateLayerPositionFlags): Deleted.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateLayerPositionsAfterStyleChange):
(WebCore::RenderLayer::updateLayerPositionsAfterLayout):
(WebCore::RenderLayer::willRemoveChildWithBlendMode):
* rendering/RenderLayer.h:
* rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::styleDidChange):
2019-08-22 Ryosuke Niwa <rniwa@webkit.org>
Implement StaticRange constructor
https://bugs.webkit.org/show_bug.cgi?id=201055
Reviewed by Wenson Hsieh.
Added the constructor to StaticRange per https://github.com/whatwg/dom/pull/778.
Test: imported/w3c/web-platform-tests/dom/ranges/StaticRange-constructor.html
* dom/StaticRange.cpp:
(WebCore::isDocumentTypeOrAttr):
(WebCore::StaticRange::create):
* dom/StaticRange.h:
* dom/StaticRange.idl:
2019-08-23 Devin Rousso <drousso@apple.com>
Web Inspector: create additional command line api functions for other console methods
https://bugs.webkit.org/show_bug.cgi?id=200971
Reviewed by Joseph Pecoraro.
Expose all `console.*` functions in the command line API, since they're all already able to
be referenced via the `console` object.
Provide a simpler interface for other injected scripts to modify the command line API.
* inspector/CommandLineAPIModuleSource.js:
(injectedScript._inspectObject): Added.
(normalizeEventTypes): Added.
(logEvent): Added.
(canQuerySelectorOnNode): Added.
(bind): Deleted.
(value): Deleted.
(this.method.toString): Deleted.
(CommandLineAPI): Deleted.
(CommandLineAPIImpl): Deleted.
(CommandLineAPIImpl.prototype): Deleted.
(CommandLineAPIImpl.prototype._canQuerySelectorOnNode): Deleted.
(CommandLineAPIImpl.prototype.x): Deleted.
(CommandLineAPIImpl.prototype.dir): Deleted.
(CommandLineAPIImpl.prototype.dirxml): Deleted.
(CommandLineAPIImpl.prototype.keys): Deleted.
(CommandLineAPIImpl.prototype.values): Deleted.
(CommandLineAPIImpl.prototype.profile): Deleted.
(CommandLineAPIImpl.prototype.profileEnd): Deleted.
(CommandLineAPIImpl.prototype.table): Deleted.
(CommandLineAPIImpl.prototype.screenshot): Deleted.
(CommandLineAPIImpl.prototype.monitorEvents): Deleted.
(CommandLineAPIImpl.prototype.unmonitorEvents): Deleted.
(CommandLineAPIImpl.prototype.inspect): Deleted.
(CommandLineAPIImpl.prototype.queryInstances): Deleted.
(CommandLineAPIImpl.prototype.queryObjects): Deleted.
(CommandLineAPIImpl.prototype.queryHolders): Deleted.
(CommandLineAPIImpl.prototype.copy): Deleted.
(CommandLineAPIImpl.prototype.clear): Deleted.
(CommandLineAPIImpl.prototype.getEventListeners): Deleted.
(CommandLineAPIImpl.prototype._inspectedObject): Deleted.
(CommandLineAPIImpl.prototype._normalizeEventTypes): Deleted.
(CommandLineAPIImpl.prototype._logEvent): Deleted.
(CommandLineAPIImpl.prototype._inspect): Deleted.
2019-08-23 Chris Dumez <cdumez@apple.com>
Crash under TimerBase::setNextFireTime() in the NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=201097
<rdar://problem/54658339>
Reviewed by Ryosuke Niwa.
NetworkStateNotifier is a WebCore/platform class used by both WebKitLegacy and WebKit2 in the NetworkProcess.
On iOS, the lambda in the implementation of NetworkStateNotifier::startObserving() may get called by the
underlying framework on a non-main thread and we therefore want to go back to the main thread before calling
NetworkStateNotifier::singleton().updateStateSoon(). This is important because updateStateSoon() will schedule
a WebCore::Timer. The issue is that the code was using WebThreadRun() to go back the the main thread. While
this works fine in iOS WK1, it does not do what we want in WebKit2 in the network process. Indeed, before there
is no WebThread in the network process, WebThreadRun() will simply run the block on whatever thread we're one.
This would lead to crashes when trying to schedule the Timer in updateStateSoon(). To address the issue, we now
use callOnMainThread().
* platform/network/ios/NetworkStateNotifierIOS.mm:
(WebCore::NetworkStateNotifier::startObserving):
2019-08-23 Ryosuke Niwa <rniwa@webkit.org>
REGRESSION (r248807): Objects stored in ElementRareData are leaked
https://bugs.webkit.org/show_bug.cgi?id=200954
Reviewed by David Kilzer.
NodeRareData didn't have a virtual destructor. As a result, member variables
of ElementRareData did not get destructed properly.
* dom/NodeRareData.cpp:
* dom/NodeRareData.h:
(WebCore::NodeRareData::~NodeRareData):
2019-08-23 Wenson Hsieh <wenson_hsieh@apple.com>
[iOS] [WebKit2] Tapping on the “I’m” text suggestion after typing “i’” does nothing
https://bugs.webkit.org/show_bug.cgi?id=201085
<rdar://problem/53056118>
Reviewed by Tim Horton.
Exposes an existing quote folding function as a helper on TextIterator, and also adjusts foldQuoteMarks to take
a const String& rather than a String. See WebKit ChangeLog for more details.
* editing/TextIterator.cpp:
(WebCore::foldQuoteMarks):
(WebCore::SearchBuffer::SearchBuffer):
* editing/TextIterator.h:
2019-08-23 Youenn Fablet <youenn@apple.com>
Remove IDBDatabaseIdentifier::m_mainFrameOrigin
https://bugs.webkit.org/show_bug.cgi?id=201078
Reviewed by Darin Adler.
No change of behavior.
* Modules/indexeddb/IDBDatabaseIdentifier.h:
2019-08-23 Chris Dumez <cdumez@apple.com>
[geolocation] Rename interfaces and remove [NoInterfaceObject]
https://bugs.webkit.org/show_bug.cgi?id=200885
Reviewed by Alex Christensen.
Rename Geolocation interfaces and expose them on the global Window object to match the
latest specification:
- https://w3c.github.io/geolocation-api/#api_description
Test: fast/dom/Geolocation/exposed-geolocation-interfaces.html
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Headers.cmake:
* Modules/geolocation/GeoNotifier.cpp:
(WebCore::GeoNotifier::setFatalError):
(WebCore::GeoNotifier::runSuccessCallback):
(WebCore::GeoNotifier::runErrorCallback):
(WebCore::GeoNotifier::timerFired):
* Modules/geolocation/GeoNotifier.h:
* Modules/geolocation/Geolocation.cpp:
(WebCore::createGeolocationPosition):
(WebCore::createGeolocationPositionError):
(WebCore::Geolocation::lastPosition):
(WebCore::Geolocation::startRequest):
(WebCore::Geolocation::requestUsesCachedPosition):
(WebCore::Geolocation::makeCachedPositionCallbacks):
(WebCore::Geolocation::haveSuitableCachedPosition):
(WebCore::Geolocation::setIsAllowed):
(WebCore::Geolocation::sendError):
(WebCore::Geolocation::sendPosition):
(WebCore::Geolocation::cancelRequests):
(WebCore::Geolocation::handleError):
(WebCore::Geolocation::makeSuccessCallbacks):
(WebCore::Geolocation::positionChanged):
(WebCore::Geolocation::setError):
(WebCore::Geolocation::handlePendingPermissionNotifiers):
* Modules/geolocation/Geolocation.h:
* Modules/geolocation/Geolocation.idl:
* Modules/geolocation/GeolocationClient.h:
* Modules/geolocation/GeolocationController.cpp:
(WebCore::GeolocationController::positionChanged):
(WebCore::GeolocationController::lastPosition):
* Modules/geolocation/GeolocationController.h:
* Modules/geolocation/GeolocationCoordinates.cpp: Renamed from Source/WebCore/Modules/geolocation/Coordinates.cpp.
(WebCore::GeolocationCoordinates::GeolocationCoordinates):
* Modules/geolocation/GeolocationCoordinates.h: Renamed from Source/WebCore/Modules/geolocation/Coordinates.h.
(WebCore::GeolocationCoordinates::create):
(WebCore::GeolocationCoordinates::isolatedCopy const):
* Modules/geolocation/GeolocationCoordinates.idl: Renamed from Source/WebCore/Modules/geolocation/Coordinates.idl.
* Modules/geolocation/GeolocationPosition.h:
(WebCore::GeolocationPosition::create):
(WebCore::GeolocationPosition::isolatedCopy const):
(WebCore::GeolocationPosition::timestamp const):
(WebCore::GeolocationPosition::coords const):
(WebCore::GeolocationPosition::GeolocationPosition):
* Modules/geolocation/GeolocationPosition.idl: Renamed from Source/WebCore/Modules/geolocation/Geoposition.idl.
* Modules/geolocation/GeolocationPositionData.h: Copied from Source/WebCore/Modules/geolocation/GeolocationPosition.h.
(WebCore::GeolocationPositionData::GeolocationPositionData):
(WebCore::GeolocationPositionData::encode const):
(WebCore::GeolocationPositionData::decode):
(WebCore::GeolocationPositionData::isValid const):
* Modules/geolocation/GeolocationPositionError.h: Renamed from Source/WebCore/Modules/geolocation/PositionError.h.
(WebCore::GeolocationPositionError::create):
(WebCore::GeolocationPositionError::GeolocationPositionError):
* Modules/geolocation/GeolocationPositionError.idl: Renamed from Source/WebCore/Modules/geolocation/PositionError.idl.
* Modules/geolocation/Geoposition.h: Removed.
* Modules/geolocation/PositionCallback.h:
* Modules/geolocation/PositionCallback.idl:
* Modules/geolocation/PositionErrorCallback.h:
* Modules/geolocation/PositionErrorCallback.idl:
* Modules/geolocation/ios/GeolocationPositionDataIOS.mm: Renamed from Source/WebCore/Modules/geolocation/ios/GeolocationPositionIOS.mm.
(WebCore::GeolocationPositionData::GeolocationPositionData):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/mock/GeolocationClientMock.cpp:
(WebCore::GeolocationClientMock::setPosition):
(WebCore::GeolocationClientMock::lastPosition):
* platform/mock/GeolocationClientMock.h:
2019-08-20 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthn] Support NFC authenticators for iOS
https://bugs.webkit.org/show_bug.cgi?id=188624
<rdar://problem/43354214>
Reviewed by Chris Dumez.
Tests: http/wpt/webauthn/ctap-nfc-failure.https.html
http/wpt/webauthn/public-key-credential-create-failure-nfc.https.html
http/wpt/webauthn/public-key-credential-create-success-nfc.https.html
http/wpt/webauthn/public-key-credential-get-failure-nfc.https.html
http/wpt/webauthn/public-key-credential-get-success-nfc.https.html
* Modules/webauthn/apdu/ApduResponse.h:
Adds a new method to support moving m_data.
* Modules/webauthn/fido/FidoConstants.h:
Adds constants for NFC applet selection.
2019-08-23 Ross Kirsling <ross.kirsling@sony.com>
JSC should have public API for unhandled promise rejections
https://bugs.webkit.org/show_bug.cgi?id=197172
Reviewed by Keith Miller.
* bindings/js/JSDOMGlobalObject.cpp:
(WebCore::JSDOMGlobalObject::promiseRejectionTracker):
Move JSInternalPromise early-out to JSC side.
2019-08-23 Kate Cheney <katherine_cheney@apple.com>
Support ITP on a per-session basis (198923)
https://bugs.webkit.org/show_bug.cgi?id=198923
Reviewed by Chris Dumez.
This patch updated the data structure used to collect resource load
statistics in order to support ITP data collection on a per session
basis. Each sessionID is stored as a key-value pair with its own map
of ResourceLoadStatistics.
It also updated the statisticsForURL function call to perform lookups
of URL data based on sessionID.
* loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::setStatisticsUpdatedCallback):
(WebCore::ResourceLoadObserver::shouldLog const):
(WebCore::ResourceLoadObserver::logSubresourceLoading):
(WebCore::ResourceLoadObserver::logWebSocketLoading):
(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
(WebCore::ResourceLoadObserver::logFontLoad):
(WebCore::ResourceLoadObserver::logCanvasRead):
(WebCore::ResourceLoadObserver::logCanvasWriteOrMeasure):
(WebCore::ResourceLoadObserver::logNavigatorAPIAccessed):
(WebCore::ResourceLoadObserver::logScreenAPIAccessed):
(WebCore::ResourceLoadObserver::ensureResourceStatisticsForRegistrableDomain):
(WebCore::ResourceLoadObserver::statisticsForURL):
(WebCore::ResourceLoadObserver::takeStatistics):
(WebCore::ResourceLoadObserver::clearState):
* loader/ResourceLoadObserver.h:
* testing/Internals.cpp:
(WebCore::Internals::resourceLoadStatisticsForURL):
2019-08-23 Simon Fraser <simon.fraser@apple.com>
Remove unnecessary call to enclosingClippingScopes()
https://bugs.webkit.org/show_bug.cgi?id=201063
Reviewed by Zalan Bujtas.
This line of code did nothing, and was left in by mistake. Remove it.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateOverlapMap const):
2019-08-23 Simon Fraser <simon.fraser@apple.com>
Cache hasCompositedScrollableOverflow as a bit on RenderLayer
https://bugs.webkit.org/show_bug.cgi?id=201065
Reviewed by Zalan Bujtas.
hasCompositedScrollableOverflow() is pretty hot on some compositing-related code paths, and isn't
super cheap, as it checks a Setting and calls into renderer code. Optimize by computing it in
computeScrollDimensions().
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::hasCompositedScrollableOverflow const):
(WebCore::RenderLayer::computeScrollDimensions):
* rendering/RenderLayer.h:
2019-08-23 Simon Fraser <simon.fraser@apple.com>
Don't call clipCrossesPaintingBoundary() when not necessary
https://bugs.webkit.org/show_bug.cgi?id=201064
Reviewed by Zalan Bujtas.
clipCrossesPaintingBoundary() does some RenderLayer ancestor walks, so avoid
calling it when we already know that the clip rects are TemporaryClipRects.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
2019-08-23 Philippe Normand <pnormand@igalia.com>
[GStreamer] Hole-punch build is broken
https://bugs.webkit.org/show_bug.cgi?id=200972
Reviewed by Žan Doberšek.
This patch fixes link issues when building with
USE_GSTREAMER_HOLEPUNCH enabled, the hole punch client destructor
was missing.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
Remove FAST_ALLOCATED annotation, because:
* platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h:
it's now in the base class, along with a default destructor.
2019-08-22 Fujii Hironori <Hironori.Fujii@sony.com>
[SVG] -webkit-clip-path treats url(abc#xyz) as url(#xyz) because it checks only URL fragment part
https://bugs.webkit.org/show_bug.cgi?id=201030
Reviewed by Ryosuke Niwa.
Tests: svg/clip-path/clip-path-invalid-reference-001-expected.svg
svg/clip-path/clip-path-invalid-reference-001.svg
svg/clip-path/clip-path-invalid-reference-002-expected.svg
svg/clip-path/clip-path-invalid-reference-002.svg
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertClipPath): Use
SVGURIReference::fragmentIdentifierFromIRIString to get fragment
identifier from -webkit-clip-path.
2019-08-22 Andy Estes <aestes@apple.com>
[watchOS] Disable Content Filtering in the simulator build
https://bugs.webkit.org/show_bug.cgi?id=201047
Reviewed by Tim Horton.
* Configurations/FeatureDefines.xcconfig:
2019-08-22 Chris Dumez <cdumez@apple.com>
Try to recover nicely when getting an unexpected schema in the service workers database
https://bugs.webkit.org/show_bug.cgi?id=201002
<rdar://problem/54574991>
Reviewed by Youenn Fablet.
Try to recover nicely when getting an unexpected schema in the service workers database instead
of crashing the network process. To recover, we delete the database file and re-create it.
* workers/service/server/RegistrationDatabase.cpp:
(WebCore::RegistrationDatabase::openSQLiteDatabase):
(WebCore::RegistrationDatabase::ensureValidRecordsTable):
2019-08-22 Said Abou-Hallawa <sabouhallawa@apple.com>
Crash may happen when an SVG <feImage> element references the root <svg> element
https://bugs.webkit.org/show_bug.cgi?id=201014
Reviewed by Ryosuke Niwa.
When an <feImage> references an <svg> element as its target image but
this <svg> element is also one of the ancestors of the <feImage>, the
parent <filter> should not be applied.
Test: svg/filters/filter-image-ref-root.html
* svg/SVGFEImageElement.cpp:
(WebCore::SVGFEImageElement::build const):
2019-08-22 Ryosuke Niwa <rniwa@webkit.org>
Make ImageBuffer and SVG's FilterData isoheap'ed
https://bugs.webkit.org/show_bug.cgi?id=201029
Reviewed by Simon Fraser.
Made ImageBuffer and RenderSVGResourceFilter use IsoHeap.
* platform/graphics/ImageBuffer.cpp:
* platform/graphics/ImageBuffer.h:
* rendering/svg/RenderSVGResourceFilter.cpp:
* rendering/svg/RenderSVGResourceFilter.h:
2019-08-22 Adrian Perez de Castro <aperez@igalia.com>
[GTK][WPE] Fixes for non-unified builds after r248547
https://bugs.webkit.org/show_bug.cgi?id=201044
Reviewed by Philippe Normand.
* platform/audio/AudioResamplerKernel.h: Add missing inclusion of wtf/Noncopyable.h
2019-08-22 Youenn Fablet <youenn@apple.com>
Make MediaStreamTrackPrivate WeakPtrFactoryInitialization::Eager
https://bugs.webkit.org/show_bug.cgi?id=201037
Reviewed by Darin Adler.
No change of behavior, replacing m_weakThis by the more convenient Eager.
* platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::audioSamplesAvailable):
(WebCore::MediaStreamTrackPrivate::MediaStreamTrackPrivate): Deleted.
* platform/mediastream/MediaStreamTrackPrivate.h:
2019-08-17 Darin Adler <darin@apple.com>
Use makeString and multi-argument StringBuilder::append instead of less efficient multiple appends
https://bugs.webkit.org/show_bug.cgi?id=200862
Reviewed by Ryosuke Niwa.
* Modules/indexeddb/shared/IDBDatabaseInfo.cpp:
(WebCore::IDBDatabaseInfo::loggingString const): Use one append instead of multiple.
* Modules/indexeddb/shared/IDBObjectStoreInfo.cpp:
(WebCore::IDBObjectStoreInfo::loggingString const): Ditto.
* Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
(WebCore::toRTCCodecParameters): Ditto.
* Modules/plugins/YouTubePluginReplacement.cpp:
(WebCore::YouTubePluginReplacement::youTubeURLFromAbsoluteURL): Ditto.
* Modules/webdatabase/DatabaseTracker.cpp:
(WebCore::generateDatabaseFileName): Ditto.
* Modules/websockets/WebSocketExtensionDispatcher.cpp:
(WebCore::WebSocketExtensionDispatcher::createHeaderValue const): Ditto.
(WebCore::WebSocketExtensionDispatcher::appendAcceptedExtension): Ditto.
* Modules/websockets/WebSocketHandshake.cpp:
(WebCore::WebSocketHandshake::clientLocation const): Use makeString instead of
StringBuilder.
* bindings/js/JSDOMExceptionHandling.cpp:
(WebCore::appendArgumentMustBe): Use one append instead of multiple.
(WebCore::throwArgumentMustBeEnumError): Ditto.
(WebCore::throwArgumentTypeError): Ditto.
* contentextensions/CombinedURLFilters.cpp:
(WebCore::ContentExtensions::recursivePrint): Ditto.
* css/CSSBasicShapes.cpp:
(WebCore::buildCircleString): Ditto.
(WebCore::buildEllipseString): Ditto.
(WebCore::buildPolygonString): Ditto.
(WebCore::buildInsetString): Ditto.
* css/CSSCalculationValue.cpp:
(WebCore::buildCssText): Deleted.
(WebCore::CSSCalcValue::customCSSText const): Use makeString.
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::CSSComputedStyleDeclaration::cssText const): Use one append instead of multiple.
* css/CSSCrossfadeValue.cpp:
(WebCore::CSSCrossfadeValue::customCSSText const): Use makeString.
* css/CSSFilterImageValue.cpp:
(WebCore::CSSFilterImageValue::customCSSText const): Ditto.
* css/CSSFontFaceRule.cpp:
(WebCore::CSSFontFaceRule::cssText const): Ditto.
* css/CSSFontFaceSrcValue.cpp:
(WebCore::CSSFontFaceSrcValue::customCSSText const): Ditto.
* css/CSSGradientValue.cpp:
(WebCore::appendGradientStops): Moved code here from CSSLinearGradientValue::customCSSText
so it can be shared with CSSRadialGradientValue::customCSSText. Use one append per stop.
(WebCore::CSSLinearGradientValue::customCSSText const): Use one append instead of multiple.
(WebCore::CSSRadialGradientValue::customCSSText const): Ditto.
(WebCore::CSSConicGradientValue::customCSSText const): Ditto.
* css/CSSMediaRule.cpp:
(WebCore::CSSMediaRule::cssText const): Ditto.
* css/CSSNamespaceRule.cpp:
(WebCore::CSSNamespaceRule::cssText const): Ditto.
* css/CSSPageRule.cpp:
(WebCore::CSSPageRule::selectorText const): Use makeString.
* css/CSSPrimitiveValue.cpp:
(WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText const):
Use one append instead of multiple.
* css/CSSPropertySourceData.cpp:
(WebCore::CSSPropertySourceData::CSSPropertySourceData): Initialize in the
structure definition instead of the constructor.
(WebCore::CSSPropertySourceData::toString const): Use makeString.
* css/CSSPropertySourceData.h: Initialize in the structure definition.
* css/CSSStyleRule.cpp:
(WebCore::CSSStyleRule::cssText const): Use makeString.
* css/parser/CSSParser.cpp:
(WebCore::CSSParser::parseFontFaceDescriptor): Use makeString.
* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::font const): Use one append instead of multiple.
2019-08-22 Kai Ninomiya <kainino@chromium.org>
Pass conformance/attribs WebGL conformance tests
https://bugs.webkit.org/show_bug.cgi?id=200901
Reviewed by Alex Christensen.
Tested by
LayoutTests/webgl/*/conformance/attribs/gl-vertexattribpointer.html,
LayoutTests/webgl/2.0.0/conformance/more/functions/vertexAttribPointerBadArgs.html,
and other conformance/attribs/* tests not included in LayoutTests.
LayoutTests/webgl/1.0.2/conformance/more/functions/vertexAttribPointerBadArgs.html
fails as expected because it is an old snapshot of an incorrect test.
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::validateVertexAttributes):
(WebCore::WebGLRenderingContextBase::vertexAttribPointer):
* html/canvas/WebGLVertexArrayObjectBase.cpp:
(WebCore::WebGLVertexArrayObjectBase::setVertexAttribState):
* html/canvas/WebGLVertexArrayObjectBase.h:
2019-08-22 Wenson Hsieh <wenson_hsieh@apple.com>
Typing Korean in title field after typing in the body inserts extraneous characters on blog.naver.com
https://bugs.webkit.org/show_bug.cgi?id=201023
<rdar://problem/54294794>
Reviewed by Ryosuke Niwa.
Ensures that we recognize the blog editor on blog.naver.com to be a hidden editable area. This website places
focus inside an editable body element of a subframe that is completely empty (width: 0 and border: 0). See the
WebKit ChangeLog for more details.
Test: editing/selection/ios/do-not-show-selection-in-empty-borderless-subframe.html
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
2019-08-22 Youenn Fablet <youenn@apple.com>
CaptureDeviceManager does not need to be CanMakeWeakPtr
https://bugs.webkit.org/show_bug.cgi?id=200936
Reviewed by Alex Christensen.
CaptureDeviceManager does not need to create a weak pointer in deviceChanged
since it directly calls RealtimeMediaSourceCenter singleton.
CoreAudioCaptureDeviceManager does not need to create a weak pointer since its only
instance is NeverDestroyed.
No change of behavior.
* platform/mediastream/CaptureDeviceManager.cpp:
(WebCore::CaptureDeviceManager::deviceChanged):
* platform/mediastream/CaptureDeviceManager.h:
* platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:
(WebCore::createAudioObjectPropertyListenerBlock):
(WebCore::CoreAudioCaptureDeviceManager::coreAudioCaptureDevices):
(WebCore::CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices):
* platform/mediastream/mac/CoreAudioCaptureDeviceManager.h:
2019-08-22 Chris Dumez <cdumez@apple.com>
Fix unsafe usage of MediaStreamTrackPrivate from background thread in MediaStreamTrackPrivate::audioSamplesAvailable()
https://bugs.webkit.org/show_bug.cgi?id=200924
Reviewed by Youenn Fablet.
MediaStreamTrackPrivate is constructed / destructed on the main thread but its MediaStreamTrackPrivate::audioSamplesAvailable()
gets called on a background thread. The audioSamplesAvailable() method may get called until the MediaStreamTrackPrivate
destructor unregisters |this| as an observer from m_source. Event though MediaStreamTrackPrivate subclasses ThreadSafeRefCounted,
ref'ing |this| on the background thread inside audioSamplesAvailable() is still unsafe as the destructor may already be running
on the main thread.
* platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::MediaStreamTrackPrivate):
(WebCore::MediaStreamTrackPrivate::~MediaStreamTrackPrivate):
(WebCore::MediaStreamTrackPrivate::audioSamplesAvailable):
* platform/mediastream/MediaStreamTrackPrivate.h:
2019-08-22 Fujii Hironori <Hironori.Fujii@sony.com>
Remove the dead code of ScalableImageDecoder for scaling
https://bugs.webkit.org/show_bug.cgi?id=200498
Reviewed by Daniel Bates.
No ports are using the down scaling feature of
ScalableImageDecoder now. Removed it.
No behavior change.
* platform/image-decoders/ScalableImageDecoder.cpp:
(WebCore::ScalableImageDecoder::prepareScaleDataIfNecessary): Deleted.
(WebCore::ScalableImageDecoder::upperBoundScaledX): Deleted.
(WebCore::ScalableImageDecoder::lowerBoundScaledX): Deleted.
(WebCore::ScalableImageDecoder::upperBoundScaledY): Deleted.
(WebCore::ScalableImageDecoder::lowerBoundScaledY): Deleted.
(WebCore::ScalableImageDecoder::scaledY): Deleted.
* platform/image-decoders/ScalableImageDecoder.h:
(WebCore::ScalableImageDecoder::scaledSize): Deleted.
* platform/image-decoders/gif/GIFImageDecoder.cpp:
(WebCore::GIFImageDecoder::setSize):
(WebCore::GIFImageDecoder::findFirstRequiredFrameToDecode):
(WebCore::GIFImageDecoder::haveDecodedRow):
(WebCore::GIFImageDecoder::frameComplete):
(WebCore::GIFImageDecoder::initFrameBuffer):
* platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
(WebCore::JPEGImageDecoder::outputScanlines):
(WebCore::JPEGImageDecoder::setSize): Deleted.
* platform/image-decoders/jpeg/JPEGImageDecoder.h:
* platform/image-decoders/jpeg2000/JPEG2000ImageDecoder.cpp:
(WebCore::JPEG2000ImageDecoder::decode):
* platform/image-decoders/png/PNGImageDecoder.cpp:
(WebCore::PNGImageDecoder::rowAvailable):
(WebCore::PNGImageDecoder::initFrameBuffer):
(WebCore::PNGImageDecoder::frameComplete):
(WebCore::PNGImageDecoder::setSize): Deleted.
* platform/image-decoders/png/PNGImageDecoder.h:
2019-08-21 Jer Noble <jer.noble@apple.com>
Unreviewed build fix; add a 'final' declaration on shouldOverridePauseDuringRouteChange().
* Modules/mediastream/MediaStream.h:
2019-08-21 Saam Barati <sbarati@apple.com>
[WHLSL] Improve default constructor and emit fewer pointers in metal codegen
https://bugs.webkit.org/show_bug.cgi?id=200995
Reviewed by Myles C. Maxfield.
This patch makes it so that we:
1. Emit less code for copy constructors by omitting an unused variable.
2. Emit ternary expressions instead of if statements for conditional assignments.
3. Don't copy pointers for producing an lvalue from DereferenceExpression.
4. Lazily produce lvalues for GlobalVariableReference.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::inlineNativeFunction):
2019-08-21 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Vertex shader and fragment shader need to be able to come from two different programs
https://bugs.webkit.org/show_bug.cgi?id=195446
Reviewed by Saam Barati.
When an author configures WebGPU to render things, the author provides a vertex shader and a fragment
shader, and they both execute within the same draw call. It's common for authors coming from WebGL to
put the two shaders in distinct files. Until this patch, WHLSL was unable to process two shaders from
different sources which were meant to be hooked together.
The first thing this patch does is add the notion of a "shader module" to the WHLSL compiler. This
represents the source code containing one or more shaders. When the author wants to actually compile
their source, they supply one or more shader modules to the compiler. The compiler then looks in the
first module for the vertex shader and the second module for the fragment shader. The two modules are
passed by reference, so they may refer to the same underlying object, which is supported.
Shader modules have this interesting behavior where, within a shader module, funtion / type names may
refer to each other, but may not refer to any other name within any other shader module. They behave
as if all the names inside the module are not exported. So, it would seem that the most natural way to
support this would be to run the WHLSL compiler and the MSL compiler twice independently, once for each
module. However, this means that our compile times would double, which would be unfortunate. Instead,
a more performant option would be to make the WHLSL compiler smart enough to handle multiple shader
modules at once, and to produce a single merged output program that contains everything. It does this
by parsing all the shader modules into a single Program object, but remembering which items in the
Program came from which places.
This is implemented by teaching the WHLSL compiler about "namespaces." There are three namespaces: one
for each shader module, and an additional one for the standard library. Every global object (e.g.
named types and functions) knows which namespace it lives inside. The NameResolver has been educated
to understand namespaces, so when you ask it for a name in a particular namespace, it will look up
all the names both in that namespace and in the standard library's namespace, and it will union the
results together.
Function overload resolution doesn't actually go through the name resolver; instead, it's handled by
sorting all functions into buckets such that any CallExpression only has to look in a single bucket
to find all its potential overloads. These buckets can't be educated about namespaces (consider a
function which has overloads in all 3 namespaces that is called from both shader modules - all the
overloads must end up in the same bucket). Therefore, this logic is moved into
resolveFunctionOverload(), which will now disregard candidate functions if they are in an inaccessible
namespace.
Tests: webgpu/whlsl/separate-shader-modules/separate-shader-modules-10.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-11.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-12.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-13.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-14.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-15.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-16.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-17.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-18.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-19.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-2.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-20.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-21.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-22.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-23.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-24.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-25.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-26.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-27.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-3.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-4.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-5.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-6.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-7.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-8.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules-9.html
webgpu/whlsl/separate-shader-modules/separate-shader-modules.html
* Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
(WebCore::WHLSL::AST::FunctionDeclaration::nameSpace const):
(WebCore::WHLSL::AST::FunctionDeclaration::setNameSpace):
* Modules/webgpu/WHLSL/AST/WHLSLNameSpace.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLStandardLibraryUtilities.h.
* Modules/webgpu/WHLSL/AST/WHLSLNamedType.h:
(WebCore::WHLSL::AST::NamedType::nameSpace const):
(WebCore::WHLSL::AST::NamedType::setNameSpace):
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::emitMetalFunctions):
* Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
(WebCore::WHLSL::DuplicateFunctionKey::operator== const):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::FunctionKey::operator== const):
(WebCore::WHLSL::checkOperatorOverload):
(WebCore::WHLSL::Checker::checkShaderType):
(WebCore::WHLSL::Checker::visit):
(WebCore::WHLSL::Checker::resolveFunction):
* Modules/webgpu/WHLSL/WHLSLLexer.cpp:
* Modules/webgpu/WHLSL/WHLSLNameContext.cpp:
(WebCore::WHLSL::NameContext::add):
(WebCore::WHLSL::NameContext::getTypes):
(WebCore::WHLSL::NameContext::getFunctions):
(WebCore::WHLSL::NameContext::searchTypes const):
(WebCore::WHLSL::NameContext::searchFunctions const):
(WebCore::WHLSL::NameContext::globalExists const):
(WebCore::WHLSL::NameContext::localExists const):
(WebCore::WHLSL::NameContext::exists): Deleted.
* Modules/webgpu/WHLSL/WHLSLNameContext.h:
(WebCore::WHLSL::NameContext::setCurrentNameSpace):
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::NameResolver):
(WebCore::WHLSL::NameResolver::visit):
(WebCore::WHLSL::resolveNamesInTypes):
(WebCore::WHLSL::resolveTypeNamesInFunctions):
* Modules/webgpu/WHLSL/WHLSLNameResolver.h:
(WebCore::WHLSL::NameResolver::setCurrentNameSpace):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parse):
(WebCore::WHLSL::Parser::fail):
(WebCore::WHLSL::Parser::consumeIntegralLiteral):
(WebCore::WHLSL::Parser::consumeNonNegativeIntegralLiteral):
(WebCore::WHLSL::Parser::parseConstantExpression):
(WebCore::WHLSL::Parser::parseTypeSuffixAbbreviated):
(WebCore::WHLSL::Parser::parseTypeSuffixNonAbbreviated):
(WebCore::WHLSL::Parser::parseBuiltInSemantic):
(WebCore::WHLSL::Parser::parseResourceSemantic):
(WebCore::WHLSL::Parser::parseStageInOutSemantic):
(WebCore::WHLSL::Parser::parseEnumerationDefinition):
(WebCore::WHLSL::Parser::parseEnumerationMember):
(WebCore::WHLSL::Parser::parseNumThreadsFunctionAttribute):
(WebCore::WHLSL::Parser::parseVertexOrFragmentFunctionDeclaration):
(WebCore::WHLSL::Parser::parseRegularFunctionDeclaration):
(WebCore::WHLSL::Parser::parseSwitchCase):
(WebCore::WHLSL::Parser::parseForLoop):
(WebCore::WHLSL::Parser::parseVariableDeclarations):
(WebCore::WHLSL::Parser::completeAssignment):
(WebCore::WHLSL::Parser::parsePossibleTernaryConditional):
(WebCore::WHLSL::Parser::parseTerm):
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::ShaderModule::ShaderModule):
(WebCore::WHLSL::createShaderModule):
(WebCore::WHLSL::ShaderModuleDeleter::operator()):
(WebCore::WHLSL::prepareShared):
(WebCore::WHLSL::prepare):
* Modules/webgpu/WHLSL/WHLSLPrepare.h:
* Modules/webgpu/WHLSL/WHLSLProgram.h:
(WebCore::WHLSL::Program::append):
* Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.cpp:
(WebCore::WHLSL::resolveFunctionOverloadImpl):
(WebCore::WHLSL::resolveFunctionOverload):
* Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.h:
* Modules/webgpu/WHLSL/WHLSLSemanticMatcher.cpp:
(WebCore::WHLSL::matchSemantics):
(WebCore::WHLSL::findEntryPoint): Deleted.
* Modules/webgpu/WHLSL/WHLSLSemanticMatcher.h:
* Modules/webgpu/WHLSL/WHLSLStandardLibraryUtilities.cpp:
(WebCore::WHLSL::includeStandardLibrary):
* Modules/webgpu/WHLSL/WHLSLStandardLibraryUtilities.h:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/gpu/GPUShaderModule.h:
(WebCore::GPUShaderModule::platformShaderModule const):
(WebCore::GPUShaderModule::whlslModule const):
(WebCore::GPUShaderModule::whlslSource const): Deleted.
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm:
(WebCore::trySetFunctions):
(WebCore::convertComputePipelineDescriptor):
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::trySetMetalFunctions):
(WebCore::trySetFunctions):
(WebCore::convertRenderPipelineDescriptor):
* platform/graphics/gpu/cocoa/GPUShaderModuleMetal.mm:
(WebCore::GPUShaderModule::tryCreate):
(WebCore::GPUShaderModule::GPUShaderModule):
2019-08-21 Ryosuke Niwa <rniwa@webkit.org>
SVG element should become focusable when focus and key event listeners are added
https://bugs.webkit.org/show_bug.cgi?id=200997
Reviewed by Said Abou-Hallawa.
This patch removes the odd behavior WebKit (and Blink) browsers had to make SVG elements
with key or focus event listeners focusable. New behavior matches the behavior of Firefox
as well as the SVG 2.0 specification: https://www.w3.org/TR/SVG2/interact.html#Focus
Test: svg/custom/tabindex-order.html
* svg/SVGAElement.cpp:
(WebCore::SVGAElement::supportsFocus const):
* svg/SVGElement.cpp:
(WebCore::SVGElement::hasFocusEventListeners const): Deleted.
(WebCore::SVGElement::isMouseFocusable const): Deleted.
* svg/SVGElement.h:
* svg/SVGGraphicsElement.h:
2019-08-21 Jer Noble <jer.noble@apple.com>
Adopt AVSystemController_ActiveAudioRouteDidChangeNotification
https://bugs.webkit.org/show_bug.cgi?id=200992
<rdar://problem/54408993>
Reviewed by Eric Carlson.
Follow-up to r248962: When the active audio route changes, and the
system instructs us to pause, only pause the currently audible sessions.
* platform/audio/ios/MediaSessionManagerIOS.h:
* platform/audio/ios/MediaSessionManagerIOS.mm:
(WebCore::MediaSessionManageriOS::activeAudioRouteDidChange):
(-[WebMediaSessionHelper activeAudioRouteDidChange:]):
(WebCore::MediaSessionManageriOS::activeRouteDidChange): Deleted.
2019-08-21 Megan Gardner <megan_gardner@apple.com>
Do not adjust viewport if editing selection is already visible
https://bugs.webkit.org/show_bug.cgi?id=200907
<rdar://problem/53903417>
Reviewed by Simon Fraser.
Test: fast/scrolling/ios/autoscroll-input-when-very-zoomed.html
Currently due to scrolling being mostly handled by integers, we are getting
issues with rounding errors when trying to adjust the viewport while
editing text when we are significantly zoomed in. The real fix would be to
start dealing with scrolling with floats/doubles, but until such time,
we should early out of adjusting selections that we are certain are currently
visible.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollRectToVisible):
2019-08-21 Tim Horton <timothy_horton@apple.com>
[Mail] Tapping top of message scrolls back to copied text instead of top of the message
https://bugs.webkit.org/show_bug.cgi?id=200999
<rdar://problem/54564878>
Reviewed by Wenson Hsieh.
Test: editing/selection/ios/change-selection-by-tapping-with-existing-selection.html
* page/EditorClient.h:
(WebCore::EditorClient::shouldAllowSingleClickToChangeSelection const):
* page/EventHandler.cpp:
(WebCore::EventHandler::handleMousePressEventSingleClick):
Instead of encoding platform behaviors in EventHandler, defer to EditorClient.
2019-08-21 Chris Dumez <cdumez@apple.com>
Crash under StringImpl::endsWith() in SQLiteIDBBackingStore::fullDatabaseDirectoryWithUpgrade()
https://bugs.webkit.org/show_bug.cgi?id=200990
<rdar://problem/54566439>
Reviewed by Alex Christensen.
Make sure we call isolatedCopy() on SQLiteIDBBackingStore::m_databaseRootDirectory before using
it from background threads.
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::fullDatabaseDirectoryWithUpgrade):
(WebCore::IDBServer::SQLiteIDBBackingStore::databasesSizeForOrigin const):
(WebCore::IDBServer::SQLiteIDBBackingStore::deleteBackingStore):
* Modules/indexeddb/server/SQLiteIDBBackingStore.h:
(WebCore::IDBServer::SQLiteIDBBackingStore::databaseRootDirectory const):
2019-08-21 Chris Dumez <cdumez@apple.com>
Crash under StringImpl::~StringImpl() in IDBServer::computeSpaceUsedForOrigin()
https://bugs.webkit.org/show_bug.cgi?id=200989
<rdar://problem/54565546>
Reviewed by Alex Christensen.
Make sure we call isolatedCopy() on IDBServer::m_databaseDirectoryPath before using it from
background threads.
* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::createBackingStore):
(WebCore::IDBServer::IDBServer::performGetAllDatabaseNames):
(WebCore::IDBServer::IDBServer::removeDatabasesModifiedSinceForVersion):
(WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesModifiedSince):
(WebCore::IDBServer::IDBServer::removeDatabasesWithOriginsForVersion):
(WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesForOrigins):
(WebCore::IDBServer::IDBServer::computeSpaceUsedForOrigin):
(WebCore::IDBServer::IDBServer::upgradeFilesIfNecessary):
* Modules/indexeddb/server/IDBServer.h:
(WebCore::IDBServer::IDBServer::databaseDirectoryPath const):
2019-08-21 Chris Dumez <cdumez@apple.com>
Crash under StringImpl::endsWith() in RegistrationDatabase::openSQLiteDatabase()
https://bugs.webkit.org/show_bug.cgi?id=200991
<rdar://problem/54566689>
Reviewed by Geoffrey Garen.
Make sure we call isolatedCopy() on RegistrationDatabase::m_databaseDirectory before using
it from background threads.
* workers/service/server/RegistrationDatabase.cpp:
(WebCore::RegistrationDatabase::openSQLiteDatabase):
(WebCore::RegistrationDatabase::clearAll):
* workers/service/server/RegistrationDatabase.h:
(WebCore::RegistrationDatabase::databaseDirectory const):
2019-08-21 Alex Christensen <achristensen@webkit.org>
Disabling text autosizing should prevent text autosizing
https://bugs.webkit.org/show_bug.cgi?id=200955
<rdar://problem/48095374>
Reviewed by Simon Fraser.
Before this change there was no way to reliably change the text size on iOS when a -webkit-text-size-adjust:none style was applied
because it would ignore the WKPreferences value for _textAutosizingEnabled. Now that value has the desired effect when laying out.
* css/StyleResolver.cpp:
(WebCore::StyleResolver::checkForTextSizeAdjust):
2019-08-21 Jer Noble <jer.noble@apple.com>
Adopt AVSystemController_ActiveAudioRouteDidChangeNotification
https://bugs.webkit.org/show_bug.cgi?id=200992
<rdar://problem/54408993>
Reviewed by Eric Carlson.
When the system notifies us that the active audio route has changed in such a way
that necessitates pausing, pause all media sessions, exempting those that are
associated with WebRTC, since "pausing" an active audio conference isn't really
possible.
* Modules/mediastream/MediaStream.h:
* platform/audio/PlatformMediaSession.cpp:
(WebCore::PlatformMediaSession::shouldOverridePauseDuringRouteChange const):
* platform/audio/PlatformMediaSession.h:
(WebCore::PlatformMediaSessionClient::shouldOverridePauseDuringRouteChange const):
* platform/audio/ios/MediaSessionManagerIOS.h:
* platform/audio/ios/MediaSessionManagerIOS.mm:
(WebCore::MediaSessionManageriOS::activeRouteDidChange):
(-[WebMediaSessionHelper initWithCallback:]):
(-[WebMediaSessionHelper activeAudioRouteDidChange:]):
2019-08-21 Ryosuke Niwa <rniwa@webkit.org>
Put keygen element behind a runtime flag and disable it by default
https://bugs.webkit.org/show_bug.cgi?id=200850
Reviewed by Antti Koivisto.
The HTML keygen element has been removed from Chrome, Firefox, and the HTML specification in 2017.
This patch disables the keygen element by default by adding a runtime enabled flag which is disabled by default.
* bindings/js/WebCoreBuiltinNames.h:
* html/HTMLKeygenElement.idl:
* html/HTMLTagNames.in:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setKeygenElementEnabled):
(WebCore::RuntimeEnabledFeatures::keygenElementEnabled const):
2019-08-21 Chris Dumez <cdumez@apple.com>
Get rid of m_weakThis data members now that we have a safe way to call makeWeakPtr() from various threads
https://bugs.webkit.org/show_bug.cgi?id=200981
Reviewed by Alex Christensen.
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::MediaPlayerPrivateAVFoundation):
(WebCore::MediaPlayerPrivateAVFoundation::scheduleMainThreadNotification):
(WebCore::MediaPlayerPrivateAVFoundation::dispatchNotification):
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
* platform/mediastream/libwebrtc/LibWebRTCDTMFSenderBackend.cpp:
(WebCore::LibWebRTCDTMFSenderBackend::LibWebRTCDTMFSenderBackend):
(WebCore::LibWebRTCDTMFSenderBackend::OnToneChange):
* platform/mediastream/libwebrtc/LibWebRTCDTMFSenderBackend.h:
* platform/network/cocoa/CookieStorageObserver.h:
* platform/network/cocoa/CookieStorageObserver.mm:
(WebCore::CookieStorageObserver::CookieStorageObserver):
(WebCore::CookieStorageObserver::cookiesDidChange):
2019-08-21 Chris Dumez <cdumez@apple.com>
Add internal setting to disable SecureContext checks
https://bugs.webkit.org/show_bug.cgi?id=200980
<rdar://problem/54438512>
Reviewed by Alex Christensen.
Add internal setting to disable SecureContext checks, in order to facilitate development
for features like Service workers or device orientation / motion.
* dom/Document.cpp:
(WebCore::Document::isSecureContext const):
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::secureContextChecksEnabled const):
(WebCore::RuntimeEnabledFeatures::setSecureContextChecksEnabled):
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::isSecureContext const):
2019-08-21 Jer Noble <jer.noble@apple.com>
[iOS] HLS streams disappear from Now Playing when paused on the lock screen
https://bugs.webkit.org/show_bug.cgi?id=200951
<rdar://problem/54534301>
Reviewed by Eric Carlson.
The AVPlayerItemTracks will get recreated on occasion (during seeks, and when
changing buffering policy) which can result in a player which no longer reports
that it has audio, which in turn results in Now Playing no longer considering
the web page to be an eligable now playing application. Bridge this gap by also
taking AVPlayerItem.hasEnabledAudio into account when determining whether the
player has audio.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged):
2019-08-21 Adrian Perez de Castro <aperez@igalia.com>
[GStreamer] Clang warns about mismatched type tag in declarations for ImageOrientation
https://bugs.webkit.org/show_bug.cgi?id=200982
Reviewed by Carlos Alberto Lopez Perez.
No new tests needed.
* platform/graphics/gstreamer/VideoTextureCopierGStreamer.h: Change
type tag in the forward declaration to "struct", hence matching the
actual type definition.
2019-08-21 Antti Koivisto <antti@apple.com>
ASSERTION FAILED: !s_isInvalidatingStyleWithRuleSets in com.apple.WebCore: WebCore::DocumentRuleSets::collectFeatures const
https://bugs.webkit.org/show_bug.cgi?id=200919
<rdar://problem/53413013>
Reviewed by Zalan Bujtas.
Bots show that in some timing-dependent cases we may end up constructing a style resolver in the middle the class change invalidation.
This happens flakily on Pad bots in
media/track/track-node-add-remove.html
media/W3C/video/events/event_loadstart_manual.html
media/W3C/video/readyState/readyState_initial.html
and also reproes locally with lots of runs over these tests.
* style/StyleInvalidationFunctions.h:
(WebCore::Style::traverseRuleFeatures):
Ensure that for elements in shadow tree the host resolver is also always constructed before starting rule-based invalidation.
2019-08-21 Antoine Quint <graouts@apple.com>
REGRESSION: naver.com - Multiple taps are required to open email
https://bugs.webkit.org/show_bug.cgi?id=200979
<rdar://problem/54295239>
Reviewed by Dean Jackson.
The "click" events on subjects in the message list are prevented by preventDefault() being called from a "mouseup" event listener.
This shouldn't actually happen, but due to how simulated mouse events are implemented, there is no current distinction between
"touchend" and "mouseup" events. It is safe however to opt mail.naver.com out of simulated mouse events altogether.
* page/Quirks.cpp:
(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
2019-08-21 Devin Rousso <drousso@apple.com>
Web Inspector: Page: re-add enable/disable after r248454
https://bugs.webkit.org/show_bug.cgi?id=200947
Reviewed by Joseph Pecoraro.
We shouldn't design the agent system with only Web Inspector in mind. Other clients may want
to have different functionality, not being told about frames creation/updates/destruction.
In these cases, we should have graceful error message failures for other agents that rely on
the Page agent.
* inspector/agents/InspectorPageAgent.h:
* inspector/agents/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::didCreateFrontendAndBackend):
(WebCore::InspectorPageAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorPageAgent::enable): Added.
(WebCore::InspectorPageAgent::disable): Added.
* inspector/agents/InspectorApplicationCacheAgent.cpp:
(WebCore::InspectorApplicationCacheAgent::updateApplicationCacheStatus):
(WebCore::InspectorApplicationCacheAgent::getFramesWithManifests):
(WebCore::InspectorApplicationCacheAgent::assertFrameWithDocumentLoader):
* inspector/agents/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::createStyleSheet):
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::highlightSelector):
(WebCore::InspectorDOMAgent::highlightFrame):
(WebCore::InspectorDOMAgent::buildObjectForNode):
* inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::setFrameIdentifier):
* inspector/agents/page/PageNetworkAgent.cpp:
(WebCore::PageNetworkAgent::loaderIdentifier):
(WebCore::PageNetworkAgent::frameIdentifier):
(WebCore::PageNetworkAgent::scriptExecutionContext):
* inspector/agents/page/PageRuntimeAgent.cpp:
(WebCore::PageRuntimeAgent::didCreateMainWorldContext):
(WebCore::PageRuntimeAgent::reportExecutionContextCreation):
2019-08-20 Ryosuke Niwa <rniwa@webkit.org>
nextElementWithGreaterTabIndex should use shadowAdjustedTabIndex
https://bugs.webkit.org/show_bug.cgi?id=200943
Reviewed by Wenson Hsieh.
Use shadowAdjustedTabIndex instead of tabIndexForElement in nextElementWithGreaterTabIndex.
Because nextElementWithGreaterTabIndex is only called to find an element with a tab index
set to a greater value than the argument tabIndex, which is always a positive integer,
whether we call shadowAdjustedTabIndex or tabIndexForElement has no effect on an element
with a shadow root or on a slot element. Furthermore, none of the elements with
an isKeyboardFocusable override can have a author defined shadow root attached either.
As a result, this refactoring will have no observable behavioral change.
No new tests since there should be no observable behavior change.
* page/FocusController.cpp:
(WebCore::tabIndexForElement): Merged into shadowAdjustedTabIndex.
(WebCore::shadowAdjustedTabIndex):
(WebCore::nextElementWithGreaterTabIndex):
2019-08-20 Ryosuke Niwa <rniwa@webkit.org>
Remove MathMLElement::defaultTabIndex()
https://bugs.webkit.org/show_bug.cgi?id=200944
Reviewed by Frédéric Wang.
Removed MathMLElement::defaultTabIndex since it doesn't have any observable effect since
MathMLElement doesn't expose tabIndex IDL attribute, and sequential (tab key) focus navigation
checks MathMLElement::isKeyboardFocusable, which doesn't rely on defaultTabIndex, anyway.
* mathml/MathMLElement.cpp:
(WebCore::MathMLElement::defaultTabIndex const): Deleted.
* mathml/MathMLElement.h:
2019-08-20 Devin Rousso <drousso@apple.com>
Web Inspector: Implement `queryHolders` Command Line API
https://bugs.webkit.org/show_bug.cgi?id=200458
Reviewed by Joseph Pecoraro.
Call `queryHolders(object)` from the Console to return an array of objects that strongly
reference the given `object`. This could be very useful for finding JavaScript "leaks".
Test: inspector/console/queryHolders.html
* inspector/CommandLineAPIModuleSource.js:
(CommandLineAPIImpl.prototype.queryHolders): Added.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GenerateImplementation):
* bindings/js/DOMGCOutputConstraint.cpp:
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::analyzeHeap): Added.
(WebCore::JSDOMWindow::heapSnapshot): Deleted.
* bindings/js/JSDocumentCustom.cpp:
(WebCore::JSDocument::analyzeHeap): Added.
(WebCore::JSDocument::heapSnapshot): Deleted.
* bindings/scripts/test/JS/*:
Rename `heapSnapshot` to `analyzeHeap` to match JavaScriptCore changes.
2019-08-20 Saam Barati <sbarati@apple.com>
[WHLSL] We need to null check when emitting native code for operator&.<field-name>
https://bugs.webkit.org/show_bug.cgi?id=200846
Reviewed by Myles C. Maxfield.
Test: webgpu/whlsl/structure-field-access-on-null.html
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::inlineNativeFunction):
2019-08-20 Justin Fan <justin_fan@apple.com>
Unreviewed comment follow-up for https://bugs.webkit.org/show_bug.cgi?id=200752.
* html/canvas/GPUBasedCanvasRenderingContext.h:
2019-08-16 Ryosuke Niwa <rniwa@webkit.org>
The default tab index of output and fieldset should be -1
https://bugs.webkit.org/show_bug.cgi?id=200834
Reviewed by Alex Christensen.
This patch updates the default tab index of output and fieldset to -1 to match the behavior of
Chrome and Firefox as well as the latest HTML specification:
https://html.spec.whatwg.org/multipage/interaction.html#the-tabindex-attribute
To do that, this patch replaces HTMLFormControlElement::defaultTabIndex with defaultTabIndex
implementation in each one of its concrete subclass such as HTMLButtonElement to mirror
the language of the specification as follows:
HTMLFormControlElement
HTMLButtonElement -> 0
HTMLFieldSetElement -> -1
HTMLFormControlElementWithState
HTMLKeygenElement -> 0 - Not specified anywhere but preserving the existing behavior.
HTMLSelectElement -> 0
HTMLTextFormControlElement
HTMLInputElement -> 0
HTMLTextAreaElement -> 0
HTMLOutputElement -> -1
Even though Element::shouldBeIgnoredInSequentialFocusNavigation() checks the value of
defaultTabIndex, this patch does not affect the actual sequential (tab) focus navigation:
Beacuse HTMLOutputElement and HTMLFieldSetElement have supportsFocus overrides to call
HTMLElement::supportsFocus instead of HTMLFormControlElement::supportsFocus, these two
elements are focusable only when tabindex is set or it's a root content editable element.
But all root editable elements are focusable anyway and the default tab index does not
matter when tabindex is set.
Test: fast/dom/tabindex-defaults.html
* html/HTMLButtonElement.cpp:
(WebCore::HTMLButtonElement::defaultTabIndex const): Added.
* html/HTMLButtonElement.h:
* html/HTMLFormControlElement.cpp:
(WebCore::HTMLFormControlElement::defaultTabIndex const): Deleted.
* html/HTMLFormControlElement.h:
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::defaultTabIndex const): Added.
* html/HTMLKeygenElement.h:
* html/HTMLKeygenElement.cpp:
(WebCore::HTMLKeygenElement::defaultTabIndex const): Added.
* html/HTMLKeygenElement.h:
* html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::defaultTabIndex const): Added.
* html/HTMLSelectElement.h:
* html/HTMLTextAreaElement.cpp:
(WebCore::HTMLTextAreaElement::defaultTabIndex const): Added.
* html/HTMLTextAreaElement.h:
2019-08-20 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] isConsideredClickable should be able to process elements with no renderers
https://bugs.webkit.org/show_bug.cgi?id=200926
<rdar://problem/54519579>
Reviewed by Simon Fraser.
This patch fixes the crash when the visible->hidden change triggers an isConsideredClickable() call with a 'display: none' element.
Test: fast/events/touch/ios/content-observation/going-from-hidden-to-visible-and-to-hidden-crash.html
* page/ios/ContentChangeObserver.cpp:
(WebCore::isConsideredClickable):
2019-08-20 Wenson Hsieh <wenson_hsieh@apple.com>
Clicking the search icon on ae.com hangs the web content process
https://bugs.webkit.org/show_bug.cgi?id=200889
<rdar://problem/54359330>
Reviewed by Ryosuke Niwa.
The hang occurs under FrameSelection::selectionAtSentenceStart, while computing an EditorState to send to the UI
process. This act of determining whether the given positon is at the start of sentence entails moving backwards
from the start of the current visible selection until the start of a paragraph or sentence is found, using
VisiblePosition::previous to iterate backwards through VisiblePositions.
However, on this website, VisiblePosition::previous ends up just returning the current position, and we loop
infinitely as a result because we never actually move backwards. This happens because VisiblePosition::previous
first uses previousVisuallyDistinctCandidate to find a candidate Position before the current position, but when
the position is canonicalized to create a VisiblePosition, it is moved back to its original Position as the deep
equivalent.
In the attached test case (which is representative of the relevant part of the DOM on ae.com), we try to find
the previous VisiblePosition from (#c, 0). The previous visually distinct candidate we initially find is
(#b, 0), since:
1. The enclosing renderer is a RenderBlock with a non-zero height.
2. The enclosing renderer has no rendered children.
3. The position is at the first editing position in the node (i.e. the span element).
However, when canonicalizing the position, we find that neither the upstream nor the downstream position is a
candidate because both the upstream and downstream nodes end up well outside of the span (the upstream node ends
up being at the start of the body element, and the downstream position ends up right before the start of #c's
container). The downstream position is at the end of a text node with a leading newline, it's not a candidate
because its last caret offset is less than the length of the text node.
As a result, even though the given position (#b, 0) is a candidate itself, its downstream and upstream positions
are not. Thus, VisiblePosition::canonicalPosition expands the scope of its candidate positions to the next
closest candidate positions; the next candidate position is (#c, 0). Both of these candidates are outside of the
containing block, so we (somewhat arbitrarily) break the tie by choosing the next visible position, bringing us
back to (#c, 0).
There are several ways to fix this, one of which involves fixing the downstream/upstream positions of (#b, 0) so
that they no longer jump out of the containing block of #b and cause (#b, 0) to be an invalid visible position
despite being a candidate position. This can be achieved by adjusting the heuristic in
endsOfNodeAreVisuallyDistinctPositions (used when moving upstream or downstream). Currently, this helper
function returns false for #b because they contain a single (non-rendered) whitespace character. Removing this
extraneous whitespace character actually causes the problem to stop reproducing, since #b and #c no longer
contain any child nodes. This is important because the heuristic in Position::downstream attempts to keep the
downstream position within the confines of the enclosing visual boundary, which (currently) ends up being the
entire body element because endsOfNodeAreVisuallyDistinctPositions returns false for #b.
To avoid this scenario, we teach endsOfNodeAreVisuallyDistinctPositions to treat inline-block containers that
are empty (that is, contain no rendered content) but may have children for editing in the same way as inline-
block containers that don't have any children; in both scenarios, they may contain a candidate position, so we
should treat the ends of the container node as being visually distinct.
Doing so causes the downstream position of (#b, 0) to be kept within the immediate containing span element,
which then allows (#b, 0) to be a canonical VisiblePosition.
Tests: fast/events/focus-anchor-with-tabindex-hang.html
editing/selection/modify-backward-inline-block-containers.html
* editing/VisiblePosition.cpp:
(WebCore::VisiblePosition::previous const):
2019-08-20 Brent Fulgham <bfulgham@apple.com>
[FTW] Fix scrolling in modern WebKit views
https://bugs.webkit.org/show_bug.cgi?id=200923
Reviewed by Don Olmstead.
The initial implementation of scrolling in Direct2D had errors that
caused hilarious rendering glitches. This patch corrects the logic
so that page scroll is correct.
* platform/graphics/win/BackingStoreBackendDirect2D.h:
* platform/graphics/win/BackingStoreBackendDirect2DImpl.cpp:
(WebCore::BackingStoreBackendDirect2DImpl::scroll):
(WebCore::BackingStoreBackendDirect2DImpl::bitmapBrush):
* platform/graphics/win/BackingStoreBackendDirect2DImpl.h:
* platform/graphics/win/Direct2DOperations.cpp:
(WebCore::Direct2D::drawNativeImage):
* platform/graphics/win/Direct2DUtilities.cpp:
(WebCore::Direct2D::copyRectFromOneSurfaceToAnother):
(WebCore::Direct2D::writeImageToDiskAsPNG): Added diagnostic utility to
dump textures to disk for review.
* platform/graphics/win/Direct2DUtilities.h:
* platform/graphics/win/ImageDecoderDirect2D.cpp:
(WebCore::ImageDecoderDirect2D::systemImagingFactory): Switch to more
recent factory with additional features.
* platform/graphics/win/ImageDecoderDirect2D.h:
2019-08-20 Saam Barati <sbarati@apple.com>
[WHLSL] Only take the pointer of a variable or global variable reference if it is used
https://bugs.webkit.org/show_bug.cgi?id=200908
Reviewed by Dean Jackson.
Previously, we would always emit Metal code to produce an lvalue pointer
even when it wasn't used. This patch adds a mechanism to lazily generate
such pointers when they're actually needed, since we often don't use them.
This is a 7% Metal compile time speedup on compute_boids with a p value of
0.0001.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::appendRightValueWithNullability):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::appendLeftValue):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::takeLastLeftValue):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
* Modules/webgpu/WHLSL/Metal/WHLSLMangledNames.h:
(WebCore::WHLSL::Metal::MangledVariableName::operator bool const):
2019-08-20 Chris Dumez <cdumez@apple.com>
Unsafe usage of CookieStorageObserver from a background thread
https://bugs.webkit.org/show_bug.cgi?id=200920
Reviewed by Alex Christensen.
Unsafe usage of CookieStorageObserver from a background thread. CookieStorageObserver gets
constructed / destructed on the main thread. However, CookieStorageObserver::cookiesDidChange()
gets called on a background thread and tries to ref |this|. Even though CookieStorageObserver
is ThreadSafeRefCounted, this is still unsafe because the CookieStorageObserver destructor may
already be running on the main thread when CookieStorageObserver::cookiesDidChange() gets called
on the background thread.
* platform/network/NetworkStorageSession.h:
* platform/network/cocoa/CookieStorageObserver.h:
* platform/network/cocoa/CookieStorageObserver.mm:
(WebCore::CookieStorageObserver::CookieStorageObserver):
(WebCore::CookieStorageObserver::cookiesDidChange):
(WebCore::CookieStorageObserver::create): Deleted.
* platform/network/cocoa/NetworkStorageSessionCocoa.mm:
(WebCore::NetworkStorageSession::cookieStorageObserver const):
2019-08-20 Chris Dumez <cdumez@apple.com>
Use a strongly typed identifier for StorageNamespace's identifier
https://bugs.webkit.org/show_bug.cgi?id=200895
Reviewed by Alex Christensen and Youenn Fablet.
* storage/StorageNamespace.h:
2019-08-20 Youenn Fablet <youenn@apple.com>
Make IDB quota check lambdas take a weak of UniqueIDBDatabaseTransaction instead of a ref
https://bugs.webkit.org/show_bug.cgi?id=196696
Reviewed by Alex Christensen.
Refing the transaction in the lambdas extend their lifetime.
Taking a weak pointer of them is better as this will not extend their lifetime.
In particular, if the database is deleted, the corresponding transactions might be deleted.
This makes quota checks less intrusive in IDB lifetime management.
Covered by existing tests.
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::createObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::deleteObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::renameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::clearObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::createIndex):
(WebCore::IDBServer::UniqueIDBDatabase::deleteIndex):
(WebCore::IDBServer::UniqueIDBDatabase::renameIndex):
(WebCore::IDBServer::UniqueIDBDatabase::commitTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::abortTransaction):
* Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:
2019-08-20 Youenn Fablet <youenn@apple.com>
Remove DeferredPromise::sessionID()
https://bugs.webkit.org/show_bug.cgi?id=200616
Reviewed by Alex Christensen.
Calling sessionID() on DeferredPromise is valid if the DeferredPromise is not suspended.
Since this might not always be true in call sites, add a resolve promise that is passed a function that returns
the value to resolve.
This function is taking a ScriptExecutionContext from which the session ID can be retrieved.
This is safe since the function will only be called if the DeferredPromise is not suspended.
Update call sites accordingly.
No change of behavior.
* Modules/fetch/FetchBodyConsumer.cpp:
(WebCore::resolveWithTypeAndData):
(WebCore::FetchBodyConsumer::resolve):
* Modules/fetch/FetchBodyOwner.cpp:
(WebCore::FetchBodyOwner::blob):
* bindings/js/JSDOMPromiseDeferred.h:
(WebCore::DeferredPromise::resolveCallbackValueWithNewlyCreated):
(WebCore::DeferredPromise::sessionID const): Deleted.
2019-08-20 Youenn Fablet <youenn@apple.com>
PendingActivationMediaStream does not need to be refcounted
https://bugs.webkit.org/show_bug.cgi?id=200879
Reviewed by Alex Christensen.
No observable change of behavior.
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::allow):
(WebCore::UserMediaRequest::mediaStreamDidFail):
No need to asynchronously remove the observer since MediaStreamPrivate handles that properply now.
* Modules/mediastream/UserMediaRequest.h:
2019-08-19 Devin Rousso <drousso@apple.com>
Web Inspector: Debugger: add a global breakpoint for pausing in the next microtask
https://bugs.webkit.org/show_bug.cgi?id=200652
Reviewed by Joseph Pecoraro.
Test: inspector/debugger/setPauseOnMicrotasks.html
* inspector/agents/page/PageDebuggerAgent.h:
* inspector/agents/worker/WorkerDebuggerAgent.h:
* inspector/agents/InspectorTimelineAgent.h:
(WebCore::InspectorTimelineAgent::willRunMicrotask): Added.
(WebCore::InspectorTimelineAgent::didRunMicrotask): Added.
2019-08-19 Sam Weinig <weinig@apple.com>
[WHLSL] Make generated Metal code should be indented properly to ease reading while debugging
https://bugs.webkit.org/show_bug.cgi?id=200870
Reviewed by Saam Barati.
Adds indentation of generated Metal code using the new WTF::Indentation and WTF::IndentationScope
classes. This makes reading the generated Metal code much easier while debugging it, and does not
seem to introduce any performance regression (I measured no difference on compute_boids.html test).
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
(WebCore::WHLSL::Metal::EntryPointScaffolding::emitResourceHelperTypes):
(WebCore::WHLSL::Metal::EntryPointScaffolding::emitUnpackResourcesAndNamedBuiltIns):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::emitHelperTypes):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::emitSignature):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::emitUnpack):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::emitPack):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::emitHelperTypes):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::emitSignature):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::emitUnpack):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::emitPack):
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::emitHelperTypes):
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::emitSignature):
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::emitUnpack):
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::emitPack):
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h:
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::emitLoop):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::inlineNativeFunction):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.h:
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):
2019-08-19 Devin Rousso <drousso@apple.com>
Web Inspector: have more aggressive checks for dataURLs provided to `console.screenshot`
https://bugs.webkit.org/show_bug.cgi?id=200747
Reviewed by Joseph Pecoraro.
Always send any /data:*+/ strings to the frontend and have it render there. If that doesn't
work, have the frontend "spoof" an error message look and feel.
Test: inspector/console/console-screenshot.html
* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::screenshot):
2019-08-19 Jer Noble <jer.noble@apple.com>
[Cocoa] Fix misspelling of -preventsDisplaySleepForVideoPlayback
https://bugs.webkit.org/show_bug.cgi?id=200774
<rdar://problem/54321071>
Reviewed by Eric Carlson.
Only declare the API on platforms where that API is undefined, so as
to catch this kind of misspelling at compile time.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayer):
2019-08-19 Justin Fan <justin_fan@apple.com>
WebGPU layers don't show up sometimes
https://bugs.webkit.org/show_bug.cgi?id=200752
Reviewed by Dean Jackson.
Ensure HTML canvas is properly notified of WebGPU updates. Fixes alpha WebGPU MotionMark benchmark no-show issue.
Normal WebGPU behavior unaffected and covered by existing tests.
* Modules/webgpu/GPUCanvasContext.cpp:
(WebCore::GPUCanvasContext::configureSwapChain):
(WebCore::GPUCanvasContext::reshape):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::inlineNativeFunction):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* html/canvas/GPUBasedCanvasRenderingContext.cpp: Added.
(WebCore::GPUBasedCanvasRenderingContext::GPUBasedCanvasRenderingContext):
(WebCore::GPUBasedCanvasRenderingContext::htmlCanvas const):
(WebCore::GPUBasedCanvasRenderingContext::notifyCanvasContentChanged):
* html/canvas/GPUBasedCanvasRenderingContext.h:
(WebCore::GPUBasedCanvasRenderingContext::GPUBasedCanvasRenderingContext): Deleted.
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::reshape):
(WebCore::WebGLRenderingContextBase::htmlCanvas): Deleted.
* html/canvas/WebGLRenderingContextBase.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::contentChanged):
2019-08-19 Sihui Liu <sihui_liu@apple.com>
Remove IDB-specific quota
https://bugs.webkit.org/show_bug.cgi?id=196545
<rdar://problem/54201783>
Reviewed by Youenn Fablet.
Re-land r248526 with fix for performance tests.
No change of behavior as IDB specific quota is no longer used.
Instead a global quota is used. This quota currently handles IDB and Cache API.
* Modules/indexeddb/server/IDBBackingStore.h:
* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::createBackingStore):
(WebCore::IDBServer::IDBServer::setPerOriginQuota): Deleted.
* Modules/indexeddb/server/IDBServer.h:
(WebCore::IDBServer::IDBServer::perOriginQuota const): Deleted.
* Modules/indexeddb/server/MemoryIDBBackingStore.h:
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::SQLiteIDBBackingStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::beginTransaction):
(WebCore::IDBServer::SQLiteIDBBackingStore::createObjectStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::renameObjectStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::createIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedPutIndexRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::renameIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::addRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedSetKeyGeneratorValue):
(WebCore::IDBServer::SQLiteIDBBackingStore::quotaForOrigin const): Deleted.
(WebCore::IDBServer::SQLiteIDBBackingStore::maximumSize const): Deleted.
* Modules/indexeddb/server/SQLiteIDBBackingStore.h:
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::setQuota): Deleted.
* Modules/indexeddb/server/UniqueIDBDatabase.h:
2019-08-19 Antoine Quint <graouts@apple.com>
[Pointer Events] Removing the capture element prevents future pointer events from being dispatched on macOS
https://bugs.webkit.org/show_bug.cgi?id=200887
<rdar://problem/54104147>
Reviewed by Dean Jackson.
Test: pointerevents/mouse/pointer-capture-element-removal.html
While we should only dispatch a lostpointercapture event to a connected element, clearing the capture element set on the frame's EventHandler
should always happen, regardless of the connected status of the previous capture element, since otherwise all future mouse and pointer events
would be targeted at the now-disconnected, former capture element.
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::processPendingPointerCapture):
2019-08-19 Youenn Fablet <youenn@apple.com>
Remove SessionID::emptySessionID()
https://bugs.webkit.org/show_bug.cgi?id=200811
Reviewed by Alex Christensen.
No change of behavior, update SessionID call sites.
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
* dom/Document.cpp:
(WebCore::Document::sessionID const):
(WebCore::Document::privateBrowsingStateDidChange):
* workers/service/ServiceWorkerProvider.cpp:
(WebCore::ServiceWorkerProvider::registerServiceWorkerClients):
2019-08-19 Youenn Fablet <youenn@apple.com>
Stop MediaDevices timer when stopping MediaDevices
https://bugs.webkit.org/show_bug.cgi?id=200880
Reviewed by Eric Carlson.
No change of behavior.
Stop timer when stopping MediaDevices and check for MediaDevices being stopped before scheduling the timer.
* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::stop):
Remove document/controller check since at that point,
the document should not be null and the controller should be there.
(WebCore::MediaDevices::scheduledEventTimerFired):
(WebCore::MediaDevices::listenForDeviceChanges):
2019-08-19 Yusuke Suzuki <ysuzuki@apple.com>
Unreviewed, speculative build fix for GTK and WinCairo
https://bugs.webkit.org/show_bug.cgi?id=200620
It seems that these files have different flags that is not tested in EWS.
* platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:
* platform/audio/gstreamer/AudioSourceProviderGStreamer.h:
2019-08-19 Yusuke Suzuki <ysuzuki@apple.com>
[WTF] Add makeUnique<T>, which ensures T is fast-allocated, actual static_assert part
https://bugs.webkit.org/show_bug.cgi?id=200620
Reviewed by Geoff Garen.
* platform/network/curl/CookieJarCurl.h:
2019-08-19 Youenn Fablet <youenn@apple.com>
enumerateDevices should return the same JS objects if called twice
https://bugs.webkit.org/show_bug.cgi?id=200767
Reviewed by Eric Carlson.
Make MediaDevices store the last list of enumerated MediaDeviceInfo objects.
Reuse them for the next enumerateDevices call if needed.
In case of a device change event, make sure the next enumerateDevices call will fetch the new list of devices.
When constructing the new list of devices, reuse any preexisting device in the old list as specified by
https://w3c.github.io/mediacapture-main/#dom-mediadevices-enumeratedevices.
Update enumerateDevices to use a completion handler.
Remove MediaDevicesRequest and MediaDevicesEnumerationRequest.
Covered by updated test and existing tests.
* Modules/mediastream/MediaDeviceInfo.cpp:
(WebCore::MediaDeviceInfo::MediaDeviceInfo):
(WebCore::MediaDeviceInfo::create):
* Modules/mediastream/MediaDeviceInfo.h:
* Modules/mediastream/MediaDeviceInfo.idl:
* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::MediaDevices):
(WebCore::MediaDevices::stop):
(WebCore::MediaDevices::refreshDevices):
(WebCore::MediaDevices::enumerateDevices):
(WebCore::MediaDevices::scheduledEventTimerFired):
(WebCore::MediaDevices::listenForDeviceChanges):
(WebCore::MediaDevices::addEventListener):
* Modules/mediastream/MediaDevices.h:
* Modules/mediastream/MediaDevices.idl:
* Modules/mediastream/MediaDevicesEnumerationRequest.cpp: Removed.
* Modules/mediastream/MediaDevicesEnumerationRequest.h: Removed.
* Modules/mediastream/MediaDevicesRequest.cpp: Removed.
* Modules/mediastream/MediaDevicesRequest.h: Removed.
* Modules/mediastream/RTCRtpSender.cpp:
* Modules/mediastream/UserMediaClient.h:
* Modules/mediastream/UserMediaController.cpp:
(WebCore::isAllowedToUse):
(WebCore::UserMediaController::canCallGetUserMedia const):
* Modules/mediastream/UserMediaController.h:
(WebCore::UserMediaController::enumerateMediaDevices):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2019-08-18 Yusuke Suzuki <ysuzuki@apple.com>
[WTF] Add makeUnique<T>, which ensures T is fast-allocated, makeUnique / makeUniqueWithoutFastMallocCheck part
https://bugs.webkit.org/show_bug.cgi?id=200620
Reviewed by Geoff Garen.
* Modules/applicationmanifest/ApplicationManifestParser.cpp:
(WebCore::ApplicationManifestParser::logDeveloperWarning):
* Modules/beacon/NavigatorBeacon.cpp:
(WebCore::NavigatorBeacon::from):
* Modules/cache/DOMWindowCaches.cpp:
(WebCore::DOMWindowCaches::from):
* Modules/cache/WorkerGlobalScopeCaches.cpp:
(WebCore::WorkerGlobalScopeCaches::from):
* Modules/credentialmanagement/NavigatorCredentials.cpp:
(WebCore::NavigatorCredentials::from):
* Modules/encryptedmedia/InitDataRegistry.cpp:
(WebCore::InitDataRegistry::extractPsshBoxesFromCenc):
* Modules/encryptedmedia/legacy/LegacyCDM.cpp:
(WebCore::LegacyCDM::create):
* Modules/encryptedmedia/legacy/LegacyCDMPrivateClearKey.cpp:
(WebCore::LegacyCDMPrivateClearKey::createSession):
* Modules/fetch/FetchBodyOwner.cpp:
(WebCore::FetchBodyOwner::loadBlob):
* Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::fetch):
(WebCore::FetchResponse::BodyLoader::start):
* Modules/gamepad/NavigatorGamepad.cpp:
(WebCore::NavigatorGamepad::from):
* Modules/geolocation/GeolocationController.cpp:
(WebCore::provideGeolocationTo):
* Modules/geolocation/NavigatorGeolocation.cpp:
(WebCore::NavigatorGeolocation::from):
* Modules/indexeddb/DOMWindowIndexedDatabase.cpp:
(WebCore::DOMWindowIndexedDatabase::from):
* Modules/indexeddb/IDBObjectStore.cpp:
(WebCore::IDBObjectStore::index):
* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::objectStore):
(WebCore::IDBTransaction::createObjectStore):
(WebCore::IDBTransaction::createIndex):
* Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.cpp:
(WebCore::WorkerGlobalScopeIndexedDatabase::from):
* Modules/indexeddb/client/IDBConnectionToServer.cpp:
(WebCore::IDBClient::IDBConnectionToServer::IDBConnectionToServer):
* Modules/indexeddb/client/TransactionOperation.cpp:
(WebCore::IDBClient::TransactionOperation::TransactionOperation):
* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::getOrCreateUniqueIDBDatabase):
(WebCore::IDBServer::IDBServer::createBackingStore):
(WebCore::IDBServer::IDBServer::ensureQuotaUser):
* Modules/indexeddb/server/IndexValueStore.cpp:
(WebCore::IDBServer::IndexValueStore::addRecord):
* Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp:
(WebCore::IDBServer::MemoryBackingStoreTransaction::create):
(WebCore::IDBServer::MemoryBackingStoreTransaction::MemoryBackingStoreTransaction):
(WebCore::IDBServer::MemoryBackingStoreTransaction::recordValueChanged):
* Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
(WebCore::IDBServer::MemoryIDBBackingStore::create):
(WebCore::IDBServer::MemoryIDBBackingStore::getOrEstablishDatabaseInfo):
(WebCore::IDBServer::MemoryIDBBackingStore::setDatabaseInfo):
* Modules/indexeddb/server/MemoryIndex.cpp:
(WebCore::IDBServer::MemoryIndex::putIndexKey):
(WebCore::IDBServer::MemoryIndex::maybeOpenCursor):
* Modules/indexeddb/server/MemoryObjectStore.cpp:
(WebCore::IDBServer::MemoryObjectStore::addRecord):
(WebCore::IDBServer::MemoryObjectStore::maybeOpenCursor):
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::createAndPopulateInitialDatabaseInfo):
(WebCore::IDBServer::SQLiteIDBBackingStore::extractExistingDatabaseInfo):
(WebCore::IDBServer::SQLiteIDBBackingStore::getOrEstablishDatabaseInfo):
(WebCore::IDBServer::SQLiteIDBBackingStore::beginTransaction):
(WebCore::IDBServer::SQLiteIDBBackingStore::cachedStatement):
* Modules/indexeddb/server/SQLiteIDBCursor.cpp:
(WebCore::IDBServer::SQLiteIDBCursor::maybeCreate):
(WebCore::IDBServer::SQLiteIDBCursor::maybeCreateBackingStoreCursor):
(WebCore::IDBServer::SQLiteIDBCursor::createSQLiteStatement):
(WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord):
* Modules/indexeddb/server/SQLiteIDBTransaction.cpp:
(WebCore::IDBServer::SQLiteIDBTransaction::begin):
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::didOpenBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformAbortTransaction):
* Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::UniqueIDBDatabaseTransaction):
* Modules/indexeddb/shared/IDBRequestData.cpp:
(WebCore::IDBRequestData::IDBRequestData):
(WebCore::IDBRequestData::isolatedCopy):
* Modules/indexeddb/shared/IDBRequestData.h:
(WebCore::IDBRequestData::decode):
* Modules/indexeddb/shared/IDBResultData.cpp:
(WebCore::IDBResultData::IDBResultData):
(WebCore::IDBResultData::isolatedCopy):
(WebCore::IDBResultData::openDatabaseSuccess):
(WebCore::IDBResultData::openDatabaseUpgradeNeeded):
(WebCore::IDBResultData::deleteDatabaseSuccess):
(WebCore::IDBResultData::putOrAddSuccess):
(WebCore::IDBResultData::getRecordSuccess):
(WebCore::IDBResultData::getAllRecordsSuccess):
(WebCore::IDBResultData::openCursorSuccess):
(WebCore::IDBResultData::iterateCursorSuccess):
* Modules/indexeddb/shared/IDBResultData.h:
(WebCore::IDBResultData::decode):
* Modules/indexeddb/shared/IDBTransactionInfo.cpp:
(WebCore::IDBTransactionInfo::versionChange):
(WebCore::IDBTransactionInfo::IDBTransactionInfo):
(WebCore::IDBTransactionInfo::isolatedCopy):
* Modules/indexeddb/shared/IDBTransactionInfo.h:
(WebCore::IDBTransactionInfo::decode):
* Modules/indexeddb/shared/InProcessIDBServer.cpp:
(WebCore::InProcessIDBServer::quotaManager):
* Modules/mediacapabilities/NavigatorMediaCapabilities.cpp:
(WebCore::NavigatorMediaCapabilities::from):
* Modules/mediasession/WebMediaSessionManager.cpp:
(WebCore::WebMediaSessionManager::mockPicker):
(WebCore::WebMediaSessionManager::addPlaybackTargetPickerClient):
* Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::buffered const):
(WebCore::MediaSource::setLiveSeekableRange):
* Modules/mediastream/NavigatorMediaDevices.cpp:
(WebCore::NavigatorMediaDevices::from):
* Modules/mediastream/UserMediaController.cpp:
(WebCore::provideUserMediaTo):
* Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:
(WebCore::LibWebRTCDataChannelHandler::channelEvent):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::addRemoteTrack):
(WebCore::LibWebRTCMediaEndpoint::collectTransceivers):
(WebCore::LibWebRTCMediaEndpoint::newTransceiver):
(WebCore::LibWebRTCMediaEndpoint::createTransceiverBackends):
(WebCore::LibWebRTCMediaEndpoint::transceiverBackendFromSender):
(WebCore::LibWebRTCMediaEndpoint::createDataChannel):
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::createLibWebRTCPeerConnectionBackend):
(WebCore::LibWebRTCPeerConnectionBackend::videoReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::audioReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::addTrack):
(WebCore::LibWebRTCPeerConnectionBackend::addTransceiver):
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
(WebCore::LibWebRTCRtpSenderBackend::createDTMFBackend):
* Modules/mediastream/libwebrtc/LibWebRTCRtpTransceiverBackend.cpp:
(WebCore::LibWebRTCRtpTransceiverBackend::createReceiverBackend):
(WebCore::LibWebRTCRtpTransceiverBackend::createSenderBackend):
* Modules/notifications/Notification.cpp:
(WebCore::Notification::Notification):
* Modules/notifications/NotificationController.cpp:
(WebCore::provideNotification):
* Modules/quota/DOMWindowQuota.cpp:
(WebCore::DOMWindowQuota::from):
* Modules/quota/NavigatorStorageQuota.cpp:
(WebCore::NavigatorStorageQuota::from):
* Modules/quota/WorkerNavigatorStorageQuota.cpp:
(WebCore::WorkerNavigatorStorageQuota::from):
* Modules/speech/DOMWindowSpeechSynthesis.cpp:
(WebCore::DOMWindowSpeechSynthesis::from):
* Modules/speech/SpeechSynthesis.cpp:
(WebCore::SpeechSynthesis::ensurePlatformSpeechSynthesizer):
* Modules/webaudio/AsyncAudioDecoder.cpp:
(WebCore::AsyncAudioDecoder::decodeAsync):
* Modules/webaudio/AudioBasicInspectorNode.cpp:
(WebCore::AudioBasicInspectorNode::AudioBasicInspectorNode):
* Modules/webaudio/AudioBasicProcessorNode.cpp:
(WebCore::AudioBasicProcessorNode::AudioBasicProcessorNode):
* Modules/webaudio/AudioBufferSourceNode.cpp:
(WebCore::AudioBufferSourceNode::AudioBufferSourceNode):
* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::AudioContext):
(WebCore::AudioContext::decodeAudioData):
* Modules/webaudio/AudioDestinationNode.cpp:
(WebCore::AudioDestinationNode::AudioDestinationNode):
* Modules/webaudio/BiquadFilterNode.cpp:
(WebCore::BiquadFilterNode::BiquadFilterNode):
* Modules/webaudio/BiquadProcessor.cpp:
(WebCore::BiquadProcessor::createKernel):
(WebCore::BiquadProcessor::getFrequencyResponse):
* Modules/webaudio/ChannelMergerNode.cpp:
(WebCore::ChannelMergerNode::ChannelMergerNode):
* Modules/webaudio/ChannelSplitterNode.cpp:
(WebCore::ChannelSplitterNode::ChannelSplitterNode):
* Modules/webaudio/ConvolverNode.cpp:
(WebCore::ConvolverNode::ConvolverNode):
(WebCore::ConvolverNode::setBuffer):
* Modules/webaudio/DelayNode.cpp:
(WebCore::DelayNode::DelayNode):
* Modules/webaudio/DelayProcessor.cpp:
(WebCore::DelayProcessor::createKernel):
* Modules/webaudio/DynamicsCompressorNode.cpp:
(WebCore::DynamicsCompressorNode::DynamicsCompressorNode):
(WebCore::DynamicsCompressorNode::initialize):
* Modules/webaudio/GainNode.cpp:
(WebCore::GainNode::GainNode):
* Modules/webaudio/MediaElementAudioSourceNode.cpp:
(WebCore::MediaElementAudioSourceNode::MediaElementAudioSourceNode):
(WebCore::MediaElementAudioSourceNode::setFormat):
* Modules/webaudio/MediaStreamAudioSourceNode.cpp:
(WebCore::MediaStreamAudioSourceNode::MediaStreamAudioSourceNode):
(WebCore::MediaStreamAudioSourceNode::setFormat):
* Modules/webaudio/OscillatorNode.cpp:
(WebCore::OscillatorNode::OscillatorNode):
* Modules/webaudio/PannerNode.cpp:
(WebCore::PannerNode::PannerNode):
* Modules/webaudio/PeriodicWave.cpp:
(WebCore::PeriodicWave::createBandLimitedTables):
* Modules/webaudio/RealtimeAnalyser.cpp:
(WebCore::RealtimeAnalyser::RealtimeAnalyser):
(WebCore::RealtimeAnalyser::setFftSize):
* Modules/webaudio/ScriptProcessorNode.cpp:
(WebCore::ScriptProcessorNode::ScriptProcessorNode):
* Modules/webaudio/WaveShaperDSPKernel.cpp:
(WebCore::WaveShaperDSPKernel::lazyInitializeOversampling):
* Modules/webaudio/WaveShaperNode.cpp:
(WebCore::WaveShaperNode::WaveShaperNode):
* Modules/webaudio/WaveShaperProcessor.cpp:
(WebCore::WaveShaperProcessor::createKernel):
* Modules/webauthn/fido/FidoHidMessage.cpp:
(fido::FidoHidMessage::FidoHidMessage):
* Modules/webauthn/fido/FidoHidPacket.cpp:
(fido::FidoHidInitPacket::createFromSerializedData):
(fido::FidoHidContinuationPacket::createFromSerializedData):
* Modules/webdatabase/Database.cpp:
(WebCore::Database::openAndVerifyVersion):
(WebCore::Database::close):
(WebCore::Database::scheduleTransaction):
(WebCore::Database::scheduleTransactionStep):
(WebCore::Database::tableNames):
* Modules/webdatabase/DatabaseThread.cpp:
(WebCore::DatabaseThread::DatabaseThread):
* Modules/webdatabase/DatabaseTracker.cpp:
(WebCore::DatabaseTracker::addOpenDatabase):
(WebCore::DatabaseTracker::recordCreatingDatabase):
(WebCore::DatabaseTracker::recordDeletingDatabase):
* Modules/webdatabase/SQLTransaction.cpp:
(WebCore::SQLTransaction::executeSql):
(WebCore::SQLTransaction::openTransactionAndPreflight):
* Modules/webdriver/NavigatorWebDriver.cpp:
(WebCore::NavigatorWebDriver::from):
* Modules/webgpu/NavigatorGPU.cpp:
(WebCore::NavigatorGPU::from):
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::createEntryPointScaffolding):
(WebCore::WHLSL::Metal::ComputeFunctionDefinitionWriter::createEntryPointScaffolding):
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::TypeNamer::createNameNode):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::Checker::assignConcreteType):
(WebCore::WHLSL::Checker::assignType):
(WebCore::WHLSL::Checker::forwardType):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseSemantic):
* Modules/webgpu/WorkerNavigatorGPU.cpp:
(WebCore::WorkerNavigatorGPU::from):
* Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:
(WebCore::ThreadableWebSocketChannelClientWrapper::didConnect):
(WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessage):
(WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveBinaryData):
(WebCore::ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmount):
(WebCore::ThreadableWebSocketChannelClientWrapper::didStartClosingHandshake):
(WebCore::ThreadableWebSocketChannelClientWrapper::didClose):
(WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessageError):
(WebCore::ThreadableWebSocketChannelClientWrapper::didUpgradeURL):
* Modules/websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::connect):
(WebCore::WebSocketChannel::enqueueTextFrame):
(WebCore::WebSocketChannel::enqueueRawFrame):
(WebCore::WebSocketChannel::enqueueBlobFrame):
(WebCore::WebSocketChannel::processOutgoingFrameQueue):
* Modules/websockets/WebSocketDeflateFramer.cpp:
(WebCore::WebSocketDeflateFramer::createExtensionProcessor):
(WebCore::WebSocketDeflateFramer::enableDeflate):
(WebCore::WebSocketDeflateFramer::deflate):
(WebCore::WebSocketDeflateFramer::inflate):
* Modules/websockets/WebSocketDeflater.cpp:
(WebCore::WebSocketDeflater::WebSocketDeflater):
(WebCore::WebSocketInflater::WebSocketInflater):
* Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
(WebCore::WorkerThreadableWebSocketChannel::Bridge::mainThreadInitialize):
* Modules/webvr/NavigatorWebVR.cpp:
(WebCore::NavigatorWebVR::from):
* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::startCachingComputedObjectAttributesUntilTreeMutates):
* animation/WebAnimation.cpp:
(WebCore::WebAnimation::updateFinishedState):
* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::queueTaskToEventLoop):
* bindings/js/JSEventTargetCustom.cpp:
(WebCore::jsEventTargetCast):
* bindings/js/JSWorkerGlobalScopeBase.cpp:
(WebCore::JSWorkerGlobalScopeBase::queueTaskToEventLoop):
* bindings/js/SerializedScriptValue.cpp:
(WebCore::transferArrayBuffers):
(WebCore::SerializedScriptValue::create):
* bindings/js/SerializedScriptValue.h:
(WebCore::SerializedScriptValue::decode):
* bindings/js/WebCoreJSClientData.cpp:
(WebCore::JSVMClientData::initNormalWorld):
* bindings/js/WorkerScriptController.cpp:
(WebCore::WorkerScriptController::initScript):
* bridge/c/c_class.cpp:
(JSC::Bindings::CClass::methodNamed const):
(JSC::Bindings::CClass::fieldNamed const):
* bridge/objc/objc_class.mm:
(JSC::Bindings::ObjcClass::methodNamed const):
(JSC::Bindings::ObjcClass::fieldNamed const):
* bridge/objc/objc_runtime.mm:
(JSC::Bindings::callObjCFallbackObject):
* contentextensions/CombinedURLFilters.cpp:
(WebCore::ContentExtensions::CombinedURLFilters::CombinedURLFilters):
(WebCore::ContentExtensions::CombinedURLFilters::addPattern):
* crypto/SubtleCrypto.cpp:
(WebCore::normalizeCryptoAlgorithmParameters):
(WebCore::crossThreadCopyImportParams):
* css/CSSCalculationValue.cpp:
(WebCore::determineCategory):
* css/CSSDefaultStyleSheets.cpp:
(WebCore::CSSDefaultStyleSheets::loadFullDefaultStyle):
(WebCore::CSSDefaultStyleSheets::loadSimpleDefaultStyle):
* css/CSSFontFace.cpp:
(WebCore::CSSFontFace::appendSources):
* css/CSSFontFaceSet.cpp:
(WebCore::CSSFontFaceSet::ensureLocalFontFacesForFamilyRegistered):
* css/CSSGroupingRule.cpp:
(WebCore::CSSGroupingRule::cssRules const):
* css/CSSImageGeneratorValue.cpp:
(WebCore::CSSImageGeneratorValue::saveCachedImageForSize):
* css/CSSKeyframesRule.cpp:
(WebCore::CSSKeyframesRule::cssRules):
* css/CSSStyleSheet.cpp:
(WebCore::CSSStyleSheet::cssRules):
* css/DOMCSSPaintWorklet.cpp:
(WebCore::DOMCSSPaintWorklet::from):
* css/DOMCSSRegisterCustomProperty.cpp:
(WebCore::DOMCSSRegisterCustomProperty::from):
* css/DocumentRuleSets.cpp:
(WebCore::DocumentRuleSets::DocumentRuleSets):
(WebCore::DocumentRuleSets::updateUserAgentMediaQueryStyleIfNeeded const):
(WebCore::DocumentRuleSets::initializeUserStyle):
(WebCore::makeRuleSet):
(WebCore::DocumentRuleSets::resetAuthorStyle):
(WebCore::ensureInvalidationRuleSets):
* css/ElementRuleCollector.cpp:
(WebCore::ElementRuleCollector::collectSlottedPseudoElementRulesForSlot):
* css/FontFace.cpp:
(WebCore::populateFontFaceWithArrayBuffer):
* css/PropertySetCSSStyleDeclaration.cpp:
(WebCore::PropertySetCSSStyleDeclaration::wrapForDeprecatedCSSOM):
* css/RuleFeature.cpp:
(WebCore::RuleFeatureSet::collectFeatures):
(WebCore::RuleFeatureSet::add):
* css/RuleSet.cpp:
(WebCore::RuleSet::addToRuleSet):
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertTo100PercentMinusLength):
* css/StyleBuilderCustom.h:
(WebCore::StyleBuilderCustom::applyTextOrBoxShadowValue):
(WebCore::StyleBuilderCustom::applyInheritTextShadow):
(WebCore::StyleBuilderCustom::applyInheritBoxShadow):
(WebCore::StyleBuilderCustom::applyValueContent):
* css/StyleProperties.cpp:
(WebCore::MutableStyleProperties::ensureCSSStyleDeclaration):
(WebCore::MutableStyleProperties::ensureInlineCSSStyleDeclaration):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::cascadedPropertiesForRollback):
* css/makeprop.pl:
(generateFillLayerPropertyInheritValueSetter):
(generateFillLayerPropertyValueSetter):
* css/parser/CSSParserImpl.cpp:
(WebCore::CSSParserImpl::CSSParserImpl):
(WebCore::CSSParserImpl::parsePageSelector):
(WebCore::CSSParserImpl::consumeMediaRule):
(WebCore::CSSParserImpl::consumeSupportsRule):
(WebCore::CSSParserImpl::consumeKeyframesRule):
* css/parser/CSSParserSelector.cpp:
(WebCore::CSSParserSelector::parsePagePseudoSelector):
(WebCore::CSSParserSelector::parsePseudoElementSelector):
(WebCore::CSSParserSelector::parsePseudoClassSelector):
(WebCore::CSSParserSelector::CSSParserSelector):
(WebCore::CSSParserSelector::adoptSelectorVector):
(WebCore::CSSParserSelector::prependTagSelector):
* css/parser/CSSPropertyParser.cpp:
(WebCore::consumeBasicShapePath):
* css/parser/CSSSelectorParser.cpp:
(WebCore::CSSSelectorParser::consumePseudo):
* dom/CustomElementReactionQueue.cpp:
(WebCore::CustomElementReactionQueue::ensureBackupQueue):
* dom/DataTransfer.cpp:
(WebCore::DataTransfer::items):
(WebCore::DataTransfer::createForInputEvent):
(WebCore::DataTransfer::createForDragStartEvent):
(WebCore::DataTransfer::setDragImage):
* dom/DeviceOrientationController.cpp:
(WebCore::provideDeviceOrientationTo):
* dom/Document.cpp:
(WebCore::Document::Document):
(WebCore::Document::buildAccessKeyCache):
(WebCore::Document::implementation):
(WebCore::Document::formController):
(WebCore::Document::updateTextRenderer):
(WebCore::Document::userAgentShadowTreeStyleResolver):
(WebCore::Document::axObjectCache const):
(WebCore::Document::setParsing):
(WebCore::Document::accessSVGExtensions):
(WebCore::Document::initSecurityContext):
(WebCore::Document::textAutoSizing):
(WebCore::Document::didAddWheelEventHandler):
(WebCore::Document::didAddTouchEventHandler):
(WebCore::Document::didLogMessage):
(WebCore::Document::registerCSSProperty):
(WebCore::Document::deviceOrientationAndMotionAccessController):
(WebCore::Document::contentChangeObserver):
(WebCore::Document::domTimerHoldingTank):
* dom/Document.h:
(WebCore::Document::createParserYieldToken):
* dom/DocumentEventQueue.cpp:
(WebCore::DocumentEventQueue::DocumentEventQueue):
* dom/DocumentMarkerController.cpp:
(WebCore::DocumentMarkerController::addMarker):
* dom/DocumentStorageAccess.cpp:
(WebCore::DocumentStorageAccess::from):
(WebCore::DocumentStorageAccess::requestStorageAccess):
(WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture):
* dom/Element.cpp:
(WebCore::Element::attributes const):
(WebCore::Element::setIsDefinedCustomElement):
(WebCore::Element::enqueueToUpgrade):
(WebCore::Element::classList):
(WebCore::Element::dataset):
(WebCore::Element::ensureIntersectionObserverData):
(WebCore::Element::ensureResizeObserverData):
* dom/EventListenerMap.cpp:
(WebCore::EventListenerMap::add):
* dom/EventNames.h:
* dom/EventPath.cpp:
(WebCore::EventPath::buildPath):
(WebCore::EventPath::EventPath):
* dom/IdTargetObserverRegistry.cpp:
(WebCore::IdTargetObserverRegistry::addObserver):
* dom/KeyboardEvent.cpp:
(WebCore::KeyboardEvent::KeyboardEvent):
* dom/MutationObserver.cpp:
(WebCore::queueMutationObserverCompoundMicrotask):
* dom/MutationObserverInterestGroup.cpp:
(WebCore::MutationObserverInterestGroup::createIfNeeded):
* dom/MutationObserverRegistration.cpp:
(WebCore::MutationObserverRegistration::observedSubtreeNodeWillDetach):
* dom/Node.cpp:
(WebCore::Node::materializeRareData):
(WebCore::Node::ensureEventTargetData):
(WebCore::Node::registerMutationObserver):
* dom/NodeRareData.h:
(WebCore::NodeRareData::ensureNodeLists):
(WebCore::NodeRareData::ensureMutationObserverData):
* dom/RadioButtonGroups.cpp:
(WebCore::RadioButtonGroups::addButton):
* dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::reportException):
(WebCore::ScriptExecutionContext::reportUnhandledPromiseRejection):
(WebCore::ScriptExecutionContext::ensureRejectedPromiseTrackerSlow):
* dom/SelectorQuery.cpp:
* dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::ShadowRoot):
(WebCore::ShadowRoot::moveShadowRootToNewDocument):
(WebCore::ShadowRoot::addSlotElementByName):
* dom/SlotAssignment.cpp:
(WebCore::SlotAssignment::addSlotElementByName):
(WebCore::SlotAssignment::assignToSlot):
* dom/TreeScope.cpp:
(WebCore::TreeScope::TreeScope):
(WebCore::TreeScope::addElementById):
(WebCore::TreeScope::addElementByName):
(WebCore::TreeScope::addImageMap):
(WebCore::TreeScope::addImageElementByUsemap):
(WebCore::TreeScope::labelElementForId):
* editing/Editor.cpp:
(WebCore::createDataTransferForClipboardEvent):
(WebCore::Editor::Editor):
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::ensureReplacementFragment):
* editing/SelectionRectGatherer.cpp:
(WebCore::SelectionRectGatherer::clearAndCreateNotifier):
* editing/TextIterator.cpp:
(WebCore::TextIterator::handleTextNode):
* editing/cocoa/HTMLConverter.mm:
(HTMLConverter::HTMLConverter):
(HTMLConverterCaches::computedStylePropertyForElement):
* editing/markup.cpp:
(WebCore::createPageForSanitizingWebContent):
* fileapi/AsyncFileStream.cpp:
(WebCore::callOnFileThread):
(WebCore::AsyncFileStream::AsyncFileStream):
* fileapi/FileReader.cpp:
(WebCore::FileReader::readInternal):
* history/CachedFrame.cpp:
(WebCore::CachedFrame::CachedFrame):
* history/CachedPage.cpp:
(WebCore::CachedPage::CachedPage):
* history/PageCache.cpp:
(WebCore::PageCache::addIfCacheable):
* html/FileInputType.cpp:
(WebCore::FileInputType::requestIcon):
* html/FormAssociatedElement.cpp:
(WebCore::FormAssociatedElement::resetFormAttributeTargetObserver):
* html/FormController.cpp:
(WebCore::SavedFormState::deserialize):
(WebCore::FormController::createSavedFormStateMap):
(WebCore::FormController::takeStateForFormElement):
* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::relList const):
* html/HTMLAreaElement.cpp:
(WebCore::HTMLAreaElement::mapMouseEvent):
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::setImageBuffer const):
* html/HTMLCollection.cpp:
(WebCore::HTMLCollection::updateNamedElementCache const):
* html/HTMLDetailsElement.cpp:
(WebCore::HTMLDetailsElement::create):
* html/HTMLFormControlElement.cpp:
(WebCore::HTMLFormControlElement::updateVisibleValidationMessage):
* html/HTMLFormControlsCollection.cpp:
(WebCore::HTMLFormControlsCollection::updateNamedElementCache const):
* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::addToPastNamesMap):
* html/HTMLIFrameElement.cpp:
(WebCore::HTMLIFrameElement::sandbox):
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::ensureImageLoader):
(WebCore::HTMLInputElement::resetListAttributeTargetObserver):
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::sizes):
(WebCore::HTMLLinkElement::relList):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::finishInitialization):
(WebCore::HTMLMediaElement::seekWithTolerance):
* html/HTMLOutputElement.cpp:
(WebCore::HTMLOutputElement::htmlFor):
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::updateAfterStyleResolution):
* html/HTMLSummaryElement.cpp:
(WebCore::HTMLSummaryElement::create):
* html/HTMLVideoElement.cpp:
(WebCore::HTMLVideoElement::didAttachRenderers):
(WebCore::HTMLVideoElement::parseAttribute):
* html/PublicURLManager.cpp:
(WebCore::PublicURLManager::create):
* html/ValidationMessage.cpp:
(WebCore::ValidationMessage::setMessage):
(WebCore::ValidationMessage::setMessageDOMAndStartTimer):
(WebCore::ValidationMessage::requestToHideMessage):
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::DisplayListDrawingContext::DisplayListDrawingContext):
(WebCore::CanvasRenderingContext2DBase::drawingContext const):
* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::getExtension):
* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::getExtension):
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::initializeNewContext):
(WebCore::WebGLRenderingContextBase::compileShader):
(WebCore::WebGLRenderingContextBase::printToConsole):
* html/parser/CSSPreloadScanner.cpp:
(WebCore::CSSPreloadScanner::emitRule):
* html/parser/HTMLConstructionSite.cpp:
(WebCore::HTMLConstructionSite::insertHTMLElementOrFindCustomElementInterface):
* html/parser/HTMLDocumentParser.cpp:
(WebCore::HTMLDocumentParser::HTMLDocumentParser):
(WebCore::HTMLDocumentParser::pumpTokenizer):
(WebCore::HTMLDocumentParser::insert):
* html/parser/HTMLElementStack.cpp:
(WebCore::HTMLElementStack::insertAbove):
(WebCore::HTMLElementStack::pushCommon):
* html/parser/HTMLPreloadScanner.cpp:
(WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest):
* html/parser/HTMLToken.h:
(WebCore::HTMLToken::beginDOCTYPE):
* html/parser/XSSAuditor.cpp:
(WebCore::XSSAuditor::filterToken):
(WebCore::XSSAuditor::decodedHTTPBodySuffixTree):
* html/shadow/TextControlInnerElements.cpp:
(WebCore::TextControlInnerTextElement::resolveCustomStyle):
* html/track/InbandGenericTextTrack.cpp:
(WebCore::InbandGenericTextTrack::parser):
* html/track/InbandWebVTTTextTrack.cpp:
(WebCore::InbandWebVTTTextTrack::parser):
* html/track/LoadableTextTrack.cpp:
(WebCore::LoadableTextTrack::loadTimerFired):
* inspector/CommandLineAPIHost.cpp:
(WebCore::CommandLineAPIHost::CommandLineAPIHost):
(WebCore::CommandLineAPIHost::clearAllWrappers):
* inspector/DOMEditor.cpp:
(WebCore::DOMEditor::insertBefore):
(WebCore::DOMEditor::removeChild):
(WebCore::DOMEditor::setAttribute):
(WebCore::DOMEditor::removeAttribute):
(WebCore::DOMEditor::setOuterHTML):
(WebCore::DOMEditor::insertAdjacentHTML):
(WebCore::DOMEditor::replaceWholeText):
(WebCore::DOMEditor::replaceChild):
(WebCore::DOMEditor::setNodeValue):
* inspector/DOMPatchSupport.cpp:
(WebCore::DOMPatchSupport::createDigest):
* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
(WebCore::InspectorController::createLazyAgents):
(WebCore::InspectorController::ensureInspectorAgent):
(WebCore::InspectorController::ensureDOMAgent):
(WebCore::InspectorController::ensurePageAgent):
* inspector/InspectorHistory.cpp:
(WebCore::InspectorHistory::markUndoableState):
* inspector/InspectorStyleSheet.cpp:
(ParsedStyleSheet::setSourceData):
(WebCore::InspectorStyleSheet::ensureSourceData):
* inspector/NetworkResourcesData.cpp:
(WebCore::NetworkResourcesData::resourceCreated):
* inspector/WorkerInspectorController.cpp:
(WebCore::WorkerInspectorController::WorkerInspectorController):
(WebCore::WorkerInspectorController::connectFrontend):
(WebCore::WorkerInspectorController::createLazyAgents):
* inspector/agents/InspectorApplicationCacheAgent.cpp:
(WebCore::InspectorApplicationCacheAgent::InspectorApplicationCacheAgent):
* inspector/agents/InspectorCPUProfilerAgent.cpp:
(WebCore::InspectorCPUProfilerAgent::InspectorCPUProfilerAgent):
* inspector/agents/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::InspectorCSSAgent):
(WebCore::InspectorCSSAgent::setStyleSheetText):
(WebCore::InspectorCSSAgent::setStyleText):
(WebCore::InspectorCSSAgent::setRuleSelector):
(WebCore::InspectorCSSAgent::addRule):
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::recordCanvasAction):
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::InspectorDOMAgent):
(WebCore::InspectorDOMAgent::didCreateFrontendAndBackend):
(WebCore::InspectorDOMAgent::pushNodePathToFrontend):
(WebCore::InspectorDOMAgent::highlightConfigFromInspectorObject):
(WebCore::InspectorDOMAgent::highlightRect):
(WebCore::InspectorDOMAgent::highlightQuad):
(WebCore::InspectorDOMAgent::innerHighlightQuad):
(WebCore::InspectorDOMAgent::highlightFrame):
(WebCore::InspectorDOMAgent::setInspectedNode):
(WebCore::InspectorDOMAgent::didInvalidateStyleAttr):
* inspector/agents/InspectorDOMStorageAgent.cpp:
(WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent):
* inspector/agents/InspectorDatabaseAgent.cpp:
(WebCore::InspectorDatabaseAgent::InspectorDatabaseAgent):
* inspector/agents/InspectorLayerTreeAgent.cpp:
(WebCore::InspectorLayerTreeAgent::InspectorLayerTreeAgent):
* inspector/agents/InspectorMemoryAgent.cpp:
(WebCore::InspectorMemoryAgent::InspectorMemoryAgent):
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::InspectorNetworkAgent):
* inspector/agents/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::InspectorPageAgent):
* inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::InspectorTimelineAgent):
(WebCore::InspectorTimelineAgent::internalStart):
(WebCore::InspectorTimelineAgent::startFromConsole):
(WebCore::InspectorTimelineAgent::stopFromConsole):
* inspector/agents/InspectorWorkerAgent.cpp:
(WebCore::InspectorWorkerAgent::InspectorWorkerAgent):
* inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::didReceiveResponse):
(WebCore::WebConsoleAgent::didFailLoading):
* inspector/agents/WebHeapAgent.cpp:
(WebCore::WebHeapAgent::WebHeapAgent):
* inspector/agents/page/PageRuntimeAgent.cpp:
(WebCore::PageRuntimeAgent::PageRuntimeAgent):
* inspector/agents/worker/WorkerDebuggerAgent.cpp:
(WebCore::WorkerDebuggerAgent::breakpointActionLog):
* layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::displayBoxForLayoutBox const):
(WebCore::Layout::LayoutState::createFormattingStateForFormattingRootIfNeeded):
(WebCore::Layout::LayoutState::createFormattingContext):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::collectInlineContent const):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendHardLineBreak):
* layout/inlineformatting/InlineTextItem.cpp:
(WebCore::Layout::InlineTextItem::createAndAppendTextItems):
(WebCore::Layout::InlineTextItem::split const):
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::Box):
(WebCore::Layout::Box::ensureRareData):
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutBox):
(WebCore::Layout::TreeBuilder::createTableStructure):
(WebCore::Layout::printLayoutTreeForLiveDocuments):
* layout/tableformatting/TableGrid.cpp:
(WebCore::Layout::TableGrid::appendCell):
* loader/ContentFilter.cpp:
(WebCore::ContentFilter::create):
* loader/CrossOriginAccessControl.cpp:
(WebCore::validatePreflightResponse):
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::DocumentLoader):
(WebCore::DocumentLoader::loadApplicationManifest):
(WebCore::DocumentLoader::addAllArchiveResources):
(WebCore::DocumentLoader::addArchiveResource):
(WebCore::DocumentLoader::loadMainResource):
(WebCore::DocumentLoader::didGetLoadDecisionForIcon):
* loader/EmptyClients.cpp:
(WebCore::pageConfigurationWithEmptyClients):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::FrameLoader):
(WebCore::FrameLoader::init):
(WebCore::FrameLoader::initForSynthesizedDocument):
(WebCore::FrameLoader::detachChildren):
* loader/LinkLoader.cpp:
(WebCore::createLinkPreloadResourceClient):
* loader/NavigationScheduler.cpp:
(WebCore::NavigationScheduler::scheduleRedirect):
(WebCore::NavigationScheduler::scheduleLocationChange):
(WebCore::NavigationScheduler::scheduleFormSubmission):
(WebCore::NavigationScheduler::scheduleRefresh):
(WebCore::NavigationScheduler::scheduleHistoryNavigation):
(WebCore::NavigationScheduler::schedulePageBlock):
* loader/ProgressTracker.cpp:
(WebCore::ProgressTracker::incrementProgress):
* loader/TextResourceDecoder.cpp:
(WebCore::TextResourceDecoder::checkForHeadCharset):
* loader/TextTrackLoader.cpp:
(WebCore::TextTrackLoader::processNewCueData):
* loader/WorkerThreadableLoader.cpp:
(WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
* loader/archive/cf/LegacyWebArchive.cpp:
(WebCore::LegacyWebArchive::create):
* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::setBodyDataFrom):
(WebCore::CachedImage::createImage):
* loader/cache/CachedRawResource.cpp:
(WebCore::CachedRawResource::redirectReceived):
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::addClientToSet):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):
(WebCore::CachedResourceLoader::preload):
(WebCore::CachedResourceLoader::clearPreloads):
* loader/cache/MemoryCache.cpp:
(WebCore::MemoryCache::ensureSessionResourceMap):
(WebCore::MemoryCache::addImageToCache):
(WebCore::MemoryCache::lruListFor):
* loader/ios/PreviewLoader.mm:
(-[WebPreviewLoader initWithResourceLoader:resourceResponse:]):
(-[WebPreviewLoader connection:didFailWithError:]):
(WebCore::PreviewLoader::create):
* page/ContextMenuController.cpp:
(WebCore::ContextMenuController::maybeCreateContextMenu):
* page/DebugPageOverlays.cpp:
(WebCore::MouseWheelRegionOverlay::updateRegion):
* page/EventHandler.cpp:
(WebCore::EventHandler::EventHandler):
* page/FrameView.cpp:
(WebCore::FrameView::addEmbeddedObjectToUpdate):
(WebCore::FrameView::addSlowRepaintObject):
(WebCore::FrameView::addViewportConstrainedObject):
(WebCore::FrameView::addScrollableArea):
* page/FrameViewLayoutContext.cpp:
(WebCore::FrameViewLayoutContext::pushLayoutState):
(WebCore::FrameViewLayoutContext::pushLayoutStateForPaginationIfNeeded):
* page/NavigatorBase.cpp:
(WebCore::NavigatorBase::serviceWorker):
* page/Page.cpp:
(WebCore::Page::Page):
(WebCore::Page::initGroup):
(WebCore::Page::setResourceUsageOverlayVisible):
* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::addMessage):
(WebCore::PageConsoleClient::messageWithTypeAndLevel):
(WebCore::PageConsoleClient::screenshot):
* page/PageGroup.cpp:
(WebCore::PageGroup::captionPreferences):
* page/Performance.cpp:
(WebCore::Performance::mark):
(WebCore::Performance::clearMarks):
(WebCore::Performance::measure):
(WebCore::Performance::clearMeasures):
* page/PrintContext.cpp:
(WebCore::PrintContext::outputLinkedDestinations):
* page/RenderingUpdateScheduler.cpp:
(WebCore::RenderingUpdateScheduler::startTimer):
* page/RenderingUpdateScheduler.h:
(WebCore::RenderingUpdateScheduler::create):
* page/SecurityPolicy.cpp:
(WebCore::SecurityPolicy::addOriginAccessWhitelistEntry):
* page/SettingsBase.cpp:
(WebCore::SettingsBase::SettingsBase):
* page/UserContentController.cpp:
(WebCore::UserContentController::addUserScript):
(WebCore::UserContentController::addUserStyleSheet):
* page/WheelEventDeltaFilter.cpp:
(WebCore::WheelEventDeltaFilter::create):
* page/animation/CSSAnimationController.cpp:
(WebCore::CSSAnimationController::CSSAnimationController):
* page/animation/CSSPropertyAnimation.cpp:
(WebCore::blendFunc):
(WebCore::PropertyWrapperVisitedAffectedColor::PropertyWrapperVisitedAffectedColor):
(WebCore::FillLayersPropertyWrapper::FillLayersPropertyWrapper):
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::updateSourceSelf):
* page/csp/ContentSecurityPolicyDirectiveList.cpp:
(WebCore::ContentSecurityPolicyDirectiveList::create):
(WebCore::ContentSecurityPolicyDirectiveList::setCSPDirective):
* page/linux/ResourceUsageOverlayLinux.cpp:
(WebCore::ResourceUsageOverlay::platformInitialize):
* page/mac/PageMac.mm:
(WebCore::Page::addSchedulePair):
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::AsyncScrollingCoordinator):
* page/scrolling/ScrollingMomentumCalculator.cpp:
(WebCore::ScrollingMomentumCalculator::create):
* page/scrolling/ScrollingStateNode.cpp:
(WebCore::ScrollingStateNode::appendChild):
(WebCore::ScrollingStateNode::insertChild):
* page/scrolling/ScrollingStateTree.cpp:
(WebCore::ScrollingStateTree::commit):
* page/scrolling/ScrollingTreeNode.cpp:
(WebCore::ScrollingTreeNode::appendChild):
* page/scrolling/mac/ScrollingMomentumCalculatorMac.mm:
(WebCore::ScrollingMomentumCalculator::create):
* platform/Length.cpp:
(WebCore::convertTo100PercentMinusLength):
(WebCore::blendMixedTypes):
* platform/RemoteCommandListener.cpp:
(WebCore::RemoteCommandListener::create):
* platform/ScrollAnimator.cpp:
(WebCore::ScrollAnimator::create):
* platform/ScrollableArea.cpp:
(WebCore::ScrollableArea::scrollAnimator const):
(WebCore::ScrollableArea::ensureSnapOffsetsInfo):
* platform/ThreadGlobalData.cpp:
(WebCore::ThreadGlobalData::ThreadGlobalData):
* platform/audio/AudioBus.cpp:
(WebCore::AudioBus::AudioBus):
(WebCore::AudioBus::copyWithGainFrom):
* platform/audio/AudioChannel.h:
* platform/audio/AudioResampler.cpp:
(WebCore::AudioResampler::AudioResampler):
(WebCore::AudioResampler::configureChannels):
* platform/audio/DynamicsCompressor.cpp:
(WebCore::DynamicsCompressor::setNumberOfChannels):
* platform/audio/DynamicsCompressorKernel.cpp:
(WebCore::DynamicsCompressorKernel::setNumberOfChannels):
* platform/audio/FFTFrame.cpp:
(WebCore::FFTFrame::createInterpolatedFrame):
* platform/audio/HRTFDatabaseLoader.cpp:
(WebCore::HRTFDatabaseLoader::load):
* platform/audio/HRTFElevation.cpp:
(WebCore::HRTFElevation::createForSubject):
(WebCore::HRTFElevation::createByInterpolatingSlices):
* platform/audio/HRTFKernel.cpp:
(WebCore::HRTFKernel::HRTFKernel):
(WebCore::HRTFKernel::createImpulseResponse):
* platform/audio/MultiChannelResampler.cpp:
(WebCore::MultiChannelResampler::MultiChannelResampler):
* platform/audio/Panner.cpp:
(WebCore::Panner::create):
* platform/audio/PlatformMediaSession.cpp:
(WebCore::PlatformMediaSession::create):
* platform/audio/Reverb.cpp:
(WebCore::Reverb::initialize):
* platform/audio/ReverbConvolver.cpp:
(WebCore::ReverbConvolver::ReverbConvolver):
* platform/audio/ReverbConvolverStage.cpp:
(WebCore::ReverbConvolverStage::ReverbConvolverStage):
* platform/audio/gstreamer/AudioDestinationGStreamer.cpp:
(WebCore::AudioDestination::create):
* platform/audio/ios/AudioDestinationIOS.cpp:
(WebCore::AudioDestination::create):
* platform/audio/ios/AudioSessionIOS.mm:
(WebCore::AudioSession::AudioSession):
* platform/audio/mac/AudioDestinationMac.cpp:
(WebCore::AudioDestination::create):
* platform/audio/mac/AudioSampleDataSource.mm:
(WebCore::AudioSampleDataSource::setInputFormat):
(WebCore::AudioSampleDataSource::setOutputFormat):
* platform/audio/mac/AudioSessionMac.cpp:
(WebCore::AudioSession::AudioSession):
* platform/cf/KeyedDecoderCF.cpp:
(WebCore::KeyedDecoder::decoder):
* platform/cf/KeyedEncoderCF.cpp:
(WebCore::KeyedEncoder::encoder):
* platform/cf/MainThreadSharedTimerCF.cpp:
(WebCore::setupPowerObserver):
* platform/cocoa/NetworkExtensionContentFilter.mm:
(WebCore::NetworkExtensionContentFilter::create):
* platform/cocoa/ParentalControlsContentFilter.mm:
(WebCore::ParentalControlsContentFilter::create):
* platform/cocoa/ScrollController.mm:
(WebCore::ScrollController::updateScrollSnapPoints):
* platform/encryptedmedia/clearkey/CDMClearKey.cpp:
(WebCore::CDMFactoryClearKey::createCDM):
* platform/gamepad/cocoa/GameControllerGamepadProvider.mm:
(WebCore::GameControllerGamepadProvider::controllerDidConnect):
* platform/gamepad/mac/HIDGamepadProvider.cpp:
(WebCore::HIDGamepadProvider::deviceAdded):
* platform/generic/KeyedDecoderGeneric.cpp:
(WebCore::KeyedDecoderGeneric::Dictionary::add):
(WebCore::KeyedDecoder::decoder):
(WebCore::KeyedDecoderGeneric::KeyedDecoderGeneric):
* platform/generic/KeyedEncoderGeneric.cpp:
(WebCore::KeyedEncoder::encoder):
* platform/generic/ScrollAnimatorGeneric.cpp:
(WebCore::ScrollAnimator::create):
(WebCore::ScrollAnimatorGeneric::ScrollAnimatorGeneric):
(WebCore::ScrollAnimatorGeneric::ensureSmoothScrollingAnimation):
* platform/glib/KeyedDecoderGlib.cpp:
(WebCore::KeyedDecoder::decoder):
* platform/glib/KeyedEncoderGlib.cpp:
(WebCore::KeyedEncoder::encoder):
* platform/graphics/BitmapImage.cpp:
(WebCore::BitmapImage::startTimer):
(WebCore::BitmapImage::decode):
* platform/graphics/ComplexTextController.cpp:
(WebCore::TextLayout::TextLayout):
* platform/graphics/Font.cpp:
(WebCore::Font::ensureDerivedFontData const):
* platform/graphics/Font.h:
(WebCore::Font::boundsForGlyph const):
* platform/graphics/FontCache.cpp:
(WebCore::FontCache::getCachedFontPlatformData):
* platform/graphics/FontCascade.cpp:
(WebCore::retrieveOrAddCachedFonts):
(WebCore::FontCascade::displayListForTextRun const):
* platform/graphics/FontCascadeFonts.cpp:
(WebCore::FontCascadeFonts::GlyphPageCacheEntry::setGlyphDataForCharacter):
* platform/graphics/GlyphMetricsMap.h:
(WebCore::GlyphMetricsMap<T>::locatePageSlowCase):
* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::setTransform):
(WebCore::GraphicsLayer::setChildrenTransform):
* platform/graphics/GraphicsLayer.h:
* platform/graphics/Image.cpp:
(WebCore::Image::startAnimationAsynchronously):
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::MediaPlayer):
(WebCore::MediaPlayer::loadWithNextMediaEngine):
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::seekable const):
* platform/graphics/PathUtilities.cpp:
(WebCore::FloatPointGraph::findOrCreateNode):
* platform/graphics/Region.cpp:
(WebCore::Region::setShape):
* platform/graphics/Region.h:
(WebCore::Region::copyShape const):
(WebCore::Region::decode):
* platform/graphics/TextTrackRepresentation.cpp:
(WebCore::TextTrackRepresentation::create):
* platform/graphics/angle/GraphicsContext3DANGLE.cpp:
(WebCore::GraphicsContext3D::getExtensions):
* platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:
(WebCore::AudioSourceProviderAVFObjC::prepare):
* platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:
(WebCore::CDMFactoryFairPlayStreaming::createCDM):
* platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm:
(WebCore::CDMPrivateMediaSourceAVFObjC::createSession):
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::buffered const):
* platform/graphics/avfoundation/WebMediaSessionManagerMac.cpp:
(WebCore::WebMediaSessionManagerMac::platformPicker):
* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
(WebCore::MediaPlayerPrivateAVFoundationCF::registerMediaEngine):
(WebCore::MediaPlayerPrivateAVFoundationCF::platformBufferedTimeRanges const):
(WebCore::MediaPlayerPrivateAVFoundationCF::createSession):
(WebCore::AVFWrapper::notificationCallback):
(WebCore::AVFWrapper::legibleOutputCallback):
(WebCore::AVFWrapper::resourceLoaderShouldWaitForLoadingOfRequestedResource):
(WebCore::AVFWrapper::platformLayer):
* platform/graphics/avfoundation/objc/AudioTrackPrivateAVFObjC.mm:
(WebCore::AudioTrackPrivateAVFObjC::AudioTrackPrivateAVFObjC):
(WebCore::AudioTrackPrivateAVFObjC::setPlayerItemTrack):
(WebCore::AudioTrackPrivateAVFObjC::setAssetTrack):
(WebCore::AudioTrackPrivateAVFObjC::setMediaSelectionOption):
* platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.cpp:
(WebCore::AudioTrackPrivateMediaSourceAVFObjC::AudioTrackPrivateMediaSourceAVFObjC):
(WebCore::AudioTrackPrivateMediaSourceAVFObjC::setAssetTrack):
* platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:
(WebCore::ImageDecoderAVFObjC::readTrackMetadata):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::registerMediaEngine):
(WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
(WebCore::MediaPlayerPrivateAVFoundationObjC::platformBufferedTimeRanges const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateRotationSession):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage):
(WebCore::MediaPlayerPrivateAVFoundationObjC::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createSession):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::registerMediaEngine):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekWithTolerance):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekable const):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::buffered const):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::updateLastImage):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::copyVideoTextureToPlatformTexture):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::registerMediaEngine):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::seekable const):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::buffered const):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateCurrentFrameImage):
* platform/graphics/avfoundation/objc/VideoTrackPrivateAVFObjC.cpp:
(WebCore::VideoTrackPrivateAVFObjC::VideoTrackPrivateAVFObjC):
(WebCore::VideoTrackPrivateAVFObjC::setPlayerItemTrack):
(WebCore::VideoTrackPrivateAVFObjC::setAssetTrack):
(WebCore::VideoTrackPrivateAVFObjC::setMediaSelectonOption):
* platform/graphics/avfoundation/objc/VideoTrackPrivateMediaSourceAVFObjC.mm:
(WebCore::VideoTrackPrivateMediaSourceAVFObjC::VideoTrackPrivateMediaSourceAVFObjC):
(WebCore::VideoTrackPrivateMediaSourceAVFObjC::setAssetTrack):
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::recursiveCommitChanges):
(WebCore::GraphicsLayerCA::ensureLayerAnimations):
(WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
* platform/graphics/ca/TileController.cpp:
(WebCore::TileController::TileController):
(WebCore::TileController::setContentsScale):
(WebCore::TileController::adjustTileCoverageRectForScrolling):
(WebCore::TileController::tiledScrollingIndicatorLayer):
* platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(WebCore::PlatformCALayerCocoa::commonInit):
(WebCore::PlatformCALayerCocoa::setShapeRoundedRect):
* platform/graphics/ca/cocoa/WebTiledBackingLayer.mm:
(-[WebTiledBackingLayer createTileController:]):
* platform/graphics/ca/win/PlatformCALayerWin.cpp:
(PlatformCALayerWin::PlatformCALayerWin):
* platform/graphics/ca/win/WebTiledBackingLayerWin.cpp:
(WebTiledBackingLayerWin::createTileController):
* platform/graphics/cairo/GraphicsContextImplCairo.cpp:
(WebCore::GraphicsContextImplCairo::createFactory):
(WebCore::m_private):
* platform/graphics/cairo/ImageBufferCairo.cpp:
(WebCore::ImageBufferData::swapBuffersIfNeeded):
(WebCore::ImageBuffer::ImageBuffer):
* platform/graphics/cg/ImageBufferCG.cpp:
(WebCore::ImageBuffer::ImageBuffer):
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontCache::createFontPlatformData):
* platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:
(WebCore::FontFamilySpecificationCoreText::fontRanges const):
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::GraphicsContext3D::GraphicsContext3D):
* platform/graphics/cocoa/IOSurface.mm:
(WebCore::IOSurface::ensureGraphicsContext):
* platform/graphics/cocoa/TextTrackRepresentationCocoa.mm:
(TextTrackRepresentation::create):
* platform/graphics/cv/TextureCacheCV.mm:
(WebCore::TextureCacheCV::create):
* platform/graphics/displaylists/DisplayListReplayer.cpp:
(WebCore::DisplayList::Replayer::replay):
* platform/graphics/filters/FilterOperation.cpp:
(WebCore::ReferenceFilterOperation::loadExternalDocumentIfNeeded):
* platform/graphics/freetype/FontCacheFreeType.cpp:
(WebCore::FontCache::createFontPlatformData):
* platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp:
(WebCore::createFontCustomPlatformData):
* platform/graphics/gpu/Texture.cpp:
(WebCore::Texture::create):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::registerMediaEngine):
(WebCore::MediaPlayerPrivateGStreamer::buffered const):
(WebCore::MediaPlayerPrivateGStreamer::ensureAudioSourceProvider):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):
(WebCore::MediaPlayerPrivateGStreamerBase::pushNextHolePunchBuffer):
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webKitWebSrcMakeRequest):
* platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
(WebCore::MediaPlayerPrivateGStreamerMSE::registerMediaEngine):
(WebCore::MediaPlayerPrivateGStreamerMSE::buffered const):
* platform/graphics/holepunch/MediaPlayerPrivateHolePunch.cpp:
(WebCore::MediaPlayerPrivateHolePunch::pushNextHolePunchBuffer):
(WebCore::MediaPlayerPrivateHolePunch::registerMediaEngine):
* platform/graphics/holepunch/MediaPlayerPrivateHolePunch.h:
* platform/graphics/iso/ISOProtectionSchemeInfoBox.cpp:
(WebCore::ISOProtectionSchemeInfoBox::parse):
* platform/graphics/iso/ISOSchemeInformationBox.cpp:
(WebCore::ISOSchemeInformationBox::parse):
* platform/graphics/mac/FontCustomPlatformData.cpp:
(WebCore::createFontCustomPlatformData):
* platform/graphics/nicosia/NicosiaSceneIntegration.cpp:
(Nicosia::SceneIntegration::createUpdateScope):
* platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:
(Nicosia::createCommand):
* platform/graphics/nicosia/cairo/NicosiaPaintingContextCairo.cpp:
(Nicosia::PaintingContextCairo::ForPainting::ForPainting):
(Nicosia::PaintingContextCairo::ForRecording::ForRecording):
* platform/graphics/nicosia/texmap/NicosiaBackingStoreTextureMapperImpl.cpp:
(Nicosia::BackingStoreTextureMapperImpl::createFactory):
* platform/graphics/nicosia/texmap/NicosiaCompositionLayerTextureMapperImpl.cpp:
(Nicosia::CompositionLayerTextureMapperImpl::createFactory):
* platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.cpp:
(Nicosia::ContentLayerTextureMapperImpl::createFactory):
* platform/graphics/nicosia/texmap/NicosiaGC3DLayer.cpp:
(Nicosia::GC3DLayer::swapBuffersIfNeeded):
* platform/graphics/nicosia/texmap/NicosiaImageBackingTextureMapperImpl.cpp:
(Nicosia::ImageBackingTextureMapperImpl::createFactory):
* platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
(WebCore::GraphicsContext3D::getExtensions):
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::compileShader):
(WebCore::GraphicsContext3D::mappedSymbolName):
* platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:
(WebCore::GraphicsContext3D::getExtensions):
(WebCore::GraphicsContext3D::GraphicsContext3D):
* platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp:
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::getExtensions):
* platform/graphics/texmap/TextureMapperGC3DPlatformLayer.cpp:
(WebCore::TextureMapperGC3DPlatformLayer::swapBuffersIfNeeded):
* platform/graphics/texmap/TextureMapperGL.cpp:
(WebCore::TextureMapperGL::TextureMapperGL):
(WebCore::TextureMapper::platformCreateAccelerated):
* platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:
(WebCore::TextureMapperPlatformLayerBuffer::clone):
* platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
(WebCore::TextureMapperPlatformLayerProxy::activateOnCompositingThread):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::updateContentBuffers):
* platform/graphics/texmap/coordinated/TiledBackingStore.cpp:
(WebCore::TiledBackingStore::createTiles):
* platform/graphics/transforms/TransformState.cpp:
(WebCore::TransformState::operator=):
(WebCore::TransformState::applyTransform):
(WebCore::TransformState::setLastPlanarSecondaryQuad):
* platform/graphics/transforms/TransformState.h:
(WebCore::TransformState::setSecondaryQuad):
* platform/graphics/win/FontCacheWin.cpp:
(WebCore::FontCache::createFontPlatformData):
* platform/graphics/win/FontCustomPlatformData.cpp:
(WebCore::createFontCustomPlatformData):
* platform/graphics/win/FontCustomPlatformDataCairo.cpp:
(WebCore::createFontCustomPlatformData):
* platform/graphics/win/FullScreenController.cpp:
(WebCore::FullScreenController::FullScreenController):
(WebCore::FullScreenController::enterFullScreen):
* platform/graphics/win/GraphicsContextCairoWin.cpp:
(WebCore::GraphicsContext::platformInit):
* platform/graphics/win/GraphicsContextDirect2D.cpp:
(WebCore::GraphicsContext::GraphicsContext):
(WebCore::GraphicsContext::platformInit):
* platform/graphics/win/GraphicsContextImplDirect2D.cpp:
(WebCore::GraphicsContextImplDirect2D::createFactory):
(WebCore::m_private):
* platform/graphics/win/GraphicsContextWin.cpp:
(WebCore::GraphicsContext::createWindowsBitmap):
* platform/graphics/win/ImageBufferDirect2D.cpp:
(WebCore::ImageBuffer::ImageBuffer):
* platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
(WebCore::MediaPlayerPrivateMediaFoundation::registerMediaEngine):
(WebCore::MediaPlayerPrivateMediaFoundation::buffered const):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::CustomVideoPresenter):
* platform/graphics/win/WKCAImageQueue.cpp:
(WebCore::WKCAImageQueue::WKCAImageQueue):
* platform/gtk/PasteboardGtk.cpp:
(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::createForGlobalSelection):
(WebCore::Pasteboard::createForDragAndDrop):
* platform/gtk/PasteboardHelper.cpp:
(WebCore::PasteboardHelper::writeClipboardContents):
* platform/gtk/RenderThemeGadget.cpp:
(WebCore::RenderThemeGadget::create):
* platform/gtk/RenderThemeWidget.cpp:
(WebCore::RenderThemeWidget::getOrCreate):
(WebCore::RenderThemeScrollbar::RenderThemeScrollbar):
(WebCore::RenderThemeComboBox::RenderThemeComboBox):
* platform/image-decoders/bmp/BMPImageDecoder.cpp:
(WebCore::BMPImageDecoder::decodeHelper):
* platform/image-decoders/gif/GIFImageDecoder.cpp:
(WebCore::GIFImageDecoder::decode):
* platform/image-decoders/gif/GIFImageReader.cpp:
(GIFFrameContext::decode):
(GIFImageReader::addFrameIfNecessary):
* platform/image-decoders/ico/ICOImageDecoder.cpp:
(WebCore::ICOImageDecoder::decodeAtIndex):
* platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
(WebCore::JPEGImageDecoder::decode):
* platform/image-decoders/png/PNGImageDecoder.cpp:
(WebCore::PNGImageDecoder::decode):
* platform/ios/LegacyTileCache.mm:
(WebCore::LegacyTileCache::LegacyTileCache):
(WebCore::LegacyTileCache::commitScaleChange):
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::Pasteboard::createForCopyAndPaste):
* platform/ios/QuickLook.mm:
(WebCore::registerQLPreviewConverterIfNeeded):
* platform/ios/RemoteCommandListenerIOS.mm:
(WebCore::RemoteCommandListener::create):
* platform/ios/ScrollAnimatorIOS.mm:
(WebCore::ScrollAnimator::create):
* platform/libwpe/PasteboardLibWPE.cpp:
(WebCore::Pasteboard::createForCopyAndPaste):
* platform/mac/PasteboardMac.mm:
(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::createForDragAndDrop):
* platform/mac/RemoteCommandListenerMac.mm:
(WebCore::RemoteCommandListener::create):
* platform/mac/ScrollAnimatorMac.mm:
(WebCore::ScrollAnimator::create):
* platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:
(WebCore::MediaRecorderPrivateAVFImpl::create):
* platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
(WebCore::m_capturer):
(WebCore::GStreamerAudioCaptureSource::GStreamerAudioCaptureSource):
* platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
(WebCore::webkit_media_stream_src_init):
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
(WebCore::GStreamerVideoCaptureSource::GStreamerVideoCaptureSource):
(WebCore::m_capturer):
* platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
(WebCore::GStreamerVideoEncoderFactory::CreateVideoEncoder):
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::BasicPacketSocketFactory::BasicPacketSocketFactory):
(WebCore::initializePeerConnectionFactoryAndThreads):
(WebCore::LibWebRTCProvider::createPeerConnection):
(WebCore::LibWebRTCProvider::certificateGenerator):
* platform/mediastream/libwebrtc/LibWebRTCProviderGStreamer.cpp:
(WebCore::LibWebRTCProviderGStreamer::createDecoderFactory):
(WebCore::LibWebRTCProviderGStreamer::createEncoderFactory):
* platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:
(WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable):
* platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
(WebCore::MockRealtimeAudioSourceMac::reconfigure):
* platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.mm:
(WebCore::RealtimeOutgoingVideoSourceCocoa::convertToYUV):
(WebCore::RealtimeOutgoingVideoSourceCocoa::rotatePixelBuffer):
* platform/mock/RTCNotifiersMock.cpp:
(WebCore::RemoteDataChannelNotifier::fire):
* platform/mock/mediasource/MockMediaPlayerMediaSource.cpp:
(WebCore::MockMediaPlayerMediaSource::registerMediaEngine):
(WebCore::MockMediaPlayerMediaSource::buffered const):
* platform/network/BlobResourceHandle.cpp:
* platform/network/DataURLDecoder.cpp:
(WebCore::DataURLDecoder::createDecodeTask):
* platform/network/ResourceHandle.cpp:
(WebCore::ResourceHandle::ResourceHandle):
* platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willSendRequest):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveData):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFinishLoading):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFail):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willCacheResponse):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveChallenge):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didSendBodyData):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::canRespondToProtectionSpace):
* platform/network/cocoa/WebCoreNSURLSession.mm:
(-[WebCoreNSURLSessionDataTask _restart]):
* platform/network/curl/CookieJarDB.cpp:
(WebCore::CookieJarDB::searchCookies):
(WebCore::CookieJarDB::createPrepareStatement):
* platform/network/curl/CurlCacheManager.cpp:
(WebCore::CurlCacheManager::loadIndex):
(WebCore::CurlCacheManager::didReceiveResponse):
* platform/network/curl/CurlContext.cpp:
(WebCore::CurlContext::CurlContext):
(WebCore::CurlHandle::willSetupSslCtx):
* platform/network/curl/CurlFormDataStream.cpp:
(WebCore::CurlFormDataStream::getPostData):
* platform/network/curl/CurlMultipartHandle.cpp:
(WebCore::CurlMultipartHandle::createIfNeeded):
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::runOnMainThread):
(WebCore::CurlRequest::setupTransfer):
* platform/network/curl/CurlRequestScheduler.cpp:
(WebCore::CurlRequestScheduler::workerThread):
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::delegate):
* platform/network/curl/SocketStreamHandleImplCurl.cpp:
(WebCore::SocketStreamHandleImpl::callOnWorkerThread):
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate callFunctionOnMainThread:]):
* platform/network/soup/DNSResolveQueueSoup.cpp:
(WebCore::DNSResolveQueueSoup::resolve):
* platform/network/soup/NetworkStorageSessionSoup.cpp:
(WebCore::NetworkStorageSession::getCredentialFromPersistentStorage):
* platform/text/BidiResolver.h:
(WebCore::DerivedClass>::appendRunInternal):
* platform/text/LocaleICU.cpp:
(WebCore::Locale::create):
(WebCore::LocaleICU::createLabelVector):
(WebCore::createFallbackMonthLabels):
(WebCore::createFallbackAMPMLabels):
* platform/text/LocaleNone.cpp:
(WebCore::Locale::create):
* platform/text/TextCodecICU.cpp:
(WebCore::TextCodecICU::registerCodecs):
* platform/text/TextCodecLatin1.cpp:
(WebCore::TextCodecLatin1::registerCodecs):
* platform/text/TextCodecReplacement.cpp:
(WebCore::TextCodecReplacement::registerCodecs):
* platform/text/TextCodecUTF16.cpp:
(WebCore::TextCodecUTF16::registerCodecs):
* platform/text/TextCodecUTF8.cpp:
(WebCore::TextCodecUTF8::registerCodecs):
* platform/text/TextCodecUserDefined.cpp:
(WebCore::TextCodecUserDefined::registerCodecs):
* platform/text/mac/LocaleMac.mm:
(WebCore::Locale::create):
* platform/text/win/LocaleWin.cpp:
(WebCore::Locale::create):
* platform/text/win/TextCodecWin.cpp:
(WebCore::newTextCodecWin):
* platform/vr/openvr/VRPlatformManagerOpenVR.cpp:
(WebCore::VRPlatformManagerOpenVR::create):
(WebCore::VRPlatformManagerOpenVR::getVRDisplays):
* platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::createForDragAndDrop):
* platform/win/SearchPopupMenuDB.cpp:
(WebCore::SearchPopupMenuDB::createPreparedStatement):
* platform/win/WCDataObject.cpp:
(WebCore::WCDataObject::SetData):
* rendering/CSSFilter.cpp:
(WebCore::CSSFilter::buildReferenceFilter):
* rendering/ComplexLineLayout.cpp:
(WebCore::createRun):
(WebCore::ComplexLineLayout::createRootInlineBox):
(WebCore::ComplexLineLayout::handleTrailingSpaces):
(WebCore::ComplexLineLayout::linkToEndLineIfNeeded):
* rendering/FloatingObjects.cpp:
(WebCore::FloatingObject::create):
(WebCore::FloatingObject::copyToNewContainer const):
(WebCore::FloatingObject::cloneForNewParent const):
(WebCore::FloatingObjects::computePlacedFloatsTree):
* rendering/Grid.cpp:
(WebCore::GridIterator::nextEmptyGridArea):
* rendering/GridBaselineAlignment.cpp:
(WebCore::GridBaselineAlignment::updateBaselineAlignmentContext):
* rendering/GridTrackSizingAlgorithm.cpp:
(WebCore::GridTrackSizingAlgorithm::computeFlexFactorUnitSize const):
(WebCore::GridTrackSizingAlgorithm::setup):
* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::HitTestResult):
(WebCore::HitTestResult::operator=):
(WebCore::HitTestResult::listBasedTestResult const):
(WebCore::HitTestResult::mutableListBasedTestResult):
* rendering/InlineIterator.h:
(WebCore::addPlaceholderRunForIsolatedInline):
* rendering/LayerOverlapMap.cpp:
(WebCore::LayerOverlapMap::pushCompositingContainer):
* rendering/RenderBlock.cpp:
(WebCore::insertIntoTrackedRendererMaps):
(WebCore::PositionedDescendantsMap::addDescendant):
(WebCore::RenderBlock::beginUpdateScrollInfoAfterLayoutTransaction):
(WebCore::ensureBlockRareData):
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::layoutInlineChildren):
(WebCore::RenderBlockFlow::layoutLineGridBox):
(WebCore::RenderBlockFlow::createFloatingObjects):
(WebCore::RenderBlockFlow::ensureLineBoxes):
(WebCore::RenderBlockFlow::materializeRareBlockFlowData):
* rendering/RenderBox.cpp:
(WebCore::controlStatesForRenderer):
(WebCore::RenderBox::createInlineBox):
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::ensureContinuationChainNode):
* rendering/RenderCounter.cpp:
(WebCore::makeCounterNode):
* rendering/RenderFragmentContainer.cpp:
(WebCore::RenderFragmentContainer::setRenderBoxFragmentInfo):
* rendering/RenderFragmentedFlow.cpp:
(WebCore::RenderFragmentedFlow::containingFragmentMap):
* rendering/RenderGeometryMap.cpp:
(WebCore::RenderGeometryMap::push):
(WebCore::RenderGeometryMap::pushView):
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::computeEmptyTracksForAutoRepeat const):
(WebCore::RenderGrid::createEmptyGridAreaAtSpecifiedPositionsOutsideGrid const):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::RenderImage):
* rendering/RenderInline.cpp:
(WebCore::RenderInline::createInlineFlowBox):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateNormalFlowList):
(WebCore::RenderLayer::collectLayers):
(WebCore::RenderLayer::updateTransform):
(WebCore::RenderLayer::updateClipRects):
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateAncestorClippingStack):
(WebCore::RenderLayerBacking::startAnimation):
(WebCore::RenderLayerBacking::startTransition):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::RenderLayerCompositor):
(WebCore::RenderLayerCompositor::notifyFlushBeforeDisplayRefresh):
(WebCore::LegacyWebKitScrollingLayerCoordinator::registerAllViewportConstrainedLayers):
* rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::createLayer):
* rendering/RenderLineBreak.cpp:
(WebCore::RenderLineBreak::createInlineBox):
* rendering/RenderMultiColumnFlow.cpp:
(WebCore::RenderMultiColumnFlow::RenderMultiColumnFlow):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::ensureRareData):
* rendering/RenderSnapshottedPlugIn.cpp:
(WebCore::RenderSnapshottedPlugIn::RenderSnapshottedPlugIn):
* rendering/RenderTable.cpp:
(WebCore::RenderTable::styleDidChange):
* rendering/RenderText.cpp:
(WebCore::RenderText::createTextBox):
(WebCore::RenderText::momentarilyRevealLastTypedCharacter):
* rendering/RenderView.cpp:
(WebCore::RenderView::repaintViewRectangle const):
(WebCore::RenderView::compositor):
(WebCore::RenderView::imageQualityController):
(WebCore::RenderView::RepaintRegionAccumulator::RepaintRegionAccumulator):
* rendering/RootInlineBox.cpp:
(WebCore::RootInlineBox::placeEllipsis):
* rendering/RootInlineBox.h:
(WebCore::RootInlineBox::appendFloat):
* rendering/SelectionRangeData.cpp:
(WebCore::collect):
(WebCore::SelectionRangeData::collectBounds const):
(WebCore::SelectionRangeData::apply):
* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::Layout::runResolver const):
* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::paintFlow):
(WebCore::SimpleLineLayout::generateLineBoxTree):
* rendering/TextAutoSizing.cpp:
(WebCore::TextAutoSizing::addTextNode):
* rendering/line/LineBreaker.cpp:
(WebCore::LineBreaker::skipLeadingWhitespace):
* rendering/shapes/RasterShape.cpp:
(WebCore::RasterShapeIntervals::computeShapeMarginIntervals const):
* rendering/shapes/Shape.cpp:
(WebCore::createInsetShape):
(WebCore::createCircleShape):
(WebCore::createEllipseShape):
(WebCore::createPolygonShape):
(WebCore::Shape::createShape):
(WebCore::Shape::createRasterShape):
(WebCore::Shape::createBoxShape):
* rendering/shapes/ShapeOutsideInfo.h:
* rendering/style/BasicShapes.cpp:
(WebCore::BasicShapePath::blend const):
* rendering/style/ContentData.h:
* rendering/style/FillLayer.cpp:
(WebCore::FillLayer::FillLayer):
(WebCore::FillLayer::operator=):
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::clonePtr):
(WebCore::RenderStyle::addCachedPseudoStyle):
(WebCore::RenderStyle::addCustomPaintWatchProperty):
(WebCore::RenderStyle::setContent):
(WebCore::RenderStyle::accessCounterDirectives):
(WebCore::RenderStyle::ensureAnimations):
(WebCore::RenderStyle::ensureTransitions):
* rendering/style/SVGRenderStyleDefs.cpp:
(WebCore::StyleShadowSVGData::StyleShadowSVGData):
* rendering/style/ShadowData.cpp:
(WebCore::ShadowData::ShadowData):
* rendering/style/StyleRareInheritedData.cpp:
(WebCore::StyleRareInheritedData::StyleRareInheritedData):
* rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
* rendering/svg/RenderSVGImage.cpp:
(WebCore::RenderSVGImage::RenderSVGImage):
* rendering/svg/RenderSVGInline.cpp:
(WebCore::RenderSVGInline::createInlineFlowBox):
* rendering/svg/RenderSVGInlineText.cpp:
(WebCore::RenderSVGInlineText::createTextBox):
* rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::buildPrimitives const):
(WebCore::RenderSVGResourceFilter::applyResource):
* rendering/svg/RenderSVGResourceGradient.cpp:
(WebCore::RenderSVGResourceGradient::applyResource):
* rendering/svg/RenderSVGResourceMasker.cpp:
(WebCore::RenderSVGResourceMasker::applyResource):
* rendering/svg/RenderSVGResourcePattern.cpp:
(WebCore::RenderSVGResourcePattern::buildPattern):
* rendering/svg/RenderSVGShape.cpp:
(WebCore::RenderSVGShape::updateShapeFromElement):
* rendering/svg/SVGResources.cpp:
(WebCore::SVGResources::setClipper):
(WebCore::SVGResources::setFilter):
(WebCore::SVGResources::setMarkerStart):
(WebCore::SVGResources::setMarkerMid):
(WebCore::SVGResources::setMarkerEnd):
(WebCore::SVGResources::setMasker):
(WebCore::SVGResources::setFill):
(WebCore::SVGResources::setStroke):
* rendering/svg/SVGResourcesCache.cpp:
(WebCore::SVGResourcesCache::addResourcesFromRenderer):
* rendering/svg/SVGTextMetricsBuilder.cpp:
(WebCore::SVGTextMetricsBuilder::initializeMeasurementWithTextRenderer):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::RenderTreeBuilder):
* rendering/updating/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::RenderTreeUpdater):
* style/StyleInvalidator.cpp:
(WebCore::Style::Invalidator::Invalidator):
* style/StyleRelations.cpp:
(WebCore::Style::commitRelationsToRenderStyle):
* style/StyleScope.cpp:
(WebCore::Style::Scope::resolver):
(WebCore::Style::Scope::activeStyleSheetsContains const):
* style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::resolve):
* svg/SVGDocumentExtensions.cpp:
(WebCore::SVGDocumentExtensions::SVGDocumentExtensions):
(WebCore::SVGDocumentExtensions::addPendingResource):
(WebCore::SVGDocumentExtensions::addElementReferencingTarget):
* svg/SVGElement.cpp:
(WebCore::SVGElement::SVGElement):
(WebCore::SVGElement::ensureSVGRareData):
* svg/SVGGraphicsElement.cpp:
(WebCore::SVGGraphicsElement::supplementalTransform):
* svg/SVGPathByteStream.h:
(WebCore::SVGPathByteStream::copy const):
* svg/animation/SMILTimeContainer.cpp:
(WebCore::SMILTimeContainer::schedule):
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::dataChanged):
* svg/properties/SVGAnimatedDecoratedProperty.h:
(WebCore::SVGAnimatedDecoratedProperty::create):
* svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
* svg/properties/SVGAnimatedPropertyPairAnimatorImpl.h:
* svg/properties/SVGDecoratedEnumeration.h:
(WebCore::SVGDecoratedEnumeration::create):
* svg/properties/SVGPrimitivePropertyAnimator.h:
(WebCore::SVGPrimitivePropertyAnimator::create):
* svg/properties/SVGValuePropertyAnimatorImpl.h:
* svg/properties/SVGValuePropertyListAnimatorImpl.h:
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::from):
* testing/Internals.cpp:
(WebCore::InspectorStubFrontend::InspectorStubFrontend):
(WebCore::Internals::Internals):
(WebCore::Internals::enableMockSpeechSynthesizer):
(WebCore::Internals::openDummyInspectorFrontend):
(WebCore::Internals::setPrinting):
(WebCore::Internals::initializeMockCDM):
(WebCore::Internals::queueMicroTask):
* testing/LegacyMockCDM.cpp:
(WebCore::LegacyMockCDM::createSession):
* testing/MockCDMFactory.cpp:
(WebCore::MockCDMFactory::createCDM):
* testing/MockContentFilter.cpp:
(WebCore::MockContentFilter::create):
* testing/MockGamepadProvider.cpp:
(WebCore::MockGamepadProvider::setMockGamepadDetails):
* workers/WorkerConsoleClient.cpp:
(WebCore::WorkerConsoleClient::messageWithTypeAndLevel):
* workers/WorkerEventQueue.cpp:
(WebCore::WorkerEventQueue::enqueueEvent):
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::addMessage):
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::WorkerMessagingProxy):
(WebCore::WorkerMessagingProxy::postMessageToWorkerGlobalScope):
* workers/WorkerRunLoop.cpp:
(WebCore::WorkerRunLoop::WorkerRunLoop):
(WebCore::WorkerRunLoop::postTaskAndTerminate):
(WebCore::WorkerRunLoop::postTaskForMode):
* workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::loadAsynchronously):
(WebCore::WorkerScriptLoader::createResourceRequest):
* workers/WorkerThread.cpp:
(WebCore::WorkerThread::WorkerThread):
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::ready):
(WebCore::ServiceWorkerContainer::addRegistration):
(WebCore::ServiceWorkerContainer::removeRegistration):
(WebCore::ServiceWorkerContainer::updateRegistration):
(WebCore::ServiceWorkerContainer::getRegistration):
(WebCore::ServiceWorkerContainer::getRegistrations):
* workers/service/context/SWContextManager.cpp:
(WebCore::SWContextManager::terminateWorker):
* workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy):
(WebCore::ServiceWorkerThreadProxy::createBlobLoader):
* workers/service/server/RegistrationDatabase.cpp:
(WebCore::RegistrationDatabase::openSQLiteDatabase):
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::addRegistrationFromStore):
(WebCore::SWServer::SWServer):
(WebCore::SWServer::scheduleJob):
(WebCore::SWServer::unregisterServiceWorkerClient):
* workers/service/server/SWServerJobQueue.cpp:
(WebCore::SWServerJobQueue::runRegisterJob):
* worklets/PaintWorkletGlobalScope.cpp:
(WebCore::PaintWorkletGlobalScope::registerPaint):
* worklets/WorkletConsoleClient.cpp:
(WebCore::WorkletConsoleClient::messageWithTypeAndLevel):
* worklets/WorkletGlobalScope.cpp:
(WebCore::WorkletGlobalScope::WorkletGlobalScope):
(WebCore::WorkletGlobalScope::addConsoleMessage):
* worklets/WorkletScriptController.cpp:
(WebCore::WorkletScriptController::initScriptWithSubclass):
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::upload):
* xml/XPathFunctions.cpp:
* xml/XPathPredicate.cpp:
(WebCore::XPath::evaluatePredicate):
* xml/XSLStyleSheetLibxslt.cpp:
(WebCore::XSLStyleSheet::loadChildSheet):
* xml/parser/XMLDocumentParser.cpp:
(WebCore::XMLDocumentParser::handleError):
* xml/parser/XMLDocumentParserLibxml2.cpp:
(WebCore::PendingCallbacks::appendStartElementNSCallback):
(WebCore::PendingCallbacks::appendEndElementNSCallback):
(WebCore::PendingCallbacks::appendCharactersCallback):
(WebCore::PendingCallbacks::appendProcessingInstructionCallback):
(WebCore::PendingCallbacks::appendCDATABlockCallback):
(WebCore::PendingCallbacks::appendCommentCallback):
(WebCore::PendingCallbacks::appendInternalSubsetCallback):
(WebCore::PendingCallbacks::appendErrorCallback):
(WebCore::XMLDocumentParser::XMLDocumentParser):
(WebCore::XMLDocumentParser::doEnd):
2019-08-18 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Compute column min/max widths and table width.
https://bugs.webkit.org/show_bug.cgi?id=200757
<rdar://problem/54333148>
Reviewed by Antti Koivisto.
For each column, determine a maximum and minimum column width from the cells that span only that column.
The minimum is that required by the cell with the largest minimum cell width (or the column 'width', whichever is larger).
The maximum is that required by the cell with the largest maximum cell width (or the column 'width', whichever is larger).
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns const):
* layout/tableformatting/TableGrid.cpp:
(WebCore::Layout::TableGrid::appendCell):
* layout/tableformatting/TableGrid.h:
(WebCore::Layout::TableGrid::columns):
(WebCore::Layout::TableGrid::rows):
2019-08-17 Darin Adler <darin@apple.com>
Tidy up checks to see if a character is in the Latin-1 range by using isLatin1 consistently
https://bugs.webkit.org/show_bug.cgi?id=200861
Reviewed by Ross Kirsling.
* css/makeSelectorPseudoClassAndCompatibilityElementMap.py: Use isLatin1.
* css/makeSelectorPseudoElementsMap.py: Ditto.
* editing/TextIterator.cpp:
(WebCore::isNonLatin1Separator): Ditto.
(WebCore::isSeparator): Ditto.
* platform/network/HTTPParsers.cpp:
(WebCore::isValidReasonPhrase): Ditto.
(WebCore::isValidHTTPHeaderValue): Ditto.
(WebCore::isValidAcceptHeaderValue): Ditto.
* platform/text/TextCodecLatin1.cpp:
(WebCore::TextCodecLatin1::decode): Ditto.
* platform/text/TextCodecUTF8.cpp:
(WebCore::TextCodecUTF8::handlePartialSequence): Ditto.
(WebCore::TextCodecUTF8::decode): Ditto.
2019-08-18 Cathie Chen <cathiechen@igalia.com>
Crash in Document::deliverResizeObservations
https://bugs.webkit.org/show_bug.cgi?id=200635
Reviewed by Simon Fraser.
Document::deliverResizeObservations will crash if m_resizeObservers in Document
is modified in JS callbacks when we are traversing observers in m_resizeObservers.
This patch copy m_resizeObservers to a new vector, and check null for observers.
Test: resize-observer/delete-observers-in-callbacks.html
* dom/Document.cpp:
(WebCore::Document::deliverResizeObservations):
2019-08-17 Sam Weinig <weinig@apple.com>
Rename StringBuilder::flexibleAppend(...) to StringBuilder::append(...)
https://bugs.webkit.org/show_bug.cgi?id=200756
Reviewed by Darin Adler.
Update call sites for rename from StringBuilder::flexibleAppend(...) to
StringBuilder::append(...).
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
(WebCore::WHLSL::Metal::EntryPointScaffolding::emitResourceHelperTypes):
(WebCore::WHLSL::Metal::EntryPointScaffolding::emitResourceSignature):
(WebCore::WHLSL::Metal::EntryPointScaffolding::emitBuiltInsSignature):
(WebCore::WHLSL::Metal::EntryPointScaffolding::emitMangledInputPath):
(WebCore::WHLSL::Metal::EntryPointScaffolding::emitMangledOutputPath):
(WebCore::WHLSL::Metal::EntryPointScaffolding::emitUnpackResourcesAndNamedBuiltIns):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::emitHelperTypes):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::emitSignature):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::emitUnpack):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::emitPack):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::emitHelperTypes):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::emitSignature):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::emitUnpack):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::emitPack):
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::emitSignature):
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::declareFunction):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::emitLoop):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::emitConstantExpressionString):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::inlineNativeFunction):
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):
(WebCore::WHLSL::Metal::TypeNamer::emitNamedTypeDefinition):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Types::appendNameTo):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::logLayerInfo):
* testing/Internals.cpp:
(WebCore::Internals::ongoingLoadsDescriptions const):
2019-08-16 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r248772.
https://bugs.webkit.org/show_bug.cgi?id=200853
Causes timeouts in some WebGL tests (Requested by anttik on
#webkit).
Reverted changeset:
"Content in <iframe> should override "touch-action" set in
embedding document"
https://bugs.webkit.org/show_bug.cgi?id=200204
https://trac.webkit.org/changeset/248772
2019-08-16 Myles C. Maxfield <mmaxfield@apple.com>
[macOS] Emoji with variation selectors are rendered in text style, not emoji style
https://bugs.webkit.org/show_bug.cgi?id=200830
<rdar://problem/53076002>
Reviewed by Simon Fraser.
When mapping characters to glyphs, Core Text is giving us the deleted glyph ID, which is unexpected.
We were treating it as a valid glyph ID, but it rather should be treated as an invalid glyph ID.
Test: fast/text/emoji-variation-selector.html
* platform/graphics/mac/GlyphPageMac.cpp:
(WebCore::GlyphPage::fill):
2019-08-16 Saam Barati <sbarati@apple.com>
[WHLSL] Make "operator cast" constructors native
https://bugs.webkit.org/show_bug.cgi?id=200748
Reviewed by Myles C. Maxfield.
Tests: webgpu/whlsl/matrix-constructors.html
webgpu/whlsl/vector-constructors.html
* Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h:
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::inlineNativeFunction):
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
2019-08-16 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Enums should be shadowed by local variables
https://bugs.webkit.org/show_bug.cgi?id=200847
Reviewed by Saam Barati.
Only cause DotExpressions to become EnumerationMemberLiterals if they aren't valid variable names.
Test: webgpu/whlsl/structure-field-enumeration-element-clash.html
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::visit):
2019-08-15 Ryosuke Niwa <rniwa@webkit.org>
Don't use union to store NodeRareData* and RenderObject*
https://bugs.webkit.org/show_bug.cgi?id=200744
Reviewed by Antti Koivisto.
This patch undoes unioning of NodeRareData* and RenderObject* in Node introduced in r133372 in order
to eliminate any possibility of type confusion bugs. Instead of re-introducing the global map, which
is known to be slow, this patch simply adds an extra pointer for NodeRareData: Node::m_rareData.
To compensate for the increased memory usage due to a new pointer type in Node, this patch also packs
the style related flags in ElementRareData, which is the most common reason for which ElementRareData
is created, into RenderObject* pointer using CompactPointerTuple as Node::m_rendererWithStyleFlags.
Unfortunately, there are 9 style related flags and they won't all fit into the single byte provided
by CompactPointerTuple. Luckily, this patch also eliminates the need for HasRareDataFlag as m_rareData
knows whether a node has rare data or not so we re-use that bitflag space for the extra one flag.
No new tests since there should be no observable behavioral change from this.
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthChild): Check the nullity of
m_rareData directly instead of checking HasRareDataFlag, which has been removed.
* dom/Element.cpp:
(WebCore::Element::setStyleAffectedByEmpty): Deleted.
(WebCore::Element::setStyleAffectedByFocusWithin): Deleted.
(WebCore::Element::setStyleAffectedByActive): Deleted.
(WebCore::Element::setChildrenAffectedByDrag): Deleted.
(WebCore::Element::setChildrenAffectedByForwardPositionalRules): Deleted.
(WebCore::Element::setDescendantsAffectedByForwardPositionalRules): Deleted.
(WebCore::Element::setChildrenAffectedByBackwardPositionalRules): Deleted.
(WebCore::Element::setDescendantsAffectedByBackwardPositionalRules): Deleted.
(WebCore::Element::setChildrenAffectedByPropertyBasedBackwardPositionalRules): Deleted.
(WebCore::Element::hasFlagsSetDuringStylingOfChildren const):
(WebCore::Element::resetStyleRelations): Clear the flags in m_rendererWithStyleFlags and m_nodeFlags.
(WebCore::Element::rareDataStyleAffectedByEmpty const): Deleted.
(WebCore::Element::rareDataStyleAffectedByFocusWithin const): Deleted.
(WebCore::Element::rareDataStyleAffectedByActive const): Deleted.
(WebCore::Element::rareDataChildrenAffectedByDrag const): Deleted.
(WebCore::Element::rareDataChildrenAffectedByForwardPositionalRules const): Deleted.
(WebCore::Element::rareDataDescendantsAffectedByForwardPositionalRules const): Deleted.
(WebCore::Element::rareDataChildrenAffectedByBackwardPositionalRules const): Deleted.
(WebCore::Element::rareDataDescendantsAffectedByBackwardPositionalRules const): Deleted.
(WebCore::Element::rareDataChildrenAffectedByPropertyBasedBackwardPositionalRules const): Deleted.
* dom/Element.h:
(WebCore::Element::styleAffectedByActive const): Now uses m_rendererWithStyleFlags.
(WebCore::Element::styleAffectedByEmpty const): Ditto.
(WebCore::Element::styleAffectedByFocusWithin const): Now uses m_nodeFlags.
(WebCore::Element::childrenAffectedByDrag const): Now uses m_rendererWithStyleFlags.
(WebCore::Element::childrenAffectedByForwardPositionalRules const): Ditto.
(WebCore::Element::descendantsAffectedByForwardPositionalRules const): Ditto.
(WebCore::Element::childrenAffectedByBackwardPositionalRules const): Ditto.
(WebCore::Element::descendantsAffectedByBackwardPositionalRules const): Ditto.
(WebCore::Element::childrenAffectedByPropertyBasedBackwardPositionalRules const): Ditto.
(WebCore::Element::setStyleAffectedByEmpty): Now stores into m_rendererWithStyleFlags.
(WebCore::Element::setStyleAffectedByFocusWithin): Now uses m_nodeFlags.
(WebCore::Element::setDescendantsAffectedByPreviousSibling): Removed const qualifier & useless return.
(WebCore::Element::setStyleAffectedByActive): Now stores into m_rendererWithStyleFlags.
(WebCore::Element::setChildrenAffectedByDrag): Ditto.
(WebCore::Element::setChildrenAffectedByForwardPositionalRules): Ditto.
(WebCore::Element::setDescendantsAffectedByForwardPositionalRules): Ditto.
(WebCore::Element::setChildrenAffectedByBackwardPositionalRules): Ditto.
(WebCore::Element::setDescendantsAffectedByBackwardPositionalRules): Ditto.
(WebCore::Element::setChildrenAffectedByPropertyBasedBackwardPositionalRules): Ditto.
* dom/ElementRareData.h:
(WebCore::ElementRareData::styleAffectedByActive const): Deleted.
(WebCore::ElementRareData::setStyleAffectedByActive): Deleted.
(WebCore::ElementRareData::styleAffectedByEmpty const): Deleted.
(WebCore::ElementRareData::setStyleAffectedByEmpty): Deleted.
(WebCore::ElementRareData::styleAffectedByFocusWithin const): Deleted.
(WebCore::ElementRareData::setStyleAffectedByFocusWithin): Deleted.
(WebCore::ElementRareData::childrenAffectedByDrag const): Deleted.
(WebCore::ElementRareData::setChildrenAffectedByDrag): Deleted.
(WebCore::ElementRareData::childrenAffectedByLastChildRules const): Deleted.
(WebCore::ElementRareData::setChildrenAffectedByLastChildRules): Deleted.
(WebCore::ElementRareData::childrenAffectedByForwardPositionalRules const): Deleted.
(WebCore::ElementRareData::setChildrenAffectedByForwardPositionalRules): Deleted.
(WebCore::ElementRareData::descendantsAffectedByForwardPositionalRules const): Deleted.
(WebCore::ElementRareData::setDescendantsAffectedByForwardPositionalRules): Deleted.
(WebCore::ElementRareData::childrenAffectedByBackwardPositionalRules const): Deleted.
(WebCore::ElementRareData::setChildrenAffectedByBackwardPositionalRules): Deleted.
(WebCore::ElementRareData::descendantsAffectedByBackwardPositionalRules const): Deleted.
(WebCore::ElementRareData::setDescendantsAffectedByBackwardPositionalRules): Deleted.
(WebCore::ElementRareData::childrenAffectedByPropertyBasedBackwardPositionalRules const): Deleted.
(WebCore::ElementRareData::setChildrenAffectedByPropertyBasedBackwardPositionalRules): Deleted.
(WebCore::ElementRareData::useTypes const): Removed UseType::StyleFlags.
(WebCore::ElementRareData::ElementRareData): No longer takes RenderElement*.
(WebCore::ElementRareData::resetStyleRelations): Only re-sets child index now since that's all left.
* dom/Node.cpp:
(WebCore::stringForRareDataUseType): Removed UseType::StyleFlags since there is no style related
flags in ElementRareData.
(WebCore::Node::materializeRareData): Simplified now that m_rareData is not a union.
(WebCore::Node::clearRareData): Ditto.
* dom/Node.h:
(WebCore::NodeRareDataBase): Deleted.
(WebCore::Node::renderer const):
(WebCore::Node::rareDataMemoryOffset):
(WebCore::Node::flagHasRareData): Deleted.
(WebCore::Node::NodeFlags): Replaced HasRareDataFlag with StyleAffectedByFocusWithinFlag.
(WebCore::Node::ElementStyleFlag): Added.
(WebCore::Node::hasStyleFlag const): Added. Checks a reprense of a flag in m_rendererWithStyleFlags.
(WebCore::Node::setStyleFlag): Ditto for setting a flag.
(WebCore::Node::clearStyleFlags): Ditto for clearing all flags.
(WebCore::Node::hasRareData const): Now checks the nullity of m_rareData directly.
(WebCore::Node::rareData const):
* dom/NodeRareData.cpp: The size of NodeRareData is shrunk by one pointer.
* dom/NodeRareData.h:
(WebCore::NodeRareData::NodeRareData): No longer inherits from NodeRareDataBase which was needed to
to store RenderObject*.
(WebCore::Node::rareData const): Moved to Node.h.
* rendering/RenderObject.h:
(WebCore::Node::setRenderer): Moved from Node.h since CompactPointerTuple::setPointer has the
aforementioned static_assert which requires the definition of RenderObject.
2019-08-16 Saam Barati <sbarati@apple.com>
[WHLSL] Add comparison operators for vectors and matrices
https://bugs.webkit.org/show_bug.cgi?id=200823
Reviewed by Myles C. Maxfield.
Tests: webgpu/whlsl/matrix-compare.html
webgpu/whlsl/vector-compare.html
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
2019-08-16 Saam Barati <sbarati@apple.com>
Unreviewed. When I rebased to land r248795, I had a bad merge in
WHLSLStandardLibrary.txt where the bool matrix constructors ended
up in the wrong section of the standard library.
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
2019-08-16 Saam Barati <sbarati@apple.com>
[WHLSL] Make operator== native and add bool matrices
https://bugs.webkit.org/show_bug.cgi?id=200749
Reviewed by Myles C. Maxfield.
This patch makes operator== native and implements them the right way
for vectors and matrices. Previously, we would just return a single
boolean indicating if all elements were equal. However, to be compatible
with HLSL, we should return a boolean vector or matrix, indicating which
elements are equal or not. This patch makes this change, and in the process,
adds a bool matrix.
This patch also:
- Lifts the requirement that all comparison operators in user code must return bool.
We no longer follow this in the standard library, and don't want to require user
code to do so. It seems reasonable to have a custom comparison operator
which returns an enum of the form { LessThan, Equal, GreaterThan, Incomparable }
- Changes the native operator inliner to no longer assume that operations on
matrices return the same type as the arguments. This was true for math, but
is not true for comparison operators.
Tests: webgpu/whlsl/bool-matrix.html
webgpu/whlsl/operator-equal-equal.html
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::inlineNativeFunction):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeTypeWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeType):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::checkOperatorOverload):
* Modules/webgpu/WHLSL/WHLSLIntrinsics.cpp:
(WebCore::WHLSL::Intrinsics::addMatrix):
* Modules/webgpu/WHLSL/WHLSLIntrinsics.h:
(WebCore::WHLSL::Intrinsics::WTF_ARRAY_LENGTH):
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
2019-08-16 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] Add ContentChangeObserver::elementDidBecomeHidden
https://bugs.webkit.org/show_bug.cgi?id=200819
Reviewed by Simon Fraser.
r248750 started tracking candidate elements that become hidden through renderer destruction. This patch expands the check for other visibility style changes.
<rdar://problem/54400223>
Test: fast/events/touch/ios/content-observation/going-from-hidden-to-visible-and-to-hidden3.html
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::rendererWillBeDestroyed):
(WebCore::ContentChangeObserver::elementDidBecomeHidden):
(WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope):
* page/ios/ContentChangeObserver.h:
2019-08-16 Ryosuke Niwa <rniwa@webkit.org>
Split tabIndex computation for DOM and the rest of WebCore
https://bugs.webkit.org/show_bug.cgi?id=200806
Reviewed by Chris Dumez.
This patch renames Element::tabIndex to Element::tabIndexForBindings and migrates its usage in
WebCore outside JS bindings code to: tabIndexSetExplicitly, which now returns Optional<int>,
and shouldBeIgnoredInSequentialFocusNavigation which returns true whenever the old tabIndex
function used to return -1.
Instead of overriding Element::tabIndex, each subclass of element now overrides defaultTabIndex
corresponding to the concept of the default value of tabIndex IDL attribute defined at:
https://html.spec.whatwg.org/multipage/interaction.html#the-tabindex-attribute
No new tests since there should be no observable behavior change.
* dom/Element.cpp:
(WebCore::Element::tabIndexSetExplicitly const): Now returns Optional<int> instead of bool.
(WebCore::Element::defaultTabIndex const): Added. Return -1 here. HTMLElement and SVGElement
manually override tabIndex to implement this behavior. Now MathMLElement overrides this function
to return 0 instead, which is arguably a bug.
(WebCore::Element::supportsFocus const): Convert Optional<int> to bool.
(WebCore::Element::tabIndexForBindings const): Renamed from tabIndex. Migrated the code in
HTMLElement::tabIndex and SVGElement::tabIndex here. Note all overrides of HTMLElement::tabIndex
and SVGElement::tabIndex below were skipping supportsFocus check and using 0 as the default value.
This is now accomplished by having an explicit check defaultTabIndex returning 0. MathMLElement
overrides defaultTabIndex so it continues to use the old logic. All this complexity should go away
in webkit.org/b/199606.
(WebCore::Element::setTabIndexForBindings): Renamed from setTabIndex.
(WebCore::Element::isKeyboardFocusable const): Checks shouldBeIgnoredInSequentialFocusNavigation
in lieu of calling Element::tabIndexForBindings.
* dom/Element.h:
(WebCore::Element::shouldBeIgnoredInSequentialFocusNavigation const): Added. Returns true if the
old implementation of Element::tabIndex would have returned -1 due to supportsFocus returning false.
* dom/ElementRareData.h:
(WebCore::ElementRareData::tabIndex const): Made this function return Optional<int>. Note that
ElementRareData continue to store a bit field and int for more efficient packing.
* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::defaultTabIndex const): Replaced tabIndex.
* html/HTMLAnchorElement.h:
* html/HTMLAreaElement.cpp:
(WebCore::HTMLAreaElement::isFocusable const):
* html/HTMLElement.cpp:
(WebCore::HTMLElement::tabIndex const): Deleted. The logic is now in Element::tabIndex itself.
* html/HTMLElement.h:
* html/HTMLElement.idl:
* html/HTMLFormControlElement.cpp:
(WebCore::HTMLFormControlElement::defaultTabIndex const): Replaced tabIndex.
* html/HTMLFormControlElement.h:
* mathml/MathMLElement.cpp:
(WebCore::MathMLElement::defaultTabIndex const): Replaced tabIndex. This is probably a bug since
this would put every MathML element in the sequential navigation order regardless of whether it
has tabIndex set or not.
* mathml/MathMLElement.h:
* page/FocusController.cpp:
(WebCore::tabIndexForElement): Added. Computes the "effective" tab index FocusController uses.
(WebCore::shadowAdjustedTabIndex):
(WebCore::nextElementWithGreaterTabIndex): This code should use shadowAdjustedTabIndex instead
but keeping the old behavior for now.
* svg/SVGAElement.cpp:
(WebCore::SVGAElement::defaultTabIndex const): Replaced tabIndex.
* svg/SVGAElement.h:
* svg/SVGElement.cpp:
(WebCore::SVGElement::tabIndex const): Deleted. The logic is now in Element::tabIndex itself.
* svg/SVGElement.h:
(WebCore::SVGElement::hasTagName const):
* svg/SVGElement.idl:
2019-08-16 Ross Kirsling <ross.kirsling@sony.com>
Unreviewed restabilization of non-unified build.
* Modules/indexeddb/server/IDBSerializationContext.cpp:
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
* fileapi/ThreadableBlobRegistry.h:
* loader/SinkDocument.cpp:
2019-08-16 Antti Koivisto <antti@apple.com>
Content in <iframe> should override "touch-action" set in embedding document
https://bugs.webkit.org/show_bug.cgi?id=200204
<rdar://problem/54355249>
Reviewed by Antoine Quint.
Test: pointerevents/ios/touch-action-region-frame.html
Subframes where content doesn't use any touch-action properties won't generate event region for their main layer.
As a result the touch-action property gets computed in UI process to the parent frames touch-action (instead of 'auto').
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateEventRegion):
Generate event region for the main layer of subframes.
2019-08-16 Miguel Gomez <magomez@igalia.com>
[GTK][WPE] Move TextureMapperAnimation to the nicosia namespace as Nicosia::Animation
https://bugs.webkit.org/show_bug.cgi?id=200707
Reviewed by Žan Doberšek.
Move TextureMapperAnimation to Nicosia::Animation so it can be used by non TextureMapper
code paths.
* platform/TextureMapper.cmake:
* platform/graphics/nicosia/NicosiaAnimation.cpp: Renamed from Source/WebCore/platform/graphics/texmap/TextureMapperAnimation.cpp.
(Nicosia::shouldReverseAnimationValue):
(Nicosia::normalizedAnimationValue):
(Nicosia::normalizedAnimationValueForFillsForwards):
(Nicosia::timingFunctionForAnimationValue):
(Nicosia::Animation::Animation):
(Nicosia::Animation::apply):
(Nicosia::Animation::applyKeepingInternalState):
(Nicosia::Animation::pause):
(Nicosia::Animation::resume):
(Nicosia::Animation::computeTotalRunningTime):
(Nicosia::Animation::isActive const):
(Nicosia::Animation::applyInternal):
(Nicosia::Animations::add):
(Nicosia::Animations::remove):
(Nicosia::Animations::pause):
(Nicosia::Animations::suspend):
(Nicosia::Animations::resume):
(Nicosia::Animations::apply):
(Nicosia::Animations::applyKeepingInternalState):
(Nicosia::Animations::hasActiveAnimationsOfType const):
(Nicosia::Animations::hasRunningAnimations const):
(Nicosia::Animations::getActiveAnimations const):
* platform/graphics/nicosia/NicosiaAnimation.h: Renamed from Source/WebCore/platform/graphics/texmap/TextureMapperAnimation.h.
(Nicosia::Animation::Animation):
(Nicosia::Animation::keyframes const):
(Nicosia::Animation::timingFunction const):
(Nicosia::Animations::animations const):
(Nicosia::Animations::animations):
* platform/graphics/nicosia/NicosiaPlatformLayer.h:
* platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
(WebCore::GraphicsLayerTextureMapper::addAnimation):
* platform/graphics/texmap/GraphicsLayerTextureMapper.h:
* platform/graphics/texmap/TextureMapperLayer.cpp:
(WebCore::TextureMapperLayer::setAnimations):
(WebCore::TextureMapperLayer::syncAnimations):
* platform/graphics/texmap/TextureMapperLayer.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::addAnimation):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
2019-08-16 Yusuke Suzuki <ysuzuki@apple.com>
Unreviewed, speculative build fix for WinCairo, part 2
https://bugs.webkit.org/show_bug.cgi?id=200526
* Modules/indexeddb/server/IDBSerializationContext.h:
2019-08-16 Yusuke Suzuki <ysuzuki@apple.com>
Unreviewed, speculative build fix for WinCairo
https://bugs.webkit.org/show_bug.cgi?id=200526
* Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:
2019-08-15 Yusuke Suzuki <ysuzuki@apple.com>
[WTF] Add makeUnique<T>, which ensures T is fast-allocated, WTF_MAKE_FAST_ALLOCATED annotation part
https://bugs.webkit.org/show_bug.cgi?id=200620
Reviewed by Geoffrey Garen.
* Modules/encryptedmedia/legacy/LegacyCDM.h:
(WebCore::LegacyCDM::keySystem const): Deleted.
(WebCore::LegacyCDM::client const): Deleted.
(WebCore::LegacyCDM::setClient): Deleted.
* Modules/encryptedmedia/legacy/LegacyCDMPrivate.h:
* Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.h:
* Modules/webaudio/AsyncAudioDecoder.h:
(WebCore::AsyncAudioDecoder::DecodingTask::audioData): Deleted.
(WebCore::AsyncAudioDecoder::DecodingTask::sampleRate const): Deleted.
(WebCore::AsyncAudioDecoder::DecodingTask::successCallback): Deleted.
(WebCore::AsyncAudioDecoder::DecodingTask::errorCallback): Deleted.
(WebCore::AsyncAudioDecoder::DecodingTask::audioBuffer): Deleted.
* Modules/webauthn/AuthenticatorCoordinator.h:
* Modules/webdatabase/SQLStatement.h:
(WebCore::SQLStatement::hasStatementCallback const): Deleted.
(WebCore::SQLStatement::hasStatementErrorCallback const): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h:
* Modules/webgpu/WHLSL/WHLSLResolvingType.h:
* bindings/js/DOMPromiseProxy.h:
* bindings/js/GCController.h:
* bridge/jsc/BridgeJSC.h:
* contentextensions/ContentExtensionsBackend.h:
* dom/FullscreenManager.h:
(WebCore::FullscreenManager::document): Deleted.
(WebCore::FullscreenManager::document const): Deleted.
(WebCore::FullscreenManager::topDocument const): Deleted.
(WebCore::FullscreenManager::page const): Deleted.
(WebCore::FullscreenManager::frame const): Deleted.
(WebCore::FullscreenManager::documentElement const): Deleted.
(WebCore::FullscreenManager::hasLivingRenderTree const): Deleted.
(WebCore::FullscreenManager::pageCacheState const): Deleted.
(WebCore::FullscreenManager::scheduleFullStyleRebuild): Deleted.
(WebCore::FullscreenManager::fullscreenElement const): Deleted.
(WebCore::FullscreenManager::isFullscreen const): Deleted.
(WebCore::FullscreenManager::isFullscreenKeyboardInputAllowed const): Deleted.
(WebCore::FullscreenManager::currentFullscreenElement const): Deleted.
* dom/Microtasks.h:
(WebCore::MicrotaskQueue::vm const): Deleted.
* editing/CompositeEditCommand.h:
* editing/mac/AlternativeTextUIController.h:
* html/HTMLMediaElement.h:
* inspector/InspectorFrontendClientLocal.h:
* inspector/agents/WebHeapAgent.cpp:
* layout/displaytree/DisplayRun.h:
* layout/inlineformatting/InlineItem.h:
* layout/inlineformatting/InlineLine.h:
* layout/tableformatting/TableGrid.h:
* loader/FrameLoader.h:
(WebCore::FrameLoader::frame const): Deleted.
(WebCore::FrameLoader::policyChecker const): Deleted.
(WebCore::FrameLoader::history const): Deleted.
(WebCore::FrameLoader::notifier const): Deleted.
(WebCore::FrameLoader::subframeLoader const): Deleted.
(WebCore::FrameLoader::mixedContentChecker const): Deleted.
(WebCore::FrameLoader::urlSelected): Deleted.
(WebCore::FrameLoader::reload): Deleted.
(WebCore::FrameLoader::requestedHistoryItem const): Deleted.
(WebCore::FrameLoader::documentLoader const): Deleted.
(WebCore::FrameLoader::policyDocumentLoader const): Deleted.
(WebCore::FrameLoader::provisionalDocumentLoader const): Deleted.
(WebCore::FrameLoader::state const): Deleted.
(WebCore::FrameLoader::shouldReportResourceTimingToParentFrame const): Deleted.
(WebCore::FrameLoader::client const): Deleted.
(WebCore::FrameLoader::forceSandboxFlags): Deleted.
(WebCore::FrameLoader::hasOpenedFrames const): Deleted.
(WebCore::FrameLoader::setLoadsSynchronously): Deleted.
(WebCore::FrameLoader::loadsSynchronously const): Deleted.
(WebCore::FrameLoader::stateMachine): Deleted.
(WebCore::FrameLoader::quickRedirectComing const): Deleted.
(WebCore::FrameLoader::pageDismissalEventBeingDispatched const): Deleted.
(WebCore::FrameLoader::previousURL const): Deleted.
(WebCore::FrameLoader::setOverrideCachePolicyForTesting): Deleted.
(WebCore::FrameLoader::setOverrideResourceLoadPriorityForTesting): Deleted.
(WebCore::FrameLoader::setStrictRawResourceValidationPolicyDisabledForTesting): Deleted.
(WebCore::FrameLoader::isStrictRawResourceValidationPolicyDisabledForTesting): Deleted.
(WebCore::FrameLoader::provisionalLoadErrorBeingHandledURL const): Deleted.
(WebCore::FrameLoader::setProvisionalLoadErrorBeingHandledURL): Deleted.
(WebCore::FrameLoader::isReloadingFromOrigin const): Deleted.
(WebCore::FrameLoader::setAlwaysAllowLocalWebarchive): Deleted.
(WebCore::FrameLoader::alwaysAllowLocalWebarchive const): Deleted.
(WebCore::FrameLoader::loadWithDocumentLoader): Deleted.
(WebCore::FrameLoader::loadWithNavigationAction): Deleted.
(WebCore::FrameLoader::shouldTreatCurrentLoadAsContinuingLoad const): Deleted.
* loader/NavigationDisabler.h:
* loader/NavigationScheduler.h:
* loader/cache/CachedResource.h:
* loader/cache/CachedSVGDocumentReference.h:
(WebCore::CachedSVGDocumentReference::loadRequested const): Deleted.
(WebCore::CachedSVGDocumentReference::document): Deleted.
* loader/ios/PreviewLoader.h:
* page/CaptionUserPreferences.h:
* page/PrewarmInformation.h:
* page/ResizeObserver.h:
* page/SuspendableTimer.h:
* page/csp/ContentSecurityPolicyDirective.h:
* page/ios/ContentChangeObserver.h:
* page/ios/DOMTimerHoldingTank.h:
* page/linux/ResourceUsageOverlayLinux.cpp:
* page/mac/TextIndicatorWindow.h:
* page/scrolling/ScrollSnapOffsetsInfo.h:
* page/scrolling/ScrollingMomentumCalculator.h:
* platform/CPUMonitor.h:
* platform/FileMonitor.h:
* platform/ScrollAnimation.h:
* platform/SuddenTermination.h:
* platform/audio/AudioBus.h:
(WebCore::AudioBus::numberOfChannels const): Deleted.
(WebCore::AudioBus::channel): Deleted.
(WebCore::AudioBus::channel const): Deleted.
(WebCore::AudioBus::length const): Deleted.
(WebCore::AudioBus::sampleRate const): Deleted.
(WebCore::AudioBus::setSampleRate): Deleted.
(WebCore::AudioBus::reset): Deleted.
(WebCore::AudioBus::AudioBus): Deleted.
* platform/audio/AudioChannel.h:
(WebCore::AudioChannel::AudioChannel): Deleted.
(WebCore::AudioChannel::set): Deleted.
(WebCore::AudioChannel::length const): Deleted.
(WebCore::AudioChannel::mutableData): Deleted.
(WebCore::AudioChannel::data const): Deleted.
(WebCore::AudioChannel::zero): Deleted.
(WebCore::AudioChannel::clearSilentFlag): Deleted.
(WebCore::AudioChannel::isSilent const): Deleted.
* platform/audio/AudioFIFO.h:
(WebCore::AudioFIFO::framesInFifo const): Deleted.
(WebCore::AudioFIFO::updateIndex): Deleted.
* platform/audio/AudioPullFIFO.h:
* platform/audio/AudioResampler.h:
(WebCore::AudioResampler::rate const): Deleted.
* platform/audio/AudioResamplerKernel.h:
* platform/audio/AudioSession.cpp:
* platform/audio/AudioSession.h:
(WebCore::AudioSession::isActive const): Deleted.
* platform/audio/Biquad.h:
* platform/audio/Cone.h:
(WebCore::ConeEffect::setInnerAngle): Deleted.
(WebCore::ConeEffect::innerAngle const): Deleted.
(WebCore::ConeEffect::setOuterAngle): Deleted.
(WebCore::ConeEffect::outerAngle const): Deleted.
(WebCore::ConeEffect::setOuterGain): Deleted.
(WebCore::ConeEffect::outerGain const): Deleted.
* platform/audio/DenormalDisabler.h:
(WebCore::DenormalDisabler::DenormalDisabler): Deleted.
(WebCore::DenormalDisabler::~DenormalDisabler): Deleted.
(WebCore::DenormalDisabler::flushDenormalFloatToZero): Deleted.
(WebCore::DenormalDisabler::getCSR): Deleted.
(WebCore::DenormalDisabler::setCSR): Deleted.
* platform/audio/DirectConvolver.h:
* platform/audio/Distance.h:
(WebCore::DistanceEffect::model): Deleted.
(WebCore::DistanceEffect::setModel): Deleted.
(WebCore::DistanceEffect::setRefDistance): Deleted.
(WebCore::DistanceEffect::setMaxDistance): Deleted.
(WebCore::DistanceEffect::setRolloffFactor): Deleted.
(WebCore::DistanceEffect::refDistance const): Deleted.
(WebCore::DistanceEffect::maxDistance const): Deleted.
(WebCore::DistanceEffect::rolloffFactor const): Deleted.
* platform/audio/DownSampler.h:
* platform/audio/DynamicsCompressor.h:
(WebCore::DynamicsCompressor::sampleRate const): Deleted.
(WebCore::DynamicsCompressor::nyquist const): Deleted.
(WebCore::DynamicsCompressor::tailTime const): Deleted.
(WebCore::DynamicsCompressor::latencyTime const): Deleted.
* platform/audio/DynamicsCompressorKernel.h:
(WebCore::DynamicsCompressorKernel::latencyFrames const): Deleted.
(WebCore::DynamicsCompressorKernel::sampleRate const): Deleted.
(WebCore::DynamicsCompressorKernel::meteringGain const): Deleted.
* platform/audio/EqualPowerPanner.h:
* platform/audio/FFTConvolver.h:
(WebCore::FFTConvolver::fftSize const): Deleted.
* platform/audio/HRTFDatabase.h:
(WebCore::HRTFDatabase::numberOfAzimuths): Deleted.
(WebCore::HRTFDatabase::sampleRate const): Deleted.
* platform/audio/HRTFElevation.h:
(WebCore::HRTFElevation::HRTFElevation): Deleted.
(WebCore::HRTFElevation::kernelListL): Deleted.
(WebCore::HRTFElevation::kernelListR): Deleted.
(WebCore::HRTFElevation::elevationAngle const): Deleted.
(WebCore::HRTFElevation::numberOfAzimuths const): Deleted.
(WebCore::HRTFElevation::sampleRate const): Deleted.
* platform/audio/HRTFPanner.h:
(WebCore::HRTFPanner::fftSize const): Deleted.
(WebCore::HRTFPanner::sampleRate const): Deleted.
* platform/audio/MultiChannelResampler.h:
* platform/audio/PlatformAudioData.h:
* platform/audio/Reverb.h:
(WebCore::Reverb::impulseResponseLength const): Deleted.
* platform/audio/ReverbAccumulationBuffer.h:
(WebCore::ReverbAccumulationBuffer::readIndex const): Deleted.
(WebCore::ReverbAccumulationBuffer::readTimeFrame const): Deleted.
* platform/audio/ReverbConvolver.h:
(WebCore::ReverbConvolver::impulseResponseLength const): Deleted.
(WebCore::ReverbConvolver::inputBuffer): Deleted.
(WebCore::ReverbConvolver::useBackgroundThreads const): Deleted.
* platform/audio/ReverbConvolverStage.h:
(WebCore::ReverbConvolverStage::inputReadIndex const): Deleted.
* platform/audio/ReverbInputBuffer.h:
(WebCore::ReverbInputBuffer::writeIndex const): Deleted.
* platform/audio/SincResampler.h:
* platform/audio/UpSampler.h:
* platform/audio/ZeroPole.h:
(WebCore::ZeroPole::ZeroPole): Deleted.
(WebCore::ZeroPole::reset): Deleted.
(WebCore::ZeroPole::setZero): Deleted.
(WebCore::ZeroPole::setPole): Deleted.
(WebCore::ZeroPole::zero const): Deleted.
(WebCore::ZeroPole::pole const): Deleted.
* platform/audio/cocoa/WebAudioBufferList.h:
(WebCore::WebAudioBufferList::list const): Deleted.
(WebCore::WebAudioBufferList::operator AudioBufferList& const): Deleted.
(WebCore::WebAudioBufferList::kind const): Deleted.
* platform/audio/ios/AudioSessionIOS.mm:
* platform/audio/mac/CARingBuffer.h:
* platform/encryptedmedia/clearkey/CDMClearKey.h:
* platform/gamepad/mac/HIDGamepad.h:
* platform/graphics/FloatPoint.h:
* platform/graphics/Font.h:
* platform/graphics/GraphicsContext.h:
* platform/graphics/GraphicsContext3DPrivate.h:
* platform/graphics/GraphicsContextImpl.h:
* platform/graphics/GraphicsLayer.cpp:
* platform/graphics/LegacyCDMSession.h:
* platform/graphics/Region.h:
* platform/graphics/VelocityData.h:
* platform/graphics/avfoundation/AVTrackPrivateAVFObjCImpl.h:
* platform/graphics/avfoundation/CDMFairPlayStreaming.h:
* platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/ISOFairPlayStreamingPsshBox.h:
* platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h:
* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
* platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
* platform/graphics/ca/GraphicsLayerCA.h:
* platform/graphics/cairo/FontCustomPlatformData.h:
* platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h:
* platform/graphics/cairo/PlatformContextCairo.h:
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
* platform/graphics/cv/ImageRotationSessionVT.h:
(WebCore::ImageRotationSessionVT::RotationProperties::isIdentity const): Deleted.
(WebCore::ImageRotationSessionVT::transform const): Deleted.
(WebCore::ImageRotationSessionVT::rotationProperties const): Deleted.
(WebCore::ImageRotationSessionVT::size): Deleted.
(WebCore::ImageRotationSessionVT::rotatedSize): Deleted.
* platform/graphics/cv/PixelBufferConformerCV.h:
* platform/graphics/cv/TextureCacheCV.h:
* platform/graphics/cv/VideoTextureCopierCV.h:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/gstreamer/VideoTextureCopierGStreamer.h:
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
* platform/graphics/holepunch/MediaPlayerPrivateHolePunch.h:
* platform/graphics/iso/ISOBox.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:
(WebCore::ISOStringBox::contents): Deleted.
* platform/graphics/iso/ISOVTTCue.h:
(WebCore::ISOWebVTTCue::boxTypeName): Deleted.
(WebCore::ISOWebVTTCue::presentationTime const): Deleted.
(WebCore::ISOWebVTTCue::duration const): Deleted.
(WebCore::ISOWebVTTCue::sourceID const): Deleted.
(WebCore::ISOWebVTTCue::id const): Deleted.
(WebCore::ISOWebVTTCue::originalStartTime const): Deleted.
(WebCore::ISOWebVTTCue::settings const): Deleted.
(WebCore::ISOWebVTTCue::cueText const): Deleted.
* platform/graphics/nicosia/NicosiaPaintingOperation.h:
* platform/graphics/nicosia/texmap/NicosiaBackingStoreTextureMapperImpl.h:
* platform/graphics/nicosia/texmap/NicosiaCompositionLayerTextureMapperImpl.h:
* platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.h:
* platform/graphics/nicosia/texmap/NicosiaGC3DLayer.h:
* platform/graphics/nicosia/texmap/NicosiaImageBackingTextureMapperImpl.h:
* platform/graphics/opengl/Extensions3DOpenGLCommon.h:
* platform/graphics/texmap/TextureMapperGC3DPlatformLayer.h:
* platform/graphics/texmap/coordinated/Tile.h:
* platform/graphics/win/FontCustomPlatformData.h:
* platform/graphics/win/FullScreenController.cpp:
* platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h:
* platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:
* platform/graphics/win/PlatformContextDirect2D.h:
* platform/graphics/win/WKCAImageQueue.cpp:
* platform/gtk/PasteboardHelper.cpp:
* platform/ios/LegacyTileGrid.h:
* platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
* platform/mediastream/gstreamer/GStreamerAudioData.h:
(WebCore::GStreamerAudioData::GStreamerAudioData): Deleted.
(WebCore::GStreamerAudioData::getSample): Deleted.
(WebCore::GStreamerAudioData::getAudioInfo): Deleted.
(WebCore::GStreamerAudioData::kind const): Deleted.
* platform/mediastream/gstreamer/GStreamerCapturer.h:
* platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
* platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.h:
* platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
* platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.h:
* platform/mediastream/libwebrtc/LibWebRTCDTMFSenderBackend.h:
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
* platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.h:
* platform/mock/MediaPlaybackTargetPickerMock.h:
* platform/mock/RTCDataChannelHandlerMock.h:
* platform/network/ResourceErrorBase.h:
* platform/network/curl/CookieJarDB.h:
* platform/network/curl/CurlCacheEntry.h:
* platform/network/curl/CurlContext.h:
* platform/network/curl/CurlMultipartHandle.h:
* platform/network/curl/CurlRequestScheduler.h:
* platform/network/curl/CurlSSLVerifier.h:
* platform/network/ios/PreviewConverter.h:
* platform/network/soup/NetworkStorageSessionSoup.cpp:
* platform/vr/openvr/VRPlatformDisplayOpenVR.h:
* platform/vr/openvr/VRPlatformManagerOpenVR.h:
* rendering/HitTestResult.h:
* rendering/LayerOverlapMap.cpp:
* rendering/RenderLayerCompositor.h:
* rendering/svg/RenderSVGResourceMasker.h:
* replay/UserInputBridge.h:
* svg/graphics/filters/SVGFilterBuilder.h:
* svg/properties/SVGAttributeAnimator.h:
* svg/properties/SVGDecoratedProperty.h:
* svg/properties/SVGPropertyAnimatorFactory.h:
* testing/InternalSettings.cpp:
* testing/LegacyMockCDM.cpp:
* testing/LegacyMockCDM.h:
* testing/MockCDMFactory.h:
* workers/WorkerEventQueue.cpp:
* workers/WorkerEventQueue.h:
* workers/service/ServiceWorkerContainer.h:
* worklets/PaintWorkletGlobalScope.h:
* xml/XMLErrors.h:
* xml/parser/XMLDocumentParserLibxml2.cpp:
2019-08-15 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] Rename contentVisibilityDidChange to elementDidBecomeVisible
https://bugs.webkit.org/show_bug.cgi?id=200780
<rdar://problem/54358330>
Reviewed by Simon Fraser.
"elementDidBecomeVisible" name is more accurate and also we'll probably start tracking changes from visible to hidden soon.
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::didFinishTransition):
(WebCore::ContentChangeObserver::visibilityChangedFromHiddenToVisible):
(WebCore::ContentChangeObserver::adjustObservedState):
(WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope):
(WebCore::ContentChangeObserver::contentVisibilityDidChange): Deleted.
* page/ios/ContentChangeObserver.h:
2019-08-15 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] Keep track of all the visibility candidates.
https://bugs.webkit.org/show_bug.cgi?id=200777
<rdar://problem/54356331>
Reviewed by Simon Fraser.
In order to find out whether a visible (and actionable) content change happened, we need to keep track of all the candidate elements.
Test: fast/events/touch/ios/content-observation/going-from-hidden-to-visible-and-to-hidden2.html
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::reset):
(WebCore::ContentChangeObserver::rendererWillBeDestroyed):
(WebCore::ContentChangeObserver::contentVisibilityDidChange):
(WebCore::ContentChangeObserver::shouldObserveVisibilityChangeForElement):
* page/ios/ContentChangeObserver.h:
2019-08-15 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Add unary plus
https://bugs.webkit.org/show_bug.cgi?id=200753
Reviewed by Saam Barati.
HLSL has these, so we should too.
Test: webgpu/whlsl/vector-matrix-addition-subtraction.html
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
2019-08-15 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Matrices should have constructors that take a flattened list of scalars
https://bugs.webkit.org/show_bug.cgi?id=200804
Reviewed by Saam Barati.
HLSL has them, so we should too.
Test: webgpu/whlsl/matrix-constructors-list-of-scalars.html
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
2019-08-15 Sihui Liu <sihui_liu@apple.com>
Use one VM per thread for IDB serialization work in network process
https://bugs.webkit.org/show_bug.cgi?id=200526
Reviewed by Geoffrey Garen.
We had one static VM in UniqueIDBDatabase for serialization/deserialization in MemoryObjectStore. This VM was
never destroyed and could be used on different background threads.
We also had one VM per SQLiteIDBBackingStore for serialization/deserialization in SQLiteIDBBackingStore. If
there were multiple IndexedDB databases of the same session opened, we would have multiple VMs created
on the same thread. Each VM has its memory allocator and garbage collector, which takes up memory.
To be more memory efficient and safe, we can use one VM per thread in the network process, and create/destroy
the VMs on demand.
* Modules/indexeddb/server/IDBSerializationContext.cpp: Added.
(WebCore::IDBServer::IDBSerializationContext::getOrCreateIDBSerializationContext):
(WebCore::IDBServer::IDBSerializationContext::~IDBSerializationContext):
(WebCore::IDBServer::IDBSerializationContext::initializeVM):
(WebCore::IDBServer::IDBSerializationContext::vm):
(WebCore::IDBServer::IDBSerializationContext::execState):
(WebCore::IDBServer::IDBSerializationContext::IDBSerializationContext):
* Modules/indexeddb/server/IDBSerializationContext.h: Added.
* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::createBackingStore):
* Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
(WebCore::IDBServer::MemoryIDBBackingStore::create):
(WebCore::IDBServer::MemoryIDBBackingStore::MemoryIDBBackingStore):
(WebCore::IDBServer::MemoryIDBBackingStore::createObjectStore):
* Modules/indexeddb/server/MemoryIDBBackingStore.h:
* Modules/indexeddb/server/MemoryObjectStore.cpp:
(WebCore::IDBServer::MemoryObjectStore::create):
(WebCore::IDBServer::MemoryObjectStore::MemoryObjectStore):
(WebCore::IDBServer::MemoryObjectStore::updateIndexesForPutRecord):
(WebCore::IDBServer::MemoryObjectStore::populateIndexWithExistingRecords):
* Modules/indexeddb/server/MemoryObjectStore.h:
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::SQLiteIDBBackingStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::~SQLiteIDBBackingStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::updateOneIndexForAddRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::updateAllIndexesForAddRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::initializeVM): Deleted.
(WebCore::IDBServer::SQLiteIDBBackingStore::vm): Deleted.
(WebCore::IDBServer::SQLiteIDBBackingStore::globalObject): Deleted.
* Modules/indexeddb/server/SQLiteIDBBackingStore.h:
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::databaseThreadVM): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::databaseThreadExecState): Deleted.
* Modules/indexeddb/server/UniqueIDBDatabase.h:
* Sources.txt:
2019-08-15 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] Dispatch synthetic click when the visibility candidate element becomes hidden again.
https://bugs.webkit.org/show_bug.cgi?id=200773
<rdar://problem/54351728>
Reviewed by Simon Fraser.
This patch fixes the case when the candidate element (going from hidden to visible) becomes hidden by the end of the observation window. It essentially means that no visible change has happened
and we should proceed with dispatching the synthetic click event.
We now keep track of the candidate element and reset the visiblity state when it loses its renderer.
Test: fast/events/touch/ios/content-observation/going-from-hidden-to-visible-and-to-hidden.html
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::didAddTransition):
(WebCore::ContentChangeObserver::didFinishTransition):
(WebCore::ContentChangeObserver::didInstallDOMTimer):
(WebCore::ContentChangeObserver::reset):
(WebCore::ContentChangeObserver::rendererWillBeDestroyed):
(WebCore::ContentChangeObserver::contentVisibilityDidChange):
(WebCore::ContentChangeObserver::touchEventDidStart):
(WebCore::ContentChangeObserver::touchEventDidFinish):
(WebCore::ContentChangeObserver::mouseMovedDidStart):
(WebCore::ContentChangeObserver::mouseMovedDidFinish):
(WebCore::ContentChangeObserver::adjustObservedState):
(WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope):
(WebCore::ContentChangeObserver::hasDeterminateState const): Deleted.
* page/ios/ContentChangeObserver.h:
(WebCore::ContentChangeObserver::hasObservedTransition const):
(WebCore::ContentChangeObserver::setTouchEventIsBeingDispatched):
(WebCore::ContentChangeObserver::isTouchEventBeingDispatched const):
(WebCore::ContentChangeObserver::setMouseMovedEventIsBeingDispatched):
(WebCore::ContentChangeObserver::isMouseMovedEventBeingDispatched const):
(WebCore::ContentChangeObserver::isObservingContentChanges const):
2019-08-15 Justin Fan <justin_fan@apple.com>
Unreviewed suggested patch follow-up to https://bugs.webkit.org/show_bug.cgi?id=200740.
* platform/graphics/gpu/GPURequestAdapterOptions.h:
(): Deleted.
2019-08-15 Brent Fulgham <bfulgham@apple.com>
[FTW] Support web fonts
https://bugs.webkit.org/show_bug.cgi?id=200771
<rdar://problem/54350291>
Reviewed by Dean Jackson.
The current code path for handling web fonts uses 'AddFontMemResourceEx'. Unfortunately, this only updates the font caches used by GDI, and is not exposed to DirectWrite.
This patch does the following:
1. Moves some code into a new DirectWriteUtilities file, similar to how Direct2D is handled, so we
can share code in more places.
2. After adding the font to GDI, it adds the font information to the DirectWrite font cache.
3. Add logic to check the overall system DirectWrite fonts, as well as the custom font cache used
for downloaded fonts.
* PlatformFTW.cmake: Add DirectWriteUtilities.cpp
* css/CSSFontFaceSource.cpp:
* loader/cache/CachedFont.cpp:
* loader/cache/CachedSVGFont.cpp:
* platform/graphics/Font.cpp:
* platform/graphics/Font.h:
* platform/graphics/FontCache.cpp:
* platform/graphics/FontPlatformData.cpp:
* platform/graphics/FontPlatformData.h:
* platform/graphics/opentype/OpenTypeUtilities.cpp:
(WebCore::renameAndActivateFont):
* platform/graphics/win/DirectWriteUtilities.cpp: Added.
* platform/graphics/win/DirectWriteUtilities.h: Added.
* platform/graphics/win/FontCacheWin.cpp:
(WebCore::createGDIFont):
* platform/graphics/win/FontCascadeDirect2D.cpp:
* platform/graphics/win/FontCustomPlatformData.cpp:
(WebCore::FontCustomPlatformData::fontPlatformData):
* platform/graphics/win/FontPlatformDataDirect2D.cpp:
(WebCore::FontPlatformData::platformDataInit):
(WebCore::FontPlatformData::FontPlatformData):
(WebCore::FontPlatformData::createFallbackFont):
* platform/graphics/win/FontPlatformDataWin.cpp:
* platform/graphics/win/GlyphPageTreeNodeDirect2D.cpp:
(WebCore::GlyphPage::fill):
* platform/graphics/win/GraphicsContextDirect2D.cpp:
* platform/graphics/win/SimpleFontDataDirect2D.cpp:
(WebCore::Font::systemDWriteFactory): Deleted.
(WebCore::Font::systemDWriteGdiInterop): Deleted.
* platform/graphics/win/SimpleFontDataWin.cpp:
2019-08-15 Jer Noble <jer.noble@apple.com>
[Cocoa] Adopt -preventDisplaySleepForVideoPlayback
https://bugs.webkit.org/show_bug.cgi?id=200774
Reviewed by Eric Carlson.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayer):
2019-08-15 Robin Morisset <rmorisset@apple.com>
[WHLSL] Don't accept operator&& or operator|| in the Lexer
https://bugs.webkit.org/show_bug.cgi?id=200785
Reviewed by Saam Barati.
Implementing && or || as function calls would lose us short-circuiting.
2 new tests in LayoutTests/webgpu/whlsl/lexing.html
* Modules/webgpu/WHLSL/WHLSLLexer.cpp:
(WebCore::WHLSL::Lexer::consumeTokenFromStream):
2019-08-15 Saam Barati <sbarati@apple.com>
Unreviewed. Debug build fix after r248730.
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::inlineNativeFunction):
2019-08-15 Devin Rousso <drousso@apple.com>
Web Inspector: support `console.screenshot` with detached <canvas>
https://bugs.webkit.org/show_bug.cgi?id=200723
Reviewed by Joseph Pecoraro.
* page/PageConsoleClient.cpp:
(WebCore::snapshotCanvas): Added.
(WebCore::PageConsoleClient::screenshot):
2019-08-15 Sihui Liu <sihui_liu@apple.com>
Some improvements on web storage
https://bugs.webkit.org/show_bug.cgi?id=200373
Reviewed by Geoffrey Garen.
Remove storage type EphemeralLocalStorage, which is used for localStorage in ephemeral session, and use
LocalStorage instead.
Add SessionID to StorageNamespace to make StorageNamespace session-specific.
No new test, updating existing tests for new behavior.
* loader/EmptyClients.cpp:
(WebCore::EmptyStorageNamespaceProvider::createLocalStorageNamespace):
(WebCore::EmptyStorageNamespaceProvider::createTransientLocalStorageNamespace):
(WebCore::EmptyStorageNamespaceProvider::createEphemeralLocalStorageNamespace): Deleted.
* page/Chrome.cpp:
(WebCore::Chrome::createWindow const): ephemeral localStorage of different windows will connect to the same
StorageArea in network process, so no need to copy from parent window to child window.
* page/DOMWindow.cpp:
(WebCore::DOMWindow::prewarmLocalStorageIfNecessary): localStorage will be prewarmed in network process in the
initialization of StorageAreaMap.
* page/Page.cpp:
(WebCore::m_applicationManifest):
(WebCore::Page::~Page):
(WebCore::Page::setSessionID):
(WebCore::Page::ephemeralLocalStorage): Deleted.
(WebCore::Page::setEphemeralLocalStorage): Deleted.
(WebCore::Page::setStorageNamespaceProvider): Deleted.
* page/Page.h:
(WebCore::Page::storageNamespaceProvider):
* storage/Storage.cpp:
(WebCore::Storage::prewarm): Deleted.
* storage/Storage.h:
* storage/StorageArea.h:
(WebCore::StorageArea::closeDatabaseIfIdle):
(WebCore::StorageArea::prewarm): Deleted.
* storage/StorageNamespace.h:
* storage/StorageNamespaceProvider.cpp:
(WebCore::StorageNamespaceProvider::~StorageNamespaceProvider):
(WebCore::StorageNamespaceProvider::localStorageArea):
(WebCore::StorageNamespaceProvider::localStorageNamespace):
(WebCore::StorageNamespaceProvider::transientLocalStorageNamespace):
(WebCore::StorageNamespaceProvider::enableLegacyPrivateBrowsingForTesting): change SessionID of storageNamespace
and update every StorageArea in this namespace.
(WebCore::StorageNamespaceProvider::addPage): Deleted.
(WebCore::StorageNamespaceProvider::removePage): Deleted.
* storage/StorageNamespaceProvider.h:
* storage/StorageType.h:
(WebCore::isLocalStorage):
2019-08-15 Saam Barati <sbarati@apple.com>
[WHLSL] Make length, clamp, operator+, operator-, operator*, operator/, operator[], operator[]=, operator.xy, operator.xy=, native
https://bugs.webkit.org/show_bug.cgi?id=200700
Reviewed by Robin Morisset.
This makes us 50% faster in compute_boids.
Tests: webgpu/whlsl/clamp-stdlib.html
webgpu/whlsl/length-stdlib.html
webgpu/whlsl/operator-div.html
webgpu/whlsl/operator-minus.html
webgpu/whlsl/operator-plus.html
webgpu/whlsl/operator-times.html
webgpu/whlsl/operator-vector-assign.html
webgpu/whlsl/operator-vector-load.html
webgpu/whlsl/operator-xy.html
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::inlineNativeFunction):
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
* Modules/webgpu/WHLSL/WHLSLStandardLibraryUtilities.cpp:
(WebCore::WHLSL::includeStandardLibrary):
2019-08-15 Robin Morisset <rmorisset@apple.com>
[WHLSL] Trivial clean-up of the MSL code generated
https://bugs.webkit.org/show_bug.cgi?id=200525
Reviewed by Darin Adler.
Emit simpler code for ternary expressions
Remove duplicate {} around functions
No new tests as it is covered by the existing ones.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
2019-08-15 Youenn Fablet <youenn@apple.com>
Always create a Document with a valid SessionID
https://bugs.webkit.org/show_bug.cgi?id=200727
Reviewed by Alex Christensen.
Pass a valid SessionID to the Document constructor.
This allows getting us closer to use SessionID like ObjectIdentifier.
Add a SessionID getter from Frame and use it when constructing a Document.
Otherwise, retrieve the SessionID from the corresponding context.
No change of behavior.
* dom/DOMImplementation.cpp:
(WebCore::createXMLDocument):
(WebCore::DOMImplementation::createDocument):
(WebCore::DOMImplementation::createHTMLDocument):
* dom/DOMImplementation.h:
* dom/Document.cpp:
(WebCore::Document::Document):
(WebCore::m_undoManager):
(WebCore::Document::create):
(WebCore::Document::createNonRenderedPlaceholder):
(WebCore::Document::cloneDocumentWithoutChildren const):
(WebCore::Document::ensureTemplateDocument):
* dom/Document.h:
(WebCore::Document::create):
(WebCore::Document::createNonRenderedPlaceholder): Deleted.
* dom/XMLDocument.h:
(WebCore::XMLDocument::create):
(WebCore::XMLDocument::createXHTML):
(WebCore::XMLDocument::XMLDocument):
* html/FTPDirectoryDocument.cpp:
(WebCore::FTPDirectoryDocument::FTPDirectoryDocument):
* html/FTPDirectoryDocument.h:
* html/HTMLDocument.cpp:
(WebCore::HTMLDocument::createSynthesizedDocument):
(WebCore::HTMLDocument::HTMLDocument):
(WebCore::HTMLDocument::cloneDocumentWithoutChildren const):
* html/HTMLDocument.h:
(WebCore::HTMLDocument::create):
(WebCore::HTMLDocument::createSynthesizedDocument): Deleted.
* html/ImageDocument.cpp:
(WebCore::ImageDocument::ImageDocument):
* html/MediaDocument.cpp:
(WebCore::MediaDocument::MediaDocument):
* html/MediaDocument.h:
* html/PluginDocument.cpp:
(WebCore::PluginDocument::PluginDocument):
* html/PluginDocument.h:
* html/TextDocument.cpp:
(WebCore::TextDocument::TextDocument):
* html/TextDocument.h:
* inspector/DOMPatchSupport.cpp:
(WebCore::DOMPatchSupport::patchDocument):
* loader/DocumentWriter.cpp:
(WebCore::DocumentWriter::createDocument):
(WebCore::DocumentWriter::begin):
* loader/SinkDocument.cpp:
(WebCore::SinkDocument::SinkDocument):
* loader/SinkDocument.h:
* loader/cache/CachedSVGDocument.cpp:
(WebCore::CachedSVGDocument::finishLoading):
* loader/cache/CachedSVGFont.cpp:
(WebCore::CachedSVGFont::ensureCustomFontData):
* page/Frame.cpp:
(WebCore::Frame::sessionID const):
* page/Frame.h:
* svg/SVGDocument.cpp:
(WebCore::SVGDocument::SVGDocument):
(WebCore::SVGDocument::cloneDocumentWithoutChildren const):
* svg/SVGDocument.h:
(WebCore::SVGDocument::create):
* xml/DOMParser.cpp:
(WebCore::DOMParser::parseFromString):
* xml/DOMParser.h:
* xml/DOMParser.idl:
* xml/XMLHttpRequest.cpp:
* xml/XSLTProcessor.cpp:
(WebCore::XSLTProcessor::createDocumentFromSource):
2019-08-15 Antti Koivisto <antti@apple.com>
Negative size box with border radius causes hang under WebCore::approximateAsRegion
https://bugs.webkit.org/show_bug.cgi?id=200769
<rdar://problem/53380674>
Reviewed by Alex Christensen.
If a box's width or height computes negative the rounded border rect will also be negative.
This caused near-infinite loop during rounded border region approximation.
Test: fast/css/border-radius-negative-size.html
* platform/graphics/RoundedRect.cpp:
(WebCore::approximateAsRegion):
Bail out if the region is empty (which includes negative sizes).
For safety also limit the number of rectangles we generate for corner arc approximation.
2019-08-15 Thibault Saunier <tsaunier@igalia.com>
[GStreamer] Deal with slow buffer consumption in GStreamerMediaStreamSource
https://bugs.webkit.org/show_bug.cgi?id=200633
Refactoring the GStreamerMediaStreamSource factoring out streams specific
data in a dedicated structure.
Reviewed by Philippe Normand.
No new tests, since I do not see how to reproduce that in a test in a simple way,
this aims at enhancing user experience when running under high load.
* platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
(WebCore::_WebKitMediaStreamSrc::SourceData::reset):
(WebCore::_WebKitMediaStreamSrc::SourceData::src):
(WebCore::_WebKitMediaStreamSrc::SourceData::setSrc):
(WebCore::_WebKitMediaStreamSrc::SourceData::isUsed):
(WebCore::_WebKitMediaStreamSrc::SourceData::pushSample):
(WebCore::webkitMediaStreamSrcDispose):
(WebCore::webkit_media_stream_src_init):
(WebCore::webkitMediaStreamSrcNeedDataCb):
(WebCore::webkitMediaStreamSrcEnoughDataCb):
(WebCore::webkitMediaStreamSrcSetupAppSrc):
(WebCore::webkitMediaStreamSrcRemoveTrackByType):
(WebCore::webkitMediaStreamSrcPushVideoSample):
(WebCore::webkitMediaStreamSrcPushAudioSample):
2019-08-15 Youenn Fablet <youenn@apple.com>
Make mock libwebrtc tests run with unified plan
https://bugs.webkit.org/show_bug.cgi?id=200713
Reviewed by Alex Christensen.
Update mock endpoint to pass mock webrtc tests with unified plan.
This requires implementing support for mock transceivers.
Covered by existing tests.
* testing/Internals.cpp:
(WebCore::Internals::useMockRTCPeerConnectionFactory):
Update assert to mandate unified plan.
* testing/MockLibWebRTCPeerConnection.cpp:
(WebCore::MockLibWebRTCPeerConnection::~MockLibWebRTCPeerConnection):
(WebCore::MockLibWebRTCPeerConnection::GetTransceivers const):
(WebCore::MockLibWebRTCPeerConnection::AddTrack):
(WebCore::MockLibWebRTCPeerConnection::RemoveTrack):
(WebCore::MockLibWebRTCPeerConnection::CreateOffer):
(WebCore::MockLibWebRTCPeerConnection::CreateAnswer):
* testing/MockLibWebRTCPeerConnection.h:
(WebCore::MockRtpSender::MockRtpSender):
(WebCore::MockRtpReceiver::id const):
(WebCore::MockRtpReceiver::GetParameters const):
(WebCore::MockRtpReceiver::SetParameters):
(WebCore::MockRtpReceiver::SetObserver):
(WebCore::MockRtpTransceiver::MockRtpTransceiver):
(WebCore::MockLibWebRTCPeerConnection::MockLibWebRTCPeerConnection):
(WebCore::MockLibWebRTCPeerConnection::gotLocalDescription):
2019-08-15 Chris Dumez <cdumez@apple.com>
Unreviewed WinCairo build fix after r248713.
* platform/network/curl/NetworkStorageSessionCurl.cpp:
(WebCore::NetworkStorageSession::setCookiesFromDOM const):
(WebCore::NetworkStorageSession::cookiesForDOM const):
(WebCore::NetworkStorageSession::getRawCookies const):
(WebCore::NetworkStorageSession::cookieRequestHeaderFieldValue const):
2019-08-15 Simon Fraser <simon.fraser@apple.com>
Use ObjectIdentifier<FrameIdentifierType> for frameIDs
https://bugs.webkit.org/show_bug.cgi?id=199986
Reviewed by Ryosuke Niwa.
Use the strongly-typed FrameIdentifier instead of uint64_t as frame identifiers everywhere.
* WebCore.xcodeproj/project.pbxproj:
* loader/CookieJar.cpp:
(WebCore::CookieJar::cookies const):
(WebCore::CookieJar::setCookies):
(WebCore::CookieJar::cookieRequestHeaderFieldValue const):
(WebCore::CookieJar::getRawCookies const):
* loader/CookieJar.h:
* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoaderClient.h:
* loader/NavigationAction.cpp:
* loader/NavigationAction.h:
(WebCore::NavigationAction::Requester::frameID const):
* page/ChromeClient.h:
* page/GlobalFrameIdentifier.h:
(WebCore::GlobalFrameIdentifier::decode):
* platform/network/CookieRequestHeaderFieldProxy.h:
* platform/network/NetworkStorageSession.cpp:
(WebCore::NetworkStorageSession::shouldBlockCookies const):
(WebCore::NetworkStorageSession::hasStorageAccess const):
(WebCore::NetworkStorageSession::grantStorageAccess):
(WebCore::NetworkStorageSession::removeStorageAccessForFrame):
* platform/network/NetworkStorageSession.h:
* platform/network/cocoa/NetworkStorageSessionCocoa.mm:
(WebCore::cookiesForURL):
(WebCore::cookiesForSession):
(WebCore::NetworkStorageSession::cookiesForDOM const):
(WebCore::NetworkStorageSession::cookieRequestHeaderFieldValue const):
(WebCore::NetworkStorageSession::setCookiesFromDOM const):
(WebCore::NetworkStorageSession::getRawCookies const):
2019-08-15 Thibault Saunier <tsaunier@igalia.com>
[GStreamer][WebRTC]: openh264 encoder bitrate is in bits per second
https://bugs.webkit.org/show_bug.cgi?id=200578
Reviewed by Philippe Normand.
Not really testable as is.
* platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:
(gst_webrtc_video_encoder_class_init):
2019-08-14 Alexey Shvayka <shvaikalesh@gmail.com>
Error thrown during "acceptNode" lookup is overridden
https://bugs.webkit.org/show_bug.cgi?id=200735
Reviewed by Ross Kirsling.
Test: imported/w3c/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-expected.html
* bindings/js/JSCallbackData.cpp:
(WebCore::JSCallbackData::invokeCallback): Catch and return exception of callback->get call.
2019-08-14 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Variables shouldn't be able to have void type
https://bugs.webkit.org/show_bug.cgi?id=200751
Reviewed by Robin Morisset.
Trivial fix. Found by https://github.com/gpuweb/WHLSL/issues/320.
Test: webgpu/whlsl/void-variable-parameter.html
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::Checker::visit):
2019-08-14 Justin Fan <justin_fan@apple.com>
[WebGPU] Use of WebGPU should not force discrete GPU
https://bugs.webkit.org/show_bug.cgi?id=200740
Reviewed by Myles C. Maxfield.
Request a low-power device from Metal by default.
No change in testable behavior.
* platform/graphics/gpu/GPURequestAdapterOptions.h:
* platform/graphics/gpu/cocoa/GPUDeviceMetal.mm:
(WebCore::GPUDevice::tryCreate):
2019-08-14 Chris Dumez <cdumez@apple.com>
Potentially non thread-safe usage of WebCore::MediaSample
https://bugs.webkit.org/show_bug.cgi?id=200734
Reviewed by Eric Carlson.
ImageSource is a main thread object but ends up getting passed to a background queue for image
decoding. In some cases, the background queue ends up being the last one holding a ref to the
ImageSource which ends up destroying the ImageSource on a background thread. Doing so is not
safe as shown by the crash.
To address the issue, have ImageSource subclass ThreadSafeRefCounted<ImageSource, WTF::DestructionThread::Main>
so that it is always destroyed on the main thread.
No new tests, currently crashing on the debug bots.
* platform/graphics/ImageSource.cpp:
(WebCore::ImageSource::ImageSource):
(WebCore::ImageSource::~ImageSource):
* platform/graphics/ImageSource.h:
2019-08-14 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r248526.
Caused two IndexedDB perf tests to fail
Reverted changeset:
"Remove IDB-specific quota"
https://bugs.webkit.org/show_bug.cgi?id=196545
https://trac.webkit.org/changeset/248526
2019-08-14 Keith Rollin <krollin@apple.com>
Remove support for macOS < 10.13
https://bugs.webkit.org/show_bug.cgi?id=200694
<rdar://problem/54278851>
Reviewed by Youenn Fablet.
Update conditionals that reference __MAC_OS_X_VERSION_MIN_REQUIRED and
__MAC_OS_X_VERSION_MAX_ALLOWED, assuming that they both have values >=
101300. This means that expressions like
"__MAC_OS_X_VERSION_MIN_REQUIRED < 101300" are always False and
"__MAC_OS_X_VERSION_MIN_REQUIRED >= 101300" are always True.
No new tests -- no added or changed functionality.
* Modules/applepay/cocoa/PaymentContactCocoa.mm:
(WebCore::subLocality):
(WebCore::setSubLocality):
(WebCore::subAdministrativeArea):
(WebCore::setSubAdministrativeArea):
* WebCorePrefix.h:
* crypto/mac/CryptoKeyRSAMac.cpp:
* editing/cocoa/WebContentReaderCocoa.mm:
* page/mac/TextIndicatorWindow.mm:
(-[WebTextIndicatorView initWithFrame:textIndicator:margin:offset:]):
* platform/PlatformScreen.h:
* platform/cocoa/NetworkExtensionContentFilter.mm:
(WebCore::NetworkExtensionContentFilter::initialize):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::seekableTimeRangesLastModifiedTime const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::liveUpdateInterval const):
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontDatabase::fontForPostScriptName):
(WebCore::variationCapabilitiesForFontDescriptor):
(WebCore::FontCache::lastResortFallbackFont):
* platform/graphics/cocoa/FontPlatformDataCocoa.mm:
(WebCore::cascadeToLastResortAndVariationsFontDescriptor):
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::setGPUByRegistryID):
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::screenDidChange):
(WebCore::setGPUByDisplayMask): Deleted.
* platform/graphics/cv/VideoTextureCopierCV.cpp:
* platform/graphics/gpu/cocoa/GPUDeviceMetal.mm:
(WebCore::isAcceptableDevice):
* platform/graphics/mac/FontCacheMac.mm:
(WebCore::platformFontWithFamilySpecialCase):
* platform/graphics/mac/FontCustomPlatformData.cpp:
(WebCore::createFontCustomPlatformData):
* platform/mac/DragImageMac.mm:
(WebCore::LinkImageLayout::LinkImageLayout):
(WebCore::createDragImageForLink):
* platform/mac/PlatformScreenMac.mm:
(WebCore::collectScreenProperties):
(WebCore::gpuIDForDisplayMask):
* platform/mac/WebPlaybackControlsManager.h:
* platform/mac/WebPlaybackControlsManager.mm:
(toAVTouchBarMediaSelectionOptionType):
(mediaSelectionOptions):
(-[WebPlaybackControlsManager generateFunctionBarThumbnailsForTimes:size:completionHandler:]): Deleted.
(-[WebPlaybackControlsManager generateFunctionBarAudioAmplitudeSamples:completionHandler:]): Deleted.
(-[WebPlaybackControlsManager canBeginFunctionBarScrubbing]): Deleted.
(-[WebPlaybackControlsManager beginFunctionBarScrubbing]): Deleted.
(-[WebPlaybackControlsManager endFunctionBarScrubbing]): Deleted.
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::platformActiveTextSearchHighlightColor const):
(WebCore::RenderThemeMac::systemColor const):
2019-08-14 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] Any previously destroyed renderer should not be considered a candidate for content observation.
https://bugs.webkit.org/show_bug.cgi?id=200732
<rdar://problem/54319654>
Reviewed by Simon Fraser.
A visible element should not be considered a candidate to content change observation when it loses the visiblity status momentarily.
This patch extends the check of re-constructed renderers for the duration of the content change observation (as opposed to just a single render tree update cycle)
Test: fast/events/touch/ios/content-observation/visible-content-gains-new-renderer2.html
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::reset):
(WebCore::ContentChangeObserver::rendererWillBeDestroyed):
(WebCore::ContentChangeObserver::adjustObservedState):
(WebCore::ContentChangeObserver::renderTreeUpdateDidStart): Deleted.
(WebCore::ContentChangeObserver::renderTreeUpdateDidFinish): Deleted.
(WebCore::ContentChangeObserver::stopContentObservation): Deleted.
(WebCore::ContentChangeObserver::willDestroyRenderer): Deleted.
(WebCore::ContentChangeObserver::RenderTreeUpdateScope::RenderTreeUpdateScope): Deleted.
(WebCore::ContentChangeObserver::RenderTreeUpdateScope::~RenderTreeUpdateScope): Deleted.
* page/ios/ContentChangeObserver.h:
(WebCore::ContentChangeObserver::isObservingContentChanges const):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::willBeDestroyed):
* rendering/updating/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::updateRenderTree):
(WebCore::RenderTreeUpdater::tearDownRenderers):
2019-08-14 Andy Estes <aestes@apple.com>
[Cocoa] Add some WKA extension points
https://bugs.webkit.org/show_bug.cgi?id=200506
<rdar://problem/51682474>
Reviewed by Tim Horton.
* Modules/applepay/ApplePayPayment.h:
* Modules/applepay/ApplePayPaymentMethod.h:
* Modules/applepay/ApplePayRequestBase.cpp:
(WebCore::finishConverting):
(WebCore::convertAndValidate):
* Modules/applepay/ApplePayRequestBase.h:
* Modules/applepay/ApplePaySessionPaymentRequest.h:
* Modules/applepay/PaymentCoordinatorClient.cpp:
(WebCore::PaymentCoordinatorClient::supportsVersion):
* Modules/applepay/cocoa/PaymentCocoa.mm:
(WebCore::convert):
* Modules/applepay/cocoa/PaymentMethodCocoa.mm:
(WebCore::finishConverting):
(WebCore::convert):
2019-08-14 Devin Rousso <drousso@apple.com>
Web Inspector: support `console.screenshot` with dataURL strings
https://bugs.webkit.org/show_bug.cgi?id=199307
Reviewed by Joseph Pecoraro.
Test: inspector/console/console-screenshot.html
* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::screenshot):
2019-08-14 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] Stop content change observation explicitly.
https://bugs.webkit.org/show_bug.cgi?id=200689
<rdar://problem/54274887>
Reviewed by Simon Fraser.
This helps to clean up some temporary state. There are 2 exit points when content observation needs to stop.
1. Soon after the synthetic mouseMove event when we decide not to continue with further observation (see WebPage::handleSyntheticClick)
2. When we asynchronously notify the client about the visible content change after all pending events have been processed.
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::stopContentObservation):
(WebCore::ContentChangeObserver::adjustObservedState):
* page/ios/ContentChangeObserver.h:
(WebCore::ContentChangeObserver::stopContentObservation const):
(WebCore::ContentChangeObserver::isObservingContentChanges const):
(WebCore::ContentChangeObserver::observedContentChange const): Deleted.
2019-08-14 Youenn Fablet <youenn@apple.com>
Update Worker::notifyFinished to not use emptySessionID
https://bugs.webkit.org/show_bug.cgi?id=200710
Reviewed by Alex Christensen.
No change of behavior.
Exit early if context is gone since we should not dispatch events or create worker.
Make sure to unset pending activity using a ScopeExit.
* workers/Worker.cpp:
(WebCore::Worker::notifyFinished):
2019-08-14 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Implement TableFormattingContext::computePreferredWidthForColumns
https://bugs.webkit.org/show_bug.cgi?id=200701
<rdar://problem/54287828>
Reviewed by Antti Koivisto.
Compute cells' min/max width first.
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns const):
* layout/tableformatting/TableGrid.cpp:
(WebCore::Layout::TableGrid::slot):
(WebCore::Layout::TableGrid::appendCell):
* layout/tableformatting/TableGrid.h:
(WebCore::Layout::TableGrid::cells):
2019-08-14 Youenn Fablet <youenn@apple.com>
ThreadableBlobRegistry::blobSize should take a SessionID as parameter
https://bugs.webkit.org/show_bug.cgi?id=200671
Reviewed by Alex Christensen.
Update FormData to compute its byte size based on a SessionID.
We keep a WK1 byte length computation for FormDataElement.
Update FormData call sites accordingly.
Update CacheStorageConnection to implement a SessionID getter.
No change of behavior.
* Modules/cache/CacheStorageConnection.cpp:
(WebCore::CacheStorageConnection::computeRealBodySize):
(WebCore::computeRealBodySize): Deleted.
* Modules/cache/CacheStorageConnection.h:
* Modules/cache/WorkerCacheStorageConnection.cpp:
(WebCore::WorkerCacheStorageConnection::sessionID const):
* Modules/cache/WorkerCacheStorageConnection.h:
* fileapi/Blob.cpp:
(WebCore::Blob::size const):
* fileapi/ThreadableBlobRegistry.cpp:
(WebCore::ThreadableBlobRegistry::blobSize):
* fileapi/ThreadableBlobRegistry.h:
* loader/cache/KeepaliveRequestTracker.cpp:
(WebCore::KeepaliveRequestTracker::tryRegisterRequest):
(WebCore::KeepaliveRequestTracker::registerRequest):
(WebCore::KeepaliveRequestTracker::unregisterRequest):
* page/CacheStorageProvider.h:
(WebCore::CacheStorageProvider::createCacheStorageConnection):
* platform/network/BlobRegistry.h:
* platform/network/FormData.cpp:
(WebCore::computeLengthInBytes):
(WebCore::FormDataElement::lengthInBytes const):
(WebCore::FormData::lengthInBytes const):
* platform/network/FormData.h:
* platform/network/cf/FormDataStreamCFNet.cpp:
(WebCore::createHTTPBodyCFReadStream):
* platform/network/curl/CurlFormDataStream.cpp:
(WebCore::m_sessionID):
(WebCore::CurlFormDataStream::computeContentLength):
(WebCore::CurlFormDataStream::CurlFormDataStream): Deleted.
* platform/network/curl/CurlFormDataStream.h:
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::CurlRequest):
* platform/network/curl/CurlRequest.h:
(WebCore::CurlRequest::create):
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::createRequest):
2019-08-14 Antti Koivisto <antti@apple.com>
Remove TouchActionData
https://bugs.webkit.org/show_bug.cgi?id=199668
* dom/Element.cpp:
(WebCore::Element::nearestScrollingNodeIDUsingTouchOverflowScrolling const): Deleted.
As a follow-up also remove this now-unused function.
* dom/Element.h:
2019-08-14 Youenn Fablet <youenn@apple.com>
Remove SessionID default constructor
https://bugs.webkit.org/show_bug.cgi?id=200669
Reviewed by Alex Christensen.
Remove SessionID default constructor
Update CookieRequestHeaderFiledProxy decoder to use an Optional<SessionID>.
Update ServiceWorkerContextData accordingly.
Update RegistrationStore/RegistrationDatabase to store a map of changed registration as follows:
- The RegistrationStore map contains an Optional value. In case of removing, the map will contain WTF::nullopt.
- RegistrationDatabase computes two vectors for removed registrations and updated registrations.
No change of behavior.
* dom/Document.cpp:
* loader/CookieJar.cpp:
(WebCore::CookieJar::cookieRequestHeaderFieldProxy):
* platform/network/CookieRequestHeaderFieldProxy.h:
(WebCore::CookieRequestHeaderFieldProxy::decode):
* workers/Worker.cpp:
(WebCore::Worker::notifyFinished):
* workers/service/ServiceWorkerContextData.h:
(WebCore::ServiceWorkerContextData::decode):
* workers/service/server/RegistrationDatabase.cpp:
(WebCore::RegistrationDatabase::pushChanges):
(WebCore::RegistrationDatabase::doPushChanges):
* workers/service/server/RegistrationDatabase.h:
* workers/service/server/RegistrationStore.cpp:
(WebCore::RegistrationStore::pushChangesToDatabase):
(WebCore::RegistrationStore::clearAll):
(WebCore::RegistrationStore::flushChanges):
(WebCore::RegistrationStore::startSuspension):
(WebCore::RegistrationStore::removeRegistration):
* workers/service/server/RegistrationStore.h:
2019-08-14 Youenn Fablet <youenn@apple.com>
Make privateBrowsingStateDidChange take an explicit SessionID
https://bugs.webkit.org/show_bug.cgi?id=200666
Reviewed by Alex Christensen.
Instead of stating that the page session ID changed and get it from the page,
pass it directly to privateBrowsingStateDidChange.
No change of behavior.
* dom/Document.cpp:
(WebCore::Document::privateBrowsingStateDidChange):
* dom/Document.h:
* dom/Element.h:
(WebCore::Element::privateBrowsingStateDidChange):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::privateBrowsingStateDidChange):
* html/HTMLMediaElement.h:
* page/Page.cpp:
(WebCore::Page::setSessionID):
2019-08-13 Sam Weinig <weinig@apple.com>
Fix the WPE build.
* platform/libwpe/PlatformKeyboardEventLibWPE.cpp:
(WebCore::PlatformKeyboardEvent::keyValueForWPEKeyCode):
(WebCore::PlatformKeyboardEvent::singleCharacterString):
Update for rename from StringBuilder::append(UChar32) to StringBuilder::appendCharacter(UChar32).
2019-08-13 Sam Weinig <weinig@apple.com>
Rename StringBuilder::append(UChar32) to StringBuilder::appendCharacter(UChar32) to avoid accidental change in behavior when replacing append with flexibleAppend
https://bugs.webkit.org/show_bug.cgi?id=200675
Reviewed by Darin Adler.
* bindings/js/JSDOMConvertStrings.cpp:
(WebCore::stringToUSVString):
* css/CSSMarkup.cpp:
(WebCore::serializeCharacter):
(WebCore::serializeIdentifier):
(WebCore::serializeString):
* css/parser/CSSTokenizer.cpp:
(WebCore::CSSTokenizer::consumeStringTokenUntil):
(WebCore::CSSTokenizer::consumeUrlToken):
(WebCore::CSSTokenizer::consumeName):
* html/parser/HTMLEntityParser.cpp:
(WebCore::HTMLEntityParser::consumeNamedEntity):
* platform/mock/mediasource/MockBox.cpp:
(WebCore::MockBox::peekType):
(WebCore::MockTrackBox::MockTrackBox):
* rendering/RenderText.cpp:
(WebCore::capitalize):
* xml/parser/CharacterReferenceParserInlines.h:
(WebCore::consumeCharacterReference):
Update for rename from StringBuilder::append(UChar32) to StringBuilder::appendCharacter(UChar32).
2019-08-13 Saam Barati <sbarati@apple.com>
[WHLSL] Make lexing faster
https://bugs.webkit.org/show_bug.cgi?id=200596
Reviewed by Myles C. Maxfield.
Previously, our lexer would just branch on a series of string compares.
We'd have code like this to match keywords:
```
...
if (matchCurrent("false"))
return FalseToken;
if (matchCurrent("true"))
return TrueToken;
...
```
However, this is extremely inefficient. We now lex using a trie, which means
we never backtrack in the lexer.
This patch is a 3ms speedup in compute_boids.
Tests: webgpu/whlsl/lexing.html
webgpu/whlsl/literals.html
* Modules/webgpu/WHLSL/WHLSLLexer.cpp:
(WebCore::WHLSL::isValidIdentifierStart):
(WebCore::WHLSL::isValidNonStartingIdentifierChar):
(WebCore::WHLSL::isHexadecimalCharacter):
(WebCore::WHLSL::isDigit):
(WebCore::WHLSL::Lexer::consumeTokenFromStream):
(WebCore::WHLSL::Lexer::recognizeKeyword): Deleted.
(WebCore::WHLSL::Lexer::coreDecimalIntLiteral const): Deleted.
(WebCore::WHLSL::Lexer::decimalIntLiteral const): Deleted.
(WebCore::WHLSL::Lexer::decimalUintLiteral const): Deleted.
(WebCore::WHLSL::Lexer::coreHexadecimalIntLiteral const): Deleted.
(WebCore::WHLSL::Lexer::hexadecimalIntLiteral const): Deleted.
(WebCore::WHLSL::Lexer::hexadecimalUintLiteral const): Deleted.
(WebCore::WHLSL::Lexer::intLiteral const): Deleted.
(WebCore::WHLSL::Lexer::uintLiteral const): Deleted.
(WebCore::WHLSL::Lexer::digit const): Deleted.
(WebCore::WHLSL::Lexer::digitStar const): Deleted.
(WebCore::WHLSL::Lexer::character const): Deleted.
(WebCore::WHLSL::Lexer::coreFloatLiteralType1 const): Deleted.
(WebCore::WHLSL::Lexer::coreFloatLiteral const): Deleted.
(WebCore::WHLSL::Lexer::floatLiteral const): Deleted.
(WebCore::WHLSL::Lexer::validIdentifier const): Deleted.
(WebCore::WHLSL::Lexer::identifier const): Deleted.
(WebCore::WHLSL::Lexer::completeOperatorName const): Deleted.
* Modules/webgpu/WHLSL/WHLSLLexer.h:
(WebCore::WHLSL::Lexer::string const): Deleted.
2019-08-13 Said Abou-Hallawa <sabouhallawa@apple.com>
shouldRespectImageOrientation should be a value in ImageOrientation
https://bugs.webkit.org/show_bug.cgi?id=200553
Reviewed by Simon Fraser.
This patch is a step towards implementing the css image-orientation.
Instead of having ImageOrientationEnum, ImageOrientationDescription,
ImageOrientation and RespectImageOrientationEnum we are going to have a
single structure named 'ImageOrientation' which is a wrapper for the enum
type "Orientation".
This structure will have a constructor and casting operator such that
assigning an enum value and comparing with an enum value will be done
implicitly.
RespectImageOrientation is represented as a new enum value 'FromImage'.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator ImageOrientation const):
(WebCore::CSSPrimitiveValue::operator ImageOrientationEnum const): Deleted.
* dom/DataTransfer.cpp:
(WebCore::DataTransfer::createDragImage const):
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::paint):
* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::imageSizeForRenderer const):
* page/DragController.cpp:
(WebCore::DragController::doImageDrag):
* platform/DragImage.cpp:
(WebCore::createDragImageFromSnapshot):
(WebCore::createDragImageFromImage):
* platform/DragImage.h:
* platform/graphics/BitmapImage.cpp:
(WebCore::BitmapImage::draw):
(WebCore::BitmapImage::drawPattern):
* platform/graphics/BitmapImage.h:
* platform/graphics/CrossfadeGeneratedImage.cpp:
(WebCore::CrossfadeGeneratedImage::draw):
* platform/graphics/CrossfadeGeneratedImage.h:
* platform/graphics/CustomPaintImage.cpp:
(WebCore::CustomPaintImage::draw):
* platform/graphics/CustomPaintImage.h:
* platform/graphics/GeneratedImage.h:
* platform/graphics/GradientImage.cpp:
(WebCore::GradientImage::draw):
* platform/graphics/GradientImage.h:
* platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::drawImage):
(WebCore::GraphicsContext::drawTiledImage):
* platform/graphics/GraphicsContext.h:
(WebCore::ImagePaintingOptions::ImagePaintingOptions):
* platform/graphics/GraphicsContextImpl.cpp:
(WebCore::GraphicsContextImpl::drawImageImpl):
(WebCore::GraphicsContextImpl::drawTiledImageImpl):
* platform/graphics/Image.cpp:
(WebCore::Image::drawTiled):
* platform/graphics/Image.h:
* platform/graphics/ImageFrame.h:
* platform/graphics/ImageOrientation.cpp: Removed.
* platform/graphics/ImageOrientation.h:
(WebCore::ImageOrientation::ImageOrientation):
(WebCore::ImageOrientation::fromEXIFValue):
(WebCore::ImageOrientation::operator Orientation const):
(WebCore::ImageOrientation::usesWidthAsHeight const):
(WebCore::ImageOrientation::transformFromDefault const):
(WebCore::ImageOrientation::isValidOrientation):
(WebCore::ImageOrientation::isValidEXIFOrientation):
(WebCore::ImageOrientationDescription::ImageOrientationDescription): Deleted.
(WebCore::ImageOrientationDescription::setRespectImageOrientation): Deleted.
(WebCore::ImageOrientationDescription::respectImageOrientation): Deleted.
(WebCore::ImageOrientationDescription::setImageOrientationEnum): Deleted.
(WebCore::ImageOrientationDescription::imageOrientation): Deleted.
(WebCore::ImageOrientation::operator ImageOrientationEnum const): Deleted.
(WebCore::ImageOrientation::operator== const): Deleted.
(WebCore::ImageOrientation::operator!= const): Deleted.
* platform/graphics/ImageSource.cpp:
(WebCore::ImageSource::dump):
* platform/graphics/NamedImageGeneratedImage.cpp:
(WebCore::NamedImageGeneratedImage::draw):
* platform/graphics/NamedImageGeneratedImage.h:
* platform/graphics/NativeImage.h:
* platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:
(WebCore::ImageDecoderAVFObjC::frameOrientationAtIndex const):
* platform/graphics/cairo/CairoOperations.cpp:
(WebCore::Cairo::drawShadowLayerBuffer):
(WebCore::Cairo::drawShadowImage):
(WebCore::Cairo::drawNativeImage):
* platform/graphics/cairo/ImageBufferCairo.cpp:
(WebCore::ImageBuffer::draw):
* platform/graphics/cairo/NativeImageCairo.cpp:
(WebCore::drawNativeImage):
* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::GraphicsContext::drawNativeImage):
* platform/graphics/cg/ImageDecoderCG.cpp:
(WebCore::orientationFromProperties):
(WebCore::ImageDecoderCG::frameOrientationAtIndex const):
* platform/graphics/cg/NativeImageCG.cpp:
(WebCore::drawNativeImage):
* platform/graphics/cg/PDFDocumentImage.cpp:
(WebCore::PDFDocumentImage::draw):
* platform/graphics/cg/PDFDocumentImage.h:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::paint):
(WebCore::MediaPlayerPrivateGStreamerBase::setVideoSourceOrientation):
(WebCore::MediaPlayerPrivateGStreamerBase::updateTextureMapperFlags):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:
(WebCore::VideoTextureCopierGStreamer::updateTextureSpaceMatrix):
(WebCore::VideoTextureCopierGStreamer::copyVideoTextureToPlatformTexture):
* platform/graphics/gstreamer/VideoTextureCopierGStreamer.h:
* platform/graphics/win/Direct2DOperations.cpp:
(WebCore::Direct2D::drawNativeImage):
* platform/graphics/win/ImageCGWin.cpp:
(WebCore::BitmapImage::getHBITMAPOfSize):
(WebCore::BitmapImage::drawFrameMatchingSourceSize):
* platform/graphics/win/ImageCairoWin.cpp:
(WebCore::BitmapImage::getHBITMAPOfSize):
(WebCore::BitmapImage::drawFrameMatchingSourceSize):
* platform/graphics/win/ImageDecoderDirect2D.cpp:
(WebCore::ImageDecoderDirect2D::frameOrientationAtIndex const):
* platform/graphics/win/ImageDirect2D.cpp:
(WebCore::BitmapImage::drawFrameMatchingSourceSize):
* platform/graphics/win/NativeImageDirect2D.cpp:
(WebCore::drawNativeImage):
* platform/gtk/DragImageGtk.cpp:
(WebCore::createDragImageFromImage):
* platform/image-decoders/ScalableImageDecoderFrame.h:
* platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
(WebCore::readImageOrientation):
* platform/ios/DragImageIOS.mm:
(WebCore::createDragImageFromImage):
* platform/mac/DragImageMac.mm:
(WebCore::createDragImageFromImage):
* platform/win/DragImageCGWin.cpp:
(WebCore::createDragImageFromImage):
* platform/win/DragImageCairoWin.cpp:
(WebCore::createDragImageFromImage):
* platform/win/DragImageDirect2D.cpp:
(WebCore::createDragImageFromImage):
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::paintFillLayerExtended):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::imageOrientation const):
(WebCore::RenderElement::shouldRespectImageOrientation const): Deleted.
* rendering/RenderElement.h:
* rendering/RenderEmbeddedObject.cpp:
(WebCore::RenderEmbeddedObject::paintSnapshotImage):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::paintReplaced):
(WebCore::RenderImage::paintIntoRect):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::isDirectlyCompositedImage const):
* rendering/RenderSnapshottedPlugIn.cpp:
(WebCore::RenderSnapshottedPlugIn::paintSnapshot):
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::setImageOrientation):
(WebCore::RenderStyle::initialImageOrientation):
(WebCore::RenderStyle::imageOrientation const):
* rendering/style/StyleRareInheritedData.h:
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::drawForContainer):
(WebCore::SVGImage::nativeImageForCurrentFrame):
(WebCore::SVGImage::nativeImage):
(WebCore::SVGImage::draw):
* svg/graphics/SVGImage.h:
* svg/graphics/SVGImageForContainer.cpp:
(WebCore::SVGImageForContainer::draw):
* svg/graphics/SVGImageForContainer.h:
2019-08-13 Robin Morisset <rmorisset@apple.com>
[WHLSL] Move Qualifiers and Semantic from VariableDeclaration to VariableDeclaration::RareData
https://bugs.webkit.org/show_bug.cgi?id=200696
Reviewed by Myles C. Maxfield.
Shrinking VariableDeclaration by 16 bytes in the common case.
No new tests as there is no intended functional change.
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
2019-08-13 Robin Morisset <rmorisset@apple.com>
[WHLSL] Don't generate empty comma expressions for bare ';'
https://bugs.webkit.org/show_bug.cgi?id=200681
Reviewed by Myles C. Maxfield.
Currently we emit a comma expression with no sub-expression for bare ';', as well as for the initialization of for loops with no initializers.
This crashes the Checker, as it tries to access the last sub-expression of comma expressions.
Instead we should generate an empty statement block for that case.
This problem was found (and originally fixed before the commit was reverted) in https://bugs.webkit.org/show_bug.cgi?id=199726.
I am just isolating the fix here for easier review and debugging.
New test: LayoutTests/webgpu/whlsl/for-loop.html
* Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
* Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:
(WebCore::WHLSL::ASTDumper::visit):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseForLoop):
(WebCore::WHLSL::Parser::parseStatement):
(WebCore::WHLSL::Parser::parseEffectfulExpression):
* Modules/webgpu/WHLSL/WHLSLParser.h:
* Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
(WebCore::WHLSL::Visitor::visit):
2019-08-13 Daniel Bates <dabates@apple.com>
Focus rings are black
https://bugs.webkit.org/show_bug.cgi?id=200593
<rdar://problem/54145925>
Reviewed by Wenson Hsieh.
Work around <rdar://problem/50838886> and make focus rings a pretty blue.
* rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::platformFocusRingColor const):
2019-08-13 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] adjustStateAndNotifyContentChangeIfNeeded should check isObservationTimeWindowActive()
https://bugs.webkit.org/show_bug.cgi?id=200687
<rdar://problem/54271221>
Reviewed by Simon Fraser.
Move the check to adjustStateAndNotifyContentChangeIfNeeded.
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::adjustObservedState):
2019-08-13 John Wilander <wilander@apple.com>
Resource Load Statistics: Switch NSURLSession on top navigation to prevalent resource with user interaction
https://bugs.webkit.org/show_bug.cgi?id=200642
<rdar://problem/53962073>
Reviewed by Alex Christensen.
Tests: http/tests/resourceLoadStatistics/do-not-switch-session-on-navigation-to-prevalent-without-interaction.html
http/tests/resourceLoadStatistics/switch-session-on-navigation-to-prevalent-with-interaction.html
This patch splits m_registrableDomainsToBlockCookieFor in WebCore:NetworkStorageSession into:
- m_registrableDomainsToBlockAndDeleteCookiesFor
- m_registrableDomainsToBlockButKeepCookiesFor
... to support different network load policies based on this distinction.
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setITPSessionSwitchingEnabled):
(WebCore::RuntimeEnabledFeatures::itpSessionSwitchingEnabled const):
* page/Settings.yaml:
* platform/network/NetworkStorageSession.cpp:
(WebCore::NetworkStorageSession::shouldBlockThirdPartyCookies const):
(WebCore::NetworkStorageSession::shouldBlockThirdPartyCookiesButKeepFirstPartyCookiesFor const):
(WebCore::NetworkStorageSession::setPrevalentDomainsToBlockAndDeleteCookiesFor):
(WebCore::NetworkStorageSession::setPrevalentDomainsToBlockButKeepCookiesFor):
(WebCore::NetworkStorageSession::removePrevalentDomains):
(WebCore::NetworkStorageSession::setPrevalentDomainsToBlockCookiesFor): Deleted.
* platform/network/NetworkStorageSession.h:
2019-08-13 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] setShouldObserveDOMTimerScheduling and setShouldObserveTransitions are always called in pairs.
https://bugs.webkit.org/show_bug.cgi?id=200685
<rdar://problem/54269778>
Reviewed by Simon Fraser.
Let's merge these 2 functions.
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::stopObservingPendingActivities):
(WebCore::ContentChangeObserver::adjustObservedState):
* page/ios/ContentChangeObserver.h:
(WebCore::ContentChangeObserver::isObservingDOMTimerScheduling const):
(WebCore::ContentChangeObserver::isObservingContentChanges const):
(WebCore::ContentChangeObserver::setShouldObserveDOMTimerSchedulingAndTransitions):
(WebCore::ContentChangeObserver::setShouldObserveDOMTimerScheduling): Deleted.
(WebCore::ContentChangeObserver::setShouldObserveTransitions): Deleted.
2019-08-13 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] Scope events in adjustObservedState
https://bugs.webkit.org/show_bug.cgi?id=200679
<rdar://problem/54266172>
Reviewed by Simon Fraser.
This is in preparation for simplifying adjustObservedState.
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::didFinishTransition):
(WebCore::ContentChangeObserver::adjustObservedState):
* page/ios/ContentChangeObserver.h:
2019-08-13 Justin Fan <justin_fan@apple.com>
[WebGPU] Improve GPUBindGroup performance using one device-shared argument MTLBuffer
https://bugs.webkit.org/show_bug.cgi?id=200606
Reviewed by Myles C. Maxfield.
Manage all argument buffer storage for GPUBindGroups in one large MTLBuffer for a GPUDevice.
Vastly improves GPUProgrammablePassEncoder.setBindGroup performance; in alpha MotionMark WebGPU benchmark,
score improves from ~12000 to ~90000.
No expected change in WebGPU behavior, though bind-groups.html has been updated to cover more cases.
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createBindGroup const):
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/gpu/GPUBindGroup.h: No longer manages one unique MTLBuffer per MTLArgumentEncoder.
(WebCore::GPUBindGroup::argumentBuffer const): Delegates to GPUBindGroupAllocator for current argument buffer.
(WebCore::GPUBindGroup::vertexArgsBuffer const): Deleted.
(WebCore::GPUBindGroup::fragmentArgsBuffer const): Deleted.
(WebCore::GPUBindGroup::computeArgsBuffer const): Deleted.
* platform/graphics/gpu/GPUBindGroupAllocator.h: Added. Allocates MTLBuffer for and assigns offsets for argument buffers.
(WebCore::GPUBindGroupAllocator::argumentBuffer const):
* platform/graphics/gpu/GPUBindGroupLayout.h:
* platform/graphics/gpu/GPUBuffer.h: Move MTLResourceUsage calculation to GPUBuffer construction.
(WebCore::GPUBuffer::platformUsage const):
* platform/graphics/gpu/GPUComputePassEncoder.h: Prevent any potiential narrowing issues, as offset can be large.
* platform/graphics/gpu/GPUDevice.cpp: Now owns a GPUBindGroupAllocator for owning all its argument buffer storage.
(WebCore::GPUDevice::tryCreateBindGroup const):
* platform/graphics/gpu/GPUDevice.h:
* platform/graphics/gpu/GPUProgrammablePassEncoder.h:
(WebCore::GPUProgrammablePassEncoder::setVertexBuffer):
(WebCore::GPUProgrammablePassEncoder::setFragmentBuffer):
(WebCore::GPUProgrammablePassEncoder::setComputeBuffer):
* platform/graphics/gpu/GPURenderPassEncoder.h:
* platform/graphics/gpu/GPUTexture.h: Move MTLResourceUsage calculation to GPUTexture construction.
(WebCore::GPUTexture::platformUsage const):
* platform/graphics/gpu/cocoa/GPUBindGroupAllocatorMetal.mm: Added.
(WebCore::GPUBindGroupAllocator::create):
(WebCore::GPUBindGroupAllocator::GPUBindGroupAllocator):
(WebCore::GPUBindGroupAllocator::allocateAndSetEncoders): Ensures that MTLArgumentEncoders have appropriate allocation for encoding.
(WebCore::GPUBindGroupAllocator::reallocate): Create new MTLBuffer large enough for new encoder requirement, and copy over old argument buffer data.
(WebCore::GPUBindGroupAllocator::tryReset): For now, resets argument buffer if all GPUBindGroups created with this allocator are destroyed.
* platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
(WebCore::tryGetResourceAsBufferBinding): Add size check.
(WebCore::GPUBindGroup::tryCreate): No longer owns new MTLBuffers. Requests argument buffer space from GPUBindGroupAllocator.
(WebCore::GPUBindGroup::GPUBindGroup):
(WebCore::GPUBindGroup::~GPUBindGroup): Remind allocator to check for possible reset.
(WebCore::tryCreateArgumentBuffer): Deleted.
* platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
(WebCore::GPUBuffer::GPUBuffer):
* platform/graphics/gpu/cocoa/GPUComputePassEncoderMetal.mm:
(WebCore::GPUComputePassEncoder::setComputeBuffer):
* platform/graphics/gpu/cocoa/GPUDeviceMetal.mm:
* platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm:
(WebCore::GPUProgrammablePassEncoder::setBindGroup): No need to recalculate usage every time. Set appropriate argument buffer and offsets for new bind group model.
* platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
(WebCore::GPURenderPassEncoder::setVertexBuffer):
(WebCore::GPURenderPassEncoder::setFragmentBuffer):
* platform/graphics/gpu/cocoa/GPUTextureMetal.mm:
(WebCore::GPUTexture::GPUTexture):
2019-08-13 Antti Koivisto <antti@apple.com>
Event region collection should take clipping into account
https://bugs.webkit.org/show_bug.cgi?id=200668
<rdar://problem/53826561>
Reviewed by Simon Fraser.
Test: pointerevents/ios/touch-action-region-clip-and-transform.html
* rendering/EventRegion.cpp:
(WebCore::EventRegionContext::pushClip):
(WebCore::EventRegionContext::popClip):
Maintain clip rect stack.
(WebCore::EventRegionContext::unite):
Apply both transforms and clipping.
* rendering/EventRegion.h:
* rendering/RenderBlock.cpp:
* rendering/RenderBox.cpp:
(WebCore::RenderBox::pushContentsClip):
(WebCore::RenderBox::popContentsClip):
Update clip for non-self-painting layers.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::clipToRect):
(WebCore::RenderLayer::restoreClip):
Update clip for self-painting layers.
2019-08-13 Devin Rousso <drousso@apple.com>
Web Inspector: Styles: show @supports CSS groupings
https://bugs.webkit.org/show_bug.cgi?id=200419
<rdar://problem/53971948>
Reviewed by Joseph Pecoraro.
Test: inspector/css/getMatchedStylesForNode.html
* inspector/InspectorStyleSheet.cpp:
(WebCore::buildArrayForGroupings): Added.
(WebCore::InspectorStyleSheet::buildObjectForRule):
(WebCore::buildMediaObject): Deleted.
(WebCore::fillMediaListChain): Deleted.
* css/MediaList.h:
* css/MediaList.cpp:
(WebCore::MediaQuerySet::MediaQuerySet):
Remove the `lastLine` as it was never set by anyone and wasn't used by Web Inspector.
2019-08-13 Sihui Liu <sihui_liu@apple.com>
Make sure UniqueIDBDatabaseConnection unregister itself from IDBServer
https://bugs.webkit.org/show_bug.cgi?id=200650
<rdar://problem/54236010>
Reviewed by Youenn Fablet.
We register UniqueIDBDatabaseConnection unconditionally to IDBServer but fail to unregister if UniqueIDBDatabase
of UniqueIDBDatabaseConnection is gone.
* Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
(WebCore::IDBServer::UniqueIDBDatabaseConnection::UniqueIDBDatabaseConnection):
(WebCore::IDBServer::UniqueIDBDatabaseConnection::~UniqueIDBDatabaseConnection):
* Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:
(WebCore::IDBServer::UniqueIDBDatabaseConnection::server):
* Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::UniqueIDBDatabaseTransaction):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::~UniqueIDBDatabaseTransaction):
* Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:
2019-08-13 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Introduce TableGrid
https://bugs.webkit.org/show_bug.cgi?id=200656
<rdar://problem/54240833>
Reviewed by Antti Koivisto.
table grid:
A matrix containing as many rows and columns as needed to describe the position of all the table-rows
and table-cells of a table-root, as determined by the grid-dimensioning algorithm.
Each row of the grid might correspond to a table-row, and each column to a table-column.
slot of the table grid:
A slot (r,c) is an available space created by the intersection of a row r and a column c in the table grid.
https://www.w3.org/TR/css-tables-3/#terminology
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/layouttree/LayoutBox.h:
(WebCore::Layout::Box::isTableHeader const):
(WebCore::Layout::Box::isTableBody const):
(WebCore::Layout::Box::isTableFooter const):
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutBox):
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::layout const):
(WebCore::Layout::TableFormattingContext::ensureTableGrid const):
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns const):
(WebCore::Layout::TableFormattingContext::computeTableWidth const):
(WebCore::Layout::TableFormattingContext::distributeAvailabeWidth const):
(WebCore::Layout::TableFormattingContext::computeTableHeight const):
(WebCore::Layout::TableFormattingContext::distributeAvailableHeight const):
* layout/tableformatting/TableFormattingContext.h:
(WebCore::Layout::TableFormattingContext::formattingState const):
* layout/tableformatting/TableFormattingState.h:
(WebCore::Layout::TableFormattingState::tableGrid):
* layout/tableformatting/TableGrid.cpp: Added.
(WebCore::Layout::TableGrid::CellInfo::CellInfo):
(WebCore::Layout::TableGrid::SlotInfo::SlotInfo):
(WebCore::Layout::TableGrid::TableGrid):
(WebCore::Layout::TableGrid::appendCell):
(WebCore::Layout::TableGrid::insertCell):
(WebCore::Layout::TableGrid::removeCell):
* layout/tableformatting/TableGrid.h: Copied from Source/WebCore/layout/tableformatting/TableFormattingContext.h.
2019-08-13 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Add rowSpan and colSpan to Box
https://bugs.webkit.org/show_bug.cgi?id=200654
<rdar://problem/54239281>
Reviewed by Antti Koivisto.
colSpan and rowSpan are not part of the RenderStyle. We eventually need to find a more appropriate place for the "random DOM things".
* 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/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutBox):
2019-08-13 Youenn Fablet <youenn@apple.com>
Blob registries should be keyed by session IDs
https://bugs.webkit.org/show_bug.cgi?id=200567
<rdar://problem/54120212>
Reviewed by Alex Christensen.
Pass session IDs to all BlobRegistry methods in particular ThreadableLoaderRegistry.
The only exception is blobSize which should be dealt with a follow-up patch.
blobSize blob registry is retrieved from the connection -> sessionID map in Network Process.
Covered by existing tests.
* Modules/fetch/FetchLoader.cpp:
(WebCore::FetchLoader::~FetchLoader):
(WebCore::FetchLoader::startLoadingBlobURL):
* Modules/fetch/FetchLoader.h:
* fileapi/FileReaderLoader.cpp:
(WebCore::FileReaderLoader::~FileReaderLoader):
(WebCore::FileReaderLoader::start):
* fileapi/FileReaderLoader.h:
* fileapi/ThreadableBlobRegistry.cpp:
(WebCore::ThreadableBlobRegistry::registerFileBlobURL):
(WebCore::ThreadableBlobRegistry::registerBlobURL):
(WebCore::ThreadableBlobRegistry::registerBlobURLOptionallyFileBacked):
* fileapi/ThreadableBlobRegistry.h:
* html/PublicURLManager.cpp:
* loader/PolicyChecker.cpp:
(WebCore::PolicyChecker::extendBlobURLLifetimeIfNecessary const):
* platform/network/BlobRegistry.h:
* platform/network/BlobRegistryImpl.cpp:
(WebCore::createBlobResourceHandle):
(WebCore::loadBlobResourceSynchronously):
(WebCore::BlobRegistryImpl::filesInBlob const):
* platform/network/BlobRegistryImpl.h:
* platform/network/FormData.cpp:
(WebCore::appendBlobResolved):
(WebCore::FormData::resolveBlobReferences):
* platform/network/FormData.h:
* platform/network/cf/FormDataStreamCFNet.cpp:
(WebCore::createHTTPBodyCFReadStream):
* platform/network/soup/ResourceRequest.h:
* platform/network/soup/ResourceRequestSoup.cpp:
(WebCore::ResourceRequest::updateSoupMessageBody const):
(WebCore::ResourceRequest::updateSoupMessage const):
2019-08-13 Youenn Fablet <youenn@apple.com>
User Agent and SessionID should be given to NetworkRTCProvider to set up the correct proxy information
https://bugs.webkit.org/show_bug.cgi?id=200583
Reviewed by Eric Carlson.
Use a socket factory that is specific to the user agent and session ID.
This factory is stored in the media endpoint.
Not testable without proxy infrastructure.
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::setConfiguration):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::LibWebRTCProvider::createPeerConnection):
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
2019-08-12 Ryosuke Niwa <rniwa@webkit.org>
FrameLoader::open can execute scritps via style recalc in Frame::setDocument
https://bugs.webkit.org/show_bug.cgi?id=200377
Reviewed by Antti Koivisto.
Fixed the bug that FrameLoader::open can execute arbitrary author scripts via post style update callbacks
by adding PostResolutionCallbackDisabler, WidgetHierarchyUpdatesSuspensionScope, and NavigationDisabler
to CachedFrameBase::restore and FrameLoader::open.
This ensures all frames are restored from the page cache before any of them would start running scripts.
Test: fast/frames/restoring-page-cache-should-not-run-scripts-via-style-update.html
* history/CachedFrame.cpp:
(WebCore::CachedFrameBase::restore):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::open):
* page/FrameViewLayoutContext.cpp:
(WebCore::FrameViewLayoutContext::layout): Fixed the debug assertion. The layout of a document may be
updated while we're preparing to put a page into the page cache.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateCompositingLayers): Ditto.
2019-08-12 Sam Weinig <weinig@apple.com>
Replace multiparameter overloads of append() in StringBuilder as a first step toward standardizinging on the flexibleAppend() implementation
https://bugs.webkit.org/show_bug.cgi?id=200614
Reviewed by Darin Adler.
Renames StringBuilder::append(const LChar*, unsigned), StringBuilder::append(const UChar*, unsigned) and
StringBuilder::append(const char*, unsigned) to StringBuilder::appendCharacters(...).
Renames StringBuilder::append(const String& string, unsigned offset, unsigned length) to
StringBuilder::appendSubstring(...).
* dom/Range.cpp:
(WebCore::Range::toString const):
* editing/Editing.cpp:
(WebCore::stringWithRebalancedWhitespace):
* editing/MarkupAccumulator.cpp:
(WebCore::appendCharactersReplacingEntitiesInternal):
* editing/TextIterator.cpp:
(WebCore::TextIteratorCopyableText::appendToStringBuilder const):
* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::valueWithHardLineBreaks const):
* html/parser/HTMLTokenizer.cpp:
(WebCore::HTMLTokenizer::bufferedCharacters const):
* platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:
(WebCore::InbandTextTrackPrivateAVF::processNativeSamples):
* platform/text/SegmentedString.cpp:
(WebCore::SegmentedString::Substring::appendTo const):
* platform/text/TextCodecICU.cpp:
(WebCore::TextCodecICU::decode):
* xml/XSLTProcessorLibxslt.cpp:
(WebCore::writeToStringBuilder):
Update for renames.
2019-08-12 Adrian Perez de Castro <aperez@igalia.com>
[WPE][GTK] Fix building without unified sources
https://bugs.webkit.org/show_bug.cgi?id=200641
Reviewed by Žan Doberšek.
* CMakeLists.txt: Add WebCore as the list of libraries to link into WebCoreTestSupport, to
avoid underlinking, which makes it possible to link with LDFLAGS="-Wl,--no-undefined".
* editing/WebCorePasteboardFileReader.h: Add missing inclusion of the pal/SessionID.h
header.
2019-08-12 Yusuke Suzuki <ysuzuki@apple.com>
[WTF][JSC] Make JSC and WTF aggressively-fast-malloced
https://bugs.webkit.org/show_bug.cgi?id=200611
Reviewed by Saam Barati.
Changed the accessor since we changed std::unique_ptr to Ref for this field.
No behavior change.
* bindings/js/WorkerScriptController.cpp:
(WebCore::WorkerScriptController::addTimerSetNotification):
(WebCore::WorkerScriptController::removeTimerSetNotification):
2019-08-12 Youenn Fablet <youenn@apple.com>
Make Blob::m_size an Optional
https://bugs.webkit.org/show_bug.cgi?id=200617
Reviewed by Alex Christensen.
Use an Optional instead of -1 to know that m_size is initialized or not.
No change of behavior.
Refactoring to make all Blob members private.
Remove one static Blob create method.
Covered by existing tests.
* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::fromFormData):
* fileapi/Blob.cpp:
(WebCore::Blob::Blob):
(WebCore::Blob::size const):
* fileapi/Blob.h:
(WebCore::Blob::setInternalURL):
* fileapi/File.cpp:
(WebCore::File::create):
(WebCore::File::File):
(WebCore::File::computeNameAndContentType):
* fileapi/File.h:
* html/FileListCreator.cpp:
(WebCore::FileListCreator::createFileList):
2019-08-12 Chris Dumez <cdumez@apple.com>
GPUBuffer seems to be ref'd / deref'd from multiple thread concurrently but is not ThreadSafeRefCounted
https://bugs.webkit.org/show_bug.cgi?id=200629
Reviewed by Geoffrey Garen.
Make sure GPUBuffer only gets ref'd / deref'd on the main thread, since it is not
ThreadSafeRefCounted.
* platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
(WebCore::GPUBuffer::commandBufferCommitted):
(WebCore::GPUBuffer::commandBufferCompleted):
2019-08-12 Thibault Saunier <tsaunier@igalia.com>
[GStreamer][WebRTC] Handle broken data in the libwebrtc GStreamer decoders
https://bugs.webkit.org/show_bug.cgi?id=200584
Reviewed by Philippe Normand.
Listening to parsers warnings and error messages (synchronously so that we react
right away) and requesting keyframes from the peer.
Also simplify the decoder code by trying to make decoding happen
in one single pass, also hiding away GStreamer threading and allowing
us to react as soon as the decoder/parser fails.
* platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
(WebCore::GStreamerVideoDecoder::GStreamerVideoDecoder):
(WebCore::GStreamerVideoDecoder::pullSample):
(WebCore::H264Decoder::H264Decoder):
* platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
2019-08-12 Antti Koivisto <antti@apple.com>
Only construct ComplexLineLayout when needed
https://bugs.webkit.org/show_bug.cgi?id=200625
Reviewed by Zalan Bujtas.
* rendering/ComplexLineLayout.cpp:
(WebCore::ComplexLineLayout::createInlineBoxForRenderer):
(WebCore::ComplexLineLayout::createLineBoxes):
(WebCore::ComplexLineLayout::constructLine):
(WebCore::ComplexLineLayout::updateLogicalWidthForAlignment):
Make static so this can be invoked without constructing complex line layout (from startAlignedOffsetForLine).
(WebCore::ComplexLineLayout::computeInlineDirectionPositionsForSegment):
(WebCore::ComplexLineLayout::deleteEllipsisLineBoxes):
(WebCore::ComplexLineLayout::checkLinesForTextOverflow):
(WebCore::ComplexLineLayout::startAlignedOffsetForLine): Deleted.
This is also used in block layout to set static positions of positioned objects.
Move to RenderBlockFlow where its only caller is.
* rendering/ComplexLineLayout.h:
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::RenderBlockFlow):
(WebCore::RenderBlockFlow::willBeDestroyed):
(WebCore::RenderBlockFlow::layoutInlineChildren):
(WebCore::RenderBlockFlow::updateStaticInlinePositionForChild):
(WebCore::RenderBlockFlow::startAlignedOffsetForLine):
(WebCore::RenderBlockFlow::deleteLines):
(WebCore::RenderBlockFlow::hitTestInlineChildren):
(WebCore::RenderBlockFlow::addOverflowFromInlineChildren):
(WebCore::RenderBlockFlow::paintInlineChildren):
(WebCore::RenderBlockFlow::hasLines const):
(WebCore::RenderBlockFlow::layoutSimpleLines):
(WebCore::RenderBlockFlow::deleteLineBoxesBeforeSimpleLineLayout):
(WebCore::RenderBlockFlow::ensureLineBoxes):
* rendering/RenderBlockFlow.h:
(WebCore::RenderBlockFlow::firstRootBox const):
(WebCore::RenderBlockFlow::lastRootBox const):
(WebCore::RenderBlockFlow::complexLineLayout):
(WebCore::RenderBlockFlow::lineBoxes): Deleted.
(WebCore::RenderBlockFlow::lineBoxes const): Deleted.
* rendering/RootInlineBox.cpp:
(WebCore::RootInlineBox::removeLineBoxFromRenderObject):
(WebCore::RootInlineBox::extractLineBoxFromRenderObject):
(WebCore::RootInlineBox::attachLineBoxToRenderObject):
* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::generateLineBoxTree):
2019-08-12 Youenn Fablet <youenn@apple.com>
Remove IDBValue::m_sessionID
https://bugs.webkit.org/show_bug.cgi?id=199320
Reviewed by Alex Christensen.
Remove sessionID from IDBValue.
This does not seem to be really used in any way.
No change of behavior.
* Modules/indexeddb/IDBValue.cpp:
(WebCore::IDBValue::IDBValue):
* Modules/indexeddb/IDBValue.h:
(WebCore::IDBValue::blobURLs const):
(WebCore::IDBValue::encode const):
(WebCore::IDBValue::decode):
(WebCore::IDBValue::sessionID const): Deleted.
* Modules/indexeddb/shared/IDBRequestData.cpp:
(WebCore::IDBRequestData::isolatedCopy):
* Modules/indexeddb/shared/IDBRequestData.h:
(WebCore::IDBRequestData::databaseIdentifier const):
(WebCore::IDBRequestData::decode):
* bindings/js/IDBBindingUtilities.cpp:
(WebCore::deserializeIDBValueToJSValue):
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::serialize):
(WebCore::CloneSerializer::CloneSerializer):
(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneDeserializer::deserialize):
(WebCore::CloneDeserializer::CloneDeserializer):
(WebCore::SerializedScriptValue::SerializedScriptValue):
(WebCore::SerializedScriptValue::create):
(WebCore::SerializedScriptValue::deserialize):
(WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDB):
* bindings/js/SerializedScriptValue.h:
(WebCore::SerializedScriptValue::sessionID const): Deleted.
2019-08-12 Youenn Fablet <youenn@apple.com>
Remove IDB-specific quota
https://bugs.webkit.org/show_bug.cgi?id=196545
Reviewed by Alex Christensen.
No change of behavior as IDB specific quota is no longer used.
Instead a global quota is used. This quota currently handles IDB and Cache API.
* Modules/indexeddb/server/IDBBackingStore.h:
* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::createBackingStore):
(WebCore::IDBServer::IDBServer::setPerOriginQuota): Deleted.
* Modules/indexeddb/server/IDBServer.h:
(WebCore::IDBServer::IDBServer::perOriginQuota const): Deleted.
* Modules/indexeddb/server/MemoryIDBBackingStore.h:
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::SQLiteIDBBackingStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::beginTransaction):
(WebCore::IDBServer::SQLiteIDBBackingStore::createObjectStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::renameObjectStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::createIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedPutIndexRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::renameIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::addRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedSetKeyGeneratorValue):
(WebCore::IDBServer::SQLiteIDBBackingStore::quotaForOrigin const): Deleted.
(WebCore::IDBServer::SQLiteIDBBackingStore::maximumSize const): Deleted.
* Modules/indexeddb/server/SQLiteIDBBackingStore.h:
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::setQuota): Deleted.
* Modules/indexeddb/server/UniqueIDBDatabase.h:
2019-08-11 Alicia Boya García <aboya@igalia.com>
[MSE][GStreamer] Don't use vorbisparse
https://bugs.webkit.org/show_bug.cgi?id=200622
Reviewed by Philippe Normand.
This patch has been splitted from the original WebKitMediaSrc rework
patch (https://bugs.webkit.org/show_bug.cgi?id=199719).
Unlike other parsers, vorbisparse has latency (in the sense that when
it gets a chain call with a series of complete frames, it may not emit
the parsed frames until another chain in the future), which makes it
inappropriate for AppendPipeline, as there is no good way I know to
flush it.
But actually vorbisparse is not known to be necessary and it was only
introduced for consistency with other formats. Parsers are used in
AppendPipeline to reconstruct information that is lost due to poor
muxes. There have been no reported cases of this being a problem with
Vorbis in WebM, so I'm just removing the parser.
Fixes imported/w3c/web-platform-tests/media-source/mediasource-config-change-webm-a-bitrate.html
* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::createOptionalParserForFormat):
2019-08-11 Antti Koivisto <antti@apple.com>
Factor complex line layout path out from RenderBlockFlow
https://bugs.webkit.org/show_bug.cgi?id=200612
Reviewed by Zalan Bujtas.
This patch factors the line layout code that is currently part of the RenderBlockFlow and lives in RenderBlockLineLayout.cpp
into a new ComplexLineLayout class. ComplexLineLayout is a member of RenderBlockFlow.
In the future we can stop constructing ComplexLineLayout at all when using other line layout paths.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/ComplexLineLayout.cpp: Copied from Source/WebCore/rendering/RenderBlockLineLayout.cpp.
(WebCore::ComplexLineLayout::ComplexLineLayout):
(WebCore::ComplexLineLayout::appendRunsForObject):
(WebCore::ComplexLineLayout::createRootInlineBox):
(WebCore::ComplexLineLayout::createAndAppendRootInlineBox):
(WebCore::ComplexLineLayout::createInlineBoxForRenderer):
(WebCore::ComplexLineLayout::createLineBoxes):
(WebCore::ComplexLineLayout::constructLine):
(WebCore::ComplexLineLayout::textAlignmentForLine const):
(WebCore::ComplexLineLayout::setMarginsForRubyRun):
(WebCore::ComplexLineLayout::updateRubyForJustifiedText):
(WebCore::ComplexLineLayout::computeExpansionForJustifiedText):
(WebCore::ComplexLineLayout::updateLogicalWidthForAlignment):
(WebCore::ComplexLineLayout::computeInlineDirectionPositionsForLine):
(WebCore::ComplexLineLayout::computeInlineDirectionPositionsForSegment):
(WebCore::ComplexLineLayout::removeInlineBox const):
(WebCore::ComplexLineLayout::computeBlockDirectionPositionsForLine):
(WebCore::ComplexLineLayout::handleTrailingSpaces):
(WebCore::ComplexLineLayout::appendFloatingObjectToLastLine):
(WebCore::ComplexLineLayout::createLineBoxesFromBidiRuns):
(WebCore::ComplexLineLayout::layoutRunsAndFloats):
(WebCore::ComplexLineLayout::restartLayoutRunsAndFloatsInRange):
(WebCore::ComplexLineLayout::layoutRunsAndFloatsInRange):
(WebCore::ComplexLineLayout::reattachCleanLineFloats):
(WebCore::ComplexLineLayout::linkToEndLineIfNeeded):
(WebCore::ComplexLineLayout::layoutLineBoxes):
(WebCore::ComplexLineLayout::checkFloatInCleanLine):
(WebCore::ComplexLineLayout::determineStartPosition):
(WebCore::ComplexLineLayout::determineEndPosition):
(WebCore::ComplexLineLayout::checkPaginationAndFloatsAtEndLine):
(WebCore::ComplexLineLayout::lineWidthForPaginatedLineChanged const):
(WebCore::ComplexLineLayout::matchedEndLine):
(WebCore::ComplexLineLayout::addOverflowFromInlineChildren):
(WebCore::ComplexLineLayout::deleteEllipsisLineBoxes):
(WebCore::ComplexLineLayout::checkLinesForTextOverflow):
(WebCore::ComplexLineLayout::positionNewFloatOnLine):
(WebCore::ComplexLineLayout::startAlignedOffsetForLine):
(WebCore::ComplexLineLayout::updateFragmentForLine const):
(WebCore::ComplexLineLayout::style const):
(WebCore::ComplexLineLayout::layoutContext const):
(WebCore::RenderBlockFlow::appendRunsForObject): Deleted.
(WebCore::RenderBlockFlow::createRootInlineBox): Deleted.
(WebCore::RenderBlockFlow::createAndAppendRootInlineBox): Deleted.
(WebCore::createInlineBoxForRenderer): Deleted.
(WebCore::RenderBlockFlow::createLineBoxes): Deleted.
(WebCore::RenderBlockFlow::constructLine): Deleted.
(WebCore::RenderBlockFlow::textAlignmentForLine const): Deleted.
(WebCore::RenderBlockFlow::setMarginsForRubyRun): Deleted.
(WebCore::RenderBlockFlow::updateRubyForJustifiedText): Deleted.
(WebCore::RenderBlockFlow::computeExpansionForJustifiedText): Deleted.
(WebCore::RenderBlockFlow::updateLogicalWidthForAlignment): Deleted.
(WebCore::RenderBlockFlow::computeInlineDirectionPositionsForLine): Deleted.
(WebCore::RenderBlockFlow::computeInlineDirectionPositionsForSegment): Deleted.
(WebCore::RenderBlockFlow::removeInlineBox const): Deleted.
(WebCore::RenderBlockFlow::computeBlockDirectionPositionsForLine): Deleted.
(WebCore::RenderBlockFlow::handleTrailingSpaces): Deleted.
(WebCore::RenderBlockFlow::appendFloatingObjectToLastLine): Deleted.
(WebCore::RenderBlockFlow::createLineBoxesFromBidiRuns): Deleted.
(WebCore::RenderBlockFlow::layoutRunsAndFloats): Deleted.
(WebCore::RenderBlockFlow::restartLayoutRunsAndFloatsInRange): Deleted.
(WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange): Deleted.
(WebCore::RenderBlockFlow::reattachCleanLineFloats): Deleted.
(WebCore::RenderBlockFlow::linkToEndLineIfNeeded): Deleted.
(WebCore::RenderBlockFlow::layoutLineBoxes): Deleted.
(WebCore::RenderBlockFlow::checkFloatInCleanLine): Deleted.
(WebCore::RenderBlockFlow::determineStartPosition): Deleted.
(WebCore::RenderBlockFlow::determineEndPosition): Deleted.
(WebCore::RenderBlockFlow::checkPaginationAndFloatsAtEndLine): Deleted.
(WebCore::RenderBlockFlow::lineWidthForPaginatedLineChanged const): Deleted.
(WebCore::RenderBlockFlow::matchedEndLine): Deleted.
(WebCore::RenderBlock::generatesLineBoxesForInlineChild): Deleted.
(WebCore::RenderBlockFlow::addOverflowFromInlineChildren): Deleted.
(WebCore::RenderBlockFlow::deleteEllipsisLineBoxes): Deleted.
(WebCore::RenderBlockFlow::checkLinesForTextOverflow): Deleted.
(WebCore::RenderBlockFlow::positionNewFloatOnLine): Deleted.
(WebCore::RenderBlockFlow::startAlignedOffsetForLine): Deleted.
(WebCore::RenderBlockFlow::updateFragmentForLine const): Deleted.
* rendering/ComplexLineLayout.h: Added.
(WebCore::ComplexLineLayout::lineBoxes):
(WebCore::ComplexLineLayout::lineBoxes const):
(WebCore::ComplexLineLayout::firstRootBox const):
(WebCore::ComplexLineLayout::lastRootBox const):
* rendering/InlineIterator.h:
(WebCore::IsolateTracker::addFakeRunIfNecessary):
(WebCore::InlineBidiResolver::appendRunInternal):
* rendering/RenderBlock.h:
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::RenderBlockFlow):
(WebCore::RenderBlockFlow::willBeDestroyed):
(WebCore::RenderBlockFlow::layoutInlineChildren):
(WebCore::RenderBlockFlow::updateStaticInlinePositionForChild):
(WebCore::RenderBlockFlow::deleteLines):
(WebCore::RenderBlockFlow::hitTestInlineChildren):
(WebCore::RenderBlockFlow::addOverflowFromInlineChildren):
(WebCore::RenderBlockFlow::paintInlineChildren):
(WebCore::RenderBlockFlow::layoutSimpleLines):
(WebCore::RenderBlockFlow::ensureLineBoxes):
* rendering/RenderBlockFlow.h:
(WebCore::RenderBlockFlow::lineBoxes):
(WebCore::RenderBlockFlow::lineBoxes const):
(WebCore::RenderBlockFlow::firstRootBox const):
(WebCore::RenderBlockFlow::lastRootBox const):
(WebCore::RenderBlockFlow::floatingObjects):
(WebCore::RenderBlockFlow::complexLineLayout):
(WebCore::RenderBlockFlow::overrideTextAlignmentForLine const):
(WebCore::RenderBlockFlow::adjustInlineDirectionLineBounds const):
* rendering/RenderBlockLineLayout.cpp: Removed.
* rendering/RenderRubyBase.cpp:
(WebCore::RenderRubyBase::overrideTextAlignmentForLine const):
(WebCore::RenderRubyBase::textAlignmentForLine const): Deleted.
* rendering/RenderRubyBase.h:
* rendering/RenderRubyText.cpp:
(WebCore::RenderRubyText::overrideTextAlignmentForLine const):
(WebCore::RenderRubyText::textAlignmentForLine const): Deleted.
* rendering/RenderRubyText.h:
* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::generateLineBoxTree):
* rendering/line/LineBreaker.cpp:
(WebCore::LineBreaker::skipLeadingWhitespace):
* rendering/line/LineBreaker.h:
(WebCore::LineBreaker::positionNewFloatOnLine):
* rendering/line/LineInlineHeaders.h:
(WebCore::setStaticPositions):
* rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::createRootInlineBox): Deleted.
* rendering/svg/RenderSVGText.h:
* rendering/updating/RenderTreeBuilderList.cpp:
(WebCore::generatesLineBoxesForInlineChild):
(WebCore::getParentOfFirstLineBox):
2019-08-10 Simon Fraser <simon.fraser@apple.com>
REGRESSION (r245974): Missing content on habitburger.com, amazon.com
https://bugs.webkit.org/show_bug.cgi?id=200618
rdar://problem/53920224
Reviewed by Zalan Bujtas.
In r245974 TileController::adjustTileCoverageRect() started to intersect the coverage
rect with the bounds of the layer, which is wrong because this coverage rect is passed down
to descendant layers, and they may project outside the bounds of this tiled layer.
This caused missing dropdowns on amazon.com, and a missing menu on habitburger.com on iPhone.
The fix is to just not do the intersection with the bounds. TileGrid::getTileIndexRangeForRect()
already ensures that we never make tiles outside the bounds of a TileController.
Test: compositing/backing/layer-outside-tiled-parent.html
* platform/graphics/ca/TileController.cpp:
(WebCore::TileController::adjustTileCoverageRect):
* platform/graphics/ca/TileGrid.cpp:
(WebCore::TileGrid::ensureTilesForRect):
2019-08-10 Andres Gonzalez <andresg_22@apple.com>
Accessibility client cannot navigate to internal links targets on iOS.
https://bugs.webkit.org/show_bug.cgi?id=200559
<rdar://problem/45242534>
Reviewed by Zalan Bujtas.
The cause of the problem on iOS is that AccessibilityObject::firstAccessibleObjectFromNode
used in AccessibilityRenderObject::linkedUIElements may return an object
that is ignored by accessibility clients on iOS, and thus the client
would not track the target of an internal link. This change ensures that
accessibilityLinkedElement will return a valid accessibility element to
the client, if it is exists.
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::firstAccessibleObjectFromNode):
(WebCore::firstAccessibleObjectFromNode):
* accessibility/AccessibilityObject.h:
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityLinkedElement]):
2019-08-10 Youenn Fablet <youenn@apple.com>
Blob should store its session ID
https://bugs.webkit.org/show_bug.cgi?id=200572
Reviewed by Darin Adler.
Blob at creation time now initializes its session ID.
This will allow in the future to call blob registry routines with it.
Update all call sites to provide the session ID.
No observable change.
* Modules/entriesapi/DOMFileSystem.cpp:
(WebCore::DOMFileSystem::getFile):
* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::fromFormData):
* Modules/fetch/FetchBody.h:
* Modules/fetch/FetchBodyConsumer.cpp:
(WebCore::blobFromData):
(WebCore::resolveWithTypeAndData):
(WebCore::FetchBodyConsumer::resolve):
(WebCore::FetchBodyConsumer::takeAsBlob):
* Modules/fetch/FetchBodyConsumer.h:
* Modules/fetch/FetchBodyOwner.cpp:
(WebCore::FetchBodyOwner::blob):
* Modules/mediarecorder/MediaRecorder.cpp:
(WebCore::MediaRecorder::createRecordingDataBlob):
* Modules/mediastream/RTCDataChannel.cpp:
(WebCore::RTCDataChannel::didReceiveRawData):
* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::didReceiveBinaryData):
* Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
(WebCore::WorkerThreadableWebSocketChannel::Bridge::send):
* bindings/js/JSDOMPromiseDeferred.h:
(WebCore::DeferredPromise::sessionID const):
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneDeserializer::readFile):
(WebCore::CloneDeserializer::readTerminal):
* dom/DataTransfer.cpp:
(WebCore::DataTransfer::DataTransfer):
(WebCore::DataTransfer::createForCopyAndPaste):
(WebCore::DataTransfer::filesFromPasteboardAndItemList const):
(WebCore::DataTransfer::createForInputEvent):
(WebCore::DataTransfer::createForDrag):
(WebCore::DataTransfer::createForDragStartEvent):
(WebCore::DataTransfer::createForDrop):
(WebCore::DataTransfer::createForUpdatingDropTarget):
* dom/DataTransfer.h:
* dom/Document.cpp:
(WebCore::Document::originIdentifierForPasteboard const):
* dom/Document.h:
* editing/ReplaceRangeWithTextCommand.cpp:
(WebCore::ReplaceRangeWithTextCommand::inputEventDataTransfer const):
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::inputEventDataTransfer const):
* editing/SpellingCorrectionCommand.cpp:
(WebCore::SpellingCorrectionCommand::inputEventDataTransfer const):
* editing/TypingCommand.cpp:
(WebCore::TypingCommand::inputEventDataTransfer const):
* editing/WebCorePasteboardFileReader.cpp:
(WebCore::WebCorePasteboardFileReader::readFilename):
(WebCore::WebCorePasteboardFileReader::readBuffer):
* editing/WebCorePasteboardFileReader.h:
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::createFragmentForImageAttachment):
(WebCore::replaceRichContentWithAttachments):
(WebCore::createFragmentAndAddResources):
(WebCore::sanitizeMarkupWithArchive):
(WebCore::WebContentReader::readImage):
(WebCore::attachmentForFilePath):
(WebCore::attachmentForData):
* editing/markup.cpp:
(WebCore::restoreAttachmentElementsInFragment):
* fileapi/Blob.cpp:
(WebCore::Blob::Blob):
* fileapi/Blob.h:
(WebCore::Blob::create):
(WebCore::Blob::deserialize):
(WebCore::Blob::slice const):
* fileapi/Blob.idl:
* fileapi/File.cpp:
(WebCore::File::createWithRelativePath):
(WebCore::File::File):
* fileapi/File.h:
* fileapi/File.idl:
* html/FileInputType.cpp:
(WebCore::FileInputType::appendFormData const):
(WebCore::FileInputType::filesChosen):
* html/FileListCreator.cpp:
(WebCore::appendDirectoryFiles):
(WebCore::FileListCreator::FileListCreator):
(WebCore::FileListCreator::createFileList):
* html/FileListCreator.h:
(WebCore::FileListCreator::create):
* html/HTMLAttachmentElement.cpp:
(WebCore::HTMLAttachmentElement::updateEnclosingImageWithData):
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::toBlob):
* page/EventHandler.cpp:
(WebCore::EventHandler::handleDrag):
* testing/Internals.cpp:
(WebCore::Internals::createFile):
* testing/ServiceWorkerInternals.cpp:
(WebCore::ServiceWorkerInternals::createOpaqueWithBlobBodyResponse):
* workers/service/context/ServiceWorkerFetch.cpp:
(WebCore::ServiceWorkerFetch::dispatchFetchEvent):
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::createResponseBlob):
2019-08-10 Alex Christensen <achristensen@webkit.org>
Disable ContentChangeObserver TouchEvent adjustment on youtube.com on iOS in mobile browsing mode
https://bugs.webkit.org/show_bug.cgi?id=200609
<rdar://problem/54015403>
Reviewed by Maciej Stachowiak.
When watching a youtube video on iOS with "Autoplay" switched to off,
upon finishing the video all clicks anywhere on the page are effectively ignored.
Disabling ContentChangeObserver's TouchEvent adjustment fixes this bug. I verified this manually.
This switch was introduced in r242621, and it disables part of a new feature, so there is low risk of fallout.
* loader/DocumentLoader.h:
(WebCore::DocumentLoader::setAllowContentChangeObserverQuirk):
(WebCore::DocumentLoader::allowContentChangeObserverQuirk const):
* page/Quirks.cpp:
(WebCore::Quirks::shouldDisableContentChangeObserverTouchEventAdjustment const):
* page/Quirks.h:
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::touchEventDidStart):
2019-08-10 Said Abou-Hallawa <sabouhallawa@apple.com>
[iOS] Add a quirk for gmail.com messages on iPhone iOS13
https://bugs.webkit.org/show_bug.cgi?id=200605
Reviewed by Maciej Stachowiak.
Add a quirk which sets the user agent for gmail.com messages on iPhone
OS 13 to be iPhone OS 12. This is a workaround for a gmail.com bug till
it is fixed.
* page/Quirks.cpp:
(WebCore::Quirks::shouldAvoidUsingIOS13ForGmail const):
* page/Quirks.h:
* platform/UserAgent.h:
* platform/ios/UserAgentIOS.mm:
(WebCore::osNameForUserAgent):
(WebCore::standardUserAgentWithApplicationName):
* platform/mac/UserAgentMac.mm:
(WebCore::standardUserAgentWithApplicationName):
2019-08-10 Thibault Saunier <tsaunier@igalia.com>
[GStreamer][WebRTC] Remove unused GstAdapter
https://bugs.webkit.org/show_bug.cgi?id=200585
Reviewed by Philippe Normand.
Minor "refactoring"
* platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
(WebCore::GStreamerVideoEncoder::GStreamerVideoEncoder):
2019-08-10 Antti Koivisto <antti@apple.com>
Can’t sort videos on a YouTube channel page on iPad
https://bugs.webkit.org/show_bug.cgi?id=200573
<rdar://problem/53415195>
Reviewed by Darin Adler.
Add a quirk to make touch events non-cancelable (preventDefault() does nothing).
* page/Quirks.cpp:
(WebCore::Quirks::shouldMakeTouchEventNonCancelableForTarget const):
* page/Quirks.h:
2019-08-10 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r248454): WK1 inspector frontend client doesn't queue messages to the frontend before it's loaded
https://bugs.webkit.org/show_bug.cgi?id=200587
Reviewed by Joseph Pecoraro.
WK1 inspector sends messages to the frontend using `WebCore::InspectorClient::doDispatchMessageOnFrontendPage`,
which does not do any sort of queueing to wait until the frontend is loaded (`InspectorFrontendHost.loaded()`).
Now that we are sending messages immediately, we should always queue.
Covered by existing tests (which were failing after r248454, and now won't fail).
* inspector/InspectorFrontendClientLocal.h:
* inspector/InspectorFrontendClientLocal.cpp:
(WebCore::InspectorFrontendClientLocal::setDockingUnavailable):
(WebCore::InspectorFrontendClientLocal::setAttachedWindow):
(WebCore::InspectorFrontendClientLocal::setDebuggingEnabled):
(WebCore::InspectorFrontendClientLocal::setTimelineProfilingEnabled):
(WebCore::InspectorFrontendClientLocal::startProfilingJavaScript):
(WebCore::InspectorFrontendClientLocal::stopProfilingJavaScript):
(WebCore::InspectorFrontendClientLocal::showConsole):
(WebCore::InspectorFrontendClientLocal::showResources):
(WebCore::InspectorFrontendClientLocal::showMainResourceForFrame):
(WebCore::InspectorFrontendClientLocal::dispatch): Added.
(WebCore::InspectorFrontendClientLocal::dispatchMessage): Added.
(WebCore::InspectorFrontendClientLocal::dispatchMessageAsync): Added.
(WebCore::InspectorFrontendClientLocal::evaluateOnLoad):
Provide additional ways for subclasses to call other `InspectorFrontendAPI` methods using
the "on load" queue.
* testing/Internals.cpp:
(WebCore::InspectorStubFrontend::sendMessageToFrontend):
(WebCore::InspectorStubFrontend::frontendLoaded): Deleted.
Leverage the base `InspectorFrontendClientLocal`'s functions for queueing messages.
* inspector/InspectorClient.h:
* inspector/InspectorClient.cpp: Removed.
(WebCore::InspectorClient::doDispatchMessageOnFrontendPage): Deleted.
* inspector/agents/InspectorTimelineAgent.cpp:
Add missing include.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2019-08-09 Yusuke Suzuki <ysuzuki@apple.com>
Universal XSS in JSObject::putInlineSlow and JSValue::putToPrimitive
https://bugs.webkit.org/show_bug.cgi?id=199864
Reviewed by Saam Barati.
Test: http/tests/security/cross-frame-access-object-put-optimization.html
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::doPutPropertySecurityCheck):
* bindings/js/JSLocationCustom.cpp:
(WebCore::JSLocation::doPutPropertySecurityCheck):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
* bindings/scripts/test/JS/JSTestActiveDOMObject.h:
2019-08-09 Saam Barati <sbarati@apple.com>
When I did the devirtualization of the AST in r248488, I needed to
update the various type checks under the Type class hierarchy
operate on Type itself, since we now downcast straight from Type
instead of UnnamedType, ResolvableType, and NamedType.
* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLNamedType.h:
* Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLResolvableType.h:
* Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.h:
2019-08-09 Chris Dumez <cdumez@apple.com>
Possible non-thread safe usage of RefCounted in ~VideoFullscreenControllerContext()
https://bugs.webkit.org/show_bug.cgi?id=200599
Reviewed by Geoffrey Garen.
WebVideoFullscreenControllerAVKit's m_playbackModel & m_fullscreenModel data members are
WebThread objects so we need to make sure we grab the WebThread lock before dereferencing
them in the WebVideoFullscreenControllerAVKit destructor, when destroyed on the UIThread.
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::~VideoFullscreenControllerContext):
2019-08-09 Ali Juma <ajuma@chromium.org>
Don't allow cross-origin iframes to autofocus
https://bugs.webkit.org/show_bug.cgi?id=200515
<rdar://problem/54092988>
Reviewed by Ryosuke Niwa.
According to Step 6 in the WhatWG Spec (https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofocusing-a-form-control:-the-autofocus-attribute),
the 'autofocus' attribute shouldn't work for cross-origin iframes.
This change is based on the Blink change (patch by <mustaq@chromium.org>):
<https://chromium-review.googlesource.com/c/chromium/src/+/1593026>
Also disallow cross-origin iframes from focusing programmatically without ever having
had any user interaction.
* dom/Element.cpp: Check if an invalid frame is trying to grab the focus.
(WebCore::Element::focus):
* html/HTMLFormControlElement.cpp: Check if the focus is moving to an invalid frame.
(WebCore::shouldAutofocus):
* page/DOMWindow.cpp: Check if an invalid frame is trying to grab the focus.
(WebCore::DOMWindow::focus):
2019-08-09 Saam Barati <sbarati@apple.com>
[WHLSL] Devirtualize the AST
https://bugs.webkit.org/show_bug.cgi?id=200522
Reviewed by Robin Morisset.
This patch devirtualizes the AST for Type, Expression, and Statement.
We now have an enum which represents all the concrete types in the
three hierarchies. Doing dynamic dispatch is implemented as a switch
on that type enum.
The interesting part of this patch is how to handle destruction. We do
this by defining a custom deleter for all nodes in the AST. This ensures
that when they're used inside UniqueRef, unique_ptr, Ref, and RefPtr,
we do dynamic dispatch when we delete the object. This allows each base
class to define a "destroy" method which does dynamic dispatch on type
and calls the appropriate delete. We also mark all non-concrete nodes
in all type hierarchies with a protected destructor, which ensures it's
never called except from within the concrete child classes. We allow
all concrete classes to have public destructors, as it's valid for
their destructors to be called explicitly since there is no need for
dynamic dispatch in such scenarios. All concrete classes are also marked
as final.
This is a 3ms speedup on compute_boids, which is about a 10% improvement
in the WHLSL compiler.
* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
* Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h:
(WebCore::WHLSL::AST::AssignmentExpression::AssignmentExpression): Deleted.
(WebCore::WHLSL::AST::AssignmentExpression::left): Deleted.
(WebCore::WHLSL::AST::AssignmentExpression::right): Deleted.
(WebCore::WHLSL::AST::AssignmentExpression::takeRight): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLBlock.h:
(WebCore::WHLSL::AST::Block::Block): Deleted.
(WebCore::WHLSL::AST::Block::statements): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLBooleanLiteral.h:
(WebCore::WHLSL::AST::BooleanLiteral::BooleanLiteral): Deleted.
(WebCore::WHLSL::AST::BooleanLiteral::value const): Deleted.
(WebCore::WHLSL::AST::BooleanLiteral::clone const): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLBreak.h:
(WebCore::WHLSL::AST::Break::Break): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h:
(WebCore::WHLSL::AST::CallExpression::CallExpression): Deleted.
(WebCore::WHLSL::AST::CallExpression::arguments): Deleted.
(WebCore::WHLSL::AST::CallExpression::name): Deleted.
(WebCore::WHLSL::AST::CallExpression::setCastData): Deleted.
(WebCore::WHLSL::AST::CallExpression::isCast): Deleted.
(WebCore::WHLSL::AST::CallExpression::castReturnType): Deleted.
(WebCore::WHLSL::AST::CallExpression::function): Deleted.
(WebCore::WHLSL::AST::CallExpression::setFunction): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLCommaExpression.h:
(WebCore::WHLSL::AST::CommaExpression::CommaExpression): Deleted.
(WebCore::WHLSL::AST::CommaExpression::list): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLConstantExpression.h:
(WebCore::WHLSL::AST::ConstantExpression::ConstantExpression): Deleted.
(WebCore::WHLSL::AST::ConstantExpression::integerLiteral): Deleted.
(WebCore::WHLSL::AST::ConstantExpression::visit): Deleted.
(WebCore::WHLSL::AST::ConstantExpression::visit const): Deleted.
(WebCore::WHLSL::AST::ConstantExpression::clone const): Deleted.
(WebCore::WHLSL::AST::ConstantExpression::matches const): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLContinue.h:
(WebCore::WHLSL::AST::Continue::Continue): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLDefaultDelete.h: Added.
* Modules/webgpu/WHLSL/AST/WHLSLDereferenceExpression.h:
(WebCore::WHLSL::AST::DereferenceExpression::DereferenceExpression): Deleted.
(WebCore::WHLSL::AST::DereferenceExpression::pointer): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLDoWhileLoop.h:
(WebCore::WHLSL::AST::DoWhileLoop::DoWhileLoop): Deleted.
(WebCore::WHLSL::AST::DoWhileLoop::body): Deleted.
(WebCore::WHLSL::AST::DoWhileLoop::conditional): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLDotExpression.h:
(WebCore::WHLSL::AST::DotExpression::DotExpression): Deleted.
(WebCore::WHLSL::AST::DotExpression::fieldName): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLEffectfulExpressionStatement.h:
(WebCore::WHLSL::AST::EffectfulExpressionStatement::EffectfulExpressionStatement): Deleted.
(WebCore::WHLSL::AST::EffectfulExpressionStatement::effectfulExpression): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:
(WebCore::WHLSL::AST::EnumerationDefinition::EnumerationDefinition): Deleted.
(WebCore::WHLSL::AST::EnumerationDefinition::type): Deleted.
(WebCore::WHLSL::AST::EnumerationDefinition::add): Deleted.
(WebCore::WHLSL::AST::EnumerationDefinition::memberByName): Deleted.
(WebCore::WHLSL::AST::EnumerationDefinition::enumerationMembers): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMemberLiteral.h:
(WebCore::WHLSL::AST::EnumerationMemberLiteral::EnumerationMemberLiteral): Deleted.
(WebCore::WHLSL::AST::EnumerationMemberLiteral::wrap): Deleted.
(WebCore::WHLSL::AST::EnumerationMemberLiteral::left const): Deleted.
(WebCore::WHLSL::AST::EnumerationMemberLiteral::right const): Deleted.
(WebCore::WHLSL::AST::EnumerationMemberLiteral::clone const): Deleted.
(WebCore::WHLSL::AST::EnumerationMemberLiteral::enumerationDefinition): Deleted.
(WebCore::WHLSL::AST::EnumerationMemberLiteral::enumerationDefinition const): Deleted.
(WebCore::WHLSL::AST::EnumerationMemberLiteral::enumerationMember): Deleted.
(WebCore::WHLSL::AST::EnumerationMemberLiteral::enumerationMember const): Deleted.
(WebCore::WHLSL::AST::EnumerationMemberLiteral::setEnumerationMember): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLExpression.cpp: Added.
(WebCore::WHLSL::AST::Expression::destroy):
(WebCore::WHLSL::AST::PropertyAccessExpression::getterFunctionName const):
(WebCore::WHLSL::AST::PropertyAccessExpression::setterFunctionName const):
(WebCore::WHLSL::AST::PropertyAccessExpression::anderFunctionName const):
* Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
(WebCore::WHLSL::AST::Expression::Expression):
(WebCore::WHLSL::AST::Expression::kind const):
(WebCore::WHLSL::AST::Expression::isAssignmentExpression const):
(WebCore::WHLSL::AST::Expression::isBooleanLiteral const):
(WebCore::WHLSL::AST::Expression::isCallExpression const):
(WebCore::WHLSL::AST::Expression::isCommaExpression const):
(WebCore::WHLSL::AST::Expression::isDereferenceExpression const):
(WebCore::WHLSL::AST::Expression::isDotExpression const):
(WebCore::WHLSL::AST::Expression::isGlobalVariableReference const):
(WebCore::WHLSL::AST::Expression::isFloatLiteral const):
(WebCore::WHLSL::AST::Expression::isIndexExpression const):
(WebCore::WHLSL::AST::Expression::isIntegerLiteral const):
(WebCore::WHLSL::AST::Expression::isLogicalExpression const):
(WebCore::WHLSL::AST::Expression::isLogicalNotExpression const):
(WebCore::WHLSL::AST::Expression::isMakeArrayReferenceExpression const):
(WebCore::WHLSL::AST::Expression::isMakePointerExpression const):
(WebCore::WHLSL::AST::Expression::isNullLiteral const):
(WebCore::WHLSL::AST::Expression::isPropertyAccessExpression const):
(WebCore::WHLSL::AST::Expression::isReadModifyWriteExpression const):
(WebCore::WHLSL::AST::Expression::isTernaryExpression const):
(WebCore::WHLSL::AST::Expression::isUnsignedIntegerLiteral const):
(WebCore::WHLSL::AST::Expression::isVariableReference const):
(WebCore::WHLSL::AST::Expression::isEnumerationMemberLiteral const):
(WebCore::WHLSL::AST::Expression::codeLocation const):
(WebCore::WHLSL::AST::Expression::updateCodeLocation):
* Modules/webgpu/WHLSL/AST/WHLSLFallthrough.h:
(WebCore::WHLSL::AST::Fallthrough::Fallthrough): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteral.h:
(WebCore::WHLSL::AST::FloatLiteral::FloatLiteral): Deleted.
(WebCore::WHLSL::AST::FloatLiteral::type): Deleted.
(WebCore::WHLSL::AST::FloatLiteral::value const): Deleted.
(WebCore::WHLSL::AST::FloatLiteral::clone const): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.cpp:
(WebCore::WHLSL::AST::FloatLiteralType::FloatLiteralType):
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h:
(WebCore::WHLSL::AST::FloatLiteralType::value const): Deleted.
(WebCore::WHLSL::AST::FloatLiteralType::preferredType): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
(WebCore::WHLSL::AST::ForLoop::ForLoop): Deleted.
(WebCore::WHLSL::AST::ForLoop::~ForLoop): Deleted.
(WebCore::WHLSL::AST::ForLoop::initialization): Deleted.
(WebCore::WHLSL::AST::ForLoop::condition): Deleted.
(WebCore::WHLSL::AST::ForLoop::increment): Deleted.
(WebCore::WHLSL::AST::ForLoop::body): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLGlobalVariableReference.h:
(WebCore::WHLSL::AST::GlobalVariableReference::GlobalVariableReference): Deleted.
(WebCore::WHLSL::AST::GlobalVariableReference::structField): Deleted.
(WebCore::WHLSL::AST::GlobalVariableReference::base): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h:
(WebCore::WHLSL::AST::IfStatement::IfStatement): Deleted.
(WebCore::WHLSL::AST::IfStatement::conditional): Deleted.
(WebCore::WHLSL::AST::IfStatement::body): Deleted.
(WebCore::WHLSL::AST::IfStatement::elseBody): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
(WebCore::WHLSL::AST::IndexExpression::IndexExpression): Deleted.
(WebCore::WHLSL::AST::IndexExpression::indexExpression): Deleted.
(WebCore::WHLSL::AST::IndexExpression::takeIndex): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.h:
(WebCore::WHLSL::AST::IntegerLiteral::IntegerLiteral): Deleted.
(WebCore::WHLSL::AST::IntegerLiteral::type): Deleted.
(WebCore::WHLSL::AST::IntegerLiteral::value const): Deleted.
(WebCore::WHLSL::AST::IntegerLiteral::clone const): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.cpp:
(WebCore::WHLSL::AST::IntegerLiteralType::IntegerLiteralType):
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.h:
(WebCore::WHLSL::AST::IntegerLiteralType::value const): Deleted.
(WebCore::WHLSL::AST::IntegerLiteralType::preferredType): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLLogicalExpression.h:
(WebCore::WHLSL::AST::LogicalExpression::LogicalExpression): Deleted.
(WebCore::WHLSL::AST::LogicalExpression::type const): Deleted.
(WebCore::WHLSL::AST::LogicalExpression::left): Deleted.
(WebCore::WHLSL::AST::LogicalExpression::right): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLLogicalNotExpression.h:
(WebCore::WHLSL::AST::LogicalNotExpression::LogicalNotExpression): Deleted.
(WebCore::WHLSL::AST::LogicalNotExpression::operand): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLMakeArrayReferenceExpression.h:
(WebCore::WHLSL::AST::MakeArrayReferenceExpression::MakeArrayReferenceExpression): Deleted.
(WebCore::WHLSL::AST::MakeArrayReferenceExpression::leftValue): Deleted.
(WebCore::WHLSL::AST::MakeArrayReferenceExpression::mightEscape const): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLMakePointerExpression.h:
(WebCore::WHLSL::AST::MakePointerExpression::MakePointerExpression): Deleted.
(WebCore::WHLSL::AST::MakePointerExpression::leftValue): Deleted.
(WebCore::WHLSL::AST::MakePointerExpression::mightEscape const): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLNamedType.h:
(WebCore::WHLSL::AST::NamedType::NamedType):
(WebCore::WHLSL::AST::NamedType::unifyNodeImpl):
(): Deleted.
(WebCore::WHLSL::AST::NamedType::isTypeDefinition const): Deleted.
(WebCore::WHLSL::AST::NamedType::isStructureDefinition const): Deleted.
(WebCore::WHLSL::AST::NamedType::isEnumerationDefinition const): Deleted.
(WebCore::WHLSL::AST::NamedType::isNativeTypeDeclaration const): Deleted.
(WebCore::WHLSL::AST::NamedType::unifyNode const): Deleted.
(WebCore::WHLSL::AST::NamedType::unifyNode): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h:
(WebCore::WHLSL::AST::NativeTypeDeclaration::NativeTypeDeclaration): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::typeArguments): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::isInt const): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::isNumber const): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::isFloating const): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::isAtomic const): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::isVector const): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::isMatrix const): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::isOpaqueType const): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::isTexture const): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::isTextureArray const): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::isDepthTexture const): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::isWritableTexture const): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::textureDimension const): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::isSigned const): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::std::function<bool const): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::std::function<int64_t const): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::iterateAllValues): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIsInt): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIsNumber): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIsFloating): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIsAtomic): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIsVector): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIsMatrix): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIsOpaqueType): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIsTexture): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIsTextureArray): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIsDepthTexture): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIsWritableTexture): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setTextureDimension): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIsSigned): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setCanRepresentInteger): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setCanRepresentUnsignedInteger): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setCanRepresentFloat): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setSuccessor): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setFormatValueFromInteger): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setFormatValueFromUnsignedInteger): Deleted.
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIterateAllValues): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h:
(WebCore::WHLSL::AST::NullLiteral::NullLiteral): Deleted.
(WebCore::WHLSL::AST::NullLiteral::type): Deleted.
(WebCore::WHLSL::AST::NullLiteral::clone const): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
* Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:
(WebCore::WHLSL::AST::PropertyAccessExpression::PropertyAccessExpression):
* Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
(WebCore::WHLSL::AST::ReadModifyWriteExpression::create): Deleted.
(WebCore::WHLSL::AST::ReadModifyWriteExpression::setNewValueExpression): Deleted.
(WebCore::WHLSL::AST::ReadModifyWriteExpression::setResultExpression): Deleted.
(WebCore::WHLSL::AST::ReadModifyWriteExpression::oldVariableReference): Deleted.
(WebCore::WHLSL::AST::ReadModifyWriteExpression::newVariableReference): Deleted.
(WebCore::WHLSL::AST::ReadModifyWriteExpression::leftValue): Deleted.
(WebCore::WHLSL::AST::ReadModifyWriteExpression::oldValue): Deleted.
(WebCore::WHLSL::AST::ReadModifyWriteExpression::newValue): Deleted.
(WebCore::WHLSL::AST::ReadModifyWriteExpression::newValueExpression): Deleted.
(WebCore::WHLSL::AST::ReadModifyWriteExpression::resultExpression): Deleted.
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeLeftValue): Deleted.
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeOldValue): Deleted.
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeNewValue): Deleted.
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeNewValueExpression): Deleted.
(WebCore::WHLSL::AST::ReadModifyWriteExpression::takeResultExpression): Deleted.
(WebCore::WHLSL::AST::ReadModifyWriteExpression::ReadModifyWriteExpression): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
(WebCore::WHLSL::AST::ReferenceType::ReferenceType):
* Modules/webgpu/WHLSL/AST/WHLSLResolvableType.h:
(WebCore::WHLSL::AST::ResolvableType::ResolvableType):
(): Deleted.
(WebCore::WHLSL::AST::ResolvableType::isFloatLiteralType const): Deleted.
(WebCore::WHLSL::AST::ResolvableType::isIntegerLiteralType const): Deleted.
(WebCore::WHLSL::AST::ResolvableType::isNullLiteralType const): Deleted.
(WebCore::WHLSL::AST::ResolvableType::isUnsignedIntegerLiteralType const): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
(WebCore::WHLSL::AST::Return::Return): Deleted.
(WebCore::WHLSL::AST::Return::value): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLStatement.cpp: Added.
(WebCore::WHLSL::AST::Statement::destroy):
* Modules/webgpu/WHLSL/AST/WHLSLStatement.h:
(WebCore::WHLSL::AST::Statement::Statement):
(WebCore::WHLSL::AST::Statement::kind const):
(WebCore::WHLSL::AST::Statement::isBlock const):
(WebCore::WHLSL::AST::Statement::isBreak const):
(WebCore::WHLSL::AST::Statement::isContinue const):
(WebCore::WHLSL::AST::Statement::isDoWhileLoop const):
(WebCore::WHLSL::AST::Statement::isEffectfulExpressionStatement const):
(WebCore::WHLSL::AST::Statement::isFallthrough const):
(WebCore::WHLSL::AST::Statement::isForLoop const):
(WebCore::WHLSL::AST::Statement::isIfStatement const):
(WebCore::WHLSL::AST::Statement::isReturn const):
(WebCore::WHLSL::AST::Statement::isStatementList const):
(WebCore::WHLSL::AST::Statement::isSwitchCase const):
(WebCore::WHLSL::AST::Statement::isSwitchStatement const):
(WebCore::WHLSL::AST::Statement::isVariableDeclarationsStatement const):
(WebCore::WHLSL::AST::Statement::isWhileLoop const):
(WebCore::WHLSL::AST::Statement::codeLocation const):
(WebCore::WHLSL::AST::Statement::updateCodeLocation):
* Modules/webgpu/WHLSL/AST/WHLSLStatementList.h:
(WebCore::WHLSL::AST::StatementList::StatementList): Deleted.
(WebCore::WHLSL::AST::StatementList::statements): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h:
(WebCore::WHLSL::AST::StructureDefinition::StructureDefinition): Deleted.
(WebCore::WHLSL::AST::StructureDefinition::structureElements): Deleted.
(WebCore::WHLSL::AST::StructureDefinition::find): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLStructureElement.h:
(WebCore::WHLSL::AST::StructureElement::StructureElement): Deleted.
(WebCore::WHLSL::AST::StructureElement::codeLocation const): Deleted.
(WebCore::WHLSL::AST::StructureElement::type): Deleted.
(WebCore::WHLSL::AST::StructureElement::name): Deleted.
(WebCore::WHLSL::AST::StructureElement::semantic): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLSwitchCase.h:
(WebCore::WHLSL::AST::SwitchCase::SwitchCase): Deleted.
(WebCore::WHLSL::AST::SwitchCase::value): Deleted.
(WebCore::WHLSL::AST::SwitchCase::block): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLSwitchStatement.h:
(WebCore::WHLSL::AST::SwitchStatement::SwitchStatement): Deleted.
(WebCore::WHLSL::AST::SwitchStatement::value): Deleted.
(WebCore::WHLSL::AST::SwitchStatement::switchCases): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLTernaryExpression.h:
(WebCore::WHLSL::AST::TernaryExpression::TernaryExpression): Deleted.
(WebCore::WHLSL::AST::TernaryExpression::predicate): Deleted.
(WebCore::WHLSL::AST::TernaryExpression::bodyExpression): Deleted.
(WebCore::WHLSL::AST::TernaryExpression::elseExpression): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLType.cpp: Added.
(WebCore::WHLSL::AST::Type::destroy):
(WebCore::WHLSL::AST::Type::unifyNode):
(WebCore::WHLSL::AST::ResolvableType::canResolve const):
(WebCore::WHLSL::AST::ResolvableType::conversionCost const):
(WebCore::WHLSL::AST::UnnamedType::toString const):
* Modules/webgpu/WHLSL/AST/WHLSLType.h:
(WebCore::WHLSL::AST::Type::Type):
(WebCore::WHLSL::AST::Type::kind const):
(WebCore::WHLSL::AST::Type::isUnnamedType const):
(WebCore::WHLSL::AST::Type::isNamedType const):
(WebCore::WHLSL::AST::Type::isResolvableType const):
(WebCore::WHLSL::AST::Type::isTypeReference const):
(WebCore::WHLSL::AST::Type::isPointerType const):
(WebCore::WHLSL::AST::Type::isArrayReferenceType const):
(WebCore::WHLSL::AST::Type::isArrayType const):
(WebCore::WHLSL::AST::Type::isReferenceType const):
(WebCore::WHLSL::AST::Type::isTypeDefinition const):
(WebCore::WHLSL::AST::Type::isStructureDefinition const):
(WebCore::WHLSL::AST::Type::isEnumerationDefinition const):
(WebCore::WHLSL::AST::Type::isNativeTypeDeclaration const):
(WebCore::WHLSL::AST::Type::isFloatLiteralType const):
(WebCore::WHLSL::AST::Type::isIntegerLiteralType const):
(WebCore::WHLSL::AST::Type::isNullLiteralType const):
(WebCore::WHLSL::AST::Type::isUnsignedIntegerLiteralType const):
(WebCore::WHLSL::AST::Type::unifyNode const):
* Modules/webgpu/WHLSL/AST/WHLSLTypeDefinition.h:
(WebCore::WHLSL::AST::TypeDefinition::TypeDefinition): Deleted.
(WebCore::WHLSL::AST::TypeDefinition::type): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.cpp:
(WebCore::WHLSL::AST::UnnamedType::hash const):
(WebCore::WHLSL::AST::UnnamedType::operator== const):
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
(WebCore::WHLSL::AST::UnnamedType::UnnamedType):
(WebCore::WHLSL::AST::UnnamedType::unifyNodeImpl):
(): Deleted.
(WebCore::WHLSL::AST::UnnamedType::kind const): Deleted.
(WebCore::WHLSL::AST::UnnamedType::isTypeReference const): Deleted.
(WebCore::WHLSL::AST::UnnamedType::isPointerType const): Deleted.
(WebCore::WHLSL::AST::UnnamedType::isArrayReferenceType const): Deleted.
(WebCore::WHLSL::AST::UnnamedType::isArrayType const): Deleted.
(WebCore::WHLSL::AST::UnnamedType::isReferenceType const): Deleted.
(WebCore::WHLSL::AST::UnnamedType::unifyNode const): Deleted.
(WebCore::WHLSL::AST::UnnamedType::unifyNode): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.h:
(WebCore::WHLSL::AST::UnsignedIntegerLiteral::UnsignedIntegerLiteral): Deleted.
(WebCore::WHLSL::AST::UnsignedIntegerLiteral::type): Deleted.
(WebCore::WHLSL::AST::UnsignedIntegerLiteral::value const): Deleted.
(WebCore::WHLSL::AST::UnsignedIntegerLiteral::clone const): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.cpp:
(WebCore::WHLSL::AST::UnsignedIntegerLiteralType::UnsignedIntegerLiteralType):
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.h:
(WebCore::WHLSL::AST::UnsignedIntegerLiteralType::value const): Deleted.
(WebCore::WHLSL::AST::UnsignedIntegerLiteralType::preferredType): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclarationsStatement.h:
(WebCore::WHLSL::AST::VariableDeclarationsStatement::VariableDeclarationsStatement): Deleted.
(WebCore::WHLSL::AST::VariableDeclarationsStatement::variableDeclarations): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLVariableReference.h:
(WebCore::WHLSL::AST::VariableReference::VariableReference): Deleted.
(WebCore::WHLSL::AST::VariableReference::wrap): Deleted.
(WebCore::WHLSL::AST::VariableReference::name): Deleted.
(WebCore::WHLSL::AST::VariableReference::variable): Deleted.
(WebCore::WHLSL::AST::VariableReference::setVariable): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLWhileLoop.h:
(WebCore::WHLSL::AST::WhileLoop::WhileLoop): Deleted.
(WebCore::WHLSL::AST::WhileLoop::conditional): Deleted.
(WebCore::WHLSL::AST::WhileLoop::body): Deleted.
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::BaseTypeNameNode::isPointerTypeNameNode const):
(WebCore::WHLSL::Metal::BaseTypeNameNode::isArrayReferenceTypeNameNode const):
(WebCore::WHLSL::Metal::BaseTypeNameNode::isArrayTypeNameNode const):
(WebCore::WHLSL::Metal::TypeNamer::createNameNode):
(WebCore::WHLSL::Metal::parent):
(WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseSuffixOperator):
(WebCore::WHLSL::Parser::completeAssignment):
(WebCore::WHLSL::Parser::parsePossiblePrefix):
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
* Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
(WebCore::WHLSL::Visitor::visit):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* workers/WorkerScriptLoader.h:
2019-08-09 Youenn Fablet <youenn@apple.com>
Pass a ScriptExecutionContext as input to register/unregister URLRegistry routines
https://bugs.webkit.org/show_bug.cgi?id=200571
Reviewed by Darin Adler.
Passing a ScriptExecutionContext to register/unregister routines will allow
to have session ID based handling for blobs, in particular to use session partitioned blob registries.
No change of behavior.
* Modules/mediasource/MediaSourceRegistry.cpp:
(WebCore::MediaSourceRegistry::registerURL):
(WebCore::MediaSourceRegistry::unregisterURL):
* Modules/mediasource/MediaSourceRegistry.h:
* fileapi/Blob.cpp:
(WebCore::BlobURLRegistry::registerURL):
(WebCore::BlobURLRegistry::unregisterURL):
* html/DOMURL.cpp:
(WebCore::DOMURL::createPublicURL):
* html/PublicURLManager.cpp:
(WebCore::PublicURLManager::registerURL):
(WebCore::PublicURLManager::revoke):
(WebCore::PublicURLManager::stop):
* html/PublicURLManager.h:
* html/URLRegistry.h:
2019-08-09 Alex Christensen <achristensen@webkit.org>
Disable CSSOM View Scrolling API for IMDb iOS app
https://bugs.webkit.org/show_bug.cgi?id=200586
<rdar://problem/53645833>
Reviewed by Simon Fraser.
They are calling scrollHeight on the HTML element and it is running new code introduced in r235806
Disable this new feature until they update their app to use the iOS13 SDK.
* platform/RuntimeApplicationChecks.h:
* platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::IOSApplication::isIMDb):
2019-08-09 Youenn Fablet <youenn@apple.com>
Remove MediaStreamRegistry
https://bugs.webkit.org/show_bug.cgi?id=200570
Reviewed by Eric Carlson.
MediaStream cannot be registered as an URL by JavaScript.
Remove MediaStreamRegistry and the 'src' loading specific handling in HTMLMediaElement.
Implement ending of capture track by directly handling MediaStreamTrack which is more accurate.
No change of behavior.
* Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::MediaStream):
(WebCore::MediaStream::~MediaStream):
(WebCore::MediaStream::stop):
* Modules/mediastream/MediaStream.h:
* Modules/mediastream/MediaStreamRegistry.cpp: Removed.
* Modules/mediastream/MediaStreamRegistry.h: Removed.
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::~MediaStreamTrack):
(WebCore::MediaStreamTrack::endCapture):
* Modules/mediastream/MediaStreamTrack.h:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/Document.cpp:
(WebCore::Document::stopMediaCapture):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::loadResource):
2019-08-09 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
[GL][GStreamer] activate wrapped shared context
https://bugs.webkit.org/show_bug.cgi?id=196966
Reviewed by Žan Doberšek.
This patch consists in four parts:
1\ When the media player is instantiated, and it is intended to
render textures, it will create a wrapped object of the
application's GL context, and in order to populate the wrapped
object with the GL vtable, the context has to be current. Thus,
this patch makes current the shared WebKit application context,
and populate the wrapped GstGLContext by activating it and filling
in it. Afterwards, the wrapped context is deactivated.
2\ This patch makes GL texture use the RGBA color space, thus the
color transformation is done in GStreamer, and no further color
transformation is required in WebKit.
3\ Since it is not necessary to modify behavior if the decoder is
imxvpudecoder, its identification and label were removed.
4\ As only RGBA is used, the old color conversions when rendering
using Cairo (fallback) were changed to convert the RGBA, as in
GStreamer's format, to ARGB32, as in Cairo format -which depends
on endianness.
No new tests because there is no behavior change.
* platform/graphics/gstreamer/ImageGStreamerCairo.cpp:
(WebCore::ImageGStreamer::ImageGStreamer): Only convert GStreamer
RGBA to Cairo RGB32.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Removes
the IMX VPU identification.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext):
Intializes the wrapped GL Context.
(WebCore::MediaPlayerPrivateGStreamerBase::updateTextureMapperFlags):
Removes frame's color conversion.
(WebCore::MediaPlayerPrivateGStreamerBase::createVideoSinkGL):
Instead of parsing a string, the GstCaps are created manually, and
it is set to appsink, rather than a filtered linking.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
Removes ImxVPU enumeration value.
* platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:
Adds NoConvert option to texture copier, setting an identity
matrix.
(WebCore::VideoTextureCopierGStreamer::updateColorConversionMatrix):
* platform/graphics/gstreamer/VideoTextureCopierGStreamer.h: Adds
NoConvert enumeration value.
2019-08-09 Ryosuke Niwa <rniwa@webkit.org>
REGRESSION (iOS 13): united.com web forms do not respond to taps
https://bugs.webkit.org/show_bug.cgi?id=200531
Reviewed by Antti Koivisto and Wenson Hsieh.
The bug is caused by the content change observer detecting “Site Feedback” link at the bottom of
the page (https://www.united.com/ual/en/US/account/enroll/default) constantly getting re-generated
in every frame via requestAnimationFrame when the page is opened with iPhone UA string.
Note that the content re-generation can be reproduced even in Chrome if iPhone UA string is used.
Ignore this constant content change in ContentChangeObserver as a site specific quirk.
In the future, we should make ContentChangeObserver observe the final location of each element
being observed so that we can ignore content that like this which is placed outside the viewport,
and/or far away from where the user tapped.
* page/Quirks.cpp:
(WebCore::Quirks::shouldIgnoreContentChange const): Added.
* page/Quirks.h:
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::shouldObserveVisibilityChangeForElement):
2019-08-08 Devin Rousso <drousso@apple.com>
Web Inspector: Page: don't allow the domain to be disabled
https://bugs.webkit.org/show_bug.cgi?id=200109
Reviewed by Brian Burg.
The `PageAgent` is relied on by many of the other agents, so much so that it doesn't make
sense to support the ability to "disable" (as well as "enable") the agent.
When the first frontend connects, we should treat the `PageAgent` as active and available.
* inspector/agents/InspectorPageAgent.h:
* inspector/agents/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::didCreateFrontendAndBackend):
(WebCore::InspectorPageAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorPageAgent::timestamp):
(WebCore::InspectorPageAgent::enable): Deleted.
(WebCore::InspectorPageAgent::disable): Deleted.
* inspector/agents/InspectorApplicationCacheAgent.cpp:
(WebCore::InspectorApplicationCacheAgent::updateApplicationCacheStatus):
(WebCore::InspectorApplicationCacheAgent::getFramesWithManifests):
(WebCore::InspectorApplicationCacheAgent::assertFrameWithDocumentLoader):
* inspector/agents/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::createStyleSheet):
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::highlightSelector):
(WebCore::InspectorDOMAgent::highlightFrame):
(WebCore::InspectorDOMAgent::buildObjectForNode):
* inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::setFrameIdentifier):
* inspector/agents/page/PageNetworkAgent.cpp:
(WebCore::PageNetworkAgent::loaderIdentifier):
(WebCore::PageNetworkAgent::frameIdentifier):
(WebCore::PageNetworkAgent::scriptExecutionContext):
* inspector/agents/page/PageRuntimeAgent.cpp:
(WebCore::PageRuntimeAgent::didCreateMainWorldContext):
(WebCore::PageRuntimeAgent::reportExecutionContextCreation):
* testing/Internals.cpp:
(WebCore::InspectorStubFrontend::InspectorStubFrontend):
(WebCore::InspectorStubFrontend::frontendLoaded): Added.
(WebCore::InspectorStubFrontend::closeWindow):
(WebCore::InspectorStubFrontend::sendMessageToFrontend):
(WebCore::InspectorStubFrontend::frontendPage): Deleted.
Ensure that the backend always gets notified via `InspectorFrontendHost.loaded` so that
messages being sent to the frontend are batched.
2019-08-08 Chris Lord <clord@igalia.com>
Short-cut WebGLRenderingContext::getParameter() for ALPHA_BITS when alpha channel is disabled
https://bugs.webkit.org/show_bug.cgi?id=200499
Reviewed by Darin Adler.
This patch adds a shortcut when a framebuffer isn't bound on WebGL
canvases when retrieving ALPHA_BITS.
No new tests, covered by existing tests.
* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::getParameter):
Return 0 for ALPHA_BITS if canvas has no alpha component.
* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGLRenderingContext::getParameter):
Return 0 for ALPHA_BITS if canvas has no alpha component.
2019-08-08 Chris Dumez <cdumez@apple.com>
ScrollingStateNode is not ThreadSafeRefCounted but is ref'd / deref'd from several threads
https://bugs.webkit.org/show_bug.cgi?id=200545
Reviewed by Antti Koivisto.
The ScrollingStateTree and its ScrollingStateNodes are being passed to the scrolling thread.
ScrollingStateNode is not ThreadSafeRefCounted, which is potentially unsafe. Make it
ThreadSafeRefCounted for safety in this patch given that using RefCounted here is either
wrong or fragile.
* page/scrolling/ScrollingStateNode.h:
2019-08-08 Brent Fulgham <bfulgham@apple.com>
[FTW] Get WebKit, WebKit2, and MiniBrowser building and executing
https://bugs.webkit.org/show_bug.cgi?id=200539
<rdar://problem/54082550>
Reviewed by Dean Jackson.
* platform/graphics/win/BackingStoreBackendDirect2D.h:
(WebCore::BackingStoreBackendDirect2D::renderTarget const):
(WebCore::BackingStoreBackendDirect2D::surface const):
(): Deleted.
* platform/graphics/win/BackingStoreBackendDirect2DImpl.cpp:
(WebCore::BackingStoreBackendDirect2DImpl::~BackingStoreBackendDirect2DImpl):
(WebCore::BackingStoreBackendDirect2DImpl::scroll):
(WebCore::createDirect2DImageSurfaceWithFastMalloc): Deleted.
* platform/graphics/win/BackingStoreBackendDirect2DImpl.h:
* platform/graphics/win/DIBPixelData.cpp:
(WebCore::DIBPixelData::DIBPixelData):
* platform/graphics/win/DIBPixelData.h:
* platform/graphics/win/Direct2DOperations.cpp:
(WebCore::Direct2D::fillRectWithRoundedHole):
(WebCore::Direct2D::fillRectWithGradient):
(WebCore::Direct2D::drawGlyphs):
(WebCore::Direct2D::PlatformContextStateSaver::PlatformContextStateSaver): Deleted.
(WebCore::Direct2D::PlatformContextStateSaver::~PlatformContextStateSaver): Deleted.
(WebCore::Direct2D::PlatformContextStateSaver::save): Deleted.
(WebCore::Direct2D::PlatformContextStateSaver::restore): Deleted.
(WebCore::Direct2D::PlatformContextStateSaver::didSave const): Deleted.
* platform/graphics/win/Direct2DOperations.h:
* platform/graphics/win/Direct2DUtilities.cpp:
(WebCore::Direct2D::bitmapSize):
(WebCore::Direct2D::bitmapResolution):
(WebCore::Direct2D::createWicBitmap):
(WebCore::Direct2D::createBitmap):
(WebCore::Direct2D::createGDIRenderTarget):
(WebCore::Direct2D::copyRectFromOneSurfaceToAnother):
* platform/graphics/win/Direct2DUtilities.h:
* platform/graphics/win/GraphicsContextDirect2D.cpp:
(WebCore::GraphicsContext::GraphicsContext):
(WebCore::GraphicsContext::platformContext const):
(WebCore::GraphicsContextPlatformPrivate::setAlpha):
(WebCore::GraphicsContext::savePlatformState):
(WebCore::GraphicsContext::restorePlatformState):
(WebCore::GraphicsContext::releaseWindowsContext):
(WebCore::GraphicsContextPlatformPrivate::~GraphicsContextPlatformPrivate):
(WebCore::GraphicsContextPlatformPrivate::beginDraw):
(WebCore::GraphicsContextPlatformPrivate::endDraw):
(WebCore::GraphicsContext::beginDraw):
(WebCore::GraphicsContext::endDraw):
(WebCore::GraphicsContext::setCTM):
(WebCore::GraphicsContext::isAcceleratedContext const):
* platform/graphics/win/GraphicsContextImplDirect2D.cpp:
(WebCore::GraphicsContextImplDirect2D::fillRect):
(WebCore::GraphicsContextImplDirect2D::fillRectWithRoundedHole):
(WebCore::GraphicsContextImplDirect2D::drawGlyphs):
* platform/graphics/win/GraphicsContextPlatformPrivateDirect2D.h:
(WebCore::GraphicsContextPlatformPrivate::platformContext):
* platform/graphics/win/PathDirect2D.cpp:
(WebCore::Path::transform):
* platform/graphics/win/PlatformContextDirect2D.cpp:
(WebCore::PlatformContextDirect2D::beginDraw):
(WebCore::PlatformContextDirect2D::endDraw):
* platform/graphics/win/PlatformContextDirect2D.h:
(WebCore::PlatformContextStateSaver::PlatformContextStateSaver):
(WebCore::PlatformContextStateSaver::~PlatformContextStateSaver):
(WebCore::PlatformContextStateSaver::save):
(WebCore::PlatformContextStateSaver::restore):
(WebCore::PlatformContextStateSaver::didSave const):
2019-08-08 Chris Dumez <cdumez@apple.com>
Unreviewed, address post-landing review comments for r248431.
* Modules/indexeddb/IDBRequest.h:
2019-08-08 Said Abou-Hallawa <sabouhallawa@apple.com>
[iOS] Position image information should respect the image orientation
https://bugs.webkit.org/show_bug.cgi?id=200487
Reviewed by Simon Fraser.
Re-factor CachedImage::imageSizeForRenderer() into another overriding
function which does not scale the imageSize. Therefore the new function
returns FloatSize while the original function returns LayoutSize.
* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::imageSizeForRenderer const):
* loader/cache/CachedImage.h:
* rendering/RenderElement.h:
2019-08-08 Devin Rousso <drousso@apple.com>
Web Inspector: rename `queryObjects` to `queryInstances` for clarity
https://bugs.webkit.org/show_bug.cgi?id=200520
Reviewed by Brian Burg.
Test: inspector/console/queryInstances.html
* inspector/CommandLineAPIModuleSource.js:
(CommandLineAPIImpl.prototype.queryInstances): Added.
(CommandLineAPIImpl.prototype.queryObjects):
2019-08-08 Chris Dumez <cdumez@apple.com>
Fix thread safety bug in AudioSourceProviderAVFObjC::prepare()
https://bugs.webkit.org/show_bug.cgi?id=200542
Reviewed by Jer Noble.
Fix thread safety bug in AudioSourceProviderAVFObjC::prepare(). It calls callOnMainThread()
from a background thread and captures makeRef(*this) in the lambda, even though |this| is a
AudioSourceProviderAVFObjC, which subclasses RefCounted, not ThreadSafeRefCounted.
* platform/graphics/avfoundation/AudioSourceProviderAVFObjC.h:
2019-08-08 Chris Dumez <cdumez@apple.com>
Make IDBRequest ThreadSafeRefCounted
https://bugs.webkit.org/show_bug.cgi?id=200540
Reviewed by Alex Christensen.
Make IDBRequest ThreadSafeRefCounted, as it looks like it is being ref'd / deref'd
from several threads, in IDBConnectionProxy::notifyOpenDBRequestBlocked() for
example.
* Modules/indexeddb/IDBRequest.h:
2019-08-08 Brady Eidson <beidson@apple.com>
Do not allow navigations of frames about to get replaced by the result of evaluating javascript: URLs
<rdar://problem/53788893> and https://bugs.webkit.org/show_bug.cgi?id=198786
Reviewed by Geoff Garen.
Covered by API Test
Add a "willReplaceWithResultOfExecutingJavascriptURL" flag which is respected inside FrameLoader::isNavigationAllowed
* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::executeIfJavaScriptURL):
* bindings/js/ScriptController.h:
(WebCore::ScriptController::willReplaceWithResultOfExecutingJavascriptURL const):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::isNavigationAllowed const):
2019-08-08 Rob Buis <rbuis@igalia.com>
Add runtime flag for lazy image loading
https://bugs.webkit.org/show_bug.cgi?id=199794
Reviewed by Darin Adler.
Add loading attribute and expose it on HTMLImageElement.
* html/HTMLAttributeNames.in:
* html/HTMLImageElement.idl:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setLazyImageLoadingEnabled):
(WebCore::RuntimeEnabledFeatures::lazyImageLoadingEnabled const):
2019-08-08 Miguel Gomez <magomez@igalia.com>
[GTK][WPE] Remove the reference to WebCore::Animation from TextureMapperAnimation
https://bugs.webkit.org/show_bug.cgi?id=200533
Reviewed by Žan Doberšek.
Pass the relevant parameters to TextureMapperAnimation instead of creating a new WebCore::Animation
inside it.
* platform/graphics/texmap/TextureMapperAnimation.cpp:
(WebCore::timingFunctionForAnimationValue):
(WebCore::TextureMapperAnimation::TextureMapperAnimation):
(WebCore::TextureMapperAnimation::apply):
(WebCore::TextureMapperAnimation::isActive const):
* platform/graphics/texmap/TextureMapperAnimation.h:
(WebCore::TextureMapperAnimation::keyframes const):
(WebCore::TextureMapperAnimation::timingFunction const):
(WebCore::TextureMapperAnimation::animation const): Deleted.
2019-08-08 Charlie Turner <cturner@igalia.com>
[GTK] WebKitWebProcess crashes when viewing an HTML with a <video> element referencing unknown file
https://bugs.webkit.org/show_bug.cgi?id=200530
Reviewed by Xabier Rodriguez-Calvar.
Not amenable to unit testing.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::fillTimerFired):
2019-08-07 Saam Barati <sbarati@apple.com>
[WHLSL] Prune unreachable stdlib functions after the Checker runs
https://bugs.webkit.org/show_bug.cgi?id=200518
Reviewed by Robin Morisset.
We now prune unreachable stdlib functions after the checker runs. We must
do this after the checker runs because that's when we resolve all remaining
function calls. While we can't prune unreachable user code, because we must
still report errors in it, we can prune unreachable standard library code
because we know a priori that it has no errors. This is a 10ms end-to-end
speedup in compute_boids.
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
* Modules/webgpu/WHLSL/WHLSLPruneUnreachableStandardLibraryFunctions.cpp: Added.
(WebCore::WHLSL::pruneUnreachableStandardLibraryFunctions):
* Modules/webgpu/WHLSL/WHLSLPruneUnreachableStandardLibraryFunctions.h: Added.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2019-08-07 Kate Cheney <katherine_cheney@apple.com>
Adopt non-deprecated CGColorSpace API
https://bugs.webkit.org/show_bug.cgi?id=184358
Reviewed by Darin Adler.
* platform/ScreenProperties.h:
(WebCore::ScreenData::decode):
We changed the deprecated CGColorSpaceCreateWithICCProfile function to
CGColorSpaceCreateWithICCData.
2019-08-07 Sam Weinig <weinig@apple.com>
[WHLSL] Metal code generation takes a long time uniquing UnnamedTypes
https://bugs.webkit.org/show_bug.cgi?id=200512
Reviewed by Saam Barati.
Instead of using a trie for unnamed type uniquing, use the same technique used
in SynthesizeConstructors and use a HashMap of UnnamedTypeKeys. To make this
profitable, we also need to devirtualize the hash and equality functions on
UnnamedType, instead using an enum + switch. While this change only devirtualizes
the UnnamedType subtree, we should probably do it for the entire AST in a future
change.
* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.cpp: Added.
(WebCore::WHLSL::AST::UnnamedType::hash const):
(WebCore::WHLSL::AST::UnnamedType::operator== const):
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
Devirtualize hash, operator== and type predicates.
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedTypeHash.h: Added.
(WebCore::WHLSL::UnnamedTypeKey::UnnamedTypeKey):
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
(WebCore::WHLSL::UnnamedTypeKey::UnnamedTypeKey): Deleted.
Moved UnnamedTypeKey into it's own header from WHLSLSynthesizeConstructors.cpp
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::BaseTypeNameNode::BaseTypeNameNode):
(WebCore::WHLSL::Metal::BaseTypeNameNode::kind):
(WebCore::WHLSL::Metal::BaseTypeNameNode::isReferenceTypeNameNode const):
(WebCore::WHLSL::Metal::BaseTypeNameNode::isPointerTypeNameNode const):
(WebCore::WHLSL::Metal::BaseTypeNameNode::isArrayReferenceTypeNameNode const):
(WebCore::WHLSL::Metal::BaseTypeNameNode::isArrayTypeNameNode const):
Devirtualize BaseTypeNameNode as well. In a future change, we should consider removing
this class entirely and instead mapping directly to a parent/mangled name pair.
(WebCore::WHLSL::Metal::TypeNamer::visit):
(WebCore::WHLSL::Metal::TypeNamer::find):
(WebCore::WHLSL::Metal::TypeNamer::createNameNode):
(WebCore::WHLSL::Metal::parent):
(WebCore::WHLSL::Metal::TypeNamer::insert):
(WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):
(WebCore::WHLSL::Metal::TypeNamer::emitMetalTypeDefinitions):
(WebCore::WHLSL::Metal::TypeNamer::mangledNameForType):
(WebCore::WHLSL::Metal::findInVector): Deleted.
(WebCore::WHLSL::Metal::find): Deleted.
(WebCore::WHLSL::Metal::TypeNamer::emitAllUnnamedTypeDefinitions): Deleted.
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.h:
Switch from a Vector based trie to a HashMap for UnnamedType uniquing. Also
use UnnamedType::Kind where possible with switch statements to clarify code.
* WebCore.xcodeproj/project.pbxproj:
Add new files.
2019-08-07 Devin Rousso <drousso@apple.com>
Web Inspector: Uncaught Exception: TimelineAgent already enabled
https://bugs.webkit.org/show_bug.cgi?id=200513
Reviewed by Joseph Pecoraro.
Call `disable` when the last frontend disconnects, so that if Web Inspector is reopened the
`TimelineAgent` is back to being in a disabled state.
* inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::willDestroyFrontendAndBackend):
2019-08-07 Jer Noble <jer.noble@apple.com>
Muted <video> elements can block display from sleeping.
https://bugs.webkit.org/show_bug.cgi?id=200511
Reviewed by Eric Carlson.
Test: media/video-muted-holds-sleep-assertion.html
Modify the shouldDisableSleep() method to take muting into account.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::shouldDisableSleep const):
2019-08-07 Robin Morisset <rmorisset@apple.com>
[WHLSL] Simplify and eliminate redundant work in WHLSLFunctionWriter.cpp
https://bugs.webkit.org/show_bug.cgi?id=200460
Reviewed by Myles Maxfield.
2 trivial simplifications:
- Replace FunctionDeclarationWriter by a standalone function, there was no reason to make it a subclass of Visitor
- Avoid an exponential blow-up in the computation of reachable functions.
I have way too much noise on my system (swings back and forth between 7 and 12ms for this phase) to measure a performance win,
but since this patch simplifies things without adding complexity I think it is worth it.
No new test as there is no functional change intended.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::declareFunction):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::FunctionDefinitionWriter):
(WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::RenderFunctionDefinitionWriter):
(WebCore::WHLSL::Metal::ComputeFunctionDefinitionWriter::ComputeFunctionDefinitionWriter):
(WebCore::WHLSL::Metal::sharedMetalFunctions):
(WebCore::WHLSL::Metal::metalFunctions):
2019-08-07 Saam Barati <sbarati@apple.com>
[WHLSL] checkRecursion, checkTextureReferences, and EscapedVariableCollector should skip stdlib functions
https://bugs.webkit.org/show_bug.cgi?id=200510
Reviewed by Myles C. Maxfield.
We can skip walking the stdlib part of the AST in various semantic checking phases:
- checkRecursion: the stdlib does not have recursion
- checkTextureReferences: the stdlib does not have references to textures
- EscapedVariableCollector: this is used inside preserveVariableLifetimes, and
the stdlib never escapes any variables.
This patch speeds up checkRecursion, checkTextureReferences, and preserveVariableLifetimes
by about 1ms each, leading to a 3ms compile time speedup in compute_boids.
* Modules/webgpu/WHLSL/WHLSLCheckTextureReferences.cpp:
(WebCore::WHLSL::TextureReferencesChecker::visit):
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
(WebCore::WHLSL::preserveVariableLifetimes):
(WebCore::WHLSL::EscapedVariableCollector::escapeVariableUse): Deleted.
(WebCore::WHLSL::EscapedVariableCollector::takeEscapedVariables): Deleted.
* Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp:
2019-08-08 Simon Fraser <simon.fraser@apple.com>
Add to InteractionInformationAtPosition information about whether the element is in a subscrollable region
https://bugs.webkit.org/show_bug.cgi?id=200374
rdar://problem/54095519
Reviewed by Tim Horton.
Add to InteractionInformationAtPosition a ScrollingNodeID which represents the enclosing scrolling
node that affects the targeted element's position. We use this to find a UIScrollView in the UI process.
The entrypoint to finding the enclosing scrolling node is ScrollingCoordinator::scrollableContainerNodeID(),
which calls RenderLayerCompositor::asyncScrollableContainerNodeID() to look for a scrolling ancestor in
the current frame, and then looks for an enclosing scrollable frame, or a scrolling ancestor in
the enclosing frame.
There's a bit of subtlety in RenderLayerCompositor::asyncScrollableContainerNodeID() because if you're asking
for the node that scrolls the renderer, if the renderer itself has a layer and is scrollable, you want
its enclosing scroller.
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::scrollableContainerNodeID const):
* page/scrolling/AsyncScrollingCoordinator.h:
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::scrollableContainerNodeID const):
* page/scrolling/ScrollingCoordinator.h:
* rendering/RenderLayer.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::asyncScrollableContainerNodeID):
* rendering/RenderLayerCompositor.h:
2019-08-07 Saam Barati <sbarati@apple.com>
[WHLSL] cache results of argumentTypeForAndOverload inside Checker
https://bugs.webkit.org/show_bug.cgi?id=200462
Reviewed by Robin Morisset.
When I profiled the time we spent in the checker, it turned out that
argumentTypeForAndOverload is one of the most expensive functions. If
we just cache the results of that function, we can avoid 99% of the
duplicate allocations that function does in compute_boids. This patch
is a ~4ms speedup in the checker on compute_boids.
* Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::AndOverloadTypeKey::AndOverloadTypeKey):
(WebCore::WHLSL::AndOverloadTypeKey::isEmptyValue const):
(WebCore::WHLSL::AndOverloadTypeKey::isHashTableDeletedValue const):
(WebCore::WHLSL::AndOverloadTypeKey::hash const):
(WebCore::WHLSL::AndOverloadTypeKey::operator== const):
(WebCore::WHLSL::AndOverloadTypeKey::Hash::hash):
(WebCore::WHLSL::AndOverloadTypeKey::Hash::equal):
(WebCore::WHLSL::AndOverloadTypeKey::Traits::isEmptyValue):
(WebCore::WHLSL::Checker::argumentTypeForAndOverload):
(WebCore::WHLSL::Checker::finishVisiting):
(WebCore::WHLSL::argumentTypeForAndOverload): Deleted.
2019-08-07 Youenn Fablet <youenn@apple.com>
Remove IDBDatabaseIdentifier::m_sessionID
https://bugs.webkit.org/show_bug.cgi?id=200489
Reviewed by Darin Adler.
IDBDatabaseIdentifier can be created without a valid session ID.
Its session ID is only used in NetworkProcess where it can be retrieved from the IDBServer.
In WebProcess, session ID is also known from the IDB connection.
Update SQLiteIDBBackingStore to store a session ID which is given from its IDBServer.
No observable change of behavior.
* Modules/indexeddb/IDBDatabaseIdentifier.cpp:
(WebCore::IDBDatabaseIdentifier::IDBDatabaseIdentifier):
(WebCore::IDBDatabaseIdentifier::isolatedCopy const):
* Modules/indexeddb/IDBDatabaseIdentifier.h:
(WebCore::IDBDatabaseIdentifier::hash const):
(WebCore::IDBDatabaseIdentifier::databaseName const):
(WebCore::IDBDatabaseIdentifier::encode const):
(WebCore::IDBDatabaseIdentifier::decode):
(WebCore::IDBDatabaseIdentifier::sessionID const): Deleted.
* Modules/indexeddb/IDBFactory.cpp:
(WebCore::IDBFactory::openInternal):
(WebCore::IDBFactory::deleteDatabase):
* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::createBackingStore):
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::SQLiteIDBBackingStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::getBlobRecordsForObjectStoreRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::getRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::getAllObjectStoreRecords):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey):
* Modules/indexeddb/server/SQLiteIDBBackingStore.h:
(WebCore::IDBServer::SQLiteIDBBackingStore::sessionID const):
* Modules/indexeddb/server/SQLiteIDBCursor.cpp:
(WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord):
2019-08-07 Chris Dumez <cdumez@apple.com>
Fix thread safety issue under JSHistory::visitAdditionalChildren()
https://bugs.webkit.org/show_bug.cgi?id=200504
Reviewed by Darin Adler.
JSHistory::visitAdditionalChildren() is called from a GC thread and was calling
History::cachedState() whose implementation goes deep into WebCore
(FrameLoader / HistoryController). Among other things, it null checks m_window
which is a WeakPtr and then later dereferences it to get the Frame object, which
is not safe from the non-main thread.
To address the issue, introduce a simpler cachedStateForGC() getter which is
thread safe, and use it in JSHistory::visitAdditionalChildren().
* bindings/js/JSHistoryCustom.cpp:
(WebCore::JSHistory::visitAdditionalChildren):
* page/History.h:
2019-08-07 Priyanka Agarwal <pagarwal999@apple.com>
Allow clients to toggle a text input field between being viewable and having characters hidden while maintaining
a yellow auto-filled appearance
https://bugs.webkit.org/show_bug.cgi?id=200037
rdar://problem/51900961
Reviewed by Daniel Bates.
Tests: fast/forms/auto-fill-button/hide-auto-fill-strong-password-viewable-treatment-when-form-is-reset.html
fast/forms/auto-fill-button/input-strong-password-viewable.html
* css/CSSSelector.cpp:
(WebCore::CSSSelector::selectorText const):
Adding CSSSelector case for new pseudo class of AutofillStrongPasswordViewable.
* css/CSSSelector.h: Added PseudoClassAutofillStrongPasswordViewable
* css/SelectorChecker.cpp:
(WebCore::SelectorChecker::checkOne const): Added handling for SelectorChecker.cpp
* css/SelectorCheckerTestFunctions.h:
(WebCore::isAutofilledStrongPasswordViewable):
Checking if the element is an input element and considered to be
AutoFilled and Viewable. Returns a boolean accordingly.
* css/SelectorPseudoClassAndCompatibilityElementMap.in:
Add -webkit-autofill-strong-password-viewable css class.
* css/html.css:
(input:-webkit-autofill, input:-webkit-autofill-strong-password, input:-webkit-autofill-strong-password-viewable):
(input:-webkit-autofill-strong-password-viewable):
(input:-webkit-autofill, input:-webkit-autofill-strong-password): Deleted. Updated to include viewable pseudo class.
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::addPseudoClassType):
Add case handling for PseudoClassAutofillStrongPasswordViewable.
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::HTMLInputElement):
Add boolean m_isAutoFilledAndViewable for representing if the
input element is both AutoFilled and should be viewable.
Don't update the viewable treatment in setValueFromRenderer() because even if the user makes edits to the input field
the visual treatment should still be applied.
(WebCore::HTMLInputElement::resignStrongPasswordAppearance):
Updates boolean representing if input element is autofilled and viewable to false.
(WebCore::HTMLInputElement::reset):
Updates boolean representing if input element is autofilled and viewable to false.
(WebCore::HTMLInputElement::setAutoFilledAndViewable):
Setter function for the boolean of m_isAutoFilledAndViewable.
* html/HTMLInputElement.h:
(WebCore::HTMLInputElement::isAutoFilledAndViewable const):
Creating boolean value for m_isAutoFilledAndViewable.
* testing/Internals.cpp:
(WebCore::Internals::setAutoFilledAndViewable): Adding for testing purposes.
* testing/Internals.h: Adding for testing purposes.
* testing/Internals.idl:
2019-08-07 Wenson Hsieh <wenson_hsieh@apple.com>
Declarations and implementations of findCaret(Min|Max)imumOffset have inconsistent signatures
https://bugs.webkit.org/show_bug.cgi?id=200503
Reviewed by Darin Adler.
No change in behavior.
* rendering/SimpleLineLayoutFunctions.h:
Update these function declarations to take "const RenderText&", which matches the signatures of their inline
implementations below.
2019-08-07 Wenson Hsieh <wenson_hsieh@apple.com>
Extra space inserted at start of line when inserting a newline in Mail compose
https://bugs.webkit.org/show_bug.cgi?id=200490
<rdar://problem/53501354>
Reviewed by Antti Koivisto.
This started happening after r244494, which deferred editor state computation until the next layer tree flush
when changing selection. After inserting a paragraph, the act of computing an editor state ensured that the text
node containing the caret drops out of simple line layout, while grabbing the characters near the selection
(i.e., calling charactersAroundPosition). This meant that when we subsequently ask positionAfterSplit whether it
isRenderedCharacter() at the end of the command, we are guaranteed to have line boxes, so we get a meaningful
answer and avoid inserting an extra non-breaking space.
However, after r244494, we defer the editor state computation until the end of the edit command; this means that
we may not have line boxes for positionAfterSplit's text node renderer, due to remaining in simple line layout.
In turn, this means that we end up hitting the assertion in containsRenderedCharacterOffset in debug builds; on
release builds, we simply return false from containsRenderedCharacterOffset, which causes us to insert an extra
space.
To fix this, we educate RenderText::containsRenderedCharacterOffset about simple line layout.
Test: editing/inserting/insert-paragraph-in-designmode-document.html
* rendering/RenderText.cpp:
(WebCore::RenderText::containsRenderedCharacterOffset const):
(WebCore::RenderText::containsCaretOffset const):
Changed to use SimpleLineLayout::containsOffset.
* rendering/SimpleLineLayoutFunctions.h:
(WebCore::SimpleLineLayout::containsOffset):
I first contrasted the behavior of RenderTextLineBoxes::containsOffset in the cases where the OffsetType is
CaretOffset or CharacterOffset, and found that the only interesting differences were:
1. The caret offset type case has special handling for line breaks.
2. Both offset types have handling for reversed text.
3. The end offset of a line box contains a caret offset, but not a character offset.
For the purposes of OffsetType CharacterOffset, (1) is irrelevant; furthermore, (2) is already not handled by
logic in containsCaretOffset(). Thus, the only major difference in the CharacterOffset case should be (3), which
we handle by only allowing the case where the given offset is equal to the very end of a text run for caret
offsets, and not character offsets.
(WebCore::SimpleLineLayout::containsCaretOffset): Deleted.
Renamed to just containsOffset.
2019-08-07 Youenn Fablet <youenn@apple.com>
ASSERT that a sessionID is valid when encoding it
https://bugs.webkit.org/show_bug.cgi?id=199302
Reviewed by Darin Adler.
For IDBValue, instead of encoding an invalid session ID, encode a boolean that tells there is no sessionID.
For IDBRequestData, keep track of whether there is an IDBDatabaseIdentifier
and encode/decode accordingly to not encode an invalid sessionID.
No observable change of behavior.
* Modules/indexeddb/IDBValue.h:
(WebCore::IDBValue::sessionID const):
(WebCore::IDBValue::encode const):
(WebCore::IDBValue::decode):
* Modules/indexeddb/shared/IDBRequestData.cpp:
(WebCore::IDBRequestData::isolatedCopy):
* Modules/indexeddb/shared/IDBRequestData.h:
(WebCore::IDBRequestData::databaseIdentifier const):
(WebCore::IDBRequestData::decode):
2019-08-07 Zalan Bujtas <zalan@apple.com>
[LFC] Rename FormattingContext::layoutOutOfFlowDescendants to layoutOutOfFlowContent
https://bugs.webkit.org/show_bug.cgi?id=200502
<rdar://problem/54032534>
Reviewed by Antti Koivisto.
The layoutOutOfFlowDescendants name is not entirely accurate. In a formatting context we only
lay out the out-of-flow boxes that actually belong to the current formatting context.
<div style="float: left">
<div id=outer style="position: absolute">
<div id=inner style="position: absolute"></div>
</div>
</div>
The float's formatting context only lays out the outer absolutely positioned box. The inner box
(which is also an out-of-flow descendant of the float box) is taken care of by the outer box.
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::layoutOutOfFlowContent const):
(WebCore::Layout::FormattingContext::validateGeometryConstraintsAfterLayout const):
(WebCore::Layout::FormattingContext::layoutOutOfFlowDescendants const): Deleted.
* layout/FormattingContext.h:
* layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::layoutFormattingContextSubtree):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
2019-08-07 Zalan Bujtas <zalan@apple.com>
[LFC] Introduce Layout::Phase class
https://bugs.webkit.org/show_bug.cgi?id=200473
<rdar://problem/53996061>
Reviewed by Antti Koivisto.
It helps to check whether we could run certain actions like layout while constructing the tree.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/LayoutState.h:
* layout/floats/FloatingContext.cpp:
* layout/inlineformatting/InlineLine.cpp:
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::establishesFormattingContext const):
(WebCore::Layout::Box::containingBlock const):
(WebCore::Layout::Box::formattingContextRoot const):
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutTree):
2019-08-07 Chris Lord <clord@igalia.com>
context-attributes-alpha-depth-stencil-antialias fails on WPE WebKit
https://bugs.webkit.org/show_bug.cgi?id=200434
Reviewed by Žan Doberšek.
This patch fixes 16-bit surfaces being used for FBOs with no
alpha component when using the GLES implementation of GraphicsContext3D.
* platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:
(WebCore::GraphicsContext3D::reshapeFBOs):
Use GL_UNSIGNED_BYTE instead of GL_UNSIGNED_SHORT_5_6_5 for surfaces with no alpha.
2019-08-06 Saam Barati <sbarati@apple.com>
[WHLSL] Make resolveFunction in Checker faster
https://bugs.webkit.org/show_bug.cgi?id=200287
Reviewed by Robin Morisset.
This patch makes compute_boids faster by making function overload
resolution faster inside the Checker. It's a ~6ms speedup in the
checker. The main idea is to limit the number of overloads we need
to look for by using a hash table that describes a function's type
instead of just using a hash table keyed by a function's name.
The interesting implementation detail here is we must construct entries
in the hash table such that they still allow constants to be resolved to
various types. This means that the key in the hash table must normalize
the vector of types it uses to express a function's identity. The normalization
rules are:
- int => float
- uint => float
- T* => float*
- T[] => float*
The first two rules are because int constants can be matched against
the float and uint types. The latter two rules are because the null
literal can be matched against any pointer or any array reference
(we pick float* arbitrarily). Even though it seems like these
normalization rules would drastically broaden the efficacy of the hash
table, we still see a 100x reduction in the number of overloads we must
resolve inside compute_boids. We go from having to resolve 400,000
overloads to just resolving 4,000.
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::FunctionKey::FunctionKey):
(WebCore::WHLSL::FunctionKey::isEmptyValue const):
(WebCore::WHLSL::FunctionKey::isHashTableDeletedValue const):
(WebCore::WHLSL::FunctionKey::hash const):
(WebCore::WHLSL::FunctionKey::operator== const):
(WebCore::WHLSL::FunctionKey::Hash::hash):
(WebCore::WHLSL::FunctionKey::Hash::equal):
(WebCore::WHLSL::FunctionKey::Traits::isEmptyValue):
(WebCore::WHLSL::Checker::Checker):
(WebCore::WHLSL::Checker::wrappedFloatType):
(WebCore::WHLSL::Checker::genericPointerType):
(WebCore::WHLSL::Checker::normalizedTypeForFunctionKey):
(WebCore::WHLSL::Checker::resolveFunction):
(WebCore::WHLSL::Checker::finishVisiting):
(WebCore::WHLSL::Checker::visit):
(WebCore::WHLSL::resolveFunction): Deleted.
2019-08-06 Loïc Yhuel <loic.yhuel@softathome.com>
Fix 32-bit Linux build after r248282
https://bugs.webkit.org/show_bug.cgi?id=200491
Reviewed by Youenn Fablet.
minInterToneGapMs must be a size_t like interToneGap for std::max call.
The other constants are updated for consistency, even if the compiler
was able to cast them automatically.
* Modules/mediastream/RTCDTMFSender.cpp:
2019-08-06 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r248289.
https://bugs.webkit.org/show_bug.cgi?id=200488
Broke internal builds (Requested by drousso on #webkit).
Reverted changeset:
"Web Inspector: Styles: show @supports CSS groupings"
https://bugs.webkit.org/show_bug.cgi?id=200419
https://trac.webkit.org/changeset/248289
2019-08-06 Chris Dumez <cdumez@apple.com>
Fix inefficiency in HTTPHeaderMap::set(CFStringRef, const String&)
https://bugs.webkit.org/show_bug.cgi?id=200475
Reviewed by Darin Adler.
In the case where CFStringGetCStringPtr() succeeds in returning us a pointer
to the CFStringRef underlying characters but it is not a common header, we
would fall back to calling HTTPHeaderMap::set(const String&, const String&)
which would unecessarily call findHTTPHeaderName() again to try and determine
if it is a common header. Avoid this by introducing a new setUncommonHeader()
private method and calling this one instead. Also got rid of some code
duplication at the same time.
* platform/network/HTTPHeaderMap.cpp:
(WebCore::HTTPHeaderMap::set):
(WebCore::HTTPHeaderMap::setUncommonHeader):
* platform/network/HTTPHeaderMap.h:
* platform/network/HTTPParsers.cpp:
(WebCore::parseHTTPHeader):
* testing/MockCDMFactory.cpp:
(WebCore::MockCDMInstance::setServerCertificate):
2019-08-06 Saam Barati <sbarati@apple.com>
[WHLSL] Remove the auto initialize variables pass
https://bugs.webkit.org/show_bug.cgi?id=200472
Reviewed by Robin Morisset.
From a separation of concerns perspective, it's a bit nicer to make variables
without initializers call their default constructors as a transformation over the AST.
This removes the need for the lowering to need to worry about such things. However,
changing metal lowering to deal with this is trivial. It means we need to change one
line of code in Metal code generation, and we get to remove a ~50 LOC AST pass.
Also, in this case, it saves us from the compile time hit of having to run the
auto initialize variables phase, which takes ~1.2ms on compute_boids.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.cpp: Removed.
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.h: Removed.
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2019-08-06 Sam Weinig <weinig@apple.com>
WHLSL Metal code generation unnecessarily does string copies by passing partial results as Strings
https://bugs.webkit.org/show_bug.cgi?id=200471
Reviewed by Saam Barati.
Avoid string copies by passing a single StringBuilder all the way through Metal code
generation and only converting to a String when passing the constructed shader to Metal
API.
Where possible, use StringView in lieu of String for temporary strings being passed to
the StringBuilder to avoid the allocation overhead of StringImpl.
* Modules/webgpu/WHLSL/AST/WHLSLAddressSpace.h:
(WebCore::WHLSL::AST::toString):
Switch to StringView.
* Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h:
(WebCore::WHLSL::AST::BuiltInSemantic::toString const):
Switch to StringView.
* Modules/webgpu/WHLSL/AST/WHLSLEntryPointType.h:
(WebCore::WHLSL::AST::toString):
Switch to StringView.
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
Remove unnecessary "private:".
* Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.h:
(WebCore::WHLSL::AST::ResourceSemantic::toString):
Switch to StringView.
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
(WebCore::WHLSL::Metal::EntryPointScaffolding::emitResourceHelperTypes):
(WebCore::WHLSL::Metal::EntryPointScaffolding::emitResourceSignature):
(WebCore::WHLSL::Metal::EntryPointScaffolding::emitBuiltInsSignature):
(WebCore::WHLSL::Metal::EntryPointScaffolding::emitMangledInputPath):
(WebCore::WHLSL::Metal::EntryPointScaffolding::emitMangledOutputPath):
(WebCore::WHLSL::Metal::EntryPointScaffolding::emitUnpackResourcesAndNamedBuiltIns):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::emitHelperTypes):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::emitSignature):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::emitUnpack):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::emitPack):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::emitHelperTypes):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::emitSignature):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::emitUnpack):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::emitPack):
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::emitHelperTypes):
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::emitSignature):
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::emitUnpack):
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::emitPack):
(WebCore::WHLSL::Metal::EntryPointScaffolding::resourceHelperTypes): Deleted.
(WebCore::WHLSL::Metal::EntryPointScaffolding::resourceSignature): Deleted.
(WebCore::WHLSL::Metal::EntryPointScaffolding::builtInsSignature): Deleted.
(WebCore::WHLSL::Metal::EntryPointScaffolding::mangledInputPath): Deleted.
(WebCore::WHLSL::Metal::EntryPointScaffolding::mangledOutputPath): Deleted.
(WebCore::WHLSL::Metal::EntryPointScaffolding::unpackResourcesAndNamedBuiltIns): Deleted.
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::helperTypes): Deleted.
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::signature): Deleted.
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::unpack): Deleted.
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::pack): Deleted.
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::helperTypes): Deleted.
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::signature): Deleted.
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::unpack): Deleted.
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::pack): Deleted.
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::helperTypes): Deleted.
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::signature): Deleted.
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::unpack): Deleted.
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::pack): Deleted.
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h:
Rather than have scaffolding return strings, pass in StringBuilders everywhere.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::FunctionDefinitionWriter):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::emitConstantExpressionString):
(WebCore::WHLSL::Metal::generateMetalFunctionsMapping):
(WebCore::WHLSL::Metal::emitSharedMetalFunctions):
(WebCore::WHLSL::Metal::emitMetalFunctions):
(WebCore::WHLSL::Metal::FunctionDeclarationWriter::FunctionDeclarationWriter): Deleted.
(WebCore::WHLSL::Metal::FunctionDeclarationWriter::toString): Deleted.
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::toString): Deleted.
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::constantExpressionString): Deleted.
(WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::RenderFunctionDefinitionWriter): Deleted.
(WebCore::WHLSL::Metal::ComputeFunctionDefinitionWriter::ComputeFunctionDefinitionWriter): Deleted.
(WebCore::WHLSL::Metal::sharedMetalFunctions): Deleted.
(WebCore::WHLSL::Metal::metalFunctions): Deleted.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.h:
Rather than returning Strings from function generation functions, pass in StringBuilders everywhere.
* Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.cpp:
(WebCore::WHLSL::Metal::metalCodeProlog):
(WebCore::WHLSL::Metal::dumpMetalCodeIfNeeded):
(WebCore::WHLSL::Metal::generateMetalCode):
(WebCore::WHLSL::Metal::generateMetalCodeShared): Deleted.
* Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.h:
Switch RenderMetalCode and ComputeMetalCode to contain StringBuilders to allow
delaying conversion to String to the latest point possible.
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::TypeNamer::emitMetalTypeDeclarations):
(WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):
(WebCore::WHLSL::Metal::TypeNamer::emitNamedTypeDefinition):
(WebCore::WHLSL::Metal::TypeNamer::emitAllUnnamedTypeDefinitions):
(WebCore::WHLSL::Metal::TypeNamer::emitMetalTypeDefinitions):
(WebCore::WHLSL::Metal::TypeNamer::emitMetalTypes):
(WebCore::WHLSL::Metal::MetalTypeDeclarationWriter::MetalTypeDeclarationWriter): Deleted.
(WebCore::WHLSL::Metal::MetalTypeDeclarationWriter::toString): Deleted.
(WebCore::WHLSL::Metal::MetalTypeDeclarationWriter::visit): Deleted.
(WebCore::WHLSL::Metal::TypeNamer::metalTypeDeclarations): Deleted.
(WebCore::WHLSL::Metal::TypeNamer::metalTypeDefinitions): Deleted.
(WebCore::WHLSL::Metal::TypeNamer::metalTypes): Deleted.
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.h:
Rather than returning Strings from function generation functions, pass in StringBuilders everywhere.
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseResourceSemantic):
Remove use of _str, which allocates a String, and just use a StringView directly.
* Modules/webgpu/WHLSL/WHLSLPrepare.h:
Switch RenderPrepareResult and ComputePrepareResult to contain StringBuilders to allow
delaying conversion to String to the latest point possible.
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm:
(WebCore::trySetFunctions):
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::trySetFunctions):
Convert StringBuilders to String at the last moment necessary. Adds a FIXME to improve
in the future by adding direct conversion from StringBuilder to NSString to avoid another
copy.
2019-08-06 Saam Barati <sbarati@apple.com>
[WHLSL] Reduce the number of variables that make it into the global struct by skipping stdlib functions and internal uses of MakePointerExpression/MakeArrayReference
https://bugs.webkit.org/show_bug.cgi?id=200463
Reviewed by Myles C. Maxfield.
This patch makes it so that we put fewer variables in the global struct.
This decreases end-to-end running time in compute_boids by 30% (with p = 0.0001).
We achieve this in two ways:
1. We track if each function is user code or "standard library" code. We also
count native functions as the standard library. We know a priori that the
standard library never escapes any variables. So the preserve variable
lifetimes phase skips analyzing all standard library functions and also
skips passing the global struct to any standard library functions.
2. We internally emit MakePointerExpression/MakeArrayReferenceExpression nodes in
the compiler in various phases. We sometimes emit these nodes in such a way
that we know that this address-of expression does not cause the variable to
escape. We now mark each address-of expressions as either:
- Conservatively escaping. We conservatively do this for all user code.
- Not escaping. This means that this address-of operation definitely does
not escape the variable. If a variable never has an escaping use, we will
omit putting this variable in the struct.
* Modules/webgpu/WHLSL/AST/WHLSLAddressEscapeMode.h: Added.
* Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
(WebCore::WHLSL::AST::FunctionDeclaration::FunctionDeclaration):
(WebCore::WHLSL::AST::FunctionDeclaration::parsingMode const):
* Modules/webgpu/WHLSL/AST/WHLSLMakeArrayReferenceExpression.h:
(WebCore::WHLSL::AST::MakeArrayReferenceExpression::MakeArrayReferenceExpression):
(WebCore::WHLSL::AST::MakeArrayReferenceExpression::mightEscape const):
* Modules/webgpu/WHLSL/AST/WHLSLMakePointerExpression.h:
(WebCore::WHLSL::AST::MakePointerExpression::MakePointerExpression):
(WebCore::WHLSL::AST::MakePointerExpression::mightEscape const):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveWithOperatorAnderIndexer):
(WebCore::WHLSL::resolveWithOperatorLength):
(WebCore::WHLSL::resolveWithReferenceComparator):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parse):
(WebCore::WHLSL::Parser::parseComputeFunctionDeclaration):
(WebCore::WHLSL::Parser::parseVertexOrFragmentFunctionDeclaration):
(WebCore::WHLSL::Parser::parseRegularFunctionDeclaration):
(WebCore::WHLSL::Parser::parseOperatorFunctionDeclaration):
(WebCore::WHLSL::Parser::parsePossiblePrefix):
* Modules/webgpu/WHLSL/WHLSLParser.h:
* Modules/webgpu/WHLSL/WHLSLParsingMode.h: Added.
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::wrapAnderCallArgument):
(WebCore::WHLSL::modify):
(WebCore::WHLSL::PropertyResolver::visit):
* Modules/webgpu/WHLSL/WHLSLStandardLibraryUtilities.cpp:
(WebCore::WHLSL::includeStandardLibrary):
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
(WebCore::WHLSL::synthesizeArrayOperatorLength):
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
(WebCore::WHLSL::synthesizeConstructors):
* Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
(WebCore::WHLSL::synthesizeEnumerationFunctions):
* Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
(WebCore::WHLSL::synthesizeStructureAccessors):
* WebCore.xcodeproj/project.pbxproj:
2019-08-06 Jer Noble <jer.noble@apple.com>
Adopt -expectMinimumUpcomingSampleBufferPresentationTime:
https://bugs.webkit.org/show_bug.cgi?id=200457
<rdar://problem/53961130>
Reviewed by Eric Carlson.
Test: media/media-source/media-source-minimumupcomingpresentationtime.html
Adopt a new API vended by AVSampleBufferDisplayLayer, piped from SourceBuffer down
through SourceBufferPrivate to SourceBufferPrivateAVFObjC. This value should be
reset and updated when new samples are appended.
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):
(WebCore::SourceBuffer::provideMediaData):
(WebCore::SourceBuffer::updateMinimumUpcomingPresentationTime):
(WebCore::SourceBuffer::resetMinimumUpcomingPresentationTime):
(WebCore::SourceBuffer::minimumUpcomingPresentationTimeForTrackID):
(WebCore::SourceBuffer::setMaximumQueueDepthForTrackID):
* Modules/mediasource/SourceBuffer.h:
* platform/graphics/SourceBufferPrivate.h:
(WebCore::SourceBufferPrivate::canSetMinimumUpcomingPresentationTime const):
(WebCore::SourceBufferPrivate::setMinimumUpcomingPresentationTime):
(WebCore::SourceBufferPrivate::clearMinimumUpcomingPresentationTime):
(WebCore::SourceBufferPrivate::enqueuedSamplesForTrackID):
(WebCore::SourceBufferPrivate::minimumUpcomingPresentationTimeForTrackID):
(WebCore::SourceBufferPrivate::setMaximumQueueDepthForTrackID):
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::canSetMinimumUpcomingPresentationTime const):
(WebCore::SourceBufferPrivateAVFObjC::setMinimumUpcomingPresentationTime):
(WebCore::SourceBufferPrivateAVFObjC::clearMinimumUpcomingPresentationTime):
* platform/mock/mediasource/MockSourceBufferPrivate.cpp:
(WebCore::MockSourceBufferPrivate::minimumUpcomingPresentationTimeForTrackID):
(WebCore::MockSourceBufferPrivate::setMaximumQueueDepthForTrackID):
(WebCore::MockSourceBufferPrivate::canSetMinimumUpcomingPresentationTime const):
(WebCore::MockSourceBufferPrivate::setMinimumUpcomingPresentationTime):
(WebCore::MockSourceBufferPrivate::clearMinimumUpcomingPresentationTime):
* platform/mock/mediasource/MockSourceBufferPrivate.h:
* testing/Internals.cpp:
(WebCore::Internals::minimumUpcomingPresentationTimeForTrackID):
(WebCore::Internals::setMaximumQueueDepthForTrackID):
* testing/Internals.h:
* testing/Internals.idl:
2019-08-06 Antti Koivisto <antti@apple.com>
Add release assert against InvalidationRuleSet mutation during invalidation
https://bugs.webkit.org/show_bug.cgi?id=200467
Reviewed by Chris Dumez.
Try to get a more informative stack for rdar://problem/53413013
* css/DocumentRuleSets.cpp:
(WebCore::DocumentRuleSets::~DocumentRuleSets):
(WebCore::DocumentRuleSets::collectFeatures const):
* css/DocumentRuleSets.h:
* style/AttributeChangeInvalidation.cpp:
(WebCore::Style::AttributeChangeInvalidation::invalidateStyleWithRuleSets):
* style/ClassChangeInvalidation.cpp:
(WebCore::Style::ClassChangeInvalidation::invalidateStyleWithRuleSets):
2019-08-06 Antti Koivisto <antti@apple.com>
REGRESSION: Cannot tap on any buttons on m.naver.com home screen on iPad
https://bugs.webkit.org/show_bug.cgi?id=200466
Reviewed by Zalan Bujtas.
The page calls preventDefault() for a mouse event generated by a site specific quirk.
* page/Quirks.cpp:
(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
Disable the quirk for the "m." subdomain. This is a mobile site that don't need or expect them.
2019-08-06 Wenson Hsieh <wenson_hsieh@apple.com>
[iPadOS] Unable to increase zoom level on Google using the Aa menu
https://bugs.webkit.org/show_bug.cgi?id=200453
<rdar://problem/52278579>
Reviewed by Tim Horton.
Makes a couple of minor adjustments to how layout size scale factor is handled in ViewportConfiguration, to
address some scenarios in which adjusting WKWebView's _viewScale does not have any apparent effect on the page.
See changes below for more detail.
Tests: fast/viewport/ios/non-responsive-viewport-after-changing-view-scale.html
fast/viewport/ios/responsive-viewport-with-minimum-width-after-changing-view-scale.html
* page/ViewportConfiguration.cpp:
(WebCore::ViewportConfiguration::initialScaleFromSize const):
When the page is either zoomed in or zoomed out using _viewScale, let the specified initial scale take
precedence over the scale computed by fitting the content width to the view width, or the scale computed by
fitting the content height to the view height.
This avoids a scenario in which nothing happens when increasing view scale in a responsively designed web page
that has a fixed minimum width. Before this change, when computing the initial scale at a view scale that would
not allow the entire content width of the page to fit within the viewport, the new initial scale would remain
unchanged if the initial scale in the meta viewport is not also set to 1, because a new initial scale would be
computed in ViewportConfiguration::initialScaleFromSize to accomodate for the entire content width.
Our new behavior allows us to zoom into the page, even if doing so would cause horizontal scrolling.
(WebCore::ViewportConfiguration::updateConfiguration):
When the page is either zoomed in or zoomed out using _viewScale and the default viewport configuration has a
fixed width (e.g. on iPhone), then adjust the width of the default viewport configuration to account for the
_viewScale. For example, the default width of a viewport-less web page is 980px on iPhone; at a view scale of 2,
this would become 490px instead, and at 0.5 view scale, it would become 1960px.
This ensures that on iPhone, for web pages without a meta viewport, changing the view scale still changes the
layout and initial scale of the web page.
* page/ViewportConfiguration.h:
(WebCore::ViewportConfiguration::layoutSizeIsExplicitlyScaled const):
2019-08-05 Zalan Bujtas <zalan@apple.com>
[LFC] Remove out-of-flow descendants from Container
https://bugs.webkit.org/show_bug.cgi?id=200430
<rdar://problem/53923980>
Reviewed by Antti Koivisto.
The out-of-flow descendant list is the last "formatting context type" bit in the layout tree.
Let's cached them in the FormattingStates instead for now.
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::layoutOutOfFlowDescendants const):
* layout/FormattingContext.h:
* layout/FormattingState.h:
(WebCore::Layout::FormattingState::addOutOfFlowBox):
(WebCore::Layout::FormattingState::outOfFlowBoxes const):
* layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::layoutFormattingContextSubtree):
(WebCore::Layout::LayoutState::createFormattingStateForFormattingRootIfNeeded):
(WebCore::Layout::LayoutState::run):
* layout/LayoutState.h:
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
* layout/layouttree/LayoutBox.h:
* layout/layouttree/LayoutContainer.cpp:
(WebCore::Layout::Container::addOutOfFlowDescendant): Deleted.
* layout/layouttree/LayoutContainer.h:
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutTree):
* page/FrameViewLayoutContext.cpp:
(WebCore::layoutUsingFormattingContext):
2019-08-05 Devin Rousso <drousso@apple.com>
Web Inspector: Styles: show @supports CSS groupings
https://bugs.webkit.org/show_bug.cgi?id=200419
Reviewed by Joseph Pecoraro.
Test: inspector/css/getMatchedStylesForNode.html
* inspector/InspectorStyleSheet.cpp:
(WebCore::buildArrayForGroupings): Added.
(WebCore::InspectorStyleSheet::buildObjectForRule):
(WebCore::buildMediaObject): Deleted.
(WebCore::fillMediaListChain): Deleted.
* css/MediaList.h:
* css/MediaList.cpp:
(WebCore::MediaQuerySet::MediaQuerySet):
Remove the `lastLine` as it was never set by anyone and wasn't used by Web Inspector.
2019-08-05 Youenn Fablet <youenn@apple.com>
Make Logger::log thread safe so that it can be used from background threads
https://bugs.webkit.org/show_bug.cgi?id=200448
Reviewed by Eric Carlson.
No change of behavior.
* dom/Document.cpp:
(WebCore::crossThreadCopy):
(WebCore::Document::didLogMessage):
Make sure to hop to the main thread if needed.
* platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp:
(WebCore::RealtimeIncomingAudioSourceCocoa::OnData):
Remove hopping to the main thread.
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
(WebCore::RealtimeIncomingVideoSourceCocoa::OnFrame):
Remove hopping to the main thread.
2019-08-05 Devin Rousso <drousso@apple.com>
Can't use $0, $1 etc when inspecting Google Docs pages because the content uses these for function names
https://bugs.webkit.org/show_bug.cgi?id=195834
Reviewed by Joseph Pecoraro.
Allow the user to alias saved results by providing a different prefix (e.g. "$") from within
Web Inspector. When changing the alias, all existing saved results will update to be
reference-able from the new alias.
Test: inspector/runtime/setSavedResultAlias.html
* inspector/CommandLineAPIModuleSource.js:
(CommandLineAPI):
2019-08-05 Devin Rousso <drousso@apple.com>
Web Inspector: Timelines: disable related agents when the tab is closed
https://bugs.webkit.org/show_bug.cgi?id=200118
Reviewed by Joseph Pecoraro.
Rework how `enable`/`disable` is used for timeline-related agents so that events are not sent
and data isn't kept alive when the Timelines tab isn't enabled.
* inspector/agents/InspectorTimelineAgent.h:
* inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::didCreateFrontendAndBackend):
(WebCore::InspectorTimelineAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorTimelineAgent::enable):
(WebCore::InspectorTimelineAgent::disable):
(WebCore::InspectorTimelineAgent::start):
(WebCore::InspectorTimelineAgent::stop):
(WebCore::InspectorTimelineAgent::internalStart):
(WebCore::InspectorTimelineAgent::internalStop):
(WebCore::InspectorTimelineAgent::startFromConsole):
(WebCore::InspectorTimelineAgent::stopFromConsole):
(WebCore::InspectorTimelineAgent::mainFrameStartedLoading):
(WebCore::InspectorTimelineAgent::startProgrammaticCapture):
(WebCore::InspectorTimelineAgent::stopProgrammaticCapture):
Rename `m_enabled*` to `m_tracking*` to match other timeline-related agents.
* inspector/agents/InspectorMemoryAgent.h:
* inspector/agents/InspectorMemoryAgent.cpp:
(WebCore::InspectorMemoryAgent::didCreateFrontendAndBackend):
(WebCore::InspectorMemoryAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorMemoryAgent::enable):
(WebCore::InspectorMemoryAgent::disable):
(WebCore::InspectorMemoryAgent::didHandleMemoryPressure):
* inspector/InstrumentingAgents.h:
(WebCore::InstrumentingAgents::trackingInspectorTimelineAgent): Added.
(WebCore::InstrumentingAgents::setTrackingInspectorTimelineAgent): Added.
(WebCore::InstrumentingAgents::persistentInspectorTimelineAgent): Added.
(WebCore::InstrumentingAgents::setPersistentInspectorTimelineAgent): Added.
* inspector/InstrumentingAgents.cpp:
(WebCore::InstrumentingAgents::reset):
* inspector/InspectorInstrumentation.h:
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didInstallTimerImpl):
(WebCore::InspectorInstrumentation::didRemoveTimerImpl):
(WebCore::InspectorInstrumentation::willCallFunctionImpl):
(WebCore::InspectorInstrumentation::willDispatchEventImpl):
(WebCore::InspectorInstrumentation::willDispatchEventOnWindowImpl):
(WebCore::InspectorInstrumentation::willEvaluateScriptImpl):
(WebCore::InspectorInstrumentation::willFireTimerImpl):
(WebCore::InspectorInstrumentation::didInvalidateLayoutImpl):
(WebCore::InspectorInstrumentation::willLayoutImpl):
(WebCore::InspectorInstrumentation::willCompositeImpl):
(WebCore::InspectorInstrumentation::didCompositeImpl):
(WebCore::InspectorInstrumentation::willPaintImpl):
(WebCore::InspectorInstrumentation::didPaintImpl):
(WebCore::InspectorInstrumentation::willRecalculateStyleImpl):
(WebCore::InspectorInstrumentation::didScheduleStyleRecalculationImpl):
(WebCore::InspectorInstrumentation::didCommitLoadImpl):
(WebCore::InspectorInstrumentation::frameStartedLoadingImpl):
(WebCore::InspectorInstrumentation::startConsoleTimingImpl):
(WebCore::InspectorInstrumentation::stopConsoleTimingImpl):
(WebCore::InspectorInstrumentation::consoleTimeStampImpl):
(WebCore::InspectorInstrumentation::startProfilingImpl):
(WebCore::InspectorInstrumentation::stopProfilingImpl):
(WebCore::InspectorInstrumentation::timelineAgentTracking): Added.
(WebCore::InspectorInstrumentation::didRequestAnimationFrameImpl):
(WebCore::InspectorInstrumentation::didCancelAnimationFrameImpl):
(WebCore::InspectorInstrumentation::willFireAnimationFrameImpl):
(WebCore::InspectorInstrumentation::willFireObserverCallbackImpl):
(WebCore::InspectorInstrumentation::retrieveTimelineAgent):
(WebCore::InspectorInstrumentation::timelineAgentEnabled): Deleted.
* bindings/js/JSExecStateInstrumentation.h:
(WebCore::JSExecState::instrumentFunctionInternal):
Rename for clarity/correctness:
- `inspectorTimelineAgent` => `trackingInspectorTimelineAgent`
- `persistentInspectorTimelineAgent` => `inspectorTimelineAgent`
2019-08-05 Fujii Hironori <Hironori.Fujii@sony.com>
[Win] Specifying huge font-size causes crashing
https://bugs.webkit.org/show_bug.cgi?id=200340
Reviewed by Don Olmstead.
Covered by existing tests.
* platform/graphics/win/FontPlatformDataWin.cpp:
(WebCore::FontPlatformData::FontPlatformData): Use GetTextFace to
get font face names instead of GetOutlineTextMetrics which returns
null for huge size fonts.
2019-08-05 Youenn Fablet <youenn@apple.com>
Response constructor doesn't throw on disturbed ReadableStream
https://bugs.webkit.org/show_bug.cgi?id=200130
<rdar://problem/53550351>
Reviewed by Alex Christensen.
Make FetchBody::extract return an exception in error cases.
Update call sites accordingly.
Add the error case as per https://fetch.spec.whatwg.org/#concept-bodyinit-extract, ReadableStream handling.
Covered by updated and rebased tests.
* Modules/beacon/NavigatorBeacon.cpp:
(WebCore::NavigatorBeacon::sendBeacon):
* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::extract):
* Modules/fetch/FetchBody.h:
* Modules/fetch/FetchBodyOwner.cpp:
(WebCore::FetchBodyOwner::extractBody):
* Modules/fetch/FetchBodyOwner.h:
* Modules/fetch/FetchRequest.cpp:
(WebCore::FetchRequest::initializeWith):
(WebCore::FetchRequest::setBody):
* Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::create):
* Modules/streams/ReadableStreamInternals.js:
(readableStreamPipeTo): fix a case where the promise would be unhandled and would show up in
unhandledrejectionhandler.
2019-08-05 Youenn Fablet <youenn@apple.com>
Support RTCRtpSender.dtmf
https://bugs.webkit.org/show_bug.cgi?id=200431
Reviewed by Eric Carlson.
Add a new backend interface to RTCDTMFSender and implementation of it using libwebrtc.
Update RTCDTMFSender to use that new backend and make RTCRtpSender return a RTCDTMFSender
conditionally on a newly added runtime flag.
Update RTCDTMFSender implementation based on https://w3c.github.io/webrtc-pc/#peer-to-peer-dtmf.
Covered by rebased tests.
* Modules/mediastream/PeerConnectionBackend.cpp:
(WebCore::PeerConnectionBackend::context const):
(WebCore::PeerConnectionBackend::transceiverFromSender):
* Modules/mediastream/PeerConnectionBackend.h:
* Modules/mediastream/RTCDTMFSender.cpp:
(WebCore::RTCDTMFSender::RTCDTMFSender):
(WebCore::RTCDTMFSender::canInsertDTMF const):
(WebCore::RTCDTMFSender::toneBuffer const):
(WebCore::isToneCharacterInvalid):
(WebCore::RTCDTMFSender::insertDTMF):
(WebCore::RTCDTMFSender::playNextTone):
(WebCore::RTCDTMFSender::onTonePlayed):
(WebCore::RTCDTMFSender::toneTimerFired):
(WebCore::RTCDTMFSender::stop):
(WebCore::RTCDTMFSender::activeDOMObjectName const):
(WebCore::RTCDTMFSender::canSuspendForDocumentSuspension const):
* Modules/mediastream/RTCDTMFSender.h:
* Modules/mediastream/RTCDTMFSender.idl:
* Modules/mediastream/RTCDTMFToneChangeEvent.cpp:
* Modules/mediastream/RTCDTMFToneChangeEvent.h:
* Modules/mediastream/RTCDTMFToneChangeEvent.idl:
* Modules/mediastream/RTCRtpSender.cpp:
(WebCore::RTCRtpSender::dtmf):
(WebCore::RTCRtpSender::currentTransceiverDirection const):
* Modules/mediastream/RTCRtpSender.h:
* Modules/mediastream/RTCRtpSender.idl:
* Modules/mediastream/RTCRtpSenderBackend.h:
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
(WebCore::LibWebRTCRtpSenderBackend::createDTMFBackend):
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/EventNames.in:
* dom/EventTargetFactory.in:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::webRTCDTMFEnabled const):
(WebCore::RuntimeEnabledFeatures::setWebRTCDTMFEnabled):
* platform/mediastream/RTCDTMFSenderBackend.h: Added.
* platform/mediastream/RTCDTMFSenderHandler.h: Removed.
* platform/mediastream/RTCDTMFSenderHandlerClient.h: Removed.
* platform/mediastream/libwebrtc/LibWebRTCDTMFSenderBackend.cpp: Added.
(WebCore::toWTFString):
(WebCore::LibWebRTCDTMFSenderBackend::LibWebRTCDTMFSenderBackend):
(WebCore::LibWebRTCDTMFSenderBackend::~LibWebRTCDTMFSenderBackend):
(WebCore::LibWebRTCDTMFSenderBackend::canInsertDTMF):
(WebCore::LibWebRTCDTMFSenderBackend::playTone):
(WebCore::LibWebRTCDTMFSenderBackend::tones const):
(WebCore::LibWebRTCDTMFSenderBackend::duration const):
(WebCore::LibWebRTCDTMFSenderBackend::interToneGap const):
(WebCore::LibWebRTCDTMFSenderBackend::OnToneChange):
(WebCore::LibWebRTCDTMFSenderBackend::onTonePlayed):
* platform/mediastream/libwebrtc/LibWebRTCDTMFSenderBackend.h: Added.
2019-08-05 Saam Barati <sbarati@apple.com>
[WHLSL] Inline all native function calls
https://bugs.webkit.org/show_bug.cgi?id=200350
Reviewed by Robin Morisset.
Native functions calls tend to be really small. If we inline in the generated
Metal code, we end up with faster Metal compile times. On compute_boids, this
provides a ~10ms improvement.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
(WebCore::WHLSL::Metal::sharedMetalFunctions):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::inlineNativeFunction):
(WebCore::WHLSL::Metal::writeNativeFunction): Deleted.
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.h:
2019-08-05 Youenn Fablet <youenn@apple.com>
RealtimeOutgoingAudioSource::pullAudioData is no longer needed
https://bugs.webkit.org/show_bug.cgi?id=200450
Reviewed by Geoffrey Garen.
No change of behavior, removing base class method declaration.
* platform/mediastream/RealtimeOutgoingAudioSource.h:
(WebCore::RealtimeOutgoingAudioSource::pullAudioData): Deleted.
* platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.h:
* platform/mediastream/mac/RealtimeOutgoingAudioSourceCocoa.h:
2019-08-05 Saam Barati <sbarati@apple.com>
[WHLSL] Add compile time flag to dump metal compile times
https://bugs.webkit.org/show_bug.cgi?id=200447
Reviewed by Myles C. Maxfield.
* Modules/webgpu/WHLSL/WHLSLPrepare.h:
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm:
(WebCore::trySetFunctions):
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::trySetFunctions):
2019-08-05 Chris Dumez <cdumez@apple.com>
navigator.geolocation wrapper should not become GC-collectable once its frame is detached
https://bugs.webkit.org/show_bug.cgi?id=200436
Reviewed by Darin Adler.
navigator.geolocation wrapper should not become GC-collectable once its frame is detached, given
that it can outlive the frame. Instead, tie the navigator.geolocation wrapper's lifetime to its
Navigator's.
Test: fast/dom/navigator-property-gc-after-frame-detach.html
* Modules/geolocation/Geolocation.cpp:
(WebCore::Geolocation::create):
(WebCore::Geolocation::Geolocation):
(WebCore::Geolocation::navigator):
(WebCore::Geolocation::frame const):
* Modules/geolocation/Geolocation.h:
* Modules/geolocation/Geolocation.idl:
* Modules/geolocation/NavigatorGeolocation.cpp:
(WebCore::NavigatorGeolocation::NavigatorGeolocation):
(WebCore::NavigatorGeolocation::from):
(WebCore::NavigatorGeolocation::geolocation):
(WebCore::NavigatorGeolocation::geolocation const):
* Modules/geolocation/NavigatorGeolocation.h:
* bindings/js/JSNavigatorCustom.cpp:
(WebCore::JSNavigator::visitAdditionalChildren):
* bindings/js/JSWorkerNavigatorCustom.cpp:
(WebCore::JSWorkerNavigator::visitAdditionalChildren):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
* bindings/scripts/IDLAttributes.json:
* page/Navigator.cpp:
(WebCore::Navigator::plugins):
(WebCore::Navigator::mimeTypes):
* page/NavigatorBase.h:
* plugins/DOMMimeTypeArray.cpp:
(WebCore::DOMMimeTypeArray::DOMMimeTypeArray):
* plugins/DOMMimeTypeArray.h:
* plugins/DOMMimeTypeArray.idl:
* plugins/DOMPluginArray.cpp:
(WebCore::DOMPluginArray::DOMPluginArray):
* plugins/DOMPluginArray.h:
* plugins/DOMPluginArray.idl:
* workers/service/ServiceWorkerContainer.h:
* workers/service/ServiceWorkerContainer.idl:
2019-08-05 Andy Estes <aestes@apple.com>
[WebIDL] Support partial dictionaries and conditional dictionary members
https://bugs.webkit.org/show_bug.cgi?id=200441
Reviewed by Alex Christensen.
Added new bindings tests.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateDictionaryImplementationContent):
* bindings/scripts/IDLParser.pm:
(parsePartialDefinition):
(parsePartialInterface): Deleted.
(parsePartialDictionary): Deleted.
* bindings/scripts/generate-bindings.pl:
(generateBindings):
* bindings/scripts/preprocess-idls.pl:
(getPartialNamesFromIDL):
(getPartialInterfaceNameFromIDL): Deleted.
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
(WebCore::convertDictionary<TestEventConstructor::Init>):
* bindings/scripts/test/JS/JSTestStandaloneDictionary.cpp:
(WebCore::convertDictionary<DictionaryImplName>):
(WebCore::convertDictionaryToJS):
* bindings/scripts/test/JS/JSTestStandaloneDictionary.h:
* bindings/scripts/test/TestStandaloneDictionary.idl:
* bindings/scripts/test/TestSupplemental.idl:
2019-08-05 Devin Rousso <drousso@apple.com>
Web Inspector: rename "Stylesheet" to "Style Sheet" to match spec text
https://bugs.webkit.org/show_bug.cgi?id=200422
Reviewed by Joseph Pecoraro.
No observable change in functionality.
* inspector/agents/InspectorPageAgent.h:
* inspector/agents/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::resourceTypeJSON):
(WebCore::InspectorPageAgent::inspectorResourceType):
2019-08-05 Takashi Komori <Takashi.Komori@sony.com>
[Curl] implement CertificateInfo::summaryInfo
https://bugs.webkit.org/show_bug.cgi?id=191498
Reviewed by Alex Christensen.
Implement CertificaeInfo::SummaryInfo.
This patch makes WebInspector show summary of certificates.
Tests: http/tests/inspector/network/resource-security-certificate.html
http/tests/inspector/network/getSerializedCertificate.html
* platform/Curl.cmake:
* platform/network/curl/CertificateInfo.h:
(WTF::Persistence::Coder<WebCore::CertificateInfo>::encode):
(WTF::Persistence::Coder<WebCore::CertificateInfo>::decode):
(WebCore::CertificateInfo::summaryInfo const): Deleted.
* platform/network/curl/CertificateInfoCurl.cpp:
(WebCore::CertificateInfo::summaryInfo const):
* platform/network/curl/CurlSSLVerifier.cpp:
(WebCore::CurlSSLVerifier::collectInfo):
(WebCore::CurlSSLVerifier::verifyCallback):
(WebCore::StackOfX509::StackOfX509): Deleted.
(WebCore::StackOfX509::~StackOfX509): Deleted.
(WebCore::StackOfX509::count): Deleted.
(WebCore::StackOfX509::item): Deleted.
(): Deleted.
(WebCore::BIOHolder::BIOHolder): Deleted.
(WebCore::BIOHolder::~BIOHolder): Deleted.
(WebCore::BIOHolder::write): Deleted.
(WebCore::BIOHolder::asCertificate): Deleted.
(WebCore::pemDataFromCtx): Deleted.
* platform/network/curl/CurlSSLVerifier.h:
* platform/network/curl/OpenSSLHelper.cpp: Added.
(OpenSSL::deleter<X509>::operator()):
(OpenSSL::StackOfGeneralName::StackOfGeneralName):
(OpenSSL::StackOfGeneralName::~StackOfGeneralName):
(OpenSSL::StackOfGeneralName::operator bool):
(OpenSSL::StackOfGeneralName::count):
(OpenSSL::StackOfGeneralName::item):
(OpenSSL::StackOfX509::StackOfX509):
(OpenSSL::StackOfX509::~StackOfX509):
(OpenSSL::StackOfX509::count):
(OpenSSL::StackOfX509::item):
(OpenSSL::BIO::BIO):
(OpenSSL::BIO::~BIO):
(OpenSSL::BIO::getDataAsVector const):
(OpenSSL::BIO::getDataAsString const):
(OpenSSL::BIO::readX509):
(OpenSSL::BIO::get):
(OpenSSL::pemDataFromCtx):
(OpenSSL::createCertificateInfo):
(OpenSSL::toString):
(OpenSSL::getCommonName):
(OpenSSL::getSubjectName):
(OpenSSL::convertASN1TimeToSeconds):
(OpenSSL::getSubjectAltName):
(OpenSSL::createSummaryInfo):
* platform/network/curl/OpenSSLHelper.h: Copied from Source/WebCore/platform/network/curl/CertificateInfoCurl.cpp.
2019-08-04 Youenn Fablet <youenn@apple.com>
WebRTC: got incorrect `this` in negotiationneeded event
https://bugs.webkit.org/show_bug.cgi?id=200427
Reviewed by Darin Adler.
Make sure a dom object created through a JS built-in constructor is added to the wrapper cache.
Test: webrtc/onnegotiationneeded.html
* bindings/js/JSDOMBuiltinConstructor.h:
(WebCore::createJSObjectFromWrapper):
(WebCore::createJSObject):
2019-08-04 Sam Weinig <weinig@apple.com>
Mangled WHLSL names don't need to allocate Strings
https://bugs.webkit.org/show_bug.cgi?id=200429
Reviewed by Saam Barati.
To avoid allocating strings for each mangled name used to transform WHLSL to Metal, which we'd
like to avoid since it is both unnecessarily expensive in time and space, we can instead just
store the unique integer identifier that was being used to construct the String.
Since the existing mangled names were all of the form "prefix" + unsigned integer value (where
prefix could be "type", "enumerationMember", "structureElement", "variable" or "function") we
strongly type the integer by storing it in a struct (MangledVariableName, MangledTypeName, etc.)
When the full name is actually needed, StringTypeAdapter's specialized for the structs are
used to write directly into the preallocated buffers of StringBuilders or makeString().
* Modules/webgpu/WHLSL/Metal/WHLSLMangledNames.h: Added.
(WebCore::WHLSL::Metal::MangledVariableName):
(WebCore::WHLSL::Metal::MangledTypeName):
(WebCore::WHLSL::Metal::MangledStructureElementName):
(WebCore::WHLSL::Metal::MangledEnumerationMemberName):
(WebCore::WHLSL::Metal::MangledFunctionName):
Adds structs for each type of mangled name and StringTypeAdapter specializations for
each to allow their use in StringBuilder.flexibleAppend() or makeString().
Additionally, a Variant, MangledOrNativeTypeName, of MangledTypeName and String is
declared to allow for the few cases where a native type (e.g. float4) is needed. The
StringTypeAdapter for MangledOrNativeTypeName could be generalized for any Variant
in the future, but I left it non-general for now, as it is non-obvious if one would
want to store Variant<Types...>, and have each member function construct a temporary
StringTypeAdapter, or store a Variant<StringTypeAdapter<Types>...> and perform conversion
in the construction.
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
(WebCore::WHLSL::Metal::EntryPointScaffolding::EntryPointScaffolding):
(WebCore::WHLSL::Metal::internalTypeForSemantic):
(WebCore::WHLSL::Metal::EntryPointScaffolding::builtInsSignature):
(WebCore::WHLSL::Metal::EntryPointScaffolding::mangledInputPath):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::VertexEntryPointScaffolding):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::signature):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::pack):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::FragmentEntryPointScaffolding):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::signature):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::pack):
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::ComputeEntryPointScaffolding):
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::signature):
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::pack):
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h:
(WebCore::WHLSL::Metal::EntryPointScaffolding::parameterVariables):
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDeclarationWriter::FunctionDeclarationWriter):
(WebCore::WHLSL::Metal::FunctionDeclarationWriter::visit):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::FunctionDefinitionWriter):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::generateNextVariableName):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::appendRightValueWithNullability):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::appendRightValue):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::appendLeftValue):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::takeLastValue):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::takeLastValueAndNullability):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::takeLastLeftValue):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::emitLoop):
(WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::RenderFunctionDefinitionWriter):
(WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::createEntryPointScaffolding):
(WebCore::WHLSL::Metal::ComputeFunctionDefinitionWriter::ComputeFunctionDefinitionWriter):
(WebCore::WHLSL::Metal::ComputeFunctionDefinitionWriter::createEntryPointScaffolding):
(WebCore::WHLSL::Metal::sharedMetalFunctions):
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.h:
* Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.h:
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeFunction):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.h:
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::BaseTypeNameNode::BaseTypeNameNode):
(WebCore::WHLSL::Metal::BaseTypeNameNode::mangledName const):
(WebCore::WHLSL::Metal::ArrayTypeNameNode::ArrayTypeNameNode):
(WebCore::WHLSL::Metal::ArrayReferenceTypeNameNode::ArrayReferenceTypeNameNode):
(WebCore::WHLSL::Metal::PointerTypeNameNode::PointerTypeNameNode):
(WebCore::WHLSL::Metal::ReferenceTypeNameNode::ReferenceTypeNameNode):
(WebCore::WHLSL::Metal::MetalTypeDeclarationWriter::MetalTypeDeclarationWriter):
(WebCore::WHLSL::Metal::TypeNamer::metalTypeDeclarations):
(WebCore::WHLSL::Metal::TypeNamer::emitNamedTypeDefinition):
(WebCore::WHLSL::Metal::TypeNamer::mangledNameForType):
(WebCore::WHLSL::Metal::TypeNamer::mangledNameForEnumerationMember):
(WebCore::WHLSL::Metal::TypeNamer::mangledNameForStructureElement):
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.h:
(WebCore::WHLSL::Metal::TypeNamer::generateNextTypeName):
(WebCore::WHLSL::Metal::TypeNamer::generateNextStructureElementName):
(WebCore::WHLSL::Metal::TypeNamer::generateNextEnumerationMemberName):
* Modules/webgpu/WHLSL/WHLSLPrepare.h:
Replace uses of String with the appropriate mangled name type.
* WebCore.xcodeproj/project.pbxproj:
Add WHLSLMangledNames.h
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm:
(WebCore::trySetFunctions):
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::trySetFunctions):
Convert the mangled names to Strings for passing to Metal API. NOTE: We could avoid having the
toString() member function on MangledFunctionName if we allowed makeString() to take a single
argument.
2019-08-04 Chris Dumez <cdumez@apple.com>
Ping loads should not prevent page caching
https://bugs.webkit.org/show_bug.cgi?id=200418
<rdar://problem/53901632>
Reviewed by Darin Adler.
We normally prevent page caching if there were any pending subresource loads when navigating,
to avoid caching partial / broken content. However, this should not apply to Ping / Beacon
loads since those do not impact page rendering and can outlive the page.
Tests: http/tests/navigation/page-cache-pending-ping-load-cross-origin.html
http/tests/navigation/page-cache-pending-ping-load-same-origin.html
* history/PageCache.cpp:
(WebCore::PageCache::addIfCacheable):
After we've fired the 'pagehide' event in each frame, stop all the loads again. This is needed
since pages are allowed to start ping / beacon loads in their 'pagehide' handlers. If we do not
stop those loads, then the next call to canCachePage() would fail because the DocumentLoader is
still loading. Note that we're not actually preventing these ping loads from hitting the server
since we never cancel page loads and those can outlive their page.
* loader/DocumentLoader.cpp:
(WebCore::shouldPendingCachedResourceLoadPreventPageCache):
(WebCore::areAllLoadersPageCacheAcceptable):
Make sure that Ping / Beacon / Prefetches / Icon loads do not prevent page caching.
(WebCore::DocumentLoader::addSubresourceLoader):
Tweak assertion that was incorrect since we actually allow ping / beacon loads when the
document is about to enter PageCache (while firing pagehide event).
2019-08-04 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Create formatting context/state.
https://bugs.webkit.org/show_bug.cgi?id=200428
<rdar://problem/53913625>
Reviewed by Antti Koivisto.
* layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::createFormattingStateForFormattingRootIfNeeded):
(WebCore::Layout::LayoutState::createFormattingContext):
2019-08-04 Zalan Bujtas <zalan@apple.com>
[LFC] Cleanup preferred width computation
https://bugs.webkit.org/show_bug.cgi?id=200426
<rdar://problem/53912607>
Reviewed by Antti Koivisto.
The intrinsic width for a formatting root box has 2 sets of values now. One set(min/max) is stored in the established formatting context's state
while the other is in the formatting context's state where the box lives.
<div style="position: absolute"><div style="float: left; border: 1px solid green">foobar</div></div>
The float box participates in the formatting context established by the absolutely position box, but it also establishes an inline formatting context.
The min/max width pair in the established context is the width of the "foobar" (same value for min/max). This set is stored in the inline formatting state.
However the float box has horizontal border so the "final" min/max width pair is expanded by this border value and stored in the formatting state where
the box lives (which is different from the one it establishes).
This and the "remove the formatting context type classes from the tree" changes open up interesting optimization opportunities.
Here is a very simple case:
<div style="display: inline-block; width: auto;">
<div style="float: left">some text</div>
<div style="float: left">some super long .... text</div>
<div></div>
</div>
In order to lay out this content properly, we
1. Compute the min/max width of the first float (expensive text measuring)
2. Compute the min/max width of the second float (some more expensive text measuring)
3. Compute the min/max width of the inline-block (that is pretty much the 2 float's min/max)
4. Lay out the 2 floats, the empty div and the inline-block using these min/max width pairs.
Now if the inline-block box's display value is changed to "block" and the positioning is to absolute (style="display: box; position: absolute;")
we currently(on trunk) tear down the render tree, build a new one and run all the steps again from #1 to #4.
In LFC, we start with the following layout tree
<container> -> block formatting context
<container> -> inline formatting context
<anonymous inline box>
<container> -> inline formatting context
<anonymous inline box>
<container> -> inline formatting context
and when the style change happens, we don't need to tear down the tree at all. Not only that, but since every formatting contexts stay the same
we can just reuse their states and actually skip all the steps (even the positioning since the absolutely positioned container has static top/bottom/left/right).
Surprisingly the final layout produces the exact same "display boxes" as the original layout.
* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::IntrinsicWidthConstraints::expand):
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
* layout/FormattingState.h:
(WebCore::Layout::FormattingState::setIntrinsicWidthConstraints):
(WebCore::Layout::FormattingState::intrinsicWidthConstraints const):
(WebCore::Layout::FormattingState::setIntrinsicWidthConstraintsForBox):
(WebCore::Layout::FormattingState::clearIntrinsicWidthConstraints):
(WebCore::Layout::FormattingState::intrinsicWidthConstraintsForBox const):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computedIntrinsicWidthConstraints const):
(WebCore::Layout::BlockFormattingContext::computeIntrinsicWidthConstraints const): Deleted.
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::intrinsicWidthConstraints):
(WebCore::Layout::BlockFormattingContext::Geometry::intrinsicWidthConstraintsNeedChildrenWidth): Deleted.
* layout/displaytree/DisplayBox.h:
(WebCore::Display::Box::horizontalMarginBorderAndPadding const):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::nextInPreOrder):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints const):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot const):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthConstraints const): Deleted.
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFloatBox const): Deleted.
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForInlineBlock const): Deleted.
* layout/inlineformatting/InlineFormattingContext.h:
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::computedIntrinsicWidthConstraints const):
* layout/tableformatting/TableFormattingContext.h:
2019-08-03 Devin Rousso <drousso@apple.com>
Web Inspector: DOM: add a special breakpoint for "All Events"
https://bugs.webkit.org/show_bug.cgi?id=200285
Reviewed by Joseph Pecoraro.
Similar to the existing "All Requests" breakpoint, there should be a way to set a breakpoint
that would pause for any DOM event, regardless of the event's name. This is useful for
situations where the event name isn't known, or where one simply want's to pause on the next
entry to the event loop.
Along these lines, make the "requestAnimationFrame", "setTimeout", and "setInterval"
event breakpoints into special breakpoints that can be added/removed via the create
breakpoint context menu. This simplifies the process for setting these breakpoints, and also
makes them more discoverable (most people wouldn't consider them to be "events").
Tests: inspector/dom/breakpoint-for-event-listener.html
inspector/dom-debugger/event-animation-frame-breakpoints.html
inspector/dom-debugger/event-breakpoint-with-navigation.html
inspector/dom-debugger/event-interval-breakpoints.html
inspector/dom-debugger/event-listener-breakpoints.html
inspector/dom-debugger/event-timeout-breakpoints.html
* inspector/agents/InspectorDOMDebuggerAgent.h:
* inspector/agents/InspectorDOMDebuggerAgent.cpp:
(WebCore::InspectorDOMDebuggerAgent::disable):
(WebCore::InspectorDOMDebuggerAgent::frameDocumentUpdated):
(WebCore::InspectorDOMDebuggerAgent::setEventBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::removeEventBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::willHandleEvent):
(WebCore::InspectorDOMDebuggerAgent::willFireTimer):
(WebCore::InspectorDOMDebuggerAgent::willFireAnimationFrame):
(WebCore::InspectorDOMDebuggerAgent::discardBindings): Deleted.
Make `eventName` optional for `addEventBreakpoint`/`removeEventBreakpoint`. When omitted,
the corresponding breakpoint that is added/removed is treated as a global breakpoint that
applies to all events of that type (e.g. a global `listener` breakpoint would pause for any
event that is fired).
2019-08-03 Zalan Bujtas <zalan@apple.com>
[LFC] Remove formatting context type leaf classes
https://bugs.webkit.org/show_bug.cgi?id=200224
<rdar://problem/53661907>
Reviewed by Antti Koivisto.
Let's keep the layout tree formatting context type independent.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layout const):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthConstraints const):
(WebCore::Layout::InlineFormattingContext::initializeMarginBorderAndPaddingForGenericInlineBox const):
(WebCore::Layout::InlineFormattingContext::collectInlineContent const):
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::inlineItemWidth):
(WebCore::Layout::LineLayout::placeInlineItem):
* layout/inlineformatting/InlineItem.h:
* layout/inlineformatting/InlineTextItem.cpp:
(WebCore::Layout::InlineTextItem::createAndAppendTextItems):
(WebCore::Layout::InlineTextItem::InlineTextItem):
(WebCore::Layout::InlineTextItem::split const):
* layout/inlineformatting/InlineTextItem.h:
(WebCore::Layout::InlineTextItem::inlineBox const): Deleted.
* layout/inlineformatting/text/TextUtil.cpp:
(WebCore::Layout::TextUtil::width):
(WebCore::Layout::TextUtil::split):
* layout/inlineformatting/text/TextUtil.h:
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::Box):
(WebCore::Layout::Box::~Box):
(WebCore::Layout::Box::formattingContextRoot const):
(WebCore::Layout::Box::setTextContent):
(WebCore::Layout::Box::hasTextContent const):
(WebCore::Layout::Box::textContent const):
(WebCore::Layout::Box::replaced const):
(WebCore::Layout::Box::replaced):
(WebCore::Layout::Box::rareDataMap):
(WebCore::Layout::Box::rareData const):
(WebCore::Layout::Box::ensureRareData):
(WebCore::Layout::Box::removeRareData):
* layout/layouttree/LayoutBox.h:
(WebCore::Layout::Box::isLineBreakBox const):
(WebCore::Layout::Box::hasRareData const):
(WebCore::Layout::Box::setHasRareData):
(WebCore::Layout::Box::isInlineBox const): Deleted.
(WebCore::Layout::Box::replaced const): Deleted.
(WebCore::Layout::Box::replaced): Deleted.
* layout/layouttree/LayoutContainer.h:
(WebCore::Layout::Container::firstChild const): Deleted.
(WebCore::Layout::Container::lastChild const): Deleted.
(WebCore::Layout::Container::hasChild const): Deleted.
(WebCore::Layout::Container::hasInFlowChild const): Deleted.
(WebCore::Layout::Container::hasInFlowOrFloatingChild const): Deleted.
(WebCore::Layout::Container::outOfFlowDescendants const): Deleted.
* layout/layouttree/LayoutInlineBox.cpp: Removed.
* layout/layouttree/LayoutInlineBox.h: Removed.
* layout/layouttree/LayoutLineBreakBox.cpp: Removed.
* layout/layouttree/LayoutLineBreakBox.h: Removed.
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutBox):
(WebCore::Layout::outputLayoutBox):
2019-08-03 Zalan Bujtas <zalan@apple.com>
[LFC] Remove formatting context type container classes.
https://bugs.webkit.org/show_bug.cgi?id=200202
Reviewed by Antti Koivisto.
These are formatting context specific classes. Let's try to have a layout tree without such types.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeIntrinsicWidthConstraints const):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layout const):
(WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPaddingForInlineContainer const):
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::appendTextContent):
* layout/layouttree/LayoutBlockContainer.cpp: Removed.
* layout/layouttree/LayoutBlockContainer.h: Removed.
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::establishesInlineFormattingContext const):
(WebCore::Layout::Box::establishesInlineFormattingContextOnly const):
(WebCore::Layout::Box::formattingContextRoot const):
* layout/layouttree/LayoutBox.h:
(WebCore::Layout::Box::isBlockContainer const):
(WebCore::Layout::Box::isInlineContainer const):
(WebCore::Layout::Box::isInlineBox const):
(WebCore::Layout::Box::establishesInlineFormattingContext const): Deleted.
(WebCore::Layout::Box::establishesInlineFormattingContextOnly const): Deleted.
* layout/layouttree/LayoutInlineContainer.cpp: Removed.
* layout/layouttree/LayoutInlineContainer.h: Removed.
* layout/layouttree/LayoutIterator.h:
(WebCore::Layout::LayoutBoxTraversal::firstChild):
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutTree):
(WebCore::Layout::TreeBuilder::createLayoutBox):
(WebCore::Layout::TreeBuilder::createTableStructure):
(WebCore::Layout::outputLayoutBox):
* layout/layouttree/LayoutTreeBuilder.h:
* page/FrameViewLayoutContext.cpp:
(WebCore::layoutUsingFormattingContext):
2019-08-02 Robin Morisset <rmorisset@apple.com>
[WHLSL] Avoid visiting the full AST in computeDimensions
https://bugs.webkit.org/show_bug.cgi?id=200410
Reviewed by Myles C. Maxfield.
Avoid visiting the full AST in computeDimensions
This cuts the time spent in computeDimensions on compute_boids.html from about 2ms to about 0.002ms.
No new tests as there is no functional change intended.
* Modules/webgpu/WHLSL/WHLSLComputeDimensions.cpp:
(WebCore::WHLSL::computeDimensions):
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
2019-08-02 Ryosuke Niwa <rniwa@webkit.org>
Ref Frame in DOMWindow::screen* functions
https://bugs.webkit.org/show_bug.cgi?id=200409
Reviewed by Simon Fraser.
Ref Frame in the following functions.
* page/DOMWindow.cpp:
(WebCore::DOMWindow::innerHeight const):
(WebCore::DOMWindow::innerWidth const):
(WebCore::DOMWindow::screenX const):
(WebCore::DOMWindow::screenY const):
(WebCore::DOMWindow::scrollX const):
(WebCore::DOMWindow::scrollY const):
2019-08-02 Mark Lam <mark.lam@apple.com>
[ARM64E] Harden the diversity of the DOMJIT::Signature::unsafeFunction pointer.
https://bugs.webkit.org/show_bug.cgi?id=200292
<rdar://problem/53706881>
Reviewed by Geoffrey Garen.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
- Update to work with the new DOMJIT::Signature constructor.
* bindings/scripts/test/JS/JSTestDOMJIT.cpp:
- Re-base test results.
2019-08-02 Keith Rollin <krollin@apple.com>
Consistently use Obj-C boolean literals
https://bugs.webkit.org/show_bug.cgi?id=200405
<rdar://problem/53880043>
Reviewed by Simon Fraser, Joseph Pecoraro.
There are places where we use equivalent but different expressions for
Obj-C boolean objects. For example, we use both [NSNumber
numberWithBool:YES] and @YES. There are places where both are used in
the same function, such as -[WebPreferences initialize]. The boolean
literal is in greater use and is more succinct, so standardize on
that. Also, change @(YES/NO) to @YES/NO.
No new tests -- no new or changed functionality.
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
* platform/graphics/cv/ImageTransferSessionVT.mm:
(WebCore::ImageTransferSessionVT::ImageTransferSessionVT):
(WebCore::ImageTransferSessionVT::setSize):
(WebCore::ImageTransferSessionVT::ioSurfacePixelBufferCreationOptions):
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
(WebCore::RealtimeIncomingVideoSourceCocoa::pixelBufferPool):
* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
(WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream):
* platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::applySniffingPoliciesIfNeeded):
2019-08-02 Andres Gonzalez <andresg_22@apple.com>
Add accessibility object method to determine whether an element is inside a table cell. Needed for iOS accessibility client.
https://bugs.webkit.org/show_bug.cgi?id=200394
<rdar://problem/52914964>
Reviewed by Chris Fleizach.
Explicitly returning BOOL to avoid error in some compiler configurations.
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper _accessibilityIsInTableCell]):
2019-08-02 Devin Rousso <drousso@apple.com>
Web Inspector: fix inverted check in InspectorDOMStorageAgent::enable
Followup to r248179.
Rubber-stamped by Joseph Pecoraro.
* inspector/agents/InspectorDOMStorageAgent.cpp:
(WebCore::InspectorDOMStorageAgent::enable):
2019-08-02 Fujii Hironori <Hironori.Fujii@sony.com>
[Curl] Crash while destructing a URL in ~SocketStreamHandle due to data race
https://bugs.webkit.org/show_bug.cgi?id=200378
Reviewed by Ross Kirsling.
URL::isolatedCopy() is called in the worker thread. URL is using a
thread-unsafe ref-counter. It should be called in the main thread.
Covered by existing tests.
* platform/network/curl/SocketStreamHandleImpl.h:
* platform/network/curl/SocketStreamHandleImplCurl.cpp:
(WebCore::SocketStreamHandleImpl::SocketStreamHandleImpl): Call URL::isolatedCopy() in the main thread.
(WebCore::SocketStreamHandleImpl::threadEntryPoint): Added a URL argument.
2019-08-02 Sihui Liu <sihui_liu@apple.com>
API tests using permanent credentials should clear credentials left by previous tests
https://bugs.webkit.org/show_bug.cgi?id=199729
Reviewed by Alex Christensen.
Update existing API tests.
* platform/network/CredentialStorage.cpp:
(WebCore::CredentialStorage::clearSessionCredentials):
(WebCore::CredentialStorage::clearPermanentCredentialsForProtectionSpace): Deleted.
* platform/network/CredentialStorage.h:
* platform/network/mac/CredentialStorageMac.mm:
(WebCore::CredentialStorage::clearPermanentCredentialsForProtectionSpace): Deleted.
2019-08-02 Devin Rousso <drousso@apple.com>
Web Inspector: Storage: disable related agents when the tab is closed
https://bugs.webkit.org/show_bug.cgi?id=200117
Reviewed by Joseph Pecoraro.
Rework how `enable`/`disable` is used for storage-related agents so that events are not sent
and data isn't kept alive when the Storage tab isn't enabled.
Covered by existing tests.
* inspector/agents/InspectorApplicationCacheAgent.h:
* inspector/agents/InspectorApplicationCacheAgent.cpp:
(WebCore::InspectorApplicationCacheAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorApplicationCacheAgent::enable):
(WebCore::InspectorApplicationCacheAgent::disable): Added.
* inspector/agents/InspectorDOMStorageAgent.cpp:
(WebCore::InspectorDOMStorageAgent::enable):
(WebCore::InspectorDOMStorageAgent::disable):
* inspector/agents/InspectorDatabaseAgent.cpp:
(WebCore::InspectorDatabaseAgent::enable):
(WebCore::InspectorDatabaseAgent::disable):
2019-08-02 Devin Rousso <drousso@apple.com>
Web Inspector: Timelines: Develop > Start Timeline Recording doesn't work when focused on a detached inspector window
https://bugs.webkit.org/show_bug.cgi?id=200125
<rdar://problem/53543008>
Reviewed by Brian Burg.
Always show the Timelines tab in Web Inspector whenever timeline recording starts/stops.
Notify the UIProcess whenever the timeline recording state changes.
* inspector/InspectorClient.h:
(WebCore::InspectorClient::timelineRecordingChanged): Added.
* inspector/agents/InspectorTimelineAgent.h:
* inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::InspectorTimelineAgent):
(WebCore::InspectorTimelineAgent::internalStart):
(WebCore::InspectorTimelineAgent::internalStop):
2019-08-02 Yury Semikhatsky <yurys@chromium.org>
Web Inspector: Crash when interacting with Template Content in Console
https://bugs.webkit.org/show_bug.cgi?id=196280
Reviewed by Joseph Pecoraro.
Test: inspector/dom/inspect-template-node.html
* bindings/js/JSDOMBindingSecurity.cpp:
(WebCore::canAccessDocument): if target element is from a
<template> use its host document to check the access. Elements
from the host document always have access to its template elements content.
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::resolveNode): templates are created in
special template document which doesn't have a frame, in such case get
the frame from the host document.
2019-08-02 Ryosuke Niwa <rniwa@webkit.org>
Harden NodeRareData::m_connectedFrameCount
https://bugs.webkit.org/show_bug.cgi?id=200300
Reviewed by Geoffrey Garen.
Use unsinged integer type in NodeRareData::m_connectedFrameCount since it's padded anyway.
* dom/Node.cpp:
(WebCore::Node::decrementConnectedSubframeCount): Check that hasRareNode() is true in release builds.
* dom/NodeRareData.h:
2019-08-02 Ryosuke Niwa <rniwa@webkit.org>
Document::resume should delay resetting of form control elements.
https://bugs.webkit.org/show_bug.cgi?id=200376
Reviewed by Geoffrey Garen.
Delay the execution of form control element resets until the next task
to avoid synchronously mutating DOM during page cache restoration.
Test: fast/frames/restoring-page-cache-should-not-run-scripts.html
* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::resumeFromDocumentSuspension):
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::resumeFromDocumentSuspension):
2019-08-02 Youenn Fablet <youenn@apple.com>
[iOS] Directly use RealtimeMediaSourceCenter to compute the media capture state
https://bugs.webkit.org/show_bug.cgi?id=200368
<rdar://problem/53191450>
Unreviewed.
Build fix by guarding with MEDIA_STREAM in addition to IOS.
* dom/Document.cpp:
(WebCore::Document::updateIsPlayingMedia):
(WebCore::Document::pageMutedStateDidChange):
2019-08-02 Andres Gonzalez <andresg_22@apple.com>
Add accessibility object method to determine whether an element is inside a table cell. Needed for iOS accessibility client.
https://bugs.webkit.org/show_bug.cgi?id=200394
<rdar://problem/52914964>
Reviewed by Chris Fleizach.
Test: accessibility/ios-simulator/element-in-table-cell.html
Added _accessibilityIsInTableCell needed for iOS accessibility client.
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper _accessibilityIsInTableCell]):
2019-08-02 Eric Carlson <eric.carlson@apple.com>
[macOS, iOS] webaudio/silent-audio-interrupted-in-background.html sometimes crashes
https://bugs.webkit.org/show_bug.cgi?id=200396
<rdar://problem/53819720>
Reviewed by Youenn Fablet.
No new test, this fixes an existing test.
* platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:
(WebCore::AudioSourceProviderAVFObjC::~AudioSourceProviderAVFObjC): Drop the
lock before clearing m_tapStorage.
2019-08-02 Youenn Fablet <youenn@apple.com>
[iOS] Directly use RealtimeMediaSourceCenter to compute the media capture state
https://bugs.webkit.org/show_bug.cgi?id=200368
<rdar://problem/53191450>
Reviewed by Eric Carlson.
Instead of registering a MediaStreamTrack as a media producer to compute capture state,
go directly to the sources from the RealtimeMediaSourceCenter.
Do the same when requested to mute capture tracks.
No observable change of behavior.
Covered by manual test on iOS and existing tests.
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::~MediaStreamTrack):
(WebCore::MediaStreamTrack::mediaState const):
(WebCore::sourceCaptureState):
(WebCore::MediaStreamTrack::captureState):
(WebCore::MediaStreamTrack::muteCapture):
* Modules/mediastream/MediaStreamTrack.h:
* dom/Document.cpp:
(WebCore::Document::updateIsPlayingMedia):
(WebCore::Document::pageMutedStateDidChange):
2019-08-02 Chris Dumez <cdumez@apple.com>
DOMWindow properties may get GC'd before their Window object
https://bugs.webkit.org/show_bug.cgi?id=200359
Reviewed by Ryosuke Niwa.
DOMWindow properties may get GC'd before their Window object once their frame is detached. This
is unexpected behavior given that these properties persist on the Window after the frame is
detached. This patch thus updates their bindings so that they live as long as their window, not
their frame.
Note that this also fixes a thread-safety issue since DOMWindowProperty::frame() would get called
from GC threads, although its implementation looks like:
"""
return m_window ? m_window->frame() : nullptr;
"""
Because m_window is a WeakPtr<DOMWindow> and because windows get destroyed on the main thread,
we could in theory crash when dereferencing m_window->frame() from the GC thread.
Test: fast/dom/dom-window-property-gc-after-frame-detach.html
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::visitAdditionalChildren):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
* bindings/scripts/IDLAttributes.json:
* css/StyleMedia.idl:
* loader/appcache/DOMApplicationCache.idl:
* page/BarProp.idl:
* page/DOMSelection.idl:
* page/History.idl:
* page/Location.idl:
* page/Navigator.idl:
* page/Screen.idl:
* page/VisualViewport.idl:
* plugins/DOMMimeTypeArray.idl:
* plugins/DOMPluginArray.idl:
* storage/Storage.idl:
2019-08-02 Konstantin Tokarev <annulen@yandex.ru>
Remove constructors and operators of FontPlatformData defined only for Freetype
https://bugs.webkit.org/show_bug.cgi?id=200379
Reviewed by Carlos Garcia Campos.
These methods only make maintenance harder, as all data fields are
trivially copyable. Constructors generated by compiler should be used
instead.
* platform/graphics/FontPlatformData.h:
* platform/graphics/freetype/FontPlatformDataFreeType.cpp:
2019-08-02 Konstantin Tokarev <annulen@yandex.ru>
Remove unused constructor declaration from FontPlatformData
https://bugs.webkit.org/show_bug.cgi?id=200371
Reviewed by Carlos Garcia Campos.
It is not implemented by any port.
* platform/graphics/FontPlatformData.h:
2019-08-01 Chris Dumez <cdumez@apple.com>
Pages using MessagePorts should be PageCacheable
https://bugs.webkit.org/show_bug.cgi?id=200366
<rdar://problem/53837882>
Reviewed by Geoffrey Garen.
Allow a page to enter PageCache, even if it has MessagePorts (potentially with
pending messages). If there are pending messages on the MessagePorts when
entering PageCache, those will get dispatched upon restoring from PageCache.
Test: fast/history/page-cache-MessagePort-pending-message.html
* dom/MessagePort.cpp:
(WebCore::MessagePort::messageAvailable):
(WebCore::MessagePort::dispatchMessages):
Do not dispatch messages while in PageCache.
(WebCore::MessagePort::canSuspendForDocumentSuspension const):
Allow pages with MessagePort objects to enter PageCache.
* dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::resumeActiveDOMObjects):
Make sure pending messages on MessagePorts get dispatched asynchronously after restoring
from PageCache.
* loader/DocumentLoader.cpp:
(WebCore::areAllLoadersPageCacheAcceptable):
Make sure only CachedResources that are still loading upon load cancelation prevent
entering PageCache.
2019-08-01 Konstantin Tokarev <annulen@yandex.ru>
Fix compilation of PageConsoleClient with !ENABLE(VIDEO)
https://bugs.webkit.org/show_bug.cgi?id=200380
Reviewed by Joseph Pecoraro.
* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::screenshot):
2019-08-01 Mark Lam <mark.lam@apple.com>
Add crash diagnostics for debugging unexpected zapped cells.
https://bugs.webkit.org/show_bug.cgi?id=200149
<rdar://problem/53570112>
Reviewed by Yusuke Suzuki.
No new tests because this is a feature for debugging crashes. It has been tested
manually by modifying the code to force a crash at the point of interest.
Added some comments to document the hashes of known subspaces.
* bindings/js/WebCoreJSClientData.cpp:
(WebCore::JSVMClientData::JSVMClientData):
2019-08-01 Saam Barati <sbarati@apple.com>
[WHLSL] Do simple nullptr check elimination using basic data flow analysis when generating metal code
https://bugs.webkit.org/show_bug.cgi?id=200352
Reviewed by Myles C. Maxfield.
When doing metal code generation, we frequently know whether something
is null or not. This patch does a basic propagation of this information
to avoid emitting excessive null checks in the generated Metal code.
This is a 6% speedup (with a p value of 0.0001) in Metal compile times
on compute_boids.
An example of a null check we now eliminate is:
```
int x;
thread int* ptr = &x; // We know that the lvalue for "x" is non-null, so we produce a non-null rvalue here.
*ptr = 42; // We know that the "ptr" rvalue is non-null, so we omit the null check.
```
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::appendRightValueWithNullability):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::appendRightValue):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::appendLeftValue):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::takeLastValueAndNullability):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::takeLastLeftValue):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
2019-08-01 Alex Christensen <achristensen@webkit.org>
Move FormData zip file generation to NetworkProcess and enable it for all WebKit clients for uploading directories
https://bugs.webkit.org/show_bug.cgi?id=200102
<rdar://problem/53275114>
Reviewed by Darin Adler.
To enable directory uploading in WebKit2, we extended WebKit1's model of asking the application to generate a file for uploading.
This means the WebProcess needed access to everything necessary to zip a whole directory, and clients that have not implemented
the strange WKBundlePageUIClient callbacks won't be able to upload directories. Safari's implementation had already been copied
to BlobDataFileReference::generateReplacementFile, so I reused that code to do the zipping. Instead of a complicated model of
keeping track of a filename, possibly a generated filename, and whether we think we own the file or not and having nobody clean up,
we now do the generation, use, and cleaning up in the network process starting with a new function generateFilesForUpload.
This removes unimplemented SPI in WebUIDelegatePrivate in WebKitLegacy and stops calling the WKBundlePageUIClient related to upload
file generation and replaces them with automatic behavior equivalent to Safari's implementation of the WKBundlePageUIClient calls.
Since we no longer need to do these file operations in the WebProcess, I am also reverting r245322 and r246077 which tightens the sandbox.
Covered by an API test.
* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::extract):
(WebCore::FetchBody::bodyAsFormData const):
* loader/FormSubmission.cpp:
(WebCore::FormSubmission::create):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::submitForm):
(WebCore::FrameLoader::loadDifferentDocumentItem):
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::didReceiveResponse):
(WebCore::ResourceLoader::cleanupForError):
* page/Chrome.cpp:
(WebCore::ChromeClient::shouldReplaceWithGeneratedFileForUpload): Deleted.
(WebCore::ChromeClient::generateReplacementFile): Deleted.
* page/ChromeClient.h:
* platform/network/FormData.cpp:
(WebCore::FormData::FormData):
(WebCore::FormData::~FormData):
(WebCore::FormData::createMultiPart):
(WebCore::FormDataElement::lengthInBytes const):
(WebCore::FormData::appendFile):
(WebCore::FormData::appendFileRange):
(WebCore::FormData::appendMultiPartFileValue):
(WebCore::FormData::appendMultiPartKeyValuePairItems):
(WebCore::FormData::resolveBlobReferences):
(WebCore::generateFileForUpload):
(WebCore::FormData::generateFilesForUpload):
(WebCore::FormData::generateFiles): Deleted.
(WebCore::FormData::hasGeneratedFiles const): Deleted.
(WebCore::FormData::hasOwnedGeneratedFiles const): Deleted.
(WebCore::FormData::removeGeneratedFilesIfNeeded): Deleted.
* platform/network/FormData.h:
(WebCore::FormDataElement::FormDataElement):
(WebCore::FormDataElement::EncodedFileData::isolatedCopy const):
(WebCore::FormDataElement::EncodedFileData::operator== const):
(WebCore::FormDataElement::EncodedFileData::encode const):
(WebCore::FormDataElement::EncodedFileData::decode):
* platform/network/cf/FormDataStreamCFNet.cpp:
(WebCore::advanceCurrentStream):
(WebCore::formCreate):
(WebCore::formFinalize):
(WebCore::createHTTPBodyCFReadStream):
* platform/network/mac/BlobDataFileReferenceMac.mm:
(WebCore::generateFileForUpload):
(WebCore::BlobDataFileReference::generateReplacementFile):
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::send):
2019-08-01 Wenson Hsieh <wenson_hsieh@apple.com>
[Text autosizing] [iPadOS] Add targeted hacks to address some remaining text autosizing issues
https://bugs.webkit.org/show_bug.cgi?id=200271
<rdar://problem/51734741>
Reviewed by Zalan Bujtas.
Makes some targeted adjustments to the text autosizing heuristic, to ensure compatibility with several high-
profile websites. See changes below for more detail.
Tests: fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidate-special-cases.html
fast/text-autosizing/ios/idempotentmode/line-height-boosting.html
* css/StyleResolver.cpp:
(WebCore::StyleResolver::adjustRenderStyleForTextAutosizing):
Avoid clipped sidebar links on sohu.com by not performing line-height boosting in the case where the element
probably has a small, fixed number of lines. See below for more detail. Additionally, don't attempt to adjust
the line height using the boosted font size, in the case where the element is not a candidate for idempotent
text autosizing.
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::isIdempotentTextAutosizingCandidate const):
Make various targeted hacks to fix a few websites:
- Add a special case for top navigation bar links on yandex.ru, where line height greatly exceeds the
specified font size.
- Avoid boosting some related video links on v.youku.com by considering the line-clamp CSS property when
determining the maximum number of lines of text an element is expected to contain.
- Avoid boosting some front page links on asahi.com, which have non-repeating background images.
- Add several other adjustments to more aggressively boost pieces of text on Google search results, such as
taking the `word-break` CSS property into account.
The bottom few pixels of sidebar links on naver.com are also no longer clipped after these changes.
* rendering/style/TextSizeAdjustment.cpp:
(WebCore::AutosizeStatus::probablyContainsASmallFixedNumberOfLines):
Pulls out a piece of the heuristic added to fix sephora.com in r247467 out into a separate helper method. To
recap, this heuristic identifies elements with both a fixed height and fixed line height, for which the fixed
height is close to an integer multiple of the line height.
Also makes several small tweaks in the process: (1) change the max difference between fixed line height and
font size from 6 to 5 to ensure that some multiline caption text on Google search results is boosted, and (2)
replace usages of `lineHeight()` with `specifiedLineHeight()`, which current prevents this function from being
truly idempotent.
(WebCore::AutosizeStatus::updateStatus):
* rendering/style/TextSizeAdjustment.h:
2019-07-31 Mark Lam <mark.lam@apple.com>
Rename DOMJIT safe/unsafeFunction to functionWithTypeChecks and functionWithoutTypeChecks.
https://bugs.webkit.org/show_bug.cgi?id=200323
Reviewed by Yusuke Suzuki.
No new tests. This is just a refactoring exercise.
* bindings/scripts/CodeGeneratorJS.pm:
(GetArgumentTypeForFunctionWithoutTypeCheck):
(GenerateImplementation):
(GenerateOperationDefinition):
(ToNativeForFunctionWithoutTypeCheck):
(GetUnsafeArgumentType): Deleted.
(UnsafeToNative): Deleted.
* bindings/scripts/test/JS/JSTestDOMJIT.cpp:
(WebCore::jsTestDOMJITPrototypeFunctionGetAttributeWithoutTypeCheck):
(WebCore::jsTestDOMJITPrototypeFunctionItemWithoutTypeCheck):
(WebCore::jsTestDOMJITPrototypeFunctionHasAttributeWithoutTypeCheck):
(WebCore::jsTestDOMJITPrototypeFunctionGetElementByIdWithoutTypeCheck):
(WebCore::jsTestDOMJITPrototypeFunctionGetElementsByNameWithoutTypeCheck):
(WebCore::unsafeJsTestDOMJITPrototypeFunctionGetAttribute): Deleted.
(WebCore::unsafeJsTestDOMJITPrototypeFunctionItem): Deleted.
(WebCore::unsafeJsTestDOMJITPrototypeFunctionHasAttribute): Deleted.
(WebCore::unsafeJsTestDOMJITPrototypeFunctionGetElementById): Deleted.
(WebCore::unsafeJsTestDOMJITPrototypeFunctionGetElementsByName): Deleted.
2019-08-01 Carlos Garcia Campos <cgarcia@igalia.com>
[SOUP] WebSockets: add support for extensions when using web sockets libsoup API
https://bugs.webkit.org/show_bug.cgi?id=199943
Reviewed by Alex Christensen.
Add SOUP_TYPE_WEBSOCKET_EXTENSION_MANAGER feature to the soup session to enable WebSocket extensions.
Tests: http/tests/websocket/tests/hybi/imported/blink/permessage-deflate-comp-bit-onoff.html
http/tests/websocket/tests/hybi/imported/blink/permessage-deflate-invalid-parameter.html
http/tests/websocket/tests/hybi/imported/blink/permessage-deflate-parameter.html
http/tests/websocket/tests/hybi/imported/blink/permessage-deflate-set-bfinal.html
http/tests/websocket/tests/hybi/imported/blink/permessage-deflate-split-frames.html
http/tests/websocket/tests/hybi/imported/blink/permessage-deflate-unsolicited-negotiation-response.html
http/tests/websocket/tests/hybi/imported/blink/permessage-deflate-window-bits.html
* platform/network/soup/SoupNetworkSession.cpp:
(WebCore::SoupNetworkSession::SoupNetworkSession):
2019-08-01 Chris Dumez <cdumez@apple.com>
[iOS][WK1] Unsafe unsafe of WeakPtr<Document> from UIThread under PlaybackSessionInterfaceAVKit::PlaybackSessionInterfaceAVKit()
https://bugs.webkit.org/show_bug.cgi?id=200324
Reviewed by Ryosuke Niwa.
The Document is a WebThread object, but a WeakPtr<Document> was dereferenced from the
UIThread in HTMLMediaElement::supportsSeeking(), from the PlaybackSessionInterfaceAVKit
constructor. To address the issue we now grab the WebThread lock before constructing
the PlaybackSessionInterfaceAVKit.
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::setUpFullscreen):
2019-08-01 Carlos Garcia Campos <cgarcia@igalia.com>
[SOUP] Switch to use libsoup WebSockets API
https://bugs.webkit.org/show_bug.cgi?id=200162
Reviewed by Michael Catanzaro.
Use the libsoup WebSockets API unconditionally for libsoup based ports.
* Modules/websockets/ThreadableWebSocketChannel.cpp:
(WebCore::ThreadableWebSocketChannel::create): Do not check the env var anymore.
* platform/SourcesSoup.txt:
* platform/network/SocketStreamHandleImpl.cpp:
* platform/network/StorageSessionProvider.h:
* platform/network/soup/SocketStreamHandleImpl.h:
* platform/network/soup/SocketStreamHandleImplSoup.cpp: Removed.
2019-07-31 Devin Rousso <drousso@apple.com>
Web Inspector: Debugger: support emulateUserGesture parameter in Debugger.evaluateOnCallFrame
https://bugs.webkit.org/show_bug.cgi?id=200272
Reviewed by Joseph Pecoraro.
When paused, evaluating in the console should still respect the "Emulate User Gesture" checkbox.
Tests: inspector/debugger/evaluateOnCallFrame-emulateUserGesture.html
inspector/debugger/evaluateOnCallFrame-emulateUserGesture-userIsInteracting.html
* inspector/agents/page/PageDebuggerAgent.h:
* inspector/agents/page/PageDebuggerAgent.cpp:
(WebCore::PageDebuggerAgent::evaluateOnCallFrame): Added.
2019-07-31 Saam Barati <sbarati@apple.com>
[WHLSL] Replace memsetZero function with inline "= { }" code
https://bugs.webkit.org/show_bug.cgi?id=200328
Reviewed by Robin Morisset.
This is a ~20ms metal compile time improvement on compute_boids.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::FunctionDefinitionWriter):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeFunction):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.h:
2019-07-31 Andy Estes <aestes@apple.com>
REGRESSION (r240942): first visually non-empty layout milestone is not reached in media documents until after the video finishes loading
https://bugs.webkit.org/show_bug.cgi?id=200293
<rdar://problem/52937749>
Reviewed by Alex Christensen.
r240942 changed FrameView::qualifiesAsVisuallyNonEmpty() to consider only documents in the
Interactive or Complete ready states as "finished parsing". Documents considered finished
parsing can qualify as visually non-empty even without exceeding the visual character or
pixel thresholds, but documents considered not finished must first exceed one of these
thresholds in order to qualify as visually non-empty.
HTMLDocuments are placed in the Interactive ready state by their HTMLDocumentParsers.
However, HTMLDocument subclasses like ImageDocument and MediaDocument use their own custom
parsers that never set the Interactive ready state on their documents; these documents go
from Loading directly to Complete.
In order for these HTMLDocument subclasses to be considered visually non-empty before they
finish loading they must render something that exceeds the visual character or pixel
thresholds. For image documents, rendering the image is usually enough to cross the
threshold, but for media documents the visual pixel threshold was never crossed because
videos did not contribute to the visually non-empty pixel count.
As a result, media documents are not considered visually non-empty until the main resource
finishes loading. On iOS this means that the layer tree remains frozen until this point,
even though the media might have started autoplaying with audio long before it finished
loading.
Fix this by teaching RenderVideo to contribute the video player's size to FrameView's
visually non-empty pixel count once the video player has loaded enough data to determine its
intrinsic size. Videos that render more than 1024 pixels will qualify a media document as
visually non-empty even when it is still loading its main resource.
Added a new API test.
* rendering/RenderImage.cpp:
(WebCore::RenderImage::imageChanged):
(WebCore::RenderImage::incrementVisuallyNonEmptyPixelCountIfNeeded):
* rendering/RenderImage.h:
* rendering/RenderVideo.cpp:
(WebCore::RenderVideo::updateIntrinsicSize):
2019-07-31 Saam Barati <sbarati@apple.com>
[WHLSL] Remove UnnamedType copy/move constructors and mark classes as final
https://bugs.webkit.org/show_bug.cgi?id=200188
<rdar://problem/53628171>
Unreviewed followup.
As Darin pointed out in the bugzilla comments, when defining a copy
constructor in C++ (either deleted or an implementation), the move
constructor is implicitly deleted. This match removes the excessive
use of WTF_MAKE_NONMOVABLE when we're already using WTF_MAKE_NONCOPYABLE.
* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
2019-07-31 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] twitch.tv video controls do not always respond to taps in fullscreen
https://bugs.webkit.org/show_bug.cgi?id=200309
<rdar://problem/52964977>
Reviewed by Simon Fraser.
Do not consider an element visible if it is not a descendant of the active fullscreen element.
This patch fixes the cases when the user taps on a button in fullscreen mode while the non-fullscreen content is being mutated and
the ContentChangeObserver mistakenly registers it as a valid, actionable change and as a result we don't fire the click event (stay at hover).
Test: fast/events/touch/ios/content-observation/non-visible-content-change-in-fullscreen-mode.html
* page/ios/ContentChangeObserver.cpp:
(WebCore::fullscreenElement):
(WebCore::ContentChangeObserver::isVisuallyHidden):
2019-07-31 Saam Barati <sbarati@apple.com>
[WHLSL Remove char/short/half types
https://bugs.webkit.org/show_bug.cgi?id=200312
Reviewed by Myles C. Maxfield.
This patch removes the char/short/half types from WHLSL. Since it's not
supported by all HW, WebGPU is leaving these types out for now. This is
also a huge speedup, since it halves the size of the standard library.
In the compute_boids demo, WHLSL::prepare goes from running in ~140ms to
running in ~60ms.
Test: webgpu/whlsl/smaller-than-32-bit-types.html
* Modules/webgpu/WHLSL/Metal/WHLSLNativeTypeWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeType):
* Modules/webgpu/WHLSL/WHLSLIntrinsics.cpp:
(WebCore::WHLSL::Intrinsics::addPrimitive):
(WebCore::WHLSL::Intrinsics::addVector):
(WebCore::WHLSL::Intrinsics::addMatrix):
* Modules/webgpu/WHLSL/WHLSLIntrinsics.h:
(WebCore::WHLSL::Intrinsics::WTF_ARRAY_LENGTH):
(WebCore::WHLSL::Intrinsics::ucharType const): Deleted.
(WebCore::WHLSL::Intrinsics::ushortType const): Deleted.
(WebCore::WHLSL::Intrinsics::charType const): Deleted.
(WebCore::WHLSL::Intrinsics::shortType const): Deleted.
(WebCore::WHLSL::Intrinsics::uchar2Type const): Deleted.
(WebCore::WHLSL::Intrinsics::uchar4Type const): Deleted.
(WebCore::WHLSL::Intrinsics::ushort2Type const): Deleted.
(WebCore::WHLSL::Intrinsics::ushort4Type const): Deleted.
(WebCore::WHLSL::Intrinsics::char2Type const): Deleted.
(WebCore::WHLSL::Intrinsics::char4Type const): Deleted.
(WebCore::WHLSL::Intrinsics::short2Type const): Deleted.
(WebCore::WHLSL::Intrinsics::short4Type const): Deleted.
* Modules/webgpu/WHLSL/WHLSLPipelineDescriptor.h:
* Modules/webgpu/WHLSL/WHLSLSemanticMatcher.cpp:
(WebCore::WHLSL::isAcceptableFormat):
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::convertTextureFormat):
2019-07-31 Youenn Fablet <youenn@apple.com>
Use CTFontCreateForCharactersWithLanguageAndOption if available instead of CTFontCreateForCharactersWithLanguage
https://bugs.webkit.org/show_bug.cgi?id=200241
Reviewed by Myles C. Maxfield.
We can use CTFontCreateForCharactersWithLanguageAndOption instead of CTFontCreateForCharactersWithLanguage
as it allows setting more easily the fallback option.
This allows us to never fallback to user installed fonts.
In such a case, we no longer need to wrap the fonts to change the fallback option.
We also prewarm the fonts with the same SPI and use system fallback as the default value.
Covered by existing tests.
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::preparePlatformFont):
(WebCore::lookupFallbackFont):
(WebCore::FontCache::systemFallbackForCharacters):
(WebCore::FontCache::prewarm):
(WebCore::fontFamiliesForPrewarming):
2019-07-31 Devin Rousso <drousso@apple.com>
Web Inspector: Overlay: add page width/height display
https://bugs.webkit.org/show_bug.cgi?id=199369
Reviewed by Joseph Pecoraro.
Show `${width}px x ${height}px` in the corner where the horizontal and vertical rulers meet.
This way, if the rulers shift due to the highlighted content, the page width/height does too.
* inspector/InspectorOverlay.h:
* inspector/InspectorOverlay.cpp:
(WebCore::truncateWithEllipsis):
(WebCore::InspectorOverlay::drawNodeHighlight):
(WebCore::InspectorOverlay::drawQuadHighlight):
(WebCore::InspectorOverlay::drawRulers):
(WebCore::InspectorOverlay::drawElementTitle):
2019-07-31 Youenn Fablet <youenn@apple.com>
Owners of MultiChannelResampler should make sure that the output bus given to it has the same number of channels
https://bugs.webkit.org/show_bug.cgi?id=200248
<rdar://problem/53411051>
Reviewed by Eric Carlson.
When a track's number of channels changes, MediaStreamAudioSourceNode is expected
to update its MultiChannelResampler and its output number of channels.
MultiChannelResampler expects to have the same number of channels as the output
but it is not always the case since the channel numbers are changed in different threads
and locks do not help there.
Instead, whenever detecting that the number of channels do not match, render silence
and wait for the next rendering where the number of channels should again match.
Add internals API to change the number of channels from 2 to 1 or 1 to 2
to allow testing that code path (iOS only as MacOS audio capture is in UIProcess).
Covered by updated test.
* Modules/webaudio/MediaElementAudioSourceNode.cpp:
(WebCore::MediaElementAudioSourceNode::process):
* Modules/webaudio/MediaStreamAudioSourceNode.cpp:
(WebCore::MediaStreamAudioSourceNode::process):
* platform/audio/MultiChannelResampler.cpp:
(WebCore::MultiChannelResampler::process):
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
(WebCore::MockRealtimeAudioSourceMac::reconfigure):
* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::setChannelCount):
* platform/mock/MockRealtimeAudioSource.h:
(isType):
* platform/mock/MockRealtimeVideoSource.h:
* testing/Internals.cpp:
(WebCore::Internals::setMockAudioTrackChannelNumber):
* testing/Internals.h:
* testing/Internals.idl:
2019-07-31 Chris Dumez <cdumez@apple.com>
Element.outerHTML is missing attribute prefixes in some cases in HTML documents
https://bugs.webkit.org/show_bug.cgi?id=200283
Reviewed by Ryosuke Niwa.
When HTML serializing a prefixed element attribute, we should always serialize the
prefix as per [1]. However, our code was only serializing the well-known ones (xml,
xmlns & xlink).
[1] https://html.spec.whatwg.org/#attribute's-serialised-name
Test: fast/dom/Element/outerHTML-prefixed-attribute.html
* editing/MarkupAccumulator.cpp:
(WebCore::htmlAttributeSerialization):
(WebCore::MarkupAccumulator::xmlAttributeSerialization):
(WebCore::MarkupAccumulator::appendAttribute):
* editing/MarkupAccumulator.h:
2019-07-31 Loïc Yhuel <loic.yhuel@softathome.com>
[GStreamer] Fix printf format warnings for 32-bit build in GST traces
https://bugs.webkit.org/show_bug.cgi?id=200299
Reviewed by Xabier Rodriguez-Calvar.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::handleSyncMessage): %zu for size_t
(WebCore::MediaPlayerPrivateGStreamerBase::initializationDataEncountered): Ditto
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webKitWebSrcCreate): G_GUINT64_FORMAT for uint64_t
* platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp: G_GINT64_FORMAT for int64_t
* platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp: Ditto
2019-07-31 Andres Gonzalez <andresg_22@apple.com>
AX: Re-enable accessibility/set-selected-text-range-after-newline.html test.
https://bugs.webkit.org/show_bug.cgi?id=199431
<rdar://problem/52563340>
Reviewed by Chris Fleizach.
- Re-enabled LayoutTests/accessibility/set-selected-text-range-after-newline.html.
- Put back workaround in visiblePositionForIndexUsingCharacterIterator
that is needed for several accessibility issues.
- This workaround was rolled back because it was thought the cause of:
https://bugs.webkit.org/show_bug.cgi?id=199434
It turned out that the actual cause of that hang was unrelated and was
fixed in:
https://bugs.webkit.org/show_bug.cgi?id=199845
* editing/Editing.cpp:
(WebCore::visiblePositionForIndexUsingCharacterIterator):
2019-07-31 Devin Rousso <drousso@apple.com>
Web Inspector: Second call to setAttributeNS creates non-prefixed attribute
https://bugs.webkit.org/show_bug.cgi?id=200230
<rdar://problem/53712672>
Reviewed by Joseph Pecoraro.
Original patch by Chris Dumez <cdumez@apple.com>.
Test: inspector/dom/attributeModified.html
* dom/Element.cpp:
(WebCore::Element::didAddAttribute):
(WebCore::Element::didModifyAttribute):
(WebCore::Element::didRemoveAttribute):
Use the fully qualified name, not just the local name, when notifying the inspector frontend
about changes to attributes.
2019-07-31 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Datalist element support for TextFieldInputType
https://bugs.webkit.org/show_bug.cgi?id=98934
Reviewed by Michael Catanzaro.
Add support for rendering the arrow indicator of text fields having data list.
* rendering/RenderThemeGtk.cpp:
(WebCore::RenderThemeGtk::paintTextField):
(WebCore::RenderThemeGtk::adjustListButtonStyle const):
(WebCore::RenderThemeGtk::paintListButtonForInput):
(WebCore::RenderThemeGtk::adjustSearchFieldStyle const):
* rendering/RenderThemeGtk.h:
2019-07-30 Tim Horton <timothy_horton@apple.com>
ASSERTion failure under takeSnapshot after r247846
* page/TextIndicator.cpp:
(WebCore::takeSnapshots):
We now sometimes inflate the scale factor; allow this.
2019-07-30 Saam Barati <sbarati@apple.com>
[WHLSL] Add a fast path for TypeNamer::insert where we've already seen the type
https://bugs.webkit.org/show_bug.cgi?id=200284
Reviewed by Myles C. Maxfield.
This is a ~27% speedup in the WHLSL::prepare for the compute_boids test.
This optimization makes sense since my previous patch to make UnnamedType
ref counted was also a huge speedup. So the TypeNamer is seeing many
UnnamedTypes which are the same pointer value. On compute_boids, this
makes generateMetalCode ~40ms faster.
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::TypeNamer::insert):
2019-07-29 Ryosuke Niwa <rniwa@webkit.org>
WorkerGlobalScope::wrapCryptoKey/unwrapCryptoKey should use local heap objects for replies
https://bugs.webkit.org/show_bug.cgi?id=200179
<rdar://problem/52334658>
Reviewed by Brent Fulgham.
Based on the patch by Jiewen Tan.
WorkerGlobalScope::wrapCryptoKey and WorkerGlobalScope::unwrapCryptoKey had a bug that they could exit
the function before the main thread had finished writing to the result vector passed in to these functions
when the worker's runloop receives MessageQueueTerminated before the main thread finishes writing.
Fixed the bug by creating a new temporary Vector inside a ThreadSafeRefCounted object shared between
the main thread and the worker thread, which extends the lifetime of the Vector until when the worker thread
receives the result or when the main thread finishes writing to the Vector, whichever happens last.
Unfortunately no new tests since there is no reproducible test case, and this crash is highly racy.
* workers/WorkerGlobalScope.cpp:
(WebCore::CryptoBufferContainer): Added.
(WebCore::CryptoBufferContainer::create): Added.
(WebCore::CryptoBufferContainer::buffer): Added.
(WebCore::WorkerGlobalScope::wrapCryptoKey):
(WebCore::WorkerGlobalScope::unwrapCryptoKey):
2019-07-30 Saam Barati <sbarati@apple.com>
[WHLSL] Checker sets wrong type for property access instruction with an ander
https://bugs.webkit.org/show_bug.cgi?id=200282
Reviewed by Myles C. Maxfield.
We were assigning resulting type based on the base value instead of the ander
of the base value. For example, consider:
```
struct Point { float x; float y; }
compute main(device Point[] buffer) { buffer[0]; }
```
The local variable "buffer" is in the "thread" address space. So we would end up
trying to use the thread address space for "buffer[0]". This caused us to
generate invalid Metal code because we would call a "thread" ander with a
"device" pointer. The fix is to use the "device" address space, which is
the type of the ander we were already setting on this property access instruction.
Test: webgpu/whlsl/device-proper-type-checker.html
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::Checker::finishVisiting):
2019-07-30 Saam Barati <sbarati@apple.com>
[WHLSL] Make ASTDumper dump types and address spaces
https://bugs.webkit.org/show_bug.cgi?id=200281
Reviewed by Robin Morisset.
This makes it much easier to gain insight into what type resolution
the checker does. I used this logging to debug https://bugs.webkit.org/show_bug.cgi?id=200282
* Modules/webgpu/WHLSL/AST/WHLSLAddressSpace.h:
(WebCore::WHLSL::AST::TypeAnnotation::isAbstractLeftValue const):
* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
* Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:
(WebCore::WHLSL::ASTDumper::visit):
2019-07-30 Brent Fulgham <bfulgham@apple.com>
[FTW] Refactor Direct2D code to follow Cairo's model to support modern WebKit
https://bugs.webkit.org/show_bug.cgi?id=200270
Reviewed by Dean Jackson.
Refactor the Direct2D code in WebCore so that the core routines can be shared
between GraphicsContext and GraphicsContextImpl. Implement PlatformContext,
BackingStoreBackend, and GraphicsContextImpl for the Direct2D engine.
This patch effectively just moves code around.
* PlatformFTW.cmake:
* platform/graphics/GraphicsContext.h:
* platform/graphics/GraphicsContextImpl.h:
* platform/graphics/ImageSource.cpp:
* platform/graphics/Pattern.h:
* platform/graphics/displaylists/DisplayListRecorder.cpp:
* platform/graphics/displaylists/DisplayListRecorder.h:
* platform/graphics/win/BackingStoreBackendDirect2D.h: Added.
* platform/graphics/win/BackingStoreBackendDirect2DImpl.cpp: Added.
* platform/graphics/win/BackingStoreBackendDirect2DImpl.h: Added.
* platform/graphics/win/Direct2DOperations.cpp: Added.
* platform/graphics/win/Direct2DOperations.h: Added.
* platform/graphics/win/Direct2DUtilities.cpp: Added.
* platform/graphics/win/Direct2DUtilities.h: Added.
* platform/graphics/win/FontCascadeDirect2D.cpp:
* platform/graphics/win/GradientDirect2D.cpp:
* platform/graphics/win/GraphicsContextDirect2D.cpp:
* platform/graphics/win/GraphicsContextImplDirect2D.cpp: Added.
* platform/graphics/win/GraphicsContextImplDirect2D.h: Added.
* platform/graphics/win/GraphicsContextPlatformPrivateDirect2D.h:
* platform/graphics/win/ImageBufferDataDirect2D.h:
* platform/graphics/win/ImageBufferDirect2D.cpp:
* platform/graphics/win/NativeImageDirect2D.cpp:
* platform/graphics/win/PathDirect2D.cpp:
* platform/graphics/win/PatternDirect2D.cpp:
* platform/graphics/win/PlatformContextDirect2D.cpp: Added.
* platform/graphics/win/PlatformContextDirect2D.h: Added.
* platform/win/DragImageWin.cpp:
* svg/graphics/SVGImage.cpp:
2019-07-30 Myles C. Maxfield <mmaxfield@apple.com>
REGRESSION(r241288): Text on Yahoo Japan mobile looks too bold
https://bugs.webkit.org/show_bug.cgi?id=200065
<rdar://problem/50912757>
Reviewed by Simon Fraser.
Before r241288, we were mapping Japanese sans-serif to Hiragino Kaku Gothic ProN, which
has a 300 weight and a 600 weight. However, we can't use that font because it's user-installed,
so in r241288 we switched to using Hiragino Sans, which has a 300 weight, a 600 weight, and an
800 weight. According to the CSS font selection algorithm, sites that request a weight of 700
would get the 800 weight instead of the 600 weight, which caused the text to look too heavy.
Therefore, the apparent visual change is from a weight change from 600 to 800.
In general, this is working as intended. However, text on Yahoo Japan looks too heavy in weight
800. Instead, this patch adds a quirk specific to Yahoo Japan that overwrites any font requests
to give them a weight of 600 instead of 700. This way, the lighter font will be used.
No new tests because quirks cannot be tested.
* css/CSSFontSelector.cpp:
(WebCore::resolveGenericFamily):
(WebCore::CSSFontSelector::fontRangesForFamily):
* page/Quirks.cpp:
(WebCore::Quirks::shouldLightenJapaneseBoldSansSerif const):
* page/Quirks.h:
2019-07-31 Simon Fraser <simon.fraser@apple.com>
[iPadOS] Enable simulated mouse events on iqiyi.com to fix the video controls
https://bugs.webkit.org/show_bug.cgi?id=200322
rdar://problem/53235709
Reviewed by Wenson Hsieh.
iqiyi.com needs to get mouseMove events for dragging the video scrubber to work.
* page/Quirks.cpp:
(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
2019-07-30 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, fix GTK build after SoupNetworkSession ownership rework.
* platform/network/soup/SocketStreamHandleImplSoup.cpp:
2019-07-30 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] Compilation errors when GL is disabled
https://bugs.webkit.org/show_bug.cgi?id=200223
Unreviewed, keep trying to fix build with -DENABLE_OPENGL=OFF.
The previous commit was sufficient for the 2.24 branch, but on trunk there are more
problems. This doesn't solve all of them, but it gets us closer.
* SourcesGTK.txt:
* platform/graphics/GLContext.h:
2019-07-24 Carlos Garcia Campos <cgarcia@igalia.com>
[SOUP] Move SoupNetworkSession ownership from NetworkStorageSession to NetworkSession
https://bugs.webkit.org/show_bug.cgi?id=200076
Reviewed by Michael Catanzaro.
Remove the SoupNetworkSession from NetworkStorageSession.
* platform/network/NetworkStorageSession.h:
(WebCore::NetworkStorageSession::cookieStorage const): Return the cookie jar.
* platform/network/StorageSessionProvider.h:
(WebCore::StorageSessionProvider::soupSession const): Temporary add this virtual method that is required by
SocketStreamHandleImplSoup. It will be removed once we switch to libsoup WebSockets API soon.
* platform/network/soup/DNSResolveQueueSoup.cpp:
(WebCore::globalDefaultSoupSessionAccessor): Rework the accessor to return the SoupSession directly since
that's what we really want.
(WebCore::DNSResolveQueueSoup::setGlobalDefaultSoupSessionAccessor):
(WebCore::DNSResolveQueueSoup::updateIsUsingProxy):
(WebCore::DNSResolveQueueSoup::platformResolve):
(WebCore::DNSResolveQueueSoup::resolve):
* platform/network/soup/DNSResolveQueueSoup.h:
* platform/network/soup/NetworkStorageSessionSoup.cpp:
(WebCore::NetworkStorageSession::NetworkStorageSession): Create and setup the default cookie jar.
(WebCore::NetworkStorageSession::~NetworkStorageSession): Only disconnect the cookie jar signals.
(WebCore::NetworkStorageSession::setCookieStorage): Update the cookie jar, now we know it's always a new one.
* platform/network/soup/SocketStreamHandleImplSoup.cpp:
(WebCore::SocketStreamHandleImpl::create): Use the new virtual method from StorageSessionProvider to get the SoupSession.
* platform/network/soup/SoupNetworkSession.cpp:
(WebCore::SoupNetworkSession::SoupNetworkSession): Remove the SoupCookieJar parameter.
* platform/network/soup/SoupNetworkSession.h:
2019-07-30 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] Compilation errors when GL is disabled
https://bugs.webkit.org/show_bug.cgi?id=200223
Unreviewed, fix build with -DENABLE_OPENGL=OFF.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
2019-07-29 Eric Carlson <eric.carlson@apple.com>
MediaSource.isTypeSupported claims FLAC-in-MP4 support on iOS and macOS, but plays silence
https://bugs.webkit.org/show_bug.cgi?id=198583
<rdar://problem/51487853>
Reviewed by Maciej Stachowiak.
* platform/graphics/avfoundation/objc/AVStreamDataParserMIMETypeCache.h:
(WebCore::AVStreamDataParserMIMETypeCache::canDecodeType): Use anParseExtendedMIMEType:
when it is available.
2019-07-29 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] <table> initiates a principal block container box called table wrapper box.
https://bugs.webkit.org/show_bug.cgi?id=200198
<rdar://problem/53623803>
Reviewed by Antti Koivisto.
The table wrapper box contains the table box itself and any caption boxes.
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::isBlockContainerBox const):
* layout/layouttree/LayoutBox.h:
(WebCore::Layout::Box::isTableCaption const):
(WebCore::Layout::Box::isTableRow const):
(WebCore::Layout::Box::isTableCell const):
* layout/layouttree/LayoutContainer.h:
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::appendChild):
(WebCore::Layout::TreeBuilder::createLayoutBox):
(WebCore::Layout::TreeBuilder::createTableStructure):
(WebCore::Layout::TreeBuilder::createSubTree):
(WebCore::Layout::outputLayoutBox):
* layout/layouttree/LayoutTreeBuilder.h:
2019-07-29 Justin Fan <justin_fan@apple.com>
[WebGPU] Replace Vectors with HashSets for tracking resources used by GPUCommandBuffer
https://bugs.webkit.org/show_bug.cgi?id=200200
Reviewed by Myles C. Maxfield.
Resources bound to a command buffer or bind group only need be tracked once rather than once per sub-view.
This patch cuts GPUQueue.submit validation from 2-12 ms down to ~0 when drawing 12000 triangles in Animometer.
Covered by existing tests; no behavior change expected.
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp: Removed unused variable.
* platform/graphics/gpu/GPUBindGroup.h:
(WebCore::GPUBindGroup::boundBuffers const):
(WebCore::GPUBindGroup::boundTextures const):
* platform/graphics/gpu/GPUCommandBuffer.h:
(WebCore::GPUCommandBuffer::usedBuffers const):
(WebCore::GPUCommandBuffer::usedTextures const):
(WebCore::GPUCommandBuffer::useBuffer):
(WebCore::GPUCommandBuffer::useTexture):
* platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
(WebCore::GPUBindGroup::tryCreate):
(WebCore::GPUBindGroup::GPUBindGroup):
2019-07-29 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Introduce Box::establishesTableFormattingContext
https://bugs.webkit.org/show_bug.cgi?id=200060
Reviewed by Antti Koivisto.
https://www.w3.org/TR/CSS22/tables.html
The table generates a principal block container box called the table wrapper box that contains the table box itself and any caption boxes.
The table box is a block-level box that contains the table's internal table boxes.
The table wrapper box is block-level for 'display: table', and inline-level; for 'display: inline-table'. The table wrapper box establishes a block
formatting context, and the table box establishes a table formatting context."
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::establishesFormattingContext const):
(WebCore::Layout::Box::establishesTableFormattingContext const):
(WebCore::Layout::Box::isBlockLevelBox const):
(WebCore::Layout::Box::isInlineLevelBox const):
(WebCore::Layout::Box::isBlockContainerBox const):
* layout/layouttree/LayoutBox.h:
(WebCore::Layout::Box::isTableWrapperBox const):
(WebCore::Layout::Box::isTableBox const):
2019-07-29 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] didFinishContentChangeObserving should include the type of content change.
https://bugs.webkit.org/show_bug.cgi?id=200247
<rdar://problem/53681149>
Reviewed by Simon Fraser.
Now we don't have to query the content change observer for the type of the change in the callback.
* loader/EmptyClients.h:
* page/ChromeClient.h:
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::adjustObservedState):
* page/ios/EventHandlerIOS.mm:
(WebCore::EventHandler::mouseMoved):
2019-07-29 Sergei Glazunov <glazunov@google.com>
The maximum subframe count check should not be skipped for empty URLs.
https://bugs.webkit.org/show_bug.cgi?id=200032
Reviewed by Ryosuke Niwa.
Move the check closer to the actual frame creation code in `loadSubframe`.
Test: fast/dom/connected-subframe-counter-overflow.html
* dom/Document.cpp:
(WebCore::Document::prepareForDestruction): Assert that all child frames have been detached.
* html/HTMLFrameElementBase.cpp:
(WebCore::HTMLFrameElementBase::canLoad const):
(WebCore::HTMLFrameElementBase::canLoadURL const):
* html/HTMLFrameOwnerElement.cpp:
(WebCore::HTMLFrameOwnerElement::canAddSubframe const): Deleted.
* html/HTMLFrameOwnerElement.h:
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::canLoadURL const):
* loader/SubframeLoader.cpp:
(WebCore::SubframeLoader::loadSubframe):
2019-07-29 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] ChromeClient::observedContentChange() name is misleading
https://bugs.webkit.org/show_bug.cgi?id=200238
<rdar://problem/53677038>
Reviewed by Simon Fraser.
This function indicates that we've finished observing content changes.
* loader/EmptyClients.h:
* page/ChromeClient.h:
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::adjustObservedState):
* page/ios/EventHandlerIOS.mm:
(WebCore::EventHandler::mouseMoved):
2019-07-29 Sam Weinig <weinig@apple.com>
StringBuilder::append(makeString(...)) is inefficient
https://bugs.webkit.org/show_bug.cgi?id=200034
Reviewed by Saam Barati.
Replace uses of StringBuilder::append(makeString(...)) with StringBuilder::flexiblAppend(...).
Where possible, also merged consecutive calls to StringBuilder::append(...) into a single call
to StringBuilder::flexiblAppend(...) to avoid unnecessary additional overflow checks and resizes.
Also where possible, replaced StringBuilder with makeString() if no branching was used during
construction.
A lot more can be done to improve the efficiency of StringBuilder use in the WHLSL code including:
- Using StringView more prevelently, especially when passing a substring to the StringBuilder.
- Passing existing StringBuilders to functions for them to use rather than returning a String and
then appending that to another StringBuilder.
- Using custom StringTypeAdapters for generated names, rather than storing them as Strings.
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
(WebCore::WHLSL::Metal::EntryPointScaffolding::resourceHelperTypes):
(WebCore::WHLSL::Metal::EntryPointScaffolding::resourceSignature):
(WebCore::WHLSL::Metal::EntryPointScaffolding::builtInsSignature):
(WebCore::WHLSL::Metal::EntryPointScaffolding::mangledInputPath):
(WebCore::WHLSL::Metal::EntryPointScaffolding::mangledOutputPath):
(WebCore::WHLSL::Metal::EntryPointScaffolding::unpackResourcesAndNamedBuiltIns):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::helperTypes):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::signature):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::unpack):
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::pack):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::helperTypes):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::signature):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::unpack):
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::pack):
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::signature):
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDeclarationWriter::visit):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::FunctionDefinitionWriter):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::emitLoop):
* Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.cpp:
(WebCore::WHLSL::Metal::generateMetalCodeShared):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeFunction):
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::MetalTypeDeclarationWriter::visit):
(WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):
(WebCore::WHLSL::Metal::TypeNamer::emitNamedTypeDefinition):
(WebCore::WHLSL::Metal::TypeNamer::metalTypes):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Types::appendNameTo):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::logLayerInfo):
* testing/Internals.cpp:
(WebCore::Internals::ongoingLoadsDescriptions const):
2019-07-29 Megan Gardner <megan_gardner@apple.com>
Force Reveal to always lookup from menu
https://bugs.webkit.org/show_bug.cgi?id=200186
<rdar://problem/52967940>
Reviewed by Tim Horton.
We currently only have the 'lookup' menu item, so we should always force the 'lookup' action from it.
Reveal is not currently testable.
* editing/cocoa/DictionaryLookup.mm:
(WebCore::showPopupOrCreateAnimationController):
2019-07-29 Simon Fraser <simon.fraser@apple.com>
REGRESSION (r246899): Subtitles show twice when controls show/hide on hulu.com
https://bugs.webkit.org/show_bug.cgi?id=200187
rdar://problem/53511121
Reviewed by Zalan Bujtas.
When a layer that painted into shared backing moved, we'd fail to repaint its old position
because the RenderLayer's repaint rects are cleared via BackingSharingState::updateBeforeDescendantTraversal().
Recomputing repaint rects is expensive, so we only want to do it when necessary, which is for
layers that start and stop sharing (going into and out of compositing already recomputes them).
So add logic to RenderLayerBacking::setBackingSharingLayers() that recomputes repaint rects
on layers that will no longer use shared backing, and those that are newly using shared
backing.
Test: compositing/shared-backing/backing-sharing-repaint.html
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::setBackingProviderLayer):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::setBackingSharingLayers):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer):
(WebCore::RenderLayerCompositor::updateBacking):
2019-07-29 Simon Fraser <simon.fraser@apple.com>
The touch-action property was ignored on replaced elements (canvas, img etc)
https://bugs.webkit.org/show_bug.cgi?id=200205
rdar://problem/53331224
Reviewed by Antti Koivisto.
The event region painting code didn't handle replaced elements correctly,
causing touch-action to get ignored for <canvas>, <img> etc. Fix by handling
region painting in RenderReplaced.
This still doesn't fix <iframe> but I'm not sure what the correct behavior is there
(webkit.org/b/200204).
Test: pointerevents/ios/touch-action-region-replaced-elements.html
* rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::paint):
(WebCore::RenderReplaced::shouldPaint):
2019-07-29 Philippe Normand <pnormand@igalia.com>
REGRESSION(r243058): [GStreamer] WebKitWebSrc's internal queue can exhaust the WebProcess memory
https://bugs.webkit.org/show_bug.cgi?id=199998
Reviewed by Xabier Rodriguez-Calvar.
With the webkitwebsrc rewrite the element lost its ability to tell
the resource loader when to pause and resume downloading because
we don't use appsrc and its enough-data/need-data signals anymore.
So new heuristics are introduced with this patch. Downloading of
resources bigger than 2MiB might pause when the internal adapter
has enough data (2% of the full resource) and resume when the
adapter size goes below 20% of those 2%.
No new tests, the media element spec doesn't clearly mandate how
the resource loading should behave when the element is paused or
how aggressively the resource should be downloaded during
playback.
This patch was functionally tested with a 1.3GiB resource loaded
over the local network, the resource was downloaded in ~30MiB
chunks, stopping and resuming every 20 seconds, approximately.
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webkit_web_src_class_init):
(webKitWebSrcCreate):
(CachedResourceStreamingClient::responseReceived):
(CachedResourceStreamingClient::dataReceived):
2019-07-29 Carlos Garcia Campos <cgarcia@igalia.com>
WebSockets: workers never use the platform WebSockets path
https://bugs.webkit.org/show_bug.cgi?id=200161
Reviewed by Michael Catanzaro.
A WebCore::WebSocketChannel is created unconditionally in WorkerThreadableWebSocketChannel::Peer.
* Modules/websockets/ThreadableWebSocketChannel.cpp:
(WebCore::ThreadableWebSocketChannel::create): New create method that receives a Document& and creates the
WebSocket channel checking the runtime enabled features to decide.
* Modules/websockets/ThreadableWebSocketChannel.h:
* Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
(WebCore::WorkerThreadableWebSocketChannel::Peer::Peer): Use ThreadableWebSocketChannel::create().
2019-07-29 Carlos Garcia Campos <cgarcia@igalia.com>
Multiple context menu actions broken for YouTube videos
https://bugs.webkit.org/show_bug.cgi?id=199999
Reviewed by Eric Carlson.
Do not include CopyMediaLinkItem and OpenMediaInNewWindowItem to the context menu when media URL is not
downloadable or the request can't be handled.
* page/ContextMenuController.cpp:
(WebCore::ContextMenuController::populate):
2019-07-28 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r247886.
https://bugs.webkit.org/show_bug.cgi?id=200214
"Causes PLT5 regression on some machines" (Requested by mlam|a
on #webkit).
Reverted changeset:
"Add crash diagnostics for debugging unexpected zapped cells."
https://bugs.webkit.org/show_bug.cgi?id=200149
https://trac.webkit.org/changeset/247886
2019-07-28 Tim Horton <timothy_horton@apple.com>
Fix the release build
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::TypeNamer::insert):
2019-07-28 Simon Fraser <simon.fraser@apple.com>
[iOS] Touch regions overlay needs to show touch-action:none
https://bugs.webkit.org/show_bug.cgi?id=200203
Reviewed by Wenson Hsieh.
When I added touch-action overlay painting, I didn't realize that touch-action:none
was an important value to display. But it is, so fix that.
* rendering/RenderLayerBacking.cpp:
(WebCore::patternForTouchAction):
2019-07-27 Saam Barati <sbarati@apple.com>
[WHLSL] Remove UnnamedType copy/move constructors and mark classes as final
https://bugs.webkit.org/show_bug.cgi?id=200188
Reviewed by Myles C. Maxfield.
Since they are ref counted, you should make taking a ref to them
instead of moving or copying them. This patch encodes that by deleting
the relevant copy/move constructors and assignment operators.
* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
(WebCore::WHLSL::AST::ArrayType::ArrayType): Deleted.
(WebCore::WHLSL::AST::ArrayType::create): Deleted.
(WebCore::WHLSL::AST::ArrayType::type const): Deleted.
(WebCore::WHLSL::AST::ArrayType::type): Deleted.
(WebCore::WHLSL::AST::ArrayType::numElements const): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
(WebCore::WHLSL::AST::PointerType::PointerType): Deleted.
(WebCore::WHLSL::AST::PointerType::create): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
(WebCore::WHLSL::AST::TypeReference::TypeReference): Deleted.
(WebCore::WHLSL::AST::TypeReference::create): Deleted.
(WebCore::WHLSL::AST::TypeReference::name): Deleted.
(WebCore::WHLSL::AST::TypeReference::typeArguments): Deleted.
(WebCore::WHLSL::AST::TypeReference::maybeResolvedType const): Deleted.
(WebCore::WHLSL::AST::TypeReference::resolvedType const): Deleted.
(WebCore::WHLSL::AST::TypeReference::setResolvedType): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
2019-07-27 Justin Fan <justin_fan@apple.com>
[WebGPU] Update GPUComputePipeline errors to match GPURenderPipeline implementation
https://bugs.webkit.org/show_bug.cgi?id=200097
Reviewed by Myles C. Maxfield.
Remove passing around a functionName in GPUComputePipeline creation in favor of setting it on the GPUErrorScopes.
Also, WebGPU objects no longer create new Ref<>s unless object creation succeeds.
No new tests. Covered by existing tests.
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createBuffer const):
(WebCore::WebGPUDevice::createBufferMapped const):
(WebCore::WebGPUDevice::createComputePipeline const):
* platform/graphics/gpu/GPUBuffer.h:
* platform/graphics/gpu/GPUComputePipeline.h:
* platform/graphics/gpu/GPUDevice.cpp:
(WebCore::GPUDevice::tryCreateBuffer):
(WebCore::GPUDevice::tryCreateComputePipeline const):
* platform/graphics/gpu/GPUDevice.h:
* platform/graphics/gpu/GPUErrorScopes.cpp:
(WebCore::GPUErrorScopes::generatePrefixedError): Only validaton errors have messages right now.
* platform/graphics/gpu/GPUErrorScopes.h:
* platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
(WebCore::GPUBuffer::validateBufferUsage):
(WebCore::GPUBuffer::tryCreate):
(WebCore::GPUBuffer::GPUBuffer):
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm:
(WebCore::trySetMetalFunctions):
(WebCore::trySetFunctions):
(WebCore::convertComputePipelineDescriptor):
(WebCore::tryCreateMTLComputePipelineState):
(WebCore::GPUComputePipeline::tryCreate):
(WebCore::GPUComputePipeline::GPUComputePipeline):
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::trySetMetalFunctions):
(WebCore::trySetFunctions):
These classes were made RefCounted in a previous patch; remove their move ctors to fix build.
* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
2019-07-27 Andres Gonzalez <andresg_22@apple.com>
Expose the aria-label attribute for <video> elements.
https://bugs.webkit.org/show_bug.cgi?id=200169
<rdar://problem/51754558>
Reviewed by Chris Fleizach.
Tests: accessibility/ios-simulator/media-with-aria-label.html
accessibility/media-with-aria-label.html
We now expose the <video> element to accessibility clients as long as auto-play is not enabled.
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityIsWebInteractiveVideo]):
2019-07-26 Saam Barati <sbarati@apple.com>
Unreviewed. Remove invalid assertion after r247878.
We were essentially asserting all UnnamedType* were
unique. But my patch made this no longer the case by
design to make things faster.
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::TypeNamer::insert):
2019-07-26 Mark Lam <mark.lam@apple.com>
Add crash diagnostics for debugging unexpected zapped cells.
https://bugs.webkit.org/show_bug.cgi?id=200149
<rdar://problem/53570112>
Reviewed by Yusuke Suzuki, Saam Barati, and Michael Saboff.
No new tests because this is a feature for debugging crashes. It has been tested
manually by modifying the code to force a crash at the point of interest.
Added some comments to document the hashes of known subspaces.
* bindings/js/WebCoreJSClientData.cpp:
(WebCore::JSVMClientData::JSVMClientData):
2019-07-26 Ryosuke Niwa <rniwa@webkit.org>
Moving right by word boundary right before an object element followed by a br element hangs
https://bugs.webkit.org/show_bug.cgi?id=200144
Reviewed by Simon Fraser.
The bug was caused by an infinite loop inside wordBreakIteratorForMinOffsetBoundary when it's trying to
find the previous word boundary at the beginning of a word after the object element and the br element.
In this case, previousBox is at the br element after the object element in the preceding line, and
logicallyPreviousBox ends up returning the same inline box (that of the br element), causing a hang.
Here's how. In logicallyPreviousBox, previousRootInlineBoxCandidatePosition returns a legacy position
immediately after the object element. The root inline box for this position (previousRoot) is the one
that contains the object element and the br element. However, when previousTextOrLineBreakBox is called
on this root inline box, "box" argument of the function is set to nullptr, and as a result, the function
finds and returns the same inline box of the br element that was passed to logicallyPreviousBox.
Fixed the bug by passing the starting inline box to previousRootInlineBoxCandidatePosition when its
root inline box is the previous root inline box (previousRoot). Also applied the same fix to
logicallyNextBox even though we don't have a reproduction for that case for now (RTL test case is
unaffected by nextRootInlineBoxCandidatePosition).
Tests: editing/selection/move-by-word-visually-across-object-element-1.html
editing/selection/move-by-word-visually-across-object-element-2.html
editing/selection/move-by-word-visually-across-object-element-3.html
* editing/VisibleUnits.cpp:
(WebCore::logicallyPreviousBox): Fixed the bug.
(WebCore::logicallyNextBox): Ditto.
2019-07-26 Brady Eidson <beidson@apple.com>
Do not fire readystatechange events at documents about to get replaced by javascript URLs.
<rdar://problem/51665406> and https://bugs.webkit.org/show_bug.cgi?id=198786
Reviewed by Ryosuke Niwa.
Test: http/tests/dom/ready-state-on-javascript-replace.html
We were firing too many readystatechange events, more than other browsers.
Our behavior on this test with this patch now matches Chrome.
(There was even an ancient FIXME alluding to this referencing a spec issue, and that issues has long been resolvedv)
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::stopLoading):
2019-07-26 Zalan Bujtas <zalan@apple.com>
[iPadOS] wix.com cannot select a template to edit or view
https://bugs.webkit.org/show_bug.cgi?id=200174
<rdar://problem/53281296>
Reviewed by Simon Fraser.
Opt out of simulated mouse event sending for template selection on wix.com.
When wix.com receives a simulated mouse event during the touch events, it calls preventDefault() which prevents us from running the hover heuristics -> no click.
* page/Quirks.cpp:
(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
2019-07-26 Saam Barati <sbarati@apple.com>
[WHLSL] UnnamedType should be reference counted
https://bugs.webkit.org/show_bug.cgi?id=200098
Reviewed by Dean Jackson.
This patch makes UnnamedType reference counted. The motivation for doing this
is I measured how many times we were cloning UnnamedTypes, and I found we were
doing it ~433,000 times in some of Justin's demos. This is hugely wasteful,
given that an UnnamedType is immutable in the sense that once the type is
resolved, it will never change. So instead of repeatedly cloning the same
type, and having Expression point to a UniqueRef of UnnamedType, we should
instead make UnnamedType reference counted, and have expressions point to a
potentially shared UnnamedType.
Doing this is hugely beneficial to WHLSL compile times. On Justin's demos,
these are the results I'm getting:
hello-triangle: neutral
hello-cube: 55% faster
compute-blur: 35% faster
textured-cube: 49% faster
* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
(WebCore::WHLSL::AST::ArrayReferenceType::ArrayReferenceType):
(WebCore::WHLSL::AST::ArrayReferenceType::create):
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
(WebCore::WHLSL::AST::ArrayType::ArrayType):
(WebCore::WHLSL::AST::ArrayType::create):
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:
(WebCore::WHLSL::AST::EnumerationDefinition::EnumerationDefinition):
* Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
(WebCore::WHLSL::AST::Expression::setType):
(WebCore::WHLSL::AST::Expression::copyTypeTo const):
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteral.h:
(WebCore::WHLSL::AST::FloatLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.cpp:
(WebCore::WHLSL::AST::FloatLiteralType::FloatLiteralType):
(WebCore::WHLSL::AST::FloatLiteralType::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
(WebCore::WHLSL::AST::FunctionDeclaration::FunctionDeclaration):
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.h:
(WebCore::WHLSL::AST::IntegerLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.cpp:
(WebCore::WHLSL::AST::IntegerLiteralType::IntegerLiteralType):
(WebCore::WHLSL::AST::IntegerLiteralType::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h:
(WebCore::WHLSL::AST::NullLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
(WebCore::WHLSL::AST::PointerType::PointerType):
(WebCore::WHLSL::AST::PointerType::create):
* Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
(WebCore::WHLSL::AST::ReadModifyWriteExpression::ReadModifyWriteExpression):
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
(WebCore::WHLSL::AST::ReferenceType::ReferenceType):
* Modules/webgpu/WHLSL/AST/WHLSLResolvableType.h:
(WebCore::WHLSL::AST::ResolvableType::resolve):
* Modules/webgpu/WHLSL/AST/WHLSLStructureElement.h:
(WebCore::WHLSL::AST::StructureElement::StructureElement):
* Modules/webgpu/WHLSL/AST/WHLSLTypeArgument.cpp:
(WebCore::WHLSL::AST::clone):
* Modules/webgpu/WHLSL/AST/WHLSLTypeArgument.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeDefinition.h:
(WebCore::WHLSL::AST::TypeDefinition::TypeDefinition):
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.cpp:
(WebCore::WHLSL::AST::TypeReference::wrap):
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
(WebCore::WHLSL::AST::TypeReference::create):
(WebCore::WHLSL::AST::TypeReference::cloneTypeReference const): Deleted.
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.h:
(WebCore::WHLSL::AST::UnsignedIntegerLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.cpp:
(WebCore::WHLSL::AST::UnsignedIntegerLiteralType::UnsignedIntegerLiteralType):
(WebCore::WHLSL::AST::UnsignedIntegerLiteralType::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::vectorInnerType):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeTypeWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeType):
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.cpp:
(WebCore::WHLSL::AutoInitialize::visit):
* Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
(WebCore::WHLSL::DuplicateFunctionKey::hash const):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveWithOperatorAnderIndexer):
(WebCore::WHLSL::resolveWithOperatorLength):
(WebCore::WHLSL::resolveWithReferenceComparator):
(WebCore::WHLSL::resolveByInstantiation):
(WebCore::WHLSL::checkOperatorOverload):
(WebCore::WHLSL::Checker::assignTypes):
(WebCore::WHLSL::matchAndCommit):
(WebCore::WHLSL::commit):
(WebCore::WHLSL::Checker::assignConcreteType):
(WebCore::WHLSL::Checker::assignType):
(WebCore::WHLSL::Checker::forwardType):
(WebCore::WHLSL::Checker::visit):
(WebCore::WHLSL::getUnnamedType):
(WebCore::WHLSL::argumentTypeForAndOverload):
(WebCore::WHLSL::Checker::finishVisiting):
(WebCore::WHLSL::Checker::isBoolType):
* Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:
(WebCore::WHLSL::matchAndCommit):
(WebCore::WHLSL::commit):
(WebCore::WHLSL::inferTypesForTypeArguments):
(WebCore::WHLSL::inferTypesForCallImpl):
* Modules/webgpu/WHLSL/WHLSLInferTypes.h:
* Modules/webgpu/WHLSL/WHLSLIntrinsics.cpp:
(WebCore::WHLSL::Intrinsics::addVector):
(WebCore::WHLSL::Intrinsics::addMatrix):
(WebCore::WHLSL::Intrinsics::addTexture):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseTypeArgument):
(WebCore::WHLSL::Parser::parseType):
(WebCore::WHLSL::Parser::parseEnumerationDefinition):
(WebCore::WHLSL::Parser::parseVariableDeclaration):
(WebCore::WHLSL::Parser::parseVariableDeclarations):
* Modules/webgpu/WHLSL/WHLSLParser.h:
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
(WebCore::WHLSL::PreserveLifetimes::PreserveLifetimes):
(WebCore::WHLSL::PreserveLifetimes::makeStructVariableReference):
(WebCore::WHLSL::PreserveLifetimes::assignVariableIntoStruct):
(WebCore::WHLSL::preserveVariableLifetimes):
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::wrapAnderCallArgument):
(WebCore::WHLSL::anderCallArgument):
(WebCore::WHLSL::setterCall):
(WebCore::WHLSL::getterCall):
(WebCore::WHLSL::modify):
(WebCore::WHLSL::PropertyResolver::visit):
(WebCore::WHLSL::PropertyResolver::simplifyRightValue):
(WebCore::WHLSL::LeftValueSimplifier::finishVisiting):
* Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.cpp:
(WebCore::WHLSL::conversionCost):
* Modules/webgpu/WHLSL/WHLSLResolvingType.h:
(WebCore::WHLSL::ResolvingType::ResolvingType):
(WebCore::WHLSL::ResolvingType::getUnnamedType):
(WebCore::WHLSL::ResolvingType::visit):
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
(WebCore::WHLSL::synthesizeArrayOperatorLength):
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
(WebCore::WHLSL::synthesizeConstructors):
* Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
(WebCore::WHLSL::synthesizeEnumerationFunctions):
* Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
(WebCore::WHLSL::synthesizeStructureAccessors):
* Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
(WebCore::WHLSL::Visitor::visit):
2019-07-26 Takashi Komori <Takashi.Komori@sony.com>
[curl] Heap corruption in ~CurlResponse
https://bugs.webkit.org/show_bug.cgi?id=198320
Reviewed by Fujii Hironori.
Stop sharing object which was reffered by two threads to fix crash bug.
No tests needed, no functionality changes.
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::start):
(WebCore::CurlRequest::invokeDidReceiveResponseForFile):
* platform/network/curl/CurlRequest.h:
2019-07-26 Youenn Fablet <youenn@apple.com>
slides.google.com: opening speaker notes while presenting causes a fatal error in the web app on iPad
https://bugs.webkit.org/show_bug.cgi?id=199933
<rdar://problem/53034345>
Reviewed by Darin Adler.
docs.google.com might sometimes try to window.open an about URL that not about:blank or about:srcdoc.
In that case, WebKit is opening a window but is considering that the window is cross origin with its opener.
This breaks docs.google.com as they want to access the website.
Add a site-specific hack so as to treat all about URLs being opened through window.open as about:blank.
Manually tested on docs.google.com website.
* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
(WebCore::DOMWindow::open):
* page/Quirks.cpp:
(WebCore::Quirks::needsYouTubeOverflowScrollQuirk const):
(WebCore::Quirks::shouldOpenAsAboutBlank const):
* page/Quirks.h:
2019-07-26 Alexander Mikhaylenko <exalm7659@gmail.com>
REGRESSION(r246496): [GTK] Tapping the web view scrolls up a bit
https://bugs.webkit.org/show_bug.cgi?id=200084
Reviewed by Carlos Garcia Campos.
gdk_event_get_scroll_direction() returns false, but also sets direction to GDK_SCROLL_UP if
the direction was GDK_SCROLL_SMOOTH. Relying on zero deltas in this case is not correct, because
they can also be zero with GDK_SCROLL_SMOOTH. In this case, set the direction manually to avoid
that.
See https://gitlab.gnome.org/GNOME/gtk/issues/2048
* platform/gtk/PlatformWheelEventGtk.cpp:
(WebCore::PlatformWheelEvent::PlatformWheelEvent):
2019-07-26 Rob Buis <rbuis@igalia.com>
Make storing cross-origin top-level prefetches in HTTP cache optional
https://bugs.webkit.org/show_bug.cgi?id=199499
Reviewed by Youenn Fablet.
Add Internals API for adding an event listener to prefetch load.
Test: http/wpt/prefetch/link-prefetch-skip-disk-cache.html
* bindings/js/JSEventListener.h:
* dom/EventTarget.h:
(WebCore::EventTarget::addEventListener):
* dom/Node.h:
* html/HTMLLinkElement.h:
* testing/Internals.cpp:
(WebCore::Internals::addPrefetchLoadEventListener):
* testing/Internals.h:
* testing/Internals.idl:
2019-07-25 Tim Horton <timothy_horton@apple.com>
Subpixel fringes around TextIndicator snapshots at non-integral scale factors
https://bugs.webkit.org/show_bug.cgi?id=200145
Reviewed by Simon Fraser.
* page/FrameSnapshotting.cpp:
(WebCore::snapshotFrameRectWithClip):
* page/FrameSnapshotting.h:
* page/TextIndicator.cpp:
(WebCore::snapshotOptionsForTextIndicatorOptions):
Round the scale factor up, and snappily enclose the clip rects.
TextIndicator doesn't require the use of the precise scale factor that
the page is painted at, but we want it to be sharp, so we overshoot!
2019-07-25 Brent Fulgham <bfulgham@apple.com>
Use IWICBitmap (rather than ID2D1Bitmap) for NativeImagePtr on FTW
https://bugs.webkit.org/show_bug.cgi?id=200093
Reviewed by Dean Jackson.
When I wrote the original Direct2D code, I did not realize that the backing memory for the
ID2D1Bitmap was inaccessible since it is effectively a representation of GPU memory. There
is no API to access or modify the pixels.
Instead, MSDN documentation indicates that we should be using IWICBitmap objects, which are
converted to ID2D1Bitmap objects when things are ready to be rendered.
This makes it possible to use the TextureMapper backend to do efficient compositing and tile
drawing, since the data backing the bitmap can now be accessed and manipulated, allowing us
to support filters and other effects.
* PlatformFTW.cmake:
* platform/MIMETypeRegistry.cpp:
(WebCore::supportedImageMIMETypesForEncoding):
* platform/graphics/ANGLEWebKitBridge.h:
* platform/graphics/GraphicsContext.h:
* platform/graphics/ImageBuffer.h:
* platform/graphics/NativeImage.h:
* platform/graphics/OpenGLShims.h:
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::paintRenderingResultsToCanvas):
* platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::platformLayer const):
* platform/graphics/texmap/BitmapTexture.cpp:
(WebCore::BitmapTexture::updateContents):
* platform/graphics/texmap/BitmapTextureGL.cpp:
(WebCore::BitmapTextureGL::updateContents):
* platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp:
(WebCore::GraphicsContext3D::~GraphicsContext3D):
* platform/graphics/win/GraphicsContextDirect2D.cpp:
(WebCore::GraphicsContext::GraphicsContext):
(WebCore::GraphicsContext::platformInit):
(WebCore::GraphicsContextPlatformPrivate::setAlpha):
(WebCore::GraphicsContext::drawNativeImage):
(WebCore::GraphicsContext::drawDeviceBitmap):
(WebCore::GraphicsContext::releaseWindowsContext):
(WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
(WebCore::GraphicsContextPlatformPrivate::~GraphicsContextPlatformPrivate):
(WebCore::GraphicsContextPlatformPrivate::beginDraw):
(WebCore::GraphicsContextPlatformPrivate::endDraw):
(WebCore::GraphicsContext::drawPattern):
(WebCore::GraphicsContext::clipPath):
* platform/graphics/win/GraphicsContextPlatformPrivateDirect2D.h:
* platform/graphics/win/ImageBufferDataDirect2D.cpp:
(WebCore::ImageBufferData::getData const):
(WebCore::ImageBufferData::putData):
* platform/graphics/win/ImageBufferDataDirect2D.h:
(): Deleted.
* platform/graphics/win/ImageBufferDirect2D.cpp:
(WebCore::ImageBuffer::createCompatibleBuffer):
(WebCore::ImageBuffer::ImageBuffer):
(WebCore::createCroppedImageIfNecessary):
(WebCore::createBitmapImageAfterScalingIfNeeded):
(WebCore::ImageBuffer::copyImage const):
(WebCore::ImageBuffer::sinkIntoNativeImage):
(WebCore::ImageBuffer::copyNativeImage const):
(WebCore::ImageBuffer::draw):
* platform/graphics/win/ImageDecoderDirect2D.cpp:
(WebCore::ImageDecoderDirect2D::createFrameImageAtIndex):
* platform/graphics/win/ImageDirect2D.cpp:
(WebCore::BitmapImage::drawFrameMatchingSourceSize):
* platform/graphics/win/NativeImageDirect2D.cpp:
(WebCore::imagingFactory):
(WebCore::nativeImageSize):
(WebCore::nativeImageHasAlpha):
(WebCore::nativeImageSinglePixelSolidColor):
(WebCore::drawNativeImage):
(WebCore::clearNativeImageSubimages):
* platform/graphics/win/PathDirect2D.cpp:
(WebCore::Path::strokeContains const):
* platform/graphics/win/PatternDirect2D.cpp:
(WebCore::Pattern::createPlatformPattern const):
* platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::read):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::shouldRespectImageOrientation const):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::adjustTiledBackingCoverage):
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::nativeImage):
2019-07-25 Ryosuke Niwa <rniwa@webkit.org>
REGRESSION (r243637): Some web fonts fail to load on Google docs
https://bugs.webkit.org/show_bug.cgi?id=200106
Reviewed by Geoffrey Garen.
Prior to r243637, WebKit threw an exception if the font family name didn't parse as a CSS identifier in the setter
of `family` IDL attribute of FontFace interface because WebKit implemented the old spec faithfully unlike Chrome
and Firefox which basically treated it as a string and didn't throw any exception. [1]
To account for this browser behavior difference, Google docs implemented a workaround for Safari which is to wrap
some identifiers in font family names with quotation marks: `docs-Amatic SC` as `'docs-Amatic SC'` and
`docs-Playfair Display` as `docs-'Playfair Display'`. Unfortunately, this in turn causes the latest Safari to
not match these font face family with those that appear in stylesheet since we no longer parse it as a CSS identifier.
This patch adds a site specific quirk for Google docs to undo this workaround by stripping away single quotation marks.
[1] See https://github.com/w3c/csswg-drafts/issues/3776 for the context.
* css/FontFace.cpp:
(WebCore::FontFace::create):
(WebCore::FontFace::setFamily):
* css/FontFace.h:
* css/FontFace.idl:
* page/Quirks.cpp:
(WebCore::Quirks::shouldStripQuotationMarkInFontFaceSetFamily const):
* page/Quirks.h:
2019-07-25 Dean Jackson <dino@apple.com>
Add helper for ignoring deprecated implementation warnings
https://bugs.webkit.org/show_bug.cgi?id=200135
Reviewed by Wenson Hsieh.
Add ALLOW_DEPRECATED_IMPLEMENTATIONS_BEGIN/END macro which
is IGNORE_WARNINGS_BEGIN("deprecated-implementations")
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper accessibilityIsAttributeSettable:]):
(-[WebAccessibilityObjectWrapper accessibilityPerformAction:]):
(-[WebAccessibilityObjectWrapper accessibilitySetValue:forAttribute:]):
(-[WebAccessibilityObjectWrapper accessibilityActionDescription:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
(-[WebAccessibilityObjectWrapper IGNORE_WARNINGS_END]): Deleted.
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(-[WebAVStreamDataParserListener streamDataParserWillProvideContentKeyRequestInitializationData:forTrackID:]):
(-[WebAVStreamDataParserListener streamDataParser:didProvideContentKeyRequestInitializationData:forTrackID:]):
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveAuthenticationChallenge:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:canAuthenticateAgainstProtectionSpace:]):
2019-07-25 Saam Barati <sbarati@apple.com>
Unreviewed. Speculative build fix for tvOS of missing include.
* Modules/webgpu/WHLSL/WHLSLLexer.h:
2019-07-25 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, fix -Wunused-parameter warning
* testing/Internals.cpp:
(WebCore::Internals::privatePlayerVolume):
2019-07-25 Saam Barati <sbarati@apple.com>
[WHLSL] Add descriptive error messages
https://bugs.webkit.org/show_bug.cgi?id=195682
<rdar://problem/50746322>
Reviewed by Myles C. Maxfield.
This patch adds error messages to the WHLSL compiler. I'm taking a first pass
at having decent error messages everywhere we set an error. However, we will
probably refine these messages to be more accurate and descriptive over time.
Passes that can fail no longer return a boolean. Instead, they return Expected<void, Error>.
From Error, we can generate a descriptive error message. Visitor::setError now
requires an Error as an argument. So anywhere in Visitor that might fail is
now required to provide an error message.
In a follow-up to this, we should actually make our checkFail tests test that
they get the expected error message: https://bugs.webkit.org/show_bug.cgi?id=200049
* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
* Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLBaseFunctionAttribute.h:
* Modules/webgpu/WHLSL/AST/WHLSLBaseSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLBlock.h:
* Modules/webgpu/WHLSL/AST/WHLSLBooleanLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLBreak.h:
* Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLCommaExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLContinue.h:
* Modules/webgpu/WHLSL/AST/WHLSLDereferenceExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLDoWhileLoop.h:
* Modules/webgpu/WHLSL/AST/WHLSLDotExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLEffectfulExpressionStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMember.h:
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMemberLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLFallthrough.h:
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
* Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLGlobalVariableReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLLogicalExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLLogicalNotExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLMakeArrayReferenceExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLMakePointerExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLNamedType.h:
* Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
* Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLQualifier.h:
* Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
* Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLStatementList.h:
* Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLStructureElement.h:
* Modules/webgpu/WHLSL/AST/WHLSLSwitchCase.h:
* Modules/webgpu/WHLSL/AST/WHLSLSwitchStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLTernaryExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeArgument.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclarationsStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLWhileLoop.h:
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.cpp:
(WebCore::WHLSL::AutoInitialize::visit):
(WebCore::WHLSL::autoInitializeVariables):
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.h:
* Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
(WebCore::WHLSL::checkDuplicateFunctions):
* Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.h:
* Modules/webgpu/WHLSL/WHLSLCheckTextureReferences.cpp:
(WebCore::WHLSL::TextureReferencesChecker::visit):
(WebCore::WHLSL::checkTextureReferences):
* Modules/webgpu/WHLSL/WHLSLCheckTextureReferences.h:
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveWithOperatorAnderIndexer):
(WebCore::WHLSL::resolveWithOperatorLength):
(WebCore::WHLSL::resolveWithReferenceComparator):
(WebCore::WHLSL::resolveByInstantiation):
(WebCore::WHLSL::resolveFunction):
(WebCore::WHLSL::checkSemantics):
(WebCore::WHLSL::Checker::assignTypes):
(WebCore::WHLSL::Checker::visit):
(WebCore::WHLSL::Checker::recurseAndGetInfo):
(WebCore::WHLSL::Checker::getInfo):
(WebCore::WHLSL::Checker::finishVisiting):
(WebCore::WHLSL::Checker::recurseAndRequireBoolType):
(WebCore::WHLSL::check):
* Modules/webgpu/WHLSL/WHLSLChecker.h:
* Modules/webgpu/WHLSL/WHLSLCodeLocation.h: Added.
(WebCore::WHLSL::CodeLocation::CodeLocation):
(WebCore::WHLSL::CodeLocation::startOffset const):
(WebCore::WHLSL::CodeLocation::endOffset const):
(WebCore::WHLSL::CodeLocation::operator== const):
(WebCore::WHLSL::CodeLocation::operator!= const):
(WebCore::WHLSL::CodeLocation::operator bool const):
* Modules/webgpu/WHLSL/WHLSLComputeDimensions.cpp:
(WebCore::WHLSL::computeDimensions):
* Modules/webgpu/WHLSL/WHLSLError.h: Added.
(WebCore::WHLSL::Error::Error):
(WebCore::WHLSL::Error::codeLocation const):
(WebCore::WHLSL::Error::message const):
* Modules/webgpu/WHLSL/WHLSLFunctionStageChecker.cpp:
(WebCore::WHLSL::checkFunctionStages):
* Modules/webgpu/WHLSL/WHLSLFunctionStageChecker.h:
* Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.cpp:
(WebCore::WHLSL::Gatherer::reset):
(WebCore::WHLSL::Gatherer::visit):
(WebCore::WHLSL::gatherEntryPointItems):
* Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.h:
* Modules/webgpu/WHLSL/WHLSLLexer.cpp:
(WebCore::WHLSL::Lexer::lineAndColumnNumberFromOffset):
(WebCore::WHLSL::Lexer::errorString):
(WebCore::WHLSL::Lexer::lineNumberFromOffset): Deleted.
* Modules/webgpu/WHLSL/WHLSLLexer.h:
(WebCore::WHLSL::CodeLocation::CodeLocation):
(WebCore::WHLSL::Lexer::errorString):
(WebCore::WHLSL::AST::CodeLocation::CodeLocation): Deleted.
(WebCore::WHLSL::AST::CodeLocation::startOffset const): Deleted.
(WebCore::WHLSL::AST::CodeLocation::endOffset const): Deleted.
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::~NameResolver):
(WebCore::WHLSL::NameResolver::visit):
(WebCore::WHLSL::resolveNamesInTypes):
(WebCore::WHLSL::resolveTypeNamesInFunctions):
* Modules/webgpu/WHLSL/WHLSLNameResolver.h:
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parse):
(WebCore::WHLSL::intLiteralToInt):
(WebCore::WHLSL::uintLiteralToUint):
(WebCore::WHLSL::floatLiteralToFloat):
(WebCore::WHLSL::recognizeSimpleUnsignedInteger):
(WebCore::WHLSL::Parser::parseTypeArgument):
(WebCore::WHLSL::Parser::parseType):
(WebCore::WHLSL::Parser::parseForLoop):
(WebCore::WHLSL::Parser::parseWhileLoop):
(WebCore::WHLSL::Parser::parseEffectfulExpression):
(WebCore::WHLSL::Parser::parseLimitedSuffixOperator):
(WebCore::WHLSL::Parser::parseSuffixOperator):
(WebCore::WHLSL::Parser::parseExpression):
(WebCore::WHLSL::Parser::completeTernaryConditional):
(WebCore::WHLSL::Parser::completeAssignment):
(WebCore::WHLSL::Parser::completePossibleLogicalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleRelationalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleShift):
(WebCore::WHLSL::Parser::completePossibleAdd):
(WebCore::WHLSL::Parser::completePossibleMultiply):
(WebCore::WHLSL::Parser::parsePossiblePrefix):
(WebCore::WHLSL::Parser::parseCallExpression):
* Modules/webgpu/WHLSL/WHLSLParser.h:
(WebCore::WHLSL::Parser::Error::Error): Deleted.
(WebCore::WHLSL::Parser::Error::dump const): Deleted.
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
(WebCore::WHLSL::prepare):
* Modules/webgpu/WHLSL/WHLSLPrepare.h:
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::setterCall):
(WebCore::WHLSL::getterCall):
(WebCore::WHLSL::modify):
(WebCore::WHLSL::PropertyResolver::visit):
* Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp:
(WebCore::WHLSL::checkRecursion):
* Modules/webgpu/WHLSL/WHLSLRecursionChecker.h:
* Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.cpp:
(WebCore::WHLSL::checkRecursiveTypes):
* Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.h:
* Modules/webgpu/WHLSL/WHLSLStandardLibraryUtilities.cpp:
(WebCore::WHLSL::includeStandardLibrary):
* Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:
(WebCore::WHLSL::checkStatementBehavior):
* Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h:
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
(WebCore::WHLSL::synthesizeArrayOperatorLength):
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.h:
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
(WebCore::WHLSL::synthesizeConstructors):
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.h:
* Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
(WebCore::WHLSL::synthesizeEnumerationFunctions):
* Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.h:
* Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
(WebCore::WHLSL::synthesizeStructureAccessors):
* Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.h:
* Modules/webgpu/WHLSL/WHLSLVisitor.h:
(WebCore::WHLSL::Visitor::hasError const):
(WebCore::WHLSL::Visitor::expectedError):
(WebCore::WHLSL::Visitor::checkErrorAndVisit):
(WebCore::WHLSL::Visitor::setError):
(WebCore::WHLSL::Visitor::error const): Deleted.
(): Deleted.
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm:
(WebCore::trySetFunctions):
2019-07-25 Saam Barati <sbarati@apple.com>
[WHLSL] Add optional logging for phase timings
https://bugs.webkit.org/show_bug.cgi?id=200099
Reviewed by Dean Jackson.
As we're doing WHLSL compiler speedup work, it helps to be able to
log phase times. I think a few of us have written such patches locally.
In this patch, I'm adding a way to easily switch this logging on and
off by flipping a "constexpr bool" and rebuilding.
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::logPhaseTimes):
(WebCore::WHLSL::PhaseTimer::PhaseTimer):
(WebCore::WHLSL::PhaseTimer::~PhaseTimer):
(WebCore::WHLSL::prepareShared):
(WebCore::WHLSL::prepare):
2019-07-25 Chris Dumez <cdumez@apple.com>
Avoid some unnecessary HashMap copies
https://bugs.webkit.org/show_bug.cgi?id=200129
Reviewed by Youenn Fablet.
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::addRegistrationFromStore):
2019-07-25 Joshua Watt <JPEW.hacker@gmail.com>
[WPE] Draw other button types
https://bugs.webkit.org/show_bug.cgi?id=199377
Reviewed by Michael Catanzaro.
There are other button types that should be drawn with the default style
besides just push buttons.
* platform/wpe/ThemeWPE.cpp:
(WebCore::ThemeWPE::paint):
(WebCore::ThemeWPE::paintButton):
* platform/wpe/ThemeWPE.h:
2019-07-25 Said Abou-Hallawa <sabouhallawa@apple.com>
REGRESSION (r244995): Assertion failure when addEventListener to an SVGElement which has an. instance in shadow tree
https://bugs.webkit.org/show_bug.cgi?id=200083
Reviewed by Ryosuke Niwa.
When adding an event listener to an SVGElement, the same event listener
has to be add to all the instances of SVGElement in the shadow tree. See
SVGElement::addEventListener().
In r244995, an assertion was added to ensure if the event listener is
attached to an event target, the new event target has be the same as the
attached one. This assertion isn't correct for the event targets which
were copied from the targetElement sub tree of an SVGUseElement to the
shadow tree.
Test: svg/custom/add-event-listener-shadow-tree-element.html
* bindings/js/JSLazyEventListener.cpp:
(WebCore::isCloneInShadowTreeOfSVGUseElement):
(WebCore::JSLazyEventListener::checkValidityForEventTarget):
2019-07-25 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r247821.
Caused two crashing Layout Tests
Reverted changeset:
"Make storing cross-origin top-level prefetches in HTTP cache
optional"
https://bugs.webkit.org/show_bug.cgi?id=199499
https://trac.webkit.org/changeset/247821
2019-07-25 Chris Dumez <cdumez@apple.com>
Avoid UI Process hangs when the WebContent process is showing JS prompts / alerts
https://bugs.webkit.org/show_bug.cgi?id=200107
<rdar://problem/53034592>
Reviewed by Geoffrey Garen.
Add testing infrastructure for SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply.
Test: fast/misc/testProcessIncomingSyncMessagesWhenWaitingForSyncReply.html
* page/ChromeClient.h:
* testing/Internals.cpp:
(WebCore::Internals::testProcessIncomingSyncMessagesWhenWaitingForSyncReply):
* testing/Internals.h:
* testing/Internals.idl:
2019-07-25 Rob Buis <rbuis@igalia.com>
Make storing cross-origin top-level prefetches in HTTP cache optional
https://bugs.webkit.org/show_bug.cgi?id=199499
Reviewed by Youenn Fablet.
Add Internals API for adding an event listener to prefetch load.
Test: http/wpt/prefetch/link-prefetch-skip-disk-cache.html
* bindings/js/JSEventListener.h:
* dom/EventTarget.h:
(WebCore::EventTarget::addEventListener):
* dom/Node.h:
* html/HTMLLinkElement.h:
* testing/Internals.cpp:
(WebCore::Internals::addPrefetchLoadEventListener):
* testing/Internals.h:
* testing/Internals.idl:
2019-07-24 Yusuke Suzuki <ysuzuki@apple.com>
[bmalloc] Add IsoHeap test to ensure that IsoHeap pages are not allocating too large VA
https://bugs.webkit.org/show_bug.cgi?id=200103
Reviewed by Mark Lam.
No behavior change in WebCore.
* page/MemoryRelease.cpp:
* page/ResourceUsageThread.h:
(WebCore::TagInfo::TagInfo): Deleted.
* page/cocoa/ResourceUsageThreadCocoa.mm:
(WebCore::vmPageSize): Deleted.
(WebCore::logFootprintComparison): Deleted.
(WebCore::displayNameForVMTag): Deleted.
(WebCore::pagesPerVMTag): Deleted.
2019-07-24 Devin Rousso <drousso@apple.com>
Web Inspector: support `console.screenshot` with detached Nodes that are graphical
https://bugs.webkit.org/show_bug.cgi?id=199309
Reviewed by Joseph Pecoraro.
Test: inspector/console/console-screenshot.html
* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::screenshot):
2019-07-24 Saam Barati <sbarati@apple.com>
[WHLSL] Use bmalloc instead of system malloc for WHLSL data structures
https://bugs.webkit.org/show_bug.cgi?id=200063
Rubber-stamped by Sam Weinig.
This is a 25-30% WHLSL compile time speedup on Justin's textured-cube demo
and a ~40% compile time speedup on the hello-cube demo.
The phases that speed up from this are:
checker
includeStandardLibrary
autoInitializeVariables
resolveProperties
* Modules/webgpu/WHLSL/AST/WHLSLAddressSpace.h:
* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
* Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLBaseFunctionAttribute.h:
* Modules/webgpu/WHLSL/AST/WHLSLBaseSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLBlock.h:
* Modules/webgpu/WHLSL/AST/WHLSLBooleanLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLBreak.h:
* Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLCommaExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLConstantExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLContinue.h:
* Modules/webgpu/WHLSL/AST/WHLSLDereferenceExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLDoWhileLoop.h:
* Modules/webgpu/WHLSL/AST/WHLSLDotExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLEffectfulExpressionStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMember.h:
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMemberLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLFallthrough.h:
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
* Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLFunctionDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLGlobalVariableReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLLogicalExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLLogicalNotExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLMakeArrayReferenceExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLMakePointerExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLNamedType.h:
* Modules/webgpu/WHLSL/AST/WHLSLNativeFunctionDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLNumThreadsFunctionAttribute.h:
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
* Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLResolvableType.h:
* Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
* Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLStatementList.h:
* Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLStructureElement.h:
* Modules/webgpu/WHLSL/AST/WHLSLSwitchCase.h:
* Modules/webgpu/WHLSL/AST/WHLSLSwitchStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLTernaryExpression.h:
* Modules/webgpu/WHLSL/AST/WHLSLType.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclarationsStatement.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLWhileLoop.h:
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
2019-07-24 Devin Rousso <drousso@apple.com>
Web Inspector: support `console.screenshot` with ImageData and ImageBitmap
https://bugs.webkit.org/show_bug.cgi?id=199304
Reviewed by Joseph Pecoraro.
Test: inspector/console/console-screenshot.html
* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::screenshot):
2019-07-24 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: Overlay: highlighting a ::before/::after shows the node info of the parent instead
https://bugs.webkit.org/show_bug.cgi?id=200051
Reviewed by Joseph Pecoraro.
When highlighting a pseudo-element, only use the parent node for selector information. All
rendering data should still come from the pseudo-element itself.
* inspector/InspectorOverlay.cpp:
(WebCore::drawShapeHighlight):
(WebCore::InspectorOverlay::drawElementTitle):
2019-07-24 Devin Rousso <drousso@apple.com>
Web Inspector: support `console.screenshot` with subclasses of CanvasRenderingContext
https://bugs.webkit.org/show_bug.cgi?id=199305
Reviewed by Joseph Pecoraro.
Test: inspector/console/console-screenshot.html
* page/PageConsoleClient.cpp:
(WebCore::canvasRenderingContext):
(WebCore::PageConsoleClient::record):
(WebCore::PageConsoleClient::recordEnd):
(WebCore::PageConsoleClient::screenshot):
2019-07-24 Youenn Fablet <youenn@apple.com>
Remove MediaPlayerPrivate::supportsMuting()
https://bugs.webkit.org/show_bug.cgi?id=200005
Reviewed by Eric Carlson.
Remove no longer needed interface method.
No change of behavior.
* WebCore.order:
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::setVolume):
(WebCore::MediaPlayer::setMuted):
* platform/graphics/MediaPlayerPrivate.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
* platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:
2019-07-24 Tim Horton <timothy_horton@apple.com>
Daring Fireball long press highlights are unnecessarily inflated due to false illegibility
https://bugs.webkit.org/show_bug.cgi?id=200064
Reviewed by Geoff Garen.
If we consider text illegible on the given estimated background color,
we bail from doing a tightly fitted selection-only TextIndicator and
instead just paint the page without modification into the indicator,
causing ugly overlap and an excessively inflated indicator.
Change the mechanism we use to determine illegibility to be based on
a standard, instead of a constant chosen by hand 13 years ago.
Test: fast/text-indicator/text-indicator-with-low-contrast-text.html
* platform/graphics/ColorUtilities.cpp:
(WebCore::luminance):
Fix a typo.
(WebCore::contrastRatio):
Add a function that computes the contrast ratio given two colors using
the formula from WCAG.
* platform/graphics/ColorUtilities.h:
* rendering/TextPaintStyle.cpp:
(WebCore::textColorIsLegibleAgainstBackgroundColor):
Make use of WCAG's minimum legible contrast ratio instead of an
arbitrary color difference cutoff for determining whether we consider
text legible. It seems sensible and also considers the text on DF readable
(which it seems to be to me!).
* testing/Internals.cpp:
(WebCore::Internals::TextIndicatorInfo::TextIndicatorInfo):
* testing/Internals.h:
* testing/Internals.idl:
Expose all of the text rects to Internals, not just the bounding rect.
Expose some more TextIndicator options to Internals so that we can
turn on the legibility mechanism.
2019-07-24 Devin Rousso <drousso@apple.com>
Web Inspector: print the target of `console.screenshot` last so the target is the closest item to the image
https://bugs.webkit.org/show_bug.cgi?id=199308
Reviewed by Joseph Pecoraro.
Right now, evaluating `console.screenshot(document, "test", 1);` will log a message to the
console with `#document`, `"test"`, and `1`, all on different lines (togglable by a
disclosure triangle) since `#document` isn't stringifiable.
The ideal situation would be to have `"test"` and `1` logged on the same line, and then have
`#document` be in a disclosure triangle. This way, you can "label" your images using
additional arguments (e.g. `console.screenshot(document.images[1], "second image");`), as
well as provide other data.
If the only argument was the target, it should print as if it was `console.log(target);`.
If there are no arguments, it should print the text "Viewport"` before the image.
Test: inspector/console/console-screenshot.html
* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::addMessage):
(WebCore::PageConsoleClient::screenshot):
2019-07-24 Alicia Boya García <aboya@igalia.com>
[MSE] Reenqueue after removeCodedFrames()
https://bugs.webkit.org/show_bug.cgi?id=199749
Reviewed by Xabier Rodriguez-Calvar.
Before this patch, SourceBuffer::removeCodedFrames() did not trigger
an immediate reenqueue, but rather just set the `needsReenqueuing`
flag, deferring it for the next append... but there may not be another
append! In that case, the removed frames would still wrongly play.
This is the case for instance in tests where a single long media
append is done and then "cropped" with SourceBuffer.erase().
Test: media/media-source/media-source-erase-after-last-append.html
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::removeCodedFrames):
2019-07-24 Jer Noble <jer.noble@apple.com>
Add per-document autoplay quirk for netflix.com.
https://bugs.webkit.org/show_bug.cgi?id=200058
Reviewed by Eric Carlson.
Opt netflix.com into the desktop-style per-document autoplay quirk.
* page/Quirks.cpp:
(WebCore::Quirks::needsPerDocumentAutoplayBehavior const):
2019-07-24 Alicia Boya García <aboya@igalia.com>
[GStreamer] Don't crash with empty video src
https://bugs.webkit.org/show_bug.cgi?id=200081
When a <video> element is set to load empty or about:blank, a player is still
created, but no pipeline is loaded. This patch fixes some assertion errors that
manifested in that case.
Reviewed by Philippe Normand.
Test: imported/w3c/web-platform-tests/html/semantics/embedded-content/the-video-element/video_crash_empty_src.html
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::loadFull):
(WebCore::MediaPlayerPrivateGStreamer::platformDuration const):
(WebCore::MediaPlayerPrivateGStreamer::paused const):
2019-07-23 Justin Fan <justin_fan@apple.com>
[WebGPU] Implement errors for GPURenderPipeline creation
https://bugs.webkit.org/show_bug.cgi?id=200046
Reviewed by Myles C. Maxfield.
Replacing error logging in GPURenderPipeline creation with GPUError generation.
Update GPUErrorScopes to re-use an error message prefix for less boiler-plate.
Test: webgpu/render-pipeline-errors.html
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createRenderPipeline const):
* Modules/webgpu/WebGPURenderPipelineDescriptor.cpp:
(WebCore::WebGPURenderPipelineDescriptor::tryCreateGPURenderPipelineDescriptor const):
* Modules/webgpu/WebGPURenderPipelineDescriptor.h:
* platform/graphics/gpu/GPUDevice.cpp:
(WebCore::GPUDevice::tryCreateRenderPipeline const):
* platform/graphics/gpu/GPUDevice.h:
* platform/graphics/gpu/GPUErrorScopes.cpp:
(WebCore::GPUErrorScopes::generatePrefixedError):
* platform/graphics/gpu/GPUErrorScopes.h:
(WebCore::GPUErrorScopes::setErrorPrefix):
* platform/graphics/gpu/GPURenderPipeline.h:
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::tryCreateMtlDepthStencilState):
(WebCore::trySetVertexInput):
(WebCore::trySetColorStates):
(WebCore::trySetMetalFunctions):
(WebCore::trySetFunctions):
(WebCore::convertRenderPipelineDescriptor):
(WebCore::tryCreateMtlRenderPipelineState):
(WebCore::GPURenderPipeline::tryCreate):
(WebCore::GPURenderPipeline::GPURenderPipeline):
2019-07-23 Konstantin Tokarev <annulen@yandex.ru>
ImageDecoderDirect2D::hotSpot() should return WTF::nullopt instead of default constructed value
https://bugs.webkit.org/show_bug.cgi?id=200055
Reviewed by Brent Fulgham.
* platform/graphics/win/ImageDecoderDirect2D.cpp:
(WebCore::ImageDecoderDirect2D::hotSpot const):
2019-07-23 Tim Horton <timothy_horton@apple.com>
Long press hint has half blue shape in Feedly.com
https://bugs.webkit.org/show_bug.cgi?id=200053
<rdar://problem/53323369>
Reviewed by Simon Fraser.
No new tests, because TextIndicator snapshots are not yet testable.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintForegroundForFragments):
Paint ChildBlockBackgrounds when painting selection AND backgrounds;
only exclude it when doing a selection-only paint.
2019-07-23 Chris Fleizach <cfleizach@apple.com>
AX: CrashTracer: com.apple.WebKit.WebContent at WebKit: WebKit::WebSpeechSynthesisClient::speak
https://bugs.webkit.org/show_bug.cgi?id=199988
Reviewed by Per Arne Vollan.
Implement the reset state to cancel current speech jobs.
* Modules/speech/SpeechSynthesis.cpp:
(WebCore::SpeechSynthesis::startSpeakingImmediately):
(WebCore::SpeechSynthesis::cancel):
* platform/PlatformSpeechSynthesizer.h:
* platform/ios/PlatformSpeechSynthesizerIOS.mm:
(WebCore::PlatformSpeechSynthesizer::resetState):
* platform/mac/PlatformSpeechSynthesizerMac.mm:
(WebCore::PlatformSpeechSynthesizer::resetState):
2019-07-23 Zalan Bujtas <zalan@apple.com>
[iOS] Tapping the search field on a search results page on zillow.com shows and immediately dismisses the keyboard
https://bugs.webkit.org/show_bug.cgi?id=200044
<rdar://problem/53103732>
Reviewed by Wenson Hsieh.
1. The keyboard gets dismissed as the result of scroll event.
2. The (horizontal)scroll event is initiated by WebKit as we try to re-center the content.
3. The content gets off-centered as the result of the newly constructed drop-down menu which slightly sticks out of the document to the right (layout overflows).
It works with shipping version of iOS because _zoomToFocusRect operates on stale viewport information (see r244494 for the progression).
This patch applies a site specific quirk to restore shipping behavior.
* page/Quirks.cpp:
(WebCore::Quirks::shouldAvoidScrollingWhenFocusedContentIsVisible const):
* page/Quirks.h:
2019-07-23 Said Abou-Hallawa <sabouhallawa@apple.com>
CanvasRenderingContext2D.setTransfrom() reads only the aliases attributes of DOMMatrix2DInit
https://bugs.webkit.org/show_bug.cgi?id=199850
Reviewed by Simon Fraser.
The validateAndFixup step of DOMMatrix2DInit sets the matrix attributes
(m** fields) from the aliases attributes (a, b, c, d, e, f) if the former
ones do not exist and the later ones exist. See
https://www.w3.org/TR/geometry-1/#dommatrixinit-dictionary and
DOMMatrixReadOnly::validateAndFixup(DOMMatrix2DInit& init).
Since CanvasRenderingContext2DBase::setTransform() validates and fixes
the input DOMMatrix2DInit, it should rely on matrix attributes.
Test: fast/canvas/setTransfrom-aliases-transform.html
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::setTransform):
2019-07-24 Simon Fraser <simon.fraser@apple.com>
[iOS WK2] A top fixed bar can flicker when scrolling with the keyboard up
https://bugs.webkit.org/show_bug.cgi?id=200105
rdar://problem/52871975
Reviewed by Wenson Hsieh.
ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition() computes a visual viewport
from the current scroll position and scrollableAreaSize(). This doesn't know anything about
the impact of keyboards on the visual viewport, so it computes a too-large visual viewport
when the keyboard is up, triggering incorrect manipulations of the layout viewport. This
leads to the top bar flashing to position 0 when it should be hidden off the top.
Fix by feeding into the scrolling tree the height of the visual viewport which takes
FrameView::visualViewportOverrideRect() into account. This is stored on ScrollingStateFrameScrollingNode/
ScrollingTreeFrameScrollingNode.
Test: scrollingcoordinator/ios/fixed-scrolling-with-keyboard.html
* page/FrameView.h:
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::setFrameScrollingNodeState):
* page/scrolling/ScrollingStateFrameScrollingNode.cpp:
(WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
(WebCore::ScrollingStateFrameScrollingNode::setPropertyChangedBitsAfterReattach):
(WebCore::ScrollingStateFrameScrollingNode::setOverrideVisualViewportSize):
(WebCore::ScrollingStateFrameScrollingNode::dumpProperties const):
* page/scrolling/ScrollingStateFrameScrollingNode.h:
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::commitTreeState): LOG_WITH_STREAM() doesn't evaluate scrollingTreeAsText()
every time.
* page/scrolling/ScrollingTreeFrameScrollingNode.cpp:
(WebCore::ScrollingTreeFrameScrollingNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition const):
(WebCore::ScrollingTreeFrameScrollingNode::dumpProperties const):
* page/scrolling/ScrollingTreeFrameScrollingNode.h:
2019-07-23 Tim Horton <timothy_horton@apple.com>
Long press hint of AirPods buy buttons are tall and narrow during animation
https://bugs.webkit.org/show_bug.cgi?id=200036
<rdar://problem/53145697>
Reviewed by Wenson Hsieh.
New test: fast/text-indicator/text-indicator-with-tiny-child.html
* dom/Range.cpp:
(WebCore::Range::borderAndTextRects const):
* dom/Range.h:
Add a BoundingRectBehavior that ignores 1x1 and smaller rects.
* page/TextIndicator.cpp:
(WebCore::absoluteBoundingRectForRange):
Enable IgnoreTinyRects.
2019-07-23 Wenson Hsieh <wenson_hsieh@apple.com>
[macOS 10.15] Web process crashes when attempting to show the font panel via Font > Show Fonts
https://bugs.webkit.org/show_bug.cgi?id=200021
<rdar://problem/53301325>
Reviewed by Ryosuke Niwa.
In macOS 10.15, attempting to access ~/Library/FontCollections/ from the web process causes a Sandbox violation
and a subsequent crash. This can be triggered by trying to show the font panel via Font > Show Fonts in the
context menu after right clicking.
In the (near) future, we should fix this by moving logic to show the font panel, color panel and styles panel
from the Editor in the web process to the UI process in WebKit2. However, for the time being, we can just work
around this by adding a new EditorClient hook to determine whether to allow the font panel to show; this returns
true in the legacy macOS WebKit port, and false everywhere else.
Test: editing/mac/style/do-not-crash-when-showing-font-panel.html
* editing/mac/EditorMac.mm:
(WebCore::Editor::showFontPanel):
* loader/EmptyClients.cpp:
* page/EditorClient.h:
2019-07-23 Ryosuke Niwa <rniwa@webkit.org>
WebKit should strip away system font names from the pasted content
https://bugs.webkit.org/show_bug.cgi?id=199975
<rdar://problem/53336353>
Reviewed by Darin Adler.
Cocoa HTML Writer sometimes generate system font names such as ".AppleSystemUIFont", ".SFUI-Regular", and ".SF UI Mono".
We need to strip away these font names upon paste to avoid these font names falling back to Times New Roman.
Added the code to strip these font names away in EditingStyle::mergeStyleFromRulesForSerialization, which is used by
StylizedMarkupAccumulator to generate HTML during copy. This works because WebContentReader::readWebArchive invokes
sanitizeMarkupWithArchive which inserts the pasteboard content into a temporary document then re-serializes back to HTML
using StylizedMarkupAccumulator before the actual pasting happens.
This approach has a few benefits over stripping away these font names in ReplaceSelectionCommand:
1. It would only affect clients that opts-in to copy & paste sanitization. e.g. it won't affect legacy WebKit clients
and those that opt out of pasteboard content sanitization.
2. It preserves font names such as ".SF Blah" that a website may insert as some kind of house keeping purposes if ever.
While we don't have any evidence that there is any such a website but it's a real risk nonetheless. The copy side fix would
only affect cross-site and cross-app pasting, which is rare and less likely to affect real user scenarios.
3. It avoids exposing bogus .Apple* or .SF* font names to websites that directly use event.clipboardData.getData.
Indeed stripping away bogus markup like this is one of the key features / benefit of using copy & paste sanitization.
Test: editing/pasteboard/paste-cocoa-writer-markup-with-system-fonts.html
* editing/EditingStyle.cpp:
(WebCore::usesForbiddenSystemFontAsOnlyFontFamilyName): Added.
(WebCore::EditingStyle::mergeStyleFromRulesForSerialization): Added the code to remove font-family property when needed.
* platform/graphics/FontCache.h:
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::isSystemFont): Moved.
(WebCore::FontCache::isSystemFontForbiddenForEditing): Added.
* platform/graphics/freetype/FontCacheFreeType.cpp:
(WebCore::FontCache::isSystemFontForbiddenForEditing): Added. Always returns false.
* platform/graphics/win/FontCacheWin.cpp:
(WebCore::FontCache::isSystemFontForbiddenForEditing): Ditto.
2019-07-22 Yusuke Suzuki <ysuzuki@apple.com>
[bmalloc] Each IsoPage gets 1MB VA because VMHeap::tryAllocateLargeChunk rounds up
https://bugs.webkit.org/show_bug.cgi?id=200024
Reviewed by Saam Barati.
Changed how we interpret VM tags. Add IsoHeap VM tag support, and rename WebAssembly tag
to Gigacage tag.
* page/ResourceUsageData.h:
* page/ResourceUsageOverlay.h:
* page/cocoa/ResourceUsageOverlayCocoa.mm:
(WebCore::HistoricResourceUsageData::HistoricResourceUsageData):
* page/cocoa/ResourceUsageThreadCocoa.mm:
(WebCore::displayNameForVMTag):
(WebCore::categoryForVMTag):
2019-07-22 Youenn Fablet <youenn@apple.com>
Fix inspector override conversion in InspectorPageAgent::overrideSetting
https://bugs.webkit.org/show_bug.cgi?id=200017
Reviewed by Devin Rousso.
Covered by inspector/page/overrideSetting-MockCaptureDevicesEnabled.html
which should not fail on bots not having cameras
* inspector/agents/InspectorPageAgent.cpp:
(WebCore::toOptionalBool):
(WebCore::InspectorPageAgent::overrideSetting):
Previously, the conversion for the mock capture value was implicit from a bool pointer to an optional.
Make an explicit conversion as done for regular settings.
2019-07-22 Ross Kirsling <ross.kirsling@sony.com>
Unreviewed non-unified build fix.
* Modules/webdatabase/DatabaseContext.h:
* html/HTMLDialogElement.cpp:
* html/HTMLScriptElement.cpp:
* inspector/agents/InspectorDatabaseAgent.cpp:
* workers/service/server/SWServerWorker.cpp:
* workers/service/server/SWServerWorker.h:
* worklets/WorkletGlobalScope.cpp:
* worklets/WorkletGlobalScope.h:
2019-07-22 Wenson Hsieh <wenson_hsieh@apple.com>
[iOS] [WK1] UIWebView always jumps to the top left corner when scrolling to reveal the selection
https://bugs.webkit.org/show_bug.cgi?id=200013
<rdar://problem/52526901>
Reviewed by Simon Fraser.
After <https://trac.webkit.org/r244141>, we no longer attempt to scroll to reveal the text selection in
UIWebView after changing the selection, due to how we use the legacy document view rect in legacy WebKit when
computing the visual viewport. This causes the viewRect in RenderLayer::scrollRectToVisible to be the same size
as the content size, which then causes us to always scroll to the origin when revealing the selection.
To make selection revealing work again in legacy WebKit, conditionally restore the old behavior of using the
unobscured content rect as the view rect, only in the case where scrolling is delegated and the platform widget
is present.
Test: WebKitLegacy.ScrollToRevealSelection
* page/FrameView.cpp:
(WebCore::FrameView::viewRectExpandedByContentInsets const):
(WebCore::FrameView::visualViewportRectExpandedByContentInsets const): Deleted.
Additionally rename visualViewportRectExpandedByContentInsets to viewRectExpandedByContentInsets, to reflect the
fact that this may either be the visual viewport rect or unobscured content rect.
* page/FrameView.h:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollRectToVisible):
2019-07-22 Brent Fulgham <bfulgham@apple.com>
Correct web audio-related crash in seed reports
https://bugs.webkit.org/show_bug.cgi?id=200009
<rdar://problem/51565203>
Reviewed by Per Arne Vollan.
Update the 'createMix' method to do proper return value checking so that
we can clear the result of MTAudioProcessingTapCreate if the create operation
failed.
* platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:
(WebCore::AudioSourceProviderAVFObjC::createMix):
2019-07-22 Per Arne Vollan <pvollan@apple.com>
Prewarmed font does not find any matches
https://bugs.webkit.org/show_bug.cgi?id=200007
Reviewed by Brent Fulgham.
Prewarming the font name 'SF Pro Text' does not find any matches. The font name ".SF NS Text/Display"
should be used instead. Also add 'Lucida Grande' to the list of prewarmed font, since it is used as
fallback font in many cases.
No new tests, covered by existing tests.
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::fontFamiliesForPrewarming):
2019-07-22 Youenn Fablet <youenn@apple.com>
Make sure the player underlying volume is correctly set after creating a new player
https://bugs.webkit.org/show_bug.cgi?id=199974
<rdar://problem/52762559>
Reviewed by Eric Carlson.
When creating a player before starting to play, the volume might not be correctly initialized.
Fix that by updating the volume like done for rate and muted state.
A future refactoring should probably move that code in MediaPlayer.
Add an internal API to query the volume value from the underlying player.
Test: http/tests/media/audio-volume-zero.html
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::updateVolume):
(WebCore::HTMLMediaElement::updatePlayState):
(WebCore::HTMLMediaElement::effectiveVolume const):
(WebCore::HTMLMediaElement::effectiveMuted const):
* html/HTMLMediaElement.h:
* testing/Internals.cpp:
(WebCore::Internals::privatePlayerVolume):
* testing/Internals.h:
* testing/Internals.idl:
* testing/Internals.mm:
(WebCore::Internals::privatePlayerVolume):
2019-07-22 Devin Rousso <drousso@apple.com>
Web Inspector: Page: mark any WebCore::Setting inspector override as UNLIKELY
https://bugs.webkit.org/show_bug.cgi?id=199925
Reviewed by Joseph Pecoraro.
* Scripts/SettingsTemplates/Settings.cpp.erb:
2019-07-22 Simon Fraser <simon.fraser@apple.com>
Fix crashes in ScrollingStateNode::insertChild()
https://bugs.webkit.org/show_bug.cgi?id=200023
rdar://problem/53265378
Reviewed by Darin Adler.
Crash data suggest that ScrollingStateNode::insertChild() can be passed an index that
is larger than the size of the vector, causing crashes.
Fix defensively by falling back to append() if the passed index is equal to or larger
than the size of the children vector.
* page/scrolling/ScrollingStateNode.cpp:
(WebCore::ScrollingStateNode::insertChild):
2019-07-22 Simon Fraser <simon.fraser@apple.com>
Make some constructors explicit
https://bugs.webkit.org/show_bug.cgi?id=199981
Reviewed by Daniel Bates.
Make explicit public constructors of objects that take POD or String& arguments,
to reduce the changes of the compiler doing implicit conversions.
* Modules/indexeddb/server/IndexValueEntry.h:
* Modules/indexeddb/server/IndexValueStore.h:
* Modules/indexeddb/shared/IDBDatabaseInfo.h:
* Modules/webdatabase/ChangeVersionData.h:
(WebCore::ChangeVersionData::ChangeVersionData):
* Modules/webdatabase/OriginLock.h:
* Modules/websockets/WebSocketExtensionParser.h:
(WebCore::WebSocketExtensionParser::WebSocketExtensionParser):
* bindings/js/ScriptCachedFrameData.h:
* contentextensions/URLFilterParser.cpp:
(WebCore::ContentExtensions::PatternParser::PatternParser):
* css/parser/CSSTokenizer.h:
* css/parser/SizesAttributeParser.h:
* dom/SpaceSplitString.cpp:
(WebCore::TokenIsEqualToCStringTokenProcessor::TokenIsEqualToCStringTokenProcessor):
* html/FormController.cpp:
(WebCore::SavedFormState::appendControlState):
(WebCore::SavedFormState::takeControlState):
* loader/ProgressTracker.cpp:
(WebCore::ProgressItem::ProgressItem):
* page/DragController.cpp:
(WebCore::DragController::DragController):
(WebCore::DragController::performDragOperation):
* page/DragController.h:
* page/animation/CSSPropertyAnimation.cpp:
(WebCore::AnimationPropertyWrapperBase::AnimationPropertyWrapperBase):
* page/ios/DOMTimerHoldingTank.h:
(WebCore::DeferDOMTimersForScope::DeferDOMTimersForScope):
* platform/CountedUserActivity.h:
(WebCore::CountedUserActivity::CountedUserActivity):
* platform/audio/DirectConvolver.h:
* platform/audio/DownSampler.h:
* platform/audio/DynamicsCompressorKernel.h:
* platform/audio/EqualPowerPanner.h:
* platform/audio/MultiChannelResampler.h:
* platform/audio/ReverbAccumulationBuffer.h:
* platform/audio/ReverbInputBuffer.h:
* platform/audio/SincResampler.cpp:
* platform/audio/UpSampler.h:
* platform/audio/ios/AudioFileReaderIOS.h:
* platform/audio/mac/AudioFileReaderMac.h:
* platform/audio/mac/AudioSessionMac.cpp:
(WebCore::AudioSessionPrivate::AudioSessionPrivate):
* platform/cf/KeyedDecoderCF.h:
* platform/graphics/WidthIterator.cpp:
(WebCore::OriginalAdvancesForCharacterTreatedAsSpace::OriginalAdvancesForCharacterTreatedAsSpace):
* platform/graphics/cocoa/FontCacheCoreText.h:
(WebCore::SynthesisPair::SynthesisPair):
* platform/graphics/displaylists/DisplayListItems.h:
(WebCore::DisplayList::DrawingItem::DrawingItem):
* platform/network/cf/ResourceRequest.h:
(WebCore::ResourceRequest::ResourceRequest):
* platform/text/TextCodecICU.h:
* rendering/RenderTableSection.h:
(WebCore::CellSpan::CellSpan):
* rendering/shapes/RasterShape.cpp:
* rendering/shapes/RasterShape.h:
(WebCore::RasterShapeIntervals::RasterShapeIntervals):
* testing/MockLibWebRTCPeerConnection.h:
(WebCore::MockLibWebRTCIceCandidate::MockLibWebRTCIceCandidate):
2019-07-22 Rob Buis <rbuis@igalia.com>
Remove some unneeded code in MathOperator
https://bugs.webkit.org/show_bug.cgi?id=199935
Reviewed by Frédéric Wang.
Remove unused method.
No new tests, not changing behavior.
* rendering/mathml/MathOperator.h:
2019-07-21 Konstantin Tokarev <annulen@yandex.ru>
Add DataListButtonElement.cpp to unified sources
https://bugs.webkit.org/show_bug.cgi?id=199989
Reviewed by Michael Catanzaro.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2019-07-21 Andres Gonzalez <andresg_22@apple.com>
Add accessibilityInsertText for text insertion in edit fields.
https://bugs.webkit.org/show_bug.cgi?id=199973
Reviewed by Chris Fleizach.
Renamed accessibilityInsertText to _accessibilityInsertText.
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper _accessibilityInsertText:]):
(-[WebAccessibilityObjectWrapper accessibilityInsertText:]): Deleted.
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper _accessibilityInsertText:]):
(-[WebAccessibilityObjectWrapper accessibilityInsertText:]): Deleted.
2019-07-21 Saam Barati <sbarati@apple.com>
[WHLSL] Checker needs to setError() when a property access node can't commit its base type
https://bugs.webkit.org/show_bug.cgi?id=199978
Reviewed by Dean Jackson.
Test: webgpu/whlsl/null-array-property-access.html
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::Checker::finishVisiting):
2019-07-21 Saam Barati <sbarati@apple.com>
[WHLSL] Return the zero-value enum in the enum-from-integer constructor when the integer is not a valid enum value
https://bugs.webkit.org/show_bug.cgi?id=199853
Reviewed by Dean Jackson.
Test: webgpu/whlsl/enum-integer-constructor.html
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeFunction):
2019-07-21 Myles C. Maxfield <mmaxfield@apple.com>
[iOS] Fast and complex text codepaths disagree about how to lay out bopomofo with tone marks
https://bugs.webkit.org/show_bug.cgi?id=199912
<rdar://problem/52182454>
Reviewed by Simon Fraser.
This is because CoreText has special composition rules for CJK languages, which we don't have in our simple
text codepath. Rather than implementing the composition rules in WebKit, we can simply disable them in
CoreText.
Test: fast/text/international/system-language/composition.html
* platform/graphics/mac/SimpleFontDataCoreText.cpp:
(WebCore::Font::getCFStringAttributes const):
2019-07-20 Andres Gonzalez <andresg_22@apple.com>
Add accessibilityInsertText for text insertion in edit fields.
https://bugs.webkit.org/show_bug.cgi?id=199973
Reviewed by Chris Fleizach.
Tests: accessibility/insert-newline.html
accessibility/ios-simulator/insert-newline.html
Accessibility clients like VoiceOver and Voice Control were entering
text in text fields by replacing the entire content of the field
(SetValue) and then setting the insertion point to the appropriate
offset (SetSelectedTextRange). accessibilityInsertText gives a simpler
interface to clients to insert text at the insertion point location.
In addition, this provides a workaround for the issue encountered with
the previous method when inserting a linebreak.
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::insertText):
* accessibility/AccessibilityObject.h:
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityInsertText:]):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityInsertText:]):
2019-07-20 Alexander Mikhaylenko <exalm7659@gmail.com>
REGRESSION(r246033/r246496): [GTK] Kinetic scrolling doesn't work
https://bugs.webkit.org/show_bug.cgi?id=199322
Reviewed by Michael Catanzaro.
Check ENABLE(KINETIC_SCROLLING) instead of ENABLE(ASYNC_SCROLLING) for kinetic scrolling.
* platform/PlatformWheelEvent.h:
* platform/generic/ScrollAnimatorGeneric.cpp:
(WebCore::ScrollAnimatorGeneric::handleWheelEvent):
* platform/gtk/PlatformWheelEventGtk.cpp:
(WebCore::PlatformWheelEvent::PlatformWheelEvent):
2019-07-20 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Introduce table formatting context.
https://bugs.webkit.org/show_bug.cgi?id=199979
<rdar://problem/53346292>
Reviewed by Antti Koivisto.
Add the basic class structure for the table formatting context.
https://www.w3.org/TR/CSS22/tables.html
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/FormattingState.h:
(WebCore::Layout::FormattingState::isTableFormattingState const):
* layout/tableformatting/TableFormattingContext.cpp: Added.
(WebCore::Layout::TableFormattingContext::TableFormattingContext):
(WebCore::Layout::TableFormattingContext::layout const):
* layout/tableformatting/TableFormattingContext.h: Added.
* layout/tableformatting/TableFormattingState.cpp: Added.
(WebCore::Layout::TableFormattingState::TableFormattingState):
(WebCore::Layout::TableFormattingState::~TableFormattingState):
* layout/tableformatting/TableFormattingState.h: Added.
* layout/tableformatting/TableInvalidation.cpp: Added.
(WebCore::Layout::TableInvalidation::invalidate):
* layout/tableformatting/TableInvalidation.h: Added.
2019-07-20 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Add support for mid-word break.
https://bugs.webkit.org/show_bug.cgi?id=199976
<rdar://problem/53337349>
Reviewed by Antti Koivisto.
Introduce leading and trailing InlineTextItem to support incoming and outgoing partial content.
TextUtil::split is a straight copy of SimpleLineLayout::split.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::inlineItemWidth):
(WebCore::Layout::LineLayout::close):
(WebCore::Layout::LineLayout::placeInlineItem):
(WebCore::Layout::LineLayout::layout):
* layout/inlineformatting/InlineTextItem.cpp:
(WebCore::Layout::InlineTextItem::split const):
(WebCore::Layout::InlineTextItem::split): Deleted.
* layout/inlineformatting/InlineTextItem.h:
(WebCore::Layout::InlineTextItem::inlineBox const):
* layout/inlineformatting/text/TextUtil.cpp:
(WebCore::Layout::TextUtil::split):
* layout/inlineformatting/text/TextUtil.h:
2019-07-20 Zalan Bujtas <zalan@apple.com>
[Text autosizing] Do not nuke the style on dynamicViewportSizeUpdate
https://bugs.webkit.org/show_bug.cgi?id=199718
<rdar://problem/53344961>
Reviewed by Simon Fraser.
When the page scale changes (e.g. as the result of shink to fit mode) we need to visit all the text content on the page and check whether they need to be boosted.
Currently we call setNeedsRecalcStyleInAllFrames() to accomplish it. Unfortunatelly setNeedsRecalcStyleInAllFrames destroys all the style information which means that the
subsequent styleResolve() needs to start from scratch.
This patch addresses this issue by directly adjusting the computed style information when text boosting is required and schedules layout accordingly. We also trigger this style adjusting
on a timer so that rapid dynamicViewportSizeUpdate() calls won't trigger redundant layouts.
* css/StyleResolver.cpp:
(WebCore::hasTextChild):
(WebCore::StyleResolver::adjustRenderStyleForTextAutosizing):
(WebCore::hasTextChildren): Deleted.
* css/StyleResolver.h:
* page/FrameView.h:
* page/Page.cpp:
(WebCore::Page::invalidateTextAutoSizeInAllFrames):
* page/Page.h:
2019-07-20 Saam Barati <sbarati@apple.com>
[WHLSL] Make enums work
https://bugs.webkit.org/show_bug.cgi?id=199634
Reviewed by Robin Morisset.
This patch makes enums work. There were a couple changes needed to do this work:
1. In the metal codegen, we were emitting code like "EnumType.EnumValue"
instead of "EnumType::EnumValue".
2. Inside the enumeration declaration AST node, we track enums in a HashMap
because we need to look up names of enum values in that map in parts of the
compiler. However, HashMap is not ordered but we were relying on the iteration
order of it to generate the default values of enums. E.g, in: "enum { Foo = 10, Bar }",
Bar should be 11. However, there was no guarantee that we iterated over Bar
after Foo. Instead, we just track the default values as we parse an enum
inside of the parser. This allows us to continue to keep using HashMap without
also adding an auxiliary data structure (or using more memory in some way) to
track the order of the enum elements.
I've also filed a patch to do follow-up work on implementing the correct
operational behavior when constructing an enum from its underlying type when
the underlying value does not match any enum value:
https://bugs.webkit.org/show_bug.cgi?id=199853
Tests: webgpu/whlsl/enums-2.html
webgpu/whlsl/enums.html
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMember.h:
(WebCore::WHLSL::AST::EnumerationMember::EnumerationMember):
(WebCore::WHLSL::AST::EnumerationMember::value):
(WebCore::WHLSL::AST::EnumerationMember::setValue): Deleted.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::constantExpressionString):
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::TypeNamer::emitNamedTypeDefinition):
* Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:
(WebCore::WHLSL::ASTDumper::visit):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseEnumerationDefinition):
(WebCore::WHLSL::Parser::parseEnumerationMember):
* Modules/webgpu/WHLSL/WHLSLParser.h:
* Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
(WebCore::WHLSL::Visitor::visit):
2019-07-19 Youenn Fablet <youenn@apple.com>
Remote WebInspector should enable mock capture devices in UIProcess if doing it in WebProcess
https://bugs.webkit.org/show_bug.cgi?id=199924
<rdar://problem/50552067>
Reviewed by Devin Rousso.
Add necessary API to set mock capture devices override.
In case of desynchronization between webprocess and uiprocess, make sure to return early
and fail capture instead of crashing.
* inspector/InspectorClient.h:
(WebCore::InspectorClient::setMockCaptureDevicesEnabled):
* inspector/agents/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::disable):
(WebCore::InspectorPageAgent::overrideSetting):
* platform/mock/MockRealtimeMediaSourceCenter.cpp:
2019-07-19 Andy Estes <aestes@apple.com>
[Apple Pay] Log less in PaymentCoordinator::shouldEnableApplePayAPIs()
https://bugs.webkit.org/show_bug.cgi?id=199958
Reviewed by Tim Horton.
Only log when APIs are disabled due to user scripts.
* Modules/applepay/PaymentCoordinator.cpp:
(WebCore::PaymentCoordinator::shouldEnableApplePayAPIs const):
2019-07-19 Dean Jackson <dino@apple.com>
Add a menu item to toggle between showing and hiding link previews
https://bugs.webkit.org/show_bug.cgi?id=199940
<rdar://problem/53032288>
Reviewed by Beth Dakin.
New strings for Show/Hide Link Previews.
* en.lproj/Localizable.strings:
2019-07-19 Antoine Quint <graouts@apple.com>
Links stop working after long-pressing a link (WK1)
https://bugs.webkit.org/show_bug.cgi?id=199952
<rdar://problem/52291860>
Reviewed by Wenson Hsieh.
Test: fast/events/touch/ios/click-after-long-press.html
When EventHandler::tryToBeginDragAtPoint() is called, we must reset m_mousePressed to false so that
WebChromeClientIOS::observedContentChange() is called by EventHandler::mousePressed() when we would
process the next tap after a drag interaction.
* page/ios/EventHandlerIOS.mm:
(WebCore::EventHandler::tryToBeginDragAtPoint):
2019-07-19 Sihui Liu <sihui_liu@apple.com>
IndexedDB: error in starting version change transaction may be neglected
https://bugs.webkit.org/show_bug.cgi?id=199818
<rdar://problem/52925738>
Reviewed by Brady Eidson.
For version change transaction, IDBServer didn't wait the result of beginTransaction on the background thread
before giving the IDBClient the result of open request. In this case, beginTransaction may fail to update the
DatabaseVersion in database file or set m_originalDatabaseInfoBeforeVersionChange, but the transaction was
marked as started. When we later set m_databaseInfo with m_originalDatabaseInfoBeforeVersionChange,
m_databaseInfo could become nullptr.
To write a test for this, we will need to simulate an SQLite error. I manually tested this by crafting the
SQLiteStatement in beginTransaction, making it an invalid statement, and verified that error event, instead of
ungradeneeded event is dispatched to the IDBRequest.
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::startVersionChangeTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::performStartVersionChangeTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformStartVersionChangeTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete):
(WebCore::IDBServer::UniqueIDBDatabase::beginTransactionInBackingStore): Deleted.
* Modules/indexeddb/server/UniqueIDBDatabase.h:
2019-07-19 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Add partial content handling
https://bugs.webkit.org/show_bug.cgi?id=199930
Reviewed by Antti Koivisto.
Move the actual inline item placement to a dedicated functions. This enables us to
construct a dedicated InlineItem for the partial content and pass it in to this function.
<span>The quick brown fox jumps over the lazy dog</span> <- inline content
[The][ ][quick][ ][brown][ ][fox][ ][jumps][ ][over][ ][the][ ][lazy][ ][dog] <- InlineItems
Line breaking:
[The][ ][qu]
[ick] <- Partial InlineItem (position: 6 length: 3) from [quick] (position: 4 length: 5)
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::LineLayout::close):
(WebCore::Layout::LineLayout::placeInlineItem):
(WebCore::Layout::LineLayout::layout):
(WebCore::Layout::LineInput::LineInput):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
* layout/inlineformatting/InlineTextItem.cpp:
(WebCore::Layout::InlineTextItem::split):
* layout/inlineformatting/InlineTextItem.h:
2019-07-19 Charlie Turner <cturner@igalia.com>
[GStreamer] Flush get_range calls during PAUSED->READY in WebKitWebSource
https://bugs.webkit.org/show_bug.cgi?id=199934
Reviewed by Xabier Rodriguez-Calvar.
Unit testing not applicable.
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webKitWebSrcChangeState): A well-behaved element should unblock streaming threads
during a PAUSED->READY transition, so do that here.
2019-07-19 Rob Buis <rbuis@igalia.com>
Remove some unneeded code in MathOperator
https://bugs.webkit.org/show_bug.cgi?id=199935
Reviewed by Frédéric Wang.
The initialize method is unneeded since the member
variables all use default initialization.
No new tests, not changing behavior.
* rendering/mathml/MathOperator.cpp:
(WebCore::MathOperator::MathOperator):
(WebCore::MathOperator::GlyphAssemblyData::initialize): Deleted.
2019-07-18 Antoine Quint <graouts@apple.com>
Enable simulated mouse events quirk for soundcloud.com
https://bugs.webkit.org/show_bug.cgi?id=199908
<rdar://problem/52915981>
Reviewed by Brent Fulgham.
Scrubbing on soundcloud.com relies on mouse events alone when displaying on iPad with the desktop UA string.
Opting into the simulated mouse events quirk makes scrubbing work and we also ensure that page scrolling is
disabled as a result of scrubbing by returning true in shouldDispatchedSimulatedMouseEventsAssumeDefaultPrevented().
Also making a drive-by fix in shouldDispatchedSimulatedMouseEventsAssumeDefaultPrevented() to use a reference
instead of a pointer when downcasting a null-checked pointer.
* page/Quirks.cpp:
(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
(WebCore::Quirks::shouldDispatchedSimulatedMouseEventsAssumeDefaultPrevented const):
2019-07-18 Per Arne Vollan <pvollan@apple.com>
Prewarm font cache with more fonts
https://bugs.webkit.org/show_bug.cgi?id=199283
Reviewed by Myles C. Maxfield.
Initialize the list of families requiring system fallback in the prewarming information struct, since
this was part of the original, approved patch, and is needed for the performance improvement.
No new tests, covered by existing tests.
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::fontFamiliesForPrewarming):
(WebCore::FontCache::prewarmGlobally):
2019-07-18 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r247531.
Caused multiple IndexedDB layout test crashes.
Reverted changeset:
"IndexedDB: error in starting version change transaction may
be neglected"
https://bugs.webkit.org/show_bug.cgi?id=199818
https://trac.webkit.org/changeset/247531
2019-07-18 Antoine Quint <graouts@apple.com>
Ensure Quirks::shouldDispatchSimulatedMouseEvents() works for all Google Maps and Amazon domains
https://bugs.webkit.org/show_bug.cgi?id=199904
<rdar://problem/53250104>
Reviewed by Dean Jackson.
Use topPrivatelyControlledDomain() to determine whether the URL is a Google or Amazon domain so as to apply
Google Maps and Amazon quirks to all the various domain names used.
* page/Quirks.cpp:
(WebCore::Quirks::isAmazon const):
(WebCore::Quirks::isGoogleMaps const):
(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
(WebCore::Quirks::simulatedMouseEventTypeForTarget const):
* page/Quirks.h:
2019-07-18 Per Arne Vollan <pvollan@apple.com>
Crash under WebPage::boundaryEventOccurred
https://bugs.webkit.org/show_bug.cgi?id=199907
Reviewed by Chris Fleizach.
Add null pointer checks.
No new tests, since I have not been able to reproduce this in a test.
* Modules/speech/SpeechSynthesis.cpp:
(WebCore::SpeechSynthesis::didStartSpeaking):
(WebCore::SpeechSynthesis::didFinishSpeaking):
(WebCore::SpeechSynthesis::didPauseSpeaking):
(WebCore::SpeechSynthesis::didResumeSpeaking):
(WebCore::SpeechSynthesis::speakingErrorOccurred):
(WebCore::SpeechSynthesis::boundaryEventOccurred):
2019-07-18 Antoine Quint <graouts@apple.com>
[Pointer Events] The button and buttons properties are incorrect on iOS
https://bugs.webkit.org/show_bug.cgi?id=199910
<rdar://problem/52778374>
Reviewed by Dean Jackson.
The button and buttons properties were always set to 0 on iOS. We now use the correct values such that
button is always 0 except for "pointermove" where it's -1, and "buttons" is 1 as long as the pointer is
in contact with the touch surface.
Tests: pointerevents/ios/pointer-event-button-and-buttons-pointer-cancel.html
pointerevents/ios/pointer-event-button-and-buttons.html
* dom/ios/PointerEventIOS.cpp:
(WebCore::buttonForType):
(WebCore::buttonsForType):
(WebCore::PointerEvent::PointerEvent):
2019-07-18 Antoine Quint <graouts@apple.com>
REGRESSION: Unable to enable simulated mouse events using the runtime flag
https://bugs.webkit.org/show_bug.cgi?id=199909
<rdar://problem/53254895>
Reviewed by Dean Jackson.
The fix for wkb.ug/199508 (r247152) broke the ability enable simulated mouse events using the runtime flag.
We now add a check for the flag in Quirks::shouldDispatchSimulatedMouseEvents() so that the runtime flag
overrides the content of that function. This is more practical and allows for a quick override using the flag.
Additionally, we need only call shouldDispatchSimulatedMouseEvents() in simulatedMouseEventTypeForTarget() since
that function already calls needsQuirks().
* dom/EventNames.h:
(WebCore::EventNames::isTouchRelatedEventType const):
* dom/Node.cpp:
(WebCore::Node::moveNodeToNewDocument):
* page/Quirks.cpp:
(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
(WebCore::Quirks::simulatedMouseEventTypeForTarget const):
2019-07-18 Antoine Quint <graouts@apple.com>
REGRESSION: Panning on an Amazon product image scrolls the page on iPadOS
https://bugs.webkit.org/show_bug.cgi?id=199905
<rdar://problem/49124529>
Reviewed by Dean Jackson.
Amazon product pages include images that the user can touch and pan to show zoomed details in a side image. This
currently works on iPadOS thanks to the dispatch of simulated "mousemove" events on the product image, but the site
doesn't call preventDefault() when handling those events as it wasn't necessary for macOS.
We add a new quirk that will indicate that a given element is such a product image.
* page/Quirks.cpp:
(WebCore::Quirks::isAmazon const):
(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
(WebCore::Quirks::shouldDispatchedSimulatedMouseEventsAssumeDefaultPrevented const):
(WebCore::Quirks::simulatedMouseEventTypeForTarget const):
* page/Quirks.h:
2019-07-18 Youenn Fablet <youenn@apple.com>
Make sure to set kCTFontFallbackOptionAttribute to kCTFontFallbackOptionSystem for system fonts
https://bugs.webkit.org/show_bug.cgi?id=199769
<rdar://problem/49390297>
Reviewed by Myles C. Maxfield.
When getting a system font, set the appropriate attribute so that it
does not fallback to a user initiated font.
Add an ASSERT that checks that the font in use is not a user font if
policy is to not use user installed fonts.
Tests: fast/text/user-installed-fonts/extended-character-with-user-font.html
fast/text/user-installed-fonts/extended-character.html
* platform/graphics/Font.h:
* platform/graphics/FontCascadeFonts.cpp:
(WebCore::FontCascadeFonts::glyphDataForSystemFallback):
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::preparePlatformFont):
(WebCore::FontDatabase::singletonAllowingUserInstalledFonts):
(WebCore::FontDatabase::singletonDisallowingUserInstalledFonts):
(WebCore::addAttributesForInstalledFonts):
(WebCore::addAttributesForWebFonts):
(WebCore::installedFontMandatoryAttributes):
* platform/graphics/mac/SimpleFontDataCoreText.cpp:
(WebCore::Font::isUserInstalledFont const):
2019-07-18 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] InlineFormattingContext::LineLayout::placeInlineItems is getting too complex.
https://bugs.webkit.org/show_bug.cgi?id=199898
<rdar://problem/53235958>
Reviewed by Antti Koivisto.
It's time to restructure LineLayout::placeInlineItems to be able to expand it further.
Introduce the LineLayout class. This class is responsible to place the inline items on the current line.
(Rename InlineFormattingContext::lineLayout -> InlineFormattingContext::InlineLayout and
use Line::InitialConstraints in LineInput)
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layout const):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthConstraints const):
* layout/inlineformatting/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::LineLayout::layoutState const): Deleted.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::inlineItemWidth):
(WebCore::Layout::LineLayout::layoutState const):
(WebCore::Layout::LineLayout::UncommittedContent::runs):
(WebCore::Layout::LineLayout::UncommittedContent::isEmpty const):
(WebCore::Layout::LineLayout::UncommittedContent::size const):
(WebCore::Layout::LineLayout::UncommittedContent::width const):
(WebCore::Layout::LineLayout::UncommittedContent::add):
(WebCore::Layout::LineLayout::UncommittedContent::reset):
(WebCore::Layout::LineLayout::LineLayout):
(WebCore::Layout::LineLayout::commitPendingContent):
(WebCore::Layout::LineLayout::close):
(WebCore::Layout::LineLayout::layout):
(WebCore::Layout::LineInput::LineInput):
(WebCore::Layout::InlineFormattingContext::InlineLayout::InlineLayout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::alignRuns const):
(WebCore::Layout::UncommittedContent::runs): Deleted.
(WebCore::Layout::UncommittedContent::isEmpty const): Deleted.
(WebCore::Layout::UncommittedContent::size const): Deleted.
(WebCore::Layout::UncommittedContent::width const): Deleted.
(WebCore::Layout::UncommittedContent::add): Deleted.
(WebCore::Layout::UncommittedContent::reset): Deleted.
(WebCore::Layout::LineInput::HorizontalConstraint::HorizontalConstraint): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::LineLayout): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::layout const): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::computedIntrinsicWidth const): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::alignRuns const): Deleted.
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Line):
* layout/inlineformatting/InlineLine.h:
2019-07-18 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] MOUSE_CURSOR_SCALE is not implemented
https://bugs.webkit.org/show_bug.cgi?id=109469
Reviewed by Darin Adler.
Use gdk_cursor_new_from_surface() instead of gdk_cursor_new_from_pixbuf() to avoid the surface to pixbuf
conversion.
* platform/gtk/CursorGtk.cpp:
(WebCore::createCustomCursor):
2019-07-17 Chris Dumez <cdumez@apple.com>
Prewarm local storage in the NetworkProcess to reduce WebContent process hangs
https://bugs.webkit.org/show_bug.cgi?id=199879
<rdar://problem/53217757>
Reviewed by Ryosuke Niwa.
When JS accesses window.localStorage for the first time, we end up doing a
synchronous IPC to the network process to pull in all items in the local
storage for the origin. If the network process does not have this data in
memory, it has to read it from a database on disk, which may take a significant
amount of time and hang the WebContent process during this time.
To alleviate this problem, this patch introduces prewarming on the local storage
in the network process when loading a given origin in the WebContent process.
This way, in most cases, when the JS accesses window.localStorage for the first
time, the synchronous IPC to the network process returns much faster (measured
50-100ms for a very large database, down from 250-300ms), as it only needs to
IPC the data over, without the need to fetch it from disk.
As a safety net to avoid excessive prewarming, we currently prewarm at most 5
security origins per page load.
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::commitData):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::prewarmLocalStorageIfNecessary):
* page/DOMWindow.h:
* page/Frame.cpp:
(WebCore::Frame::didPrewarmLocalStorage):
(WebCore::Frame::mayPrewarmLocalStorage const):
* page/Frame.h:
* storage/Storage.cpp:
(WebCore::Storage::prewarm):
* storage/Storage.h:
* storage/StorageArea.h:
(WebCore::StorageArea::prewarm):
2019-07-17 Robin Morisset <rmorisset@apple.com>
[WHLSL] The lexer should not choke on a single '/'
https://bugs.webkit.org/show_bug.cgi?id=199886
Reviewed by Myles Maxfield.
The bug is trivial: just recognize that a single '/' without a '*' or '/' afterwards is not the beginning of a comment.
While investigating this bug, I also found that part of the parser fails to properly propagate errors, so I fixed it.
New test in LayoutTests/webgpu/whlsl/float-math.html
I also added a new flag to WHLSLPrepare.cpp. It can be used to parse the full standard library (this is how I found this bug in the first place).
* Modules/webgpu/WHLSL/WHLSLLexer.cpp:
(WebCore::WHLSL::Lexer::skipWhitespaceAndComments):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parsePossibleTernaryConditional):
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
* Modules/webgpu/WHLSL/WHLSLStandardLibraryUtilities.cpp:
(WebCore::WHLSL::includeStandardLibrary):
* Modules/webgpu/WHLSL/WHLSLStandardLibraryUtilities.h:
2019-07-17 Simon Fraser <simon.fraser@apple.com>
Unreviewed build fix after r247549.
* Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.cpp:
2019-07-17 Robin Morisset <rmorisset@apple.com>
[WHLSL] Remove traps from the compiler
https://bugs.webkit.org/show_bug.cgi?id=195811
<rdar://problem/50746299>
Reviewed by Myles Maxfield.
Remove the Trap statement from the language, see https://github.com/gpuweb/WHLSL/issues/301.
No new tests, as this part of the language was already untested, and we are removing it, not adding anything.
* Modules/webgpu/WHLSL/AST/WHLSLAST.h:
* Modules/webgpu/WHLSL/AST/WHLSLStatement.h:
(WebCore::WHLSL::AST::Statement::isSwitchStatement const):
* Modules/webgpu/WHLSL/AST/WHLSLTrap.h: Removed.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
* Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:
* Modules/webgpu/WHLSL/WHLSLASTDumper.h:
* Modules/webgpu/WHLSL/WHLSLLexer.cpp:
(WebCore::WHLSL::Token::typeName):
(WebCore::WHLSL::Lexer::recognizeKeyword):
* Modules/webgpu/WHLSL/WHLSLLexer.h:
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseStatement):
* Modules/webgpu/WHLSL/WHLSLParser.h:
* Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:
* Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
(WebCore::WHLSL::Visitor::visit):
* Modules/webgpu/WHLSL/WHLSLVisitor.h:
* WebCore.xcodeproj/project.pbxproj:
2019-07-17 Robin Morisset <rmorisset@apple.com>
[WHLSL] checkRecursiveType should not have exponential complexity.
https://bugs.webkit.org/show_bug.cgi?id=199835
Reviewed by Myles Maxfield.
The change is very similar to that in https://bugs.webkit.org/show_bug.cgi?id=199688.
Just keep track of which types have already been visited, and don't visit them again.
No new tests as there is no intended functional change.
* Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.cpp:
(WebCore::WHLSL::RecursiveTypeChecker::visit):
(WebCore::WHLSL::checkRecursiveTypes):
2019-07-17 Carlos Eduardo Ramalho <cadubentzen@gmail.com>
Add missing #include's
https://bugs.webkit.org/show_bug.cgi?id=199856
Reviewed by Simon Fraser.
The missing headers were found during development when unified sources changed.
No new tests required. Adding #include's only.
* Modules/speech/DOMWindowSpeechSynthesis.cpp:
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.cpp:
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
* Modules/webgpu/WebGPUCommandEncoder.cpp:
2019-07-17 Ryosuke Niwa <rniwa@webkit.org>
Add inputmode to the feature status page
https://bugs.webkit.org/show_bug.cgi?id=199884
Reviewed by Wenson Hsieh.
Added as supported.
* features.json:
2019-07-17 Antoine Quint <graouts@apple.com>
Disable Pointer Events prior to watchOS 6
https://bugs.webkit.org/show_bug.cgi?id=199890
<rdar://problem/53206113>
Reviewed by Dean Jackson.
* Configurations/FeatureDefines.xcconfig:
2019-07-17 Antoine Quint <graouts@apple.com>
Unable to bring up custom media controls on iOS for video.sina.cn
https://bugs.webkit.org/show_bug.cgi?id=199889
<rdar://problem/51883919>
Reviewed by Dean Jackson.
Videos on video.sina.cn by default have the "controls" attribute and are set not to autoplay. This means that the original state
of the media controls are set to show the built-in media controls and also show the prominent play button to begin playback. The
display of the play button also requires a tap gesture recognizer, which calls preventDefault() when the "touchend" is received
to prevent double-tap-to-zoom, but also has the side-effect of preventing a "click" event from being dispatched for a tap.
The video.sina.cn code would eventually remove the "controls" attribute, which would make the built-in media controls not visible,
but still participate in hit-testing because we keep the shadow DOM around in order to potentially show the Airplay or picture-in-picture
placards. Additionally, we wouldn't disable the tap gesture recognizer when the "controls" attribute was removed.
We now ensure that both gesture recognizers used by iOS inline media controls are only enabled when media controls are visible.
Test: media/modern-media-controls/media-controller/ios/media-controller-allows-click-over-video-with-no-controls.html
* Modules/modern-media-controls/controls/ios-inline-media-controls.js:
(IOSInlineMediaControls.prototype.set showsStartButton):
(IOSInlineMediaControls.prototype.get visible):
(IOSInlineMediaControls.prototype.set visible):
(IOSInlineMediaControls.prototype._updateGestureRecognizers):
(IOSInlineMediaControls.prototype._tapGestureRecognizerStateDidChange):
(IOSInlineMediaControls.prototype._pinchGestureRecognizerStateDidChange):
2019-07-17 Christopher Reid <chris.reid@sony.com>
Bytecode cache should use FileSystem
https://bugs.webkit.org/show_bug.cgi?id=199759
Reviewed by Yusuke Suzuki.
* platform/SharedBuffer.cpp:
2019-07-17 Zalan Bujtas <zalan@apple.com>
Unable to tap buttons at top of Wells Fargo app’s Payees screen
https://bugs.webkit.org/show_bug.cgi?id=199846
<rdar://problem/48112220>
Reviewed by Simon Fraser.
This patch restores the stop-before-reaching-the-body heuristics for the approximate node finding feature only.
(WebFrame::approximateNodeAtViewportLocation mistakenly relied on this odd quirk of nodeRespondingToClickEvents.)
* page/Frame.h:
* page/ios/FrameIOS.mm:
(WebCore::Frame::approximateNodeAtViewportLocationLegacy):
2019-07-17 Simon Fraser <simon.fraser@apple.com>
[iOS WK2] Avoid lots of compositing backing store for offscreen position:fixed descendants
https://bugs.webkit.org/show_bug.cgi?id=199819
rdar://problem/51977416
Reviewed by Zalan Bujtas.
There was code to ensure that position:fixed layers and their descendants don't have their
backing store detached (thrown away to save memory when offscreen), since that can trigger
flashing when async scrolling moves layers in and out of the visual viewport.
However, some pages have many descendant layers of positon:fixed which entrain backing
store, because, for example, they have a stack of translated-offscreen menu elements inside
a fixed header, and those elements may composite because of overflow:scroll.
To avoid using too much memory on such pages, allow backing store detachment for fixed
layers that are outside the layout viewport. Add a flag to RenderLayer that's set for layers
which are fixed, or descendants of fixed, and consult that flag in
updateAllowsBackingStoreDetaching(). The logic there is similar to
RenderLayerCompositor::requiresCompositingForPosition().
I considered allowing all position:fixed to composite (since this patch would keep most of
the memory saving), but historically we've avoided compositing out-of-viewport
position:fixed because it's quite common to have them with negative z-index, and compositing
those has significant compositing knock-on effects.
GraphicsLayer flushing no longer needs to track the viewport-constrained status of layers,
so remove that code.
This patch removes backing-store pinning for sticky layers.
scrolling/ios/reconcile-layer-position-recursive.html then revealed a bug in
ScrollingStateStickyNode::reconcileLayerPositionForViewportRect(), which was assuming that
the sticky element was scrolled by the page, causing a bad layer position to get sync'd onto
the layer. Fixed by copying code from ScrollingTreeStickyNode that is smarter about
computing layer positions.
This patch fixes jetsams on kmart.com.au in iOS 13 beta.
Test: compositing/layer-creation/fixed-position-descendants-out-of-view.html
* page/scrolling/ScrollingStateStickyNode.cpp:
(WebCore::ScrollingStateStickyNode::computeLayerPosition const):
(WebCore::ScrollingStateStickyNode::reconcileLayerPositionForViewportRect):
* page/scrolling/ScrollingStateStickyNode.h:
* platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::setAllowsBackingStoreDetaching):
(WebCore::GraphicsLayer::allowsBackingStoreDetaching const):
(WebCore::GraphicsLayer::setIsViewportConstrained): Deleted.
(WebCore::GraphicsLayer::isViewportConstrained const): Deleted.
(WebCore::GraphicsLayer::setCanDetachBackingStore): Deleted.
(WebCore::GraphicsLayer::canDetachBackingStore const): Deleted.
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::GraphicsLayerCA):
(WebCore::GraphicsLayerCA::recursiveVisibleRectChangeRequiresFlush const):
(WebCore::GraphicsLayerCA::setVisibleAndCoverageRects):
(WebCore::GraphicsLayerCA::recursiveCommitChanges):
(WebCore::GraphicsLayerCA::updateCoverage):
(WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
* platform/graphics/ca/GraphicsLayerCA.h:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::updateLayerPositions):
(WebCore::outputPaintOrderTreeLegend):
(WebCore::outputPaintOrderTreeRecursive):
* rendering/RenderLayer.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateAllowsBackingStoreDetaching):
(WebCore::RenderLayerBacking::updateOverflowControlsLayers):
(WebCore::RenderLayerBacking::setIsScrollCoordinatedWithViewportConstrainedRole): Deleted.
* rendering/RenderLayerBacking.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::requiresCompositingForPosition const):
(WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
(WebCore::RenderLayerCompositor::updateScrollCoordinationForLayer):
2019-07-17 Chris Dumez <cdumez@apple.com>
Avoid unnecessary copy of monitors under DisplayRefreshMonitorManager::displayWasUpdated()
https://bugs.webkit.org/show_bug.cgi?id=199847
Reviewed by Said Abou-Hallawa.
There is always one one monitor in m_monitors for a given displayID so there is
no need to copy the monitors inside DisplayRefreshMonitorManager::displayWasUpdated()
and no need to iterate over all of them. This patch also factors a bit differently
so that it becomes more obvious.
* platform/graphics/DisplayRefreshMonitorManager.cpp:
(WebCore::DisplayRefreshMonitorManager::createMonitorForClient):
(WebCore::DisplayRefreshMonitorManager::unregisterClient):
(WebCore::DisplayRefreshMonitorManager::displayDidRefresh):
(WebCore::DisplayRefreshMonitorManager::displayWasUpdated):
(WebCore::DisplayRefreshMonitorManager::findMonitorForDisplay const):
(WebCore::DisplayRefreshMonitorManager::monitorForDisplay const):
* platform/graphics/DisplayRefreshMonitorManager.h:
2019-07-17 Sihui Liu <sihui_liu@apple.com>
IndexedDB: error in starting version change transaction may be neglected
https://bugs.webkit.org/show_bug.cgi?id=199818
<rdar://problem/52925738>
Reviewed by Brady Eidson.
For version change transaction, IDBServer didn't wait the result of beginTransaction on the background thread
before giving the IDBClient the result of open request. In this case, beginTransaction may fail to update the
DatabaseVersion in database file or set m_originalDatabaseInfoBeforeVersionChange, but the transaction was
marked as started. When we later set m_databaseInfo with m_originalDatabaseInfoBeforeVersionChange,
m_databaseInfo could become nullptr.
To write a test for this, we will need to simulate an SQLite error. I manually tested this by crafting the
SQLiteStatement in beginTransaction, making it an invalid statement, and verified that error event, instead of
ungradeneeded event is dispatched to the IDBRequest.
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::startVersionChangeTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::performStartVersionChangeTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformStartVersionChangeTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::beginTransactionInBackingStore): Deleted.
* Modules/indexeddb/server/UniqueIDBDatabase.h:
2019-07-17 Daniel Bates <dabates@apple.com>
Typing into a cell in a Google Sheet lags behind by one character
https://bugs.webkit.org/show_bug.cgi?id=199587
<rdar://problem/51616845>
Reviewed by Brent Fulgham.
Add a Google Sheets quirk. Put all DOM timers scheduled from keydown and keypress event listeners
into a holding tank. The timers continue to tick, but are barred from executing their action until
the next text insertion or deletion or 32 ms (on device) have elapsed, whichever is sooner. We only
allocate a holding tank once per document, only if the quirk is active, and this allocation is done
when the document schedules a timer on keydown or keypress. The holding tank lives for the lifetime
of the document.
The story behind the quirk:
On keypress Google Sheets schedules timers and expects that a DOM update will occur (i.e. text
will be inserted or deleted) within the same event loop iteration as the dispatched keypress. The
UI Events spec. [1] makes no such guarantee of when a DOM update must occur in relation to the keypress
event. It could happen in the same event loop iteration as the key press (as Google expects), the
next iteration, 500ms later, 2 minutes later, etc. What the spec does guarantee is that by the time
a DOM input event is dispatched that the DOM will be updated. And this is the solution to the problem
Google Sheets is trying to solve, but is doing so using pre-IE 9 technology (though similar
functionality was available via onpropertychange in IE < 9).
See also <https://github.com/w3c/uievents/issues/238>, which is tracking a spec. text update for
this quirk.
Test: fast/events/ios/dom-update-on-keydown-quirk.html
[1] <https://w3c.github.io/uievents/> (Editor's Draft, 14 October 2018)
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
Add some files to the project.
* dom/Document.cpp:
(WebCore::Document::domTimerHoldingTank): Added.
* dom/Document.h:
(WebCore::Document::domTimerHoldingTankIfExists): Added.
* page/DOMTimer.cpp:
(WebCore::DOMTimer::install): Put the newly instantiated timer into the holding tank.
(WebCore::DOMTimer::removeById): Remove the timer from the holding tank.
(WebCore::DOMTimer::fired): Check if the timer is in the holding tank. If it is and it is a one-
shot timer then schedule it for the next event loop iteration. If it's a repeating timer just
let it continue ticking. Otherwise, do what we no now and execute the timer's action. The reason
we do not suspend timers in the holding tank is because:
1. Far out timers (Google Sheets registers timers as far out as 5 minutes!) are not penalized.
Though smart supension logic could avoid this. See (3).
2. Empirical observations indicate that the keyboard will perform the insertion or deletion
reasonably quickly (not the same event loop iteration as the keydown, but within two iterations out).
So, the timers in the holding tank are short-lived.
3. Simplifies the code. There is no need to keep additional bookkeeping to track multiple timer
suspension reasons (timers currently can only have one suspension reason) or alternatively defer
scheduling a timer until a later time and computing a new "fair" firing time when scheduled.
* page/EventHandler.cpp:
(WebCore::EventHandler::internalKeyEvent): Place a token on the stack to put all DOM timers
scheduled on keydown and keypress into the holding tank if the quirk is enabled.
* page/Quirks.cpp:
(WebCore::Quirks::needsDeferKeyDownAndKeyPressTimersUntilNextEditingCommand const): Added.
* page/Quirks.h:
* page/Settings.yaml: Added setting so that this quirk can be enabled from a layout test. This setting
also lets us enable the quirk for all sites or for certain third-party apps if desired.
* page/ios/DOMTimerHoldingTank.cpp: Added.
(WebCore::DOMTimerHoldingTank::DOMTimerHoldingTank):
(WebCore::DOMTimerHoldingTank::add):
(WebCore::DOMTimerHoldingTank::remove):
(WebCore::DOMTimerHoldingTank::contains):
(WebCore::DOMTimerHoldingTank::removeAll):
(WebCore::DOMTimerHoldingTank::stopExceededMaximumHoldTimer):
* page/ios/DOMTimerHoldingTank.h: Added.
(WebCore::DeferDOMTimersForScope::DeferDOMTimersForScope):
(WebCore::DeferDOMTimersForScope::~DeferDOMTimersForScope):
(WebCore::DeferDOMTimersForScope::isDeferring):
2019-07-17 Darin Adler <darin@apple.com>
No need for isURLAllowed function in Frame
https://bugs.webkit.org/show_bug.cgi?id=120266
Reviewed by Alex Christensen.
* css/SelectorCheckerTestFunctions.h:
(WebCore::matchesFullScreenPseudoClass): Use is<> instead of
the isFrameElementBase function. Also updated includes and spacing.
* dom/Document.cpp:
(WebCore::Document::resolveStyle): Shortened an old, long comment
that happened to mention HTMLFrameElementBase::isURLAllowed by name.
* dom/Element.h: Deleted isFrameElementBase.
* html/HTMLAppletElement.cpp:
(WebCore::HTMLAppletElement::updateWidget): Tweaked comment.
* html/HTMLBodyElement.cpp:
(WebCore::HTMLBodyElement::insertedIntoAncestor): Moved comment from
here to didFinishInsertingNode, since the code it's talking about is there.
Also got rid of unnecessary local variable.
(WebCore::HTMLBodyElement::didFinishInsertingNode): Moved comment here
and elaborated a bit. Also changed the code to copy margin attributes in a
simpler way without requiring special getter functions. There is a slight
behavior change here, but seems unlikely to affect any websites or tests.
Would be good to add better test coverage, which I think should be done
when fixing the problems described in the FIXME.
* html/HTMLEmbedElement.cpp:
(WebCore::HTMLEmbedElement::updateWidget): allowedToLoadFrameURL -> canLoadURL
Also Tweaked comments.
* html/HTMLFrameElement.cpp:
(WebCore::HTMLFrameElement::rendererIsNeeded): isURLAllowed -> canLoad
* html/HTMLFrameElementBase.cpp:
(WebCore::HTMLFrameElementBase::HTMLFrameElementBase): Removed initial
values for no-longer-needed data members.
(WebCore::HTMLFrameElementBase::canLoadScriptURL const): Renamed from
isURLAllowed. Also refactored so it now calls canLoadURL.
(WebCore::HTMLFrameElementBase::canLoad const): Renamed from isURLAllowed.
Also added FIXME comments about multiple ways that this code incorrectly
handles the empty string. Might inspire some tests and future fixes.
(WebCore::HTMLFrameElementBase::canLoadURL const): Renamed from isURLAllowed.
Added an overload that takes a relative URL string largely to make this
more parallel with the similar code in HTMLPlugInImageElement. Refactored
to call canAddSubframe and isProhibitedSelfReference, removing the need
to call Frame::isURLAllowed.
(WebCore::HTMLFrameElementBase::openURL): isURLAllowed -> canLoad
(WebCore::HTMLFrameElementBase::parseAttribute): Removed unneeded code
to parse marginwidth, marginheight, and scrolling, which are now done
as needed instead. Might have to add code back if we ever add code to
make these cause dynamic updates when changed, but that was not the
behavior of the existing code.
(WebCore::HTMLFrameElementBase::scrollingMode const): Changed to call
attributeWithoutSynchronization rather than reading from a data member.
* html/HTMLFrameElementBase.h: Moved scrollingMode into the .cpp file.
Removed marginWidth and marginHeight since they are no longer called.
Made canContainRangeEndPoint override be private. Renamed isURLAllowed
to canLoad/canLoadScriptURL/canLoadURL. Removed unneeded isFrameElementBase
since is<HTMLFrameElementBase> already works without it. Removed unneeded
data members m_scrolling, m_marginWidth, and m_marginHeight.
* html/HTMLFrameOwnerElement.cpp:
(WebCore::HTMLFrameOwnerElement::HTMLFrameOwnerElement): Moved initialization
of m_contentFrame and m_sandboxFlags to the header.
(WebCore::HTMLFrameOwnerElement::clearContentFrame): 0 -> nullptr
(WebCore::HTMLFrameOwnerElement::canAddSubframe const): Added. Code was moved
here from multiple functions that enforced the subframe count limit.
(WebCore::HTMLFrameOwnerElement::isProhibitedSelfReference const): Added.
Moved code here from Frame::isURLAllowed so it's easy to use as needed.
* html/HTMLFrameOwnerElement.h: Renamed isURLAllowed to canLoadScriptURL.
Added protected canAddSubframe and isProhibitedSelfReference functions.
Initialized the data members here.
* html/HTMLIFrameElement.cpp:
(WebCore::HTMLIFrameElement::sandbox): Added braces for multi-line if statement.
(WebCore::HTMLIFrameElement::parseAttribute): Removed unneeded storage of the
allow attribute value. Added missing code to invalidate m_featurePolicy when
the allow attribute changes. This could change behavior, but unlikely to affect
any websites of tests. Would be good to add a test for this.
(WebCore::HTMLIFrameElement::rendererIsNeeded): isURLAllowed -> canLoad. Also
reordered the code to be more efficient for display: none (why not?).
(WebCore::HTMLIFrameElement::featurePolicy const): Use attributeWithoutSynchronization
to read the allow attribute rather than using a data member.
* html/HTMLIFrameElement.h: Removed the unneeded allow function member and
m_allow data member since DOM reflection takes care of the function and the
featurePolicy function can get the attribute without a data member.
* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::updateWidget): allowedToLoadFrameURL -> canLoadURL
Also tweaked comments.
* html/HTMLPlugInElement.cpp:
(WebCore::HTMLPlugInElement::canLoadScriptURL const): Added. Code moved here
from HTMLFrameOwnerElement::isURLAllowed. Added comment about why this is not
necessarily correct and might need improvement.
* html/HTMLPlugInElement.h: Added private override of canLoadScriptURL.
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::canLoadURL const): Renamed from
allowedToLoadFrameURL and refactored into two functions to match the
structure of the similar function in HTMLFrameElementBase. Also refactored
to use canAddSubframe and isProhibitedSelfReference rather than Frame::isURLAllowed.
(WebCore::HTMLPlugInImageElement::canLoadPlugInContent const): Renamed from
allowedToLoadPluginContent.
(WebCore::HTMLPlugInImageElement::requestObject): allowedToLoadPluginContent
-> canLoadPlugInContent
* html/HTMLPlugInImageElement.h: Renamed functions as mentioned above.
* loader/SubframeLoader.cpp:
(WebCore::SubframeLoader::requestFrame): isURLAllowed -> canLoadScriptURL
* page/FocusController.h: Removed unneeded forward declaration of HTMLFrameOwnerElement.
* page/Frame.cpp:
(WebCore::Frame::isURLAllowed const): Deleted.
* page/Frame.h: Ditto.
* page/FrameView.cpp:
(WebCore::FrameView::init): Removed code to initialize m_margins, since nothing
was looking at it after that.
(WebCore::FrameView::setMarginWidth): Deleted.
(WebCore::FrameView::setMarginHeight): Deleted.
* page/FrameView.h: Removed marginWidth, marginHeight, setMarginWidth,
setMarginHeight, and m_margins because there was no code anywhere calling
marginWidth or marginHeight, and no other side effects of these functions.
2019-07-17 Alex Christensen <achristensen@webkit.org>
Add a runtime-disabled dialog element skeleton
https://bugs.webkit.org/show_bug.cgi?id=199839
Reviewed by Ryosuke Niwa.
Beginning implementation of https://html.spec.whatwg.org/multipage/interactive-elements.html#the-dialog-element
Covered by rebaselining WPT tests.
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* html/HTMLDialogElement.cpp: Added.
(WebCore::HTMLDialogElement::HTMLDialogElement):
(WebCore::HTMLDialogElement::open):
(WebCore::HTMLDialogElement::setOpen):
(WebCore::HTMLDialogElement::returnValue):
(WebCore::HTMLDialogElement::setReturnValue):
(WebCore::HTMLDialogElement::show):
(WebCore::HTMLDialogElement::showModal):
(WebCore::HTMLDialogElement::close):
* html/HTMLDialogElement.h: Added.
* html/HTMLDialogElement.idl: Added.
* html/HTMLTagNames.in:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setDialogElementEnabled):
(WebCore::RuntimeEnabledFeatures::dialogElementEnabled const):
2019-07-17 Youenn Fablet <youenn@apple.com>
Hop to the main thread when doing logging in RealtimeIncomingVideoSourceCocoa
https://bugs.webkit.org/show_bug.cgi?id=199865
Reviewed by Darin Adler.
LoggerHelper routines allow logging messages in system console and inspector console.
These routines iterate through a Vector of log observers which is not thread safe.
Document, the main log observer, also expects to be called on the main thread.
Manually tested (writing a layout test for this would require more than 2 seconds).
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
(WebCore::RealtimeIncomingVideoSourceCocoa::OnFrame):
2019-07-17 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r247505.
https://bugs.webkit.org/show_bug.cgi?id=199871
"Caused failed ASSERT in stress test" (Requested by creid on
#webkit).
Reverted changeset:
"Bytecode cache should use FileSystem"
https://bugs.webkit.org/show_bug.cgi?id=199759
https://trac.webkit.org/changeset/247505
2019-07-17 Youenn Fablet <youenn@apple.com>
Add release logging to AudioSampleDataSource
https://bugs.webkit.org/show_bug.cgi?id=199814
<rdar://problem/53128140>
Reviewed by Eric Carlson.
Use release logging for AudioSampleDataSource in case of errors.
This requires passing a logger and a logger identifier.
For that purpose, pass a MediaStreamTrackPrivate to it constructor
and reuse its logger and log identifier.
For each log, hop to the main thread as release logging requires to be done in the main thread.
Add specific handling for RealtimeOutgoingAudioSource as its MediaStreamTrack can change in case of replaceTrack.
In that case, we change of logger when changing the MediaStreamTrackPrivate.
No observable change of behavior, covered by existing tests.
* platform/audio/mac/AudioSampleDataSource.h:
* platform/audio/mac/AudioSampleDataSource.mm:
(WebCore::AudioSampleDataSource::create):
(WebCore::AudioSampleDataSource::AudioSampleDataSource):
(WebCore::AudioSampleDataSource::setupConverter):
(WebCore::AudioSampleDataSource::pushSamplesInternal):
(WebCore::AudioSampleDataSource::pullSamplesInternal):
(WebCore::AudioSampleDataSource::setLogger):
(WebCore::AudioSampleDataSource::logChannel const):
* platform/mediastream/RealtimeOutgoingAudioSource.cpp:
(WebCore::RealtimeOutgoingAudioSource::setSource):
* platform/mediastream/RealtimeOutgoingAudioSource.h:
(WebCore::RealtimeOutgoingAudioSource::sourceUpdated):
* platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:
(WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable):
* platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.h:
Instead of using its own logger/identifier member field, reuse its MediaStreamTrackPrivate.
* platform/mediastream/mac/RealtimeOutgoingAudioSourceCocoa.cpp:
(WebCore::RealtimeOutgoingAudioSourceCocoa::RealtimeOutgoingAudioSourceCocoa):
(WebCore::RealtimeOutgoingAudioSourceCocoa::sourceUpdated):
* platform/mediastream/mac/RealtimeOutgoingAudioSourceCocoa.h:
* platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm:
(WebCore::WebAudioSourceProviderAVFObjC::prepare):
2019-07-17 Kenneth Russell <kbr@chromium.org>
Make ANGLE work inside WebKit2's sandbox
https://bugs.webkit.org/show_bug.cgi?id=199844
Reviewed by Alex Christensen.
Fix missing #import introduced at the last minute while removing
some debugging code in the last patch.
Tested with San Angeles WebGL demo and some conformance tests.
* platform/graphics/cocoa/WebGLLayer.mm:
2019-07-17 Andres Gonzalez <andresg_22@apple.com>
Hang in WebCore::AccessibilityRenderObject::visiblePositionRangeForLine.
https://bugs.webkit.org/show_bug.cgi?id=199845
<rdar://problem/53121017>
Reviewed by Chris Fleizach.
- Added check for upper bound NSNotFound for parameter to visiblePositionRangeForLine.
- Fixed signed/unsigned issue for AXTextMarkerRangeForLine attribute.
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::visiblePositionRangeForLine const):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
2019-07-17 Rob Buis <rbuis@igalia.com>
Add referrerpolicy attribute support for <script> elements
https://bugs.webkit.org/show_bug.cgi?id=185550
Reviewed by Youenn Fablet.
This patch adds 'referrerpolicy' attribute support for script elements.
If set, the value is restricted to the ReferrerPolicy enum, and
if valid it is used for the script fetch.
If not set or invalid, the current behavior is kept.
Tests: http/tests/referrer-policy-script/no-referrer-when-downgrade/cross-origin-http-http.html
http/tests/referrer-policy-script/no-referrer-when-downgrade/cross-origin-http.https.html
http/tests/referrer-policy-script/no-referrer-when-downgrade/same-origin.html
http/tests/referrer-policy-script/no-referrer/cross-origin-http-http.html
http/tests/referrer-policy-script/no-referrer/cross-origin-http.https.html
http/tests/referrer-policy-script/no-referrer/same-origin.html
http/tests/referrer-policy-script/origin-when-cross-origin/cross-origin-http-http.html
http/tests/referrer-policy-script/origin-when-cross-origin/cross-origin-http.https.html
http/tests/referrer-policy-script/origin-when-cross-origin/same-origin.html
http/tests/referrer-policy-script/origin/cross-origin-http-http.html
http/tests/referrer-policy-script/origin/cross-origin-http.https.html
http/tests/referrer-policy-script/origin/same-origin.html
http/tests/referrer-policy-script/same-origin/cross-origin-http-http.html
http/tests/referrer-policy-script/same-origin/cross-origin-http.https.html
http/tests/referrer-policy-script/same-origin/same-origin.html
http/tests/referrer-policy-script/strict-origin-when-cross-origin/cross-origin-http-http.html
http/tests/referrer-policy-script/strict-origin-when-cross-origin/cross-origin-http.https.html
http/tests/referrer-policy-script/strict-origin-when-cross-origin/same-origin.html
http/tests/referrer-policy-script/strict-origin/cross-origin-http-http.html
http/tests/referrer-policy-script/strict-origin/cross-origin-http.https.html
http/tests/referrer-policy-script/strict-origin/same-origin.html
http/tests/referrer-policy-script/unsafe-url/cross-origin-http-http.html
http/tests/referrer-policy-script/unsafe-url/cross-origin-http.https.html
http/tests/referrer-policy-script/unsafe-url/same-origin.html
* bindings/js/CachedScriptFetcher.cpp:
(WebCore::CachedScriptFetcher::requestScriptWithCache const):
* bindings/js/CachedScriptFetcher.h:
(WebCore::CachedScriptFetcher::CachedScriptFetcher):
* dom/InlineClassicScript.h:
* dom/LoadableClassicScript.cpp:
(WebCore::LoadableClassicScript::create):
* dom/LoadableClassicScript.h:
* dom/LoadableModuleScript.cpp:
(WebCore::LoadableModuleScript::create):
(WebCore::LoadableModuleScript::LoadableModuleScript):
* dom/LoadableModuleScript.h:
* dom/LoadableScript.h:
(WebCore::LoadableScript::LoadableScript):
* dom/ScriptElement.cpp:
(WebCore::ScriptElement::requestClassicScript):
(WebCore::ScriptElement::requestModuleScript):
* dom/ScriptElement.h:
* dom/ScriptElementCachedScriptFetcher.h:
(WebCore::ScriptElementCachedScriptFetcher::ScriptElementCachedScriptFetcher):
* html/HTMLIFrameElement.cpp:
(WebCore::HTMLIFrameElement::referrerPolicyForBindings const):
* html/HTMLScriptElement.cpp:
(WebCore::HTMLScriptElement::setReferrerPolicyForBindings):
(WebCore::HTMLScriptElement::referrerPolicyForBindings const):
(WebCore::HTMLScriptElement::referrerPolicy const):
* html/HTMLScriptElement.h:
* html/HTMLScriptElement.idl:
* html/parser/CSSPreloadScanner.cpp:
(WebCore::CSSPreloadScanner::emitRule):
* html/parser/HTMLPreloadScanner.cpp:
(WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest):
(WebCore::TokenPreloadScanner::StartTagScanner::processAttribute):
* html/parser/HTMLResourcePreloader.cpp:
(WebCore::PreloadRequest::resourceRequest):
* html/parser/HTMLResourcePreloader.h:
(WebCore::PreloadRequest::PreloadRequest):
* platform/ReferrerPolicy.cpp:
(WebCore::referrerPolicyToString):
* platform/ReferrerPolicy.h:
* svg/SVGScriptElement.h:
2019-07-16 Christopher Reid <chris.reid@sony.com>
Bytecode cache should use FileSystem
https://bugs.webkit.org/show_bug.cgi?id=199759
Reviewed by Yusuke Suzuki.
* platform/SharedBuffer.cpp:
2019-07-16 Simon Fraser <simon.fraser@apple.com>
Fix includes and make a constructor explicit to avoid unified-sources-triggered test failures
https://bugs.webkit.org/show_bug.cgi?id=199849
Reviewed by Wenson Hsieh.
webkit.org/b/199587 triggered some unexpected test failures because of unified sources include
order. The TextStream operator in ScrollingTreeOverflowScrollingNode::dumpProperties() was invoking
the implicit constructor of TransformOperations.
* page/scrolling/ScrollingTreeOverflowScrollingNode.cpp: Include TextStream.h
* platform/graphics/transforms/TransformOperations.h: Make ctor explicit.
2019-07-16 Antoine Quint <graouts@apple.com>
REGRESSION: fast/events/watchos/double-tap-to-zoom* tests crashing in com.apple.WebKit: -[WKContentView(WKInteraction) _singleTapDidReset:]
https://bugs.webkit.org/show_bug.cgi?id=199840
<rdar://problem/52856531>
Reviewed by Wenson Hsieh.
Fix a build error that occured when building for the watchOS Simulator in the debug configuration.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingProxyRole):
2019-07-16 Justin Fan <justin_fan@apple.com>
[WebGPU] Convert GPUComputePipeline LOG statements to generate GPUErrors
https://bugs.webkit.org/show_bug.cgi?id=199773
Reviewed by Myles C. Maxfield.
Generate a GPUError if GPUComputePipeline creation fails.
Rework the WHLSL test harness to take advantage of this.
Test: webgpu/compute-pipeline-errors.html
* Modules/webgpu/WebGPUComputePipelineDescriptor.cpp:
(WebCore::WebGPUComputePipelineDescriptor::tryCreateGPUComputePipelineDescriptor const):
* Modules/webgpu/WebGPUComputePipelineDescriptor.h:
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createComputePipeline const):
* platform/graphics/gpu/GPUBuffer.h:
* platform/graphics/gpu/GPUComputePipeline.h:
Now inherits from GPUObjectBase, though this isn't super useful yet
since GPUComputePipeline itself does not expose any operations that can error.
* platform/graphics/gpu/GPUDevice.cpp:
(WebCore::GPUDevice::tryCreateComputePipeline const):
* platform/graphics/gpu/GPUDevice.h:
* platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
(WebCore::GPUBuffer::validateBufferUsage):
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm:
(WebCore::trySetMetalFunctions):
(WebCore::trySetFunctions):
(WebCore::convertComputePipelineDescriptor):
(WebCore::tryCreateMTLComputePipelineState):
(WebCore::GPUComputePipeline::tryCreate):
(WebCore::GPUComputePipeline::GPUComputePipeline):
2019-07-11 Justin Fan <justin_fan@apple.com>
[WebGPU] Move error scopes out of GPUDevice for more portable error generation
https://bugs.webkit.org/show_bug.cgi?id=199740
Reviewed by Myles C. Maxfield.
Move error generation into a separate RefCounted class to allow GPU objects to generate
errors independent of any GPUDevice.
Create GPUObjectBase to delegate error generation and refactor GPUBuffer to inherit from GPUObjectBase.
No behavior change or new tests. Error scopes covered by error-scopes-test.html.
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::WebGPUDevice): Now creates a GPUErrorGenerator.
(WebCore::WebGPUDevice::createBuffer const): Pass the GPUErrorGenerator to any created GPUBuffer.
(WebCore::WebGPUDevice::createBufferMapped const): Ditto.
(WebCore::WebGPUDevice::popErrorScope): Shouldn't be const. Can just ask for the GPUError rather than passing a lambda.
(WebCore::WebGPUDevice::pushErrorScope const): Deleted.
(WebCore::WebGPUDevice::popErrorScope const): Deleted.
* Modules/webgpu/WebGPUDevice.h:
(WebCore::WebGPUDevice::pushErrorScope):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/gpu/GPUBuffer.h: Now inherits from GPUObjectBase for error generation ease.
* platform/graphics/gpu/GPUDevice.cpp:
(WebCore::GPUDevice::tryCreateBuffer): Ensure GPUBuffers reference the GPUErrorGenerator.
(WebCore::GPUDevice::pushErrorScope): Deleted. No longer needed here.
(WebCore::GPUDevice::popErrorScope): Deleted.
(WebCore::GPUDevice::registerError): Deleted.
* platform/graphics/gpu/GPUDevice.h: Move error scope logic out.
* platform/graphics/gpu/GPUErrorGenerator.cpp: Added.
(WebCore::GPUErrorGenerator::pushErrorScope):
(WebCore::GPUErrorGenerator::popErrorScope):
(WebCore::GPUErrorGenerator::generateError):
* platform/graphics/gpu/GPUErrorGenerator.h: Added.
(WebCore::GPUErrorGenerator::create):
* platform/graphics/gpu/GPUObjectBase.h: Added.
(WebCore::GPUObjectBase::generateError):
(WebCore::GPUObjectBase::GPUObjectBase):
* platform/graphics/gpu/cocoa/GPUBufferMetal.mm: Use the GPUErrorGenerator directly during buffer creation.
(WebCore::GPUBuffer::validateBufferUsage):
(WebCore::GPUBuffer::tryCreate):
(WebCore::GPUBuffer::GPUBuffer):
* platform/graphics/gpu/cocoa/GPUQueueMetal.mm:
(WebCore::GPUQueue::submit): Prevent possible null dereference.
2019-07-10 Justin Fan <justin_fan@apple.com>
[WebGPU] Implement GPUError and error scopes
https://bugs.webkit.org/show_bug.cgi?id=199655
Reviewed by Myles C. Maxfield.
Add GPUErrorFilter, GPUError, and the ability to push and pop error scopes on a GPUDevice.
This will allow us to check for WebGPU errors from JavaScript.
Currently, only some GPUBuffer creation errors are reported for testing; more errors will follow in later patches.
Test: webgpu/error-scopes-test.html
* Modules/webgpu/GPUErrorFilter.idl: Added.
* Modules/webgpu/GPUOutOfMemoryError.idl: Added.
* Modules/webgpu/GPUValidationError.idl: Added.
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::pushErrorScope):
(WebCore::WebGPUDevice::popErrorScope): Resolve the Promise here, since GPUDevice shouldn't worry about DOM layer.
* Modules/webgpu/WebGPUDevice.h:
* Modules/webgpu/WebGPUDeviceErrorScopes.cpp: Added.
(WebCore::WebGPUDeviceErrorScopes::pushErrorScope): Delegates to WebGPUDevice.
(WebCore::WebGPUDeviceErrorScopes::popErrorScope): Ditto.
* Modules/webgpu/WebGPUDeviceErrorScopes.h: Added.
* Modules/webgpu/WebGPUDeviceErrorScopes.idl: Added.
* platform/graphics/gpu/GPUBuffer.h:
* platform/graphics/gpu/GPUDevice.cpp: The actual error stack lives here.
(WebCore::GPUDevice::pushErrorScope):
(WebCore::GPUDevice::popErrorScope): Calls a callback with a GPUError, if any.
(WebCore::GPUDevice::registerError): Actually creates GPUErrors.
* platform/graphics/gpu/GPUDevice.h:
* platform/graphics/gpu/GPUError.cpp: Added.
(WebCore::createError): Factory function for various error types.
* platform/graphics/gpu/GPUError.h: Added.
* platform/graphics/gpu/GPUErrorFilter.h: Added.
* platform/graphics/gpu/GPUOutOfMemoryError.h: Added.
(WebCore::GPUOutOfMemoryError::create):
* platform/graphics/gpu/GPUValidationError.cpp: Added.
(WebCore::GPUValidationError::create):
(WebCore::GPUValidationError::GPUValidationError):
* platform/graphics/gpu/GPUValidationError.h: Added.
(WebCore::GPUValidationError::message const):
* platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
(WebCore::GPUBuffer::validateBufferUsage): Create an actual GPUValidationError :)
(WebCore::GPUBuffer::tryCreate): Create GPUOutOfMemoryErrors where appropriate.
Add file/name references:
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
Missing includes:
* Modules/webgpu/WHLSL/WHLSLCheckTextureReferences.cpp:
2019-07-16 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r247493.
https://bugs.webkit.org/show_bug.cgi?id=199841
"The new whlsl-for-loop.html test is failing on the bots"
(Requested by rmorisset on #webkit).
Reverted changeset:
"[WHLSL] Desugar for loops and while loops"
https://bugs.webkit.org/show_bug.cgi?id=199726
https://trac.webkit.org/changeset/247493
2019-07-16 Per Arne Vollan <pvollan@apple.com>
Prewarm font cache with more fonts
https://bugs.webkit.org/show_bug.cgi?id=199283
Reviewed by Myles C. Maxfield.
Use the existing prewarm method in FontCache to prewarm the cache with a set of font family names.
The font list consists of some of the fonts used by the 10 most popular sites on Alexa top sites.
This is a confirmed improvement in page load time.
No new tests, covered by existing tests.
* page/ProcessWarming.cpp:
(WebCore::ProcessWarming::prewarmGlobally):
* platform/graphics/FontCache.cpp:
(WebCore::FontCache::prewarmGlobally):
* platform/graphics/FontCache.h:
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontCache::prewarmGlobally):
2019-07-16 Robin Morisset <rmorisset@apple.com>
[WHLSL] Desugar for loops and while loops
https://bugs.webkit.org/show_bug.cgi?id=199726
Reviewed by Myles C. Maxfield.
This patch makes loops behave a lot more similarly to the spec.
In particular, while loops are just degenerate for loops, so they can be desugared in the parser.
And for loops can themselves be heavily desugared, into having no initializer, one condition and one increment
by putting any initializer in a block around the loop, putting true in the condition if there is none, and putting any litteral in the increment if there is none.
Debugging this patch revealed an unrelated bug where the parser would generate an empty comma expression on ";", which the checker would then choke on.
The parser now generates an empty block in that case (as specified in the spec), which fixes the problem.
Finally, while updating the NameResolver for the new structure of loops I realized that it was needlessly generating extra NameContext.
They are not expected by the spec, that forbids naked variable declarations outside of blocks anyway.
So I removed this unnecessary work, and fixed the parser to correctly forbid such naked variable declarations.
* Modules/webgpu/WHLSL/AST/WHLSLAST.h:
* Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
(WebCore::WHLSL::AST::ForLoop::ForLoop):
(WebCore::WHLSL::AST::ForLoop::condition):
(WebCore::WHLSL::AST::ForLoop::increment):
* Modules/webgpu/WHLSL/AST/WHLSLStatement.h:
(WebCore::WHLSL::AST::Statement::isVariableDeclarationsStatement const):
* Modules/webgpu/WHLSL/AST/WHLSLWhileLoop.h: Removed.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
* Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:
(WebCore::WHLSL::ASTDumper::visit):
* Modules/webgpu/WHLSL/WHLSLASTDumper.h:
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::visit):
* Modules/webgpu/WHLSL/WHLSLNameResolver.h:
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseBlockBody):
(WebCore::WHLSL::Parser::parseForLoop):
(WebCore::WHLSL::Parser::parseWhileLoop):
(WebCore::WHLSL::Parser::parseStatement):
(WebCore::WHLSL::Parser::parseEffectfulExpression):
* Modules/webgpu/WHLSL/WHLSLParser.h:
* Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:
* Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
(WebCore::WHLSL::Visitor::visit):
* Modules/webgpu/WHLSL/WHLSLVisitor.h:
* WebCore.xcodeproj/project.pbxproj:
2019-07-16 Tim Horton <timothy_horton@apple.com>
NSTextFinder holes don't scroll with the page
https://bugs.webkit.org/show_bug.cgi?id=199815
<rdar://problem/52280514>
Reviewed by Simon Fraser.
* rendering/ScrollAlignment.h:
2019-07-16 Youenn Fablet <youenn@apple.com>
[iOS] Make sure the first camera device in the list is the front camera
https://bugs.webkit.org/show_bug.cgi?id=199811
<rdar://problem/53125157>
Reviewed by Jer Noble.
Some websites call getUserMedia with a deviceId constraint and theey pick the
first deviceId in the list provided by enumerateDevices.
On iOS, this is the back camera which is often not what is expected by WebRTC applications.
Instead, make sure the first camera device is the front camera.
Manually tested.
* platform/mediastream/mac/AVCaptureDeviceManager.mm:
2019-07-16 Chris Dumez <cdumez@apple.com>
Speed up StorageManager::getValues()
https://bugs.webkit.org/show_bug.cgi?id=199812
Reviewed by Alex Christensen.
* storage/StorageMap.cpp:
(WebCore::StorageMap::importItems):
* storage/StorageMap.h:
2019-07-16 Simon Fraser <simon.fraser@apple.com>
Remove "GraphicsContext 0x7ffd8765f6b0 stack changed by" logging
https://bugs.webkit.org/show_bug.cgi?id=199834
Reviewed by Dean Jackson.
I inadvertently left in a couple of GraphicsContextStateStackChecker (used to detect mismatched
GraphicsContext save/restore) in r246725, so remove them.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintLayerContents):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::paintIntoLayer):
2019-07-16 Wenson Hsieh <wenson_hsieh@apple.com>
[Text autosizing] [iPadOS] Paragraph text on the front page of LinkedIn.com is not boosted
https://bugs.webkit.org/show_bug.cgi?id=199827
<rdar://problem/53152660>
Reviewed by Zalan Bujtas.
After r247467, we try to avoid boosting some text that might cause vertical overflow due to line height
increasing inside a container that expects a fixed integer number of lines. However, in the case of
linkedin.com, the line height specified is a fixed value of 26px, which greatly exceeds the specified font size
of 14px. In this case, it's safe to boost font size, since doing so would not affect the line height at all.
To handle this case, don't avoid text autosizing due to the "fixed number of lines" heuristic if the line height
is fixed, and is much larger than the font size.
Test: fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html
* rendering/style/TextSizeAdjustment.cpp:
(WebCore::AutosizeStatus::updateStatus):
2019-07-16 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] Cancel ongoing content observation when tap is failed/cancelled
https://bugs.webkit.org/show_bug.cgi?id=199828
<rdar://problem/53152696>
Reviewed by Wenson Hsieh.
This patch ensures that we stop the content observation (initiated by touch start) when the tap
is cancelled/failed.
Not testable.
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::didCancelPotentialTap):
* page/ios/ContentChangeObserver.h:
2019-07-16 Rob Buis <rbuis@igalia.com>
Remove support for beforeload on link=prefetch
https://bugs.webkit.org/show_bug.cgi?id=199632
Reviewed by Youenn Fablet.
Remove support for beforeload on link=prefetch
by not calling shouldLoadLink for prefetch.
Also make loadLink return void since it always
succeeds.
Tests: http/wpt/prefetch/beforeload-dynamic.html
http/wpt/prefetch/beforeload.html
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::process):
* loader/LinkLoader.cpp:
(WebCore::LinkLoader::prefetchIfNeeded):
(WebCore::LinkLoader::loadLink):
* loader/LinkLoader.h:
2019-07-16 Youenn Fablet <youenn@apple.com>
Hop to main thread for release logging in RealtimeIncomingAudioSource
https://bugs.webkit.org/show_bug.cgi?id=199813
Reviewed by Eric Carlson.
LoggerHelper routines allow logging messages in system console and inspector console.
These routines iterate through a Vector of log observers which is not thread safe.
Document, the main log observer, also expects to be called on the main thread.
Manually tested (writing a layout test for this would require more than 2 seconds).
* platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp:
(WebCore::RealtimeIncomingAudioSourceCocoa::OnData):
2019-07-15 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r247444.
Caused two scrolling tests to fail on iOS Simulator
Reverted changeset:
"Typing into a cell in a Google Sheet lags behind by one
character"
https://bugs.webkit.org/show_bug.cgi?id=199587
https://trac.webkit.org/changeset/247444
2019-07-15 Zalan Bujtas <zalan@apple.com>
outlook.live.com has odd viewport with edge gap
https://bugs.webkit.org/show_bug.cgi?id=199822
<rdar://problem/53029072>
Reviewed by Wenson Hsieh.
r244944 introduced a viewport width quirk because at certain screen size outlook.live.com's flex setup produced a slighly broken layout.
We don't seem to need this quirk anymore (composed column's min-width is removed.)
* page/Quirks.cpp:
(WebCore::Quirks::shouldIgnoreShrinkToFitContent const): Deleted.
(WebCore::Quirks::overriddenViewLayoutWidth const): Deleted.
* page/Quirks.h:
2019-07-15 Saam Barati <sbarati@apple.com>
[WHLSL] Matrix memory layout should match HLSL by laying out columns linearly
https://bugs.webkit.org/show_bug.cgi?id=199215
Reviewed by Myles C. Maxfield.
This patch makes it so that we lay out matrices in memory in the same
way HLSL does. This is by laying out columns linearly in memory. So a float4x4
composed by this series of floats in memory:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
composes this logical matrix:
[[ 0, 4, 8, 12]
[ 1, 5, 9, 13]
[ 2, 6, 10, 14]
[ 3, 7, 11, 15]]
To implement this, we switch to using an array to represent the memory
contents linear memory layout of a matrix. So the matrix float4x3 will now
be an array<float, 12> in metal. Then, we change the indexed getter and
setter methods for matrices to load and store from and to the correct
memory locations. The memory layout of matrices is observable to WHLSL
when using a matrix as an input/output to a shader.
Test: webgpu/whlsl-matrix-memory-layout.html
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeFunction):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeTypeWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeType):
2019-07-15 Wenson Hsieh <wenson_hsieh@apple.com>
[Text autosizing] [iPadOS] Product label text is clipped in portrait mode on the front page of sephora.com
https://bugs.webkit.org/show_bug.cgi?id=199806
<rdar://problem/52902482>
Reviewed by Zalan Bujtas.
On sephora.com, some product label text is currently boosted by idempotent text autosizing, which causes the
labels be vertically clipped. This patch augments the idempotent text autosizing heuristic to avoid this case by
checking if the element to be boosted has a fixed height or max height, whose value is very close to a small
integer multiple of the line height. In this case, it's likely that the website expects the text to be no more
than a few lines' worth of height, so boosting the text is likely to break the page.
Test: fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::isIdempotentTextAutosizingCandidate const):
* rendering/style/TextSizeAdjustment.cpp:
(WebCore::AutosizeStatus::updateStatus):
* rendering/style/TextSizeAdjustment.h:
Rename Fields::DisplayNone to Fields::AvoidSubtree to avoid introducing another bit in RenderStyle's inherited
flags.
2019-07-15 Myles C. Maxfield <mmaxfield@apple.com>
New York font erroneously gets synthetic bold
https://bugs.webkit.org/show_bug.cgi?id=199653
Unreviewed watchOS build fix.
* page/ProcessWarming.cpp:
(WebCore::ProcessWarming::prewarmGlobally):
* page/cocoa/MemoryReleaseCocoa.mm:
(WebCore::platformReleaseMemory):
* platform/graphics/FontCascadeDescription.cpp:
* platform/graphics/FontDescription.h:
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::invalidateFontCache):
(WebCore::lookupFallbackFont):
* platform/graphics/cocoa/FontDescriptionCocoa.cpp:
(WebCore::FontCascadeDescription::effectiveFamilyAt const):
* platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:
(WebCore::FontFamilySpecificationCoreText::fontRanges const):
* platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:
2019-07-15 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r247462.
https://bugs.webkit.org/show_bug.cgi?id=199816
completely messed up the patch (Requested by litherum on
#webkit).
Reverted changeset:
"New York font erroneously gets synthetic bold"
https://bugs.webkit.org/show_bug.cgi?id=199653
https://trac.webkit.org/changeset/247462
2019-07-11 Simon Fraser <simon.fraser@apple.com>
Fix builds where HAVE_DESIGN_SYSTEM_UI_FONTS is not defined.
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::fontWithFamilySpecialCase):
2019-07-11 Justin Fan <justin_fan@apple.com>
Unreviewed build fix.
* Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp: Missing include.
2019-07-11 Myles C. Maxfield <mmaxfield@apple.com>
New York font erroneously gets synthetic bold
https://bugs.webkit.org/show_bug.cgi?id=199653
<rdar://problem/51692592>
Reviewed by Simon Fraser.
This patch adds support for -apple-system-ui-serif, -apple-system-ui-monospaced,
and -apple-system-ui-rounded, behind an SPI that is off-by-default. We don't want
to expose these fonts to the web because we don't a standardization story for them
yet, but we do want some apps to be able to use them.
WebKit clients who want to use these fonts can set
-[WKPreferences _shouldAllowDesignSystemUIFonts] = YES.
The patch generalizes our existing system-ui infrastructure to handle these three
additional fonts. It also explicitly disables the unsupported dot-prefixed names
so they don't leak out into Web content.
Tests: fast/text/design-system-ui-10.html
fast/text/design-system-ui-11.html
fast/text/design-system-ui-12.html
fast/text/design-system-ui-13.html
fast/text/design-system-ui-14.html
fast/text/design-system-ui-15.html
fast/text/design-system-ui-16.html
fast/text/design-system-ui-2.html
fast/text/design-system-ui-3.html
fast/text/design-system-ui-4.html
fast/text/design-system-ui-5.html
fast/text/design-system-ui-6.html
fast/text/design-system-ui-7.html
fast/text/design-system-ui-8.html
fast/text/design-system-ui-9.html
fast/text/design-system-ui.html
* css/CSSFontFace.cpp:
(WebCore::CSSFontFace::shouldAllowDesignSystemUIFonts const):
* css/CSSFontFace.h:
* css/CSSFontFaceSource.cpp:
(WebCore::CSSFontFaceSource::load):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::initializeFontStyle):
* page/Settings.yaml:
* platform/graphics/FontDescription.cpp:
(WebCore::m_shouldAllowDesignSystemUIFonts):
(WebCore::m_shouldAllowUserInstalledFonts): Deleted.
* platform/graphics/FontDescription.h:
(WebCore::FontDescription::shouldAllowDesignSystemUIFonts const):
(WebCore::FontDescription::setShouldAllowDesignSystemUIFonts):
(WebCore::FontDescription::operator== const):
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::platformFontLookupWithFamily):
(WebCore::fontWithFamily):
* platform/graphics/cocoa/FontCacheCoreText.h:
* platform/graphics/cocoa/FontDescriptionCocoa.cpp:
(WebCore::systemFontUse):
(WebCore::systemFontCascadeList):
(WebCore::FontCascadeDescription::effectiveFamilyCount const):
(WebCore::FontCascadeDescription::effectiveFamilyAt const):
(WebCore::isSystemFontString): Deleted.
(WebCore::isUIFontTextStyle): Deleted.
* platform/graphics/cocoa/FontPlatformDataCocoa.mm:
(WebCore::FontPlatformData::ctFont const):
* platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:
(WebCore::SystemFontDatabaseCoreText::createSystemUI):
(WebCore::SystemFontDatabaseCoreText::createDesignSystemUI):
(WebCore::SystemFontDatabaseCoreText::createTextStyle):
(WebCore::SystemFontDatabaseCoreText::cascadeList):
(WebCore::SystemFontDatabaseCoreText::applyWeightItalicsAndFallbackBehavior):
(WebCore::SystemFontDatabaseCoreText::systemFontParameters):
* platform/graphics/cocoa/SystemFontDatabaseCoreText.h:
* platform/graphics/ios/FontCacheIOS.mm:
(WebCore::platformFontWithFamilySpecialCase):
* platform/graphics/mac/FontCacheMac.mm:
(WebCore::platformFontWithFamilySpecialCase):
* style/StyleResolveForDocument.cpp:
(WebCore::Style::resolveForDocument):
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::dataChanged):
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setShouldAllowDesignSystemUIFonts):
* testing/InternalSettings.h:
* testing/InternalSettings.idl:
2019-07-15 Chris Dumez <cdumez@apple.com>
Crash under DisplayRefreshMonitorManager::displayWasUpdated()
https://bugs.webkit.org/show_bug.cgi?id=199808
<rdar://problem/53070144>
Reviewed by Geoffrey Garen.
Copy m_monitors before iterating over it because the calling displayLinkFired() on the
monitor may end up calling DisplayRefreshMonitorManager::displayDidRefresh() synchronously,
which removes the monitor from m_monitors.
* platform/graphics/DisplayRefreshMonitorManager.cpp:
(WebCore::DisplayRefreshMonitorManager::displayWasUpdated):
2019-07-15 Yusuke Suzuki <ysuzuki@apple.com>
[JSC] Improve wasm wpt test results by fixing miscellaneous issues
https://bugs.webkit.org/show_bug.cgi?id=199783
Reviewed by Mark Lam.
Remove WebAssemblyPrototype.
Tests: imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.html
imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.html
imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/interface.any.html
imported/w3c/web-platform-tests/wasm/jsapi/interface.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.worker.html
* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::compileStreaming):
(WebCore::JSDOMWindowBase::instantiateStreaming):
2019-07-15 Dean Jackson <dino@apple.com>
[WebGL] Remove software rendering and simplify context creation on macOS
https://bugs.webkit.org/show_bug.cgi?id=199789
Reviewed by Sam Weinig.
We don't ever want to fall-back to the software renderer. We'd be better
off failing to create the context completely.
Also, the number of fall-back attempts we were making before hitting
the software renderer was overkill. All hardware we support should
handle a 32bpp buffer.
Lastly, we don't want to support supersampling - multisampling only.
I lied… there is one more thing - failing to create the context
was causing an ASSERT trying to remove the GC3D from the global list.
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::create):
* page/Settings.yaml: Remove forceSoftwareWebGL setting.
* platform/graphics/GraphicsContext3DAttributes.h:
* platform/graphics/GraphicsContext3DManager.cpp:
(WebCore::GraphicsContext3DManager::addContext):
(WebCore::GraphicsContext3DManager::removeContext):
(WebCore::GraphicsContext3DManager::removeContextRequiringHighPerformance):
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::setPixelFormat): Deleted.
2019-07-14 Dean Jackson <dino@apple.com>
Move more WebGL things into unified builds
https://bugs.webkit.org/show_bug.cgi?id=199787
Reviewed by Wenson Hsieh.
Unify as many WebGL files as possible.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* html/canvas/WebGLFramebuffer.cpp:
* html/canvas/WebGLObject.h: Move a helper function into an inline.
(WebCore::objectOrZero):
* html/canvas/WebGLRenderingContextBase.cpp:
* platform/graphics/cocoa/FontCacheCoreText.cpp:
* platform/mediastream/MediaStreamTrackPrivate.cpp:
2019-07-15 Keith Rollin <krollin@apple.com>
Add missing webgpu includes
https://bugs.webkit.org/show_bug.cgi?id=199802
<rdar://problem/53119120>
Reviewed by Myles C. Maxfield.
WHLSLFunctionWriter.cpp fails to compile on tvOS and watchOS due to
missing includes. This file likely compiles on other platforms due to
the Unified Sources facility that clumps several implementation files
together, exposing those implementation files to the others' includes.
It fails on tvOS and watchOS due to the different ways these
implementation files can get clumped together on different platforms.
No new tests as there is no functional change.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
2019-07-15 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, rolling out r247440.
Broke builds
Reverted changeset:
"[JSC] Improve wasm wpt test results by fixing miscellaneous
issues"
https://bugs.webkit.org/show_bug.cgi?id=199783
https://trac.webkit.org/changeset/247440
2019-07-15 Daniel Bates <dabates@apple.com>
Typing into a cell in a Google Sheet lags behind by one character
https://bugs.webkit.org/show_bug.cgi?id=199587
<rdar://problem/51616845>
Reviewed by Brent Fulgham.
Add a Google Sheets quirk. Put all DOM timers scheduled from keydown and keypress event listeners
into a holding tank. The timers continue to tick, but are barred from executing their action until
the next text insertion or deletion or 32 ms (on device) have elapsed, whichever is sooner. We only
allocate a holding tank once per document, only if the quirk is active, and this allocation is done
when the document schedules a timer on keydown or keypress. The holding tank lives for the lifetime
of the document.
The story behind the quirk:
On keypress Google Sheets schedules timers and expects that a DOM update will occur (i.e. text
will be inserted or deleted) within the same event loop iteration as the dispatched keypress. The
UI Events spec. [1] makes no such guarantee of when a DOM update must occur in relation to the keypress
event. It could happen in the same event loop iteration as the key press (as Google expects), the
next iteration, 500ms later, 2 minutes later, etc. What the spec does guarantee is that by the time
a DOM input event is dispatched that the DOM will be updated. And this is the solution to the problem
Google Sheets is trying to solve, but is doing so using pre-IE 9 technology (though similar
functionality was available via onpropertychange in IE < 9).
See also <https://github.com/w3c/uievents/issues/238>, which is tracking a spec. text update for
this quirk.
Test: fast/events/ios/dom-update-on-keydown-quirk.html
[1] <https://w3c.github.io/uievents/> (Editor's Draft, 14 October 2018)
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
Add some files to the project.
* dom/Document.cpp:
(WebCore::Document::domTimerHoldingTank): Added.
* dom/Document.h:
(WebCore::Document::domTimerHoldingTankIfExists): Added.
* page/DOMTimer.cpp:
(WebCore::DOMTimer::install): Put the newly instantiated timer into the holding tank.
(WebCore::DOMTimer::removeById): Remove the timer from the holding tank.
(WebCore::DOMTimer::fired): Check if the timer is in the holding tank. If it is and it is a one-
shot timer then schedule it for the next event loop iteration. If it's a repeating timer just
let it continue ticking. Otherwise, do what we no now and execute the timer's action. The reason
we do not suspend timers in the holding tank is because:
1. Far out timers (Google Sheets registers timers as far out as 5 minutes!) are not penalized.
Though smart supension logic could avoid this. See (3).
2. Empirical observations indicate that the keyboard will perform the insertion or deletion
reasonably quickly (not the same event loop iteration as the keydown, but within two iterations out).
So, the timers in the holding tank are short-lived.
3. Simplifies the code. There is no need to keep additional bookkeeping to track multiple timer
suspension reasons (timers currently can only have one suspension reason) or alternatively defer
scheduling a timer until a later time and computing a new "fair" firing time when scheduled.
* page/EventHandler.cpp:
(WebCore::EventHandler::internalKeyEvent): Place a token on the stack to put all DOM timers
scheduled on keydown and keypress into the holding tank if the quirk is enabled.
* page/Quirks.cpp:
(WebCore::Quirks::needsDeferKeyDownAndKeyPressTimersUntilNextEditingCommand const): Added.
* page/Quirks.h:
* page/Settings.yaml: Added setting so that this quirk can be enabled from a layout test. This setting
also lets us enable the quirk for all sites or for certain third-party apps if desired.
* page/ios/DOMTimerHoldingTank.cpp: Added.
(WebCore::DOMTimerHoldingTank::DOMTimerHoldingTank):
(WebCore::DOMTimerHoldingTank::add):
(WebCore::DOMTimerHoldingTank::remove):
(WebCore::DOMTimerHoldingTank::contains):
(WebCore::DOMTimerHoldingTank::removeAll):
(WebCore::DOMTimerHoldingTank::stopExceededMaximumHoldTimer):
* page/ios/DOMTimerHoldingTank.h: Added.
(WebCore::DeferDOMTimersForScope::DeferDOMTimersForScope):
(WebCore::DeferDOMTimersForScope::~DeferDOMTimersForScope):
(WebCore::DeferDOMTimersForScope::isDeferring):
2019-07-15 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r247397, r247378, r247366.
Broke watchOS builds.
Reverted changesets:
"[WebGPU] Implement GPUError and error scopes"
https://bugs.webkit.org/show_bug.cgi?id=199655
https://trac.webkit.org/changeset/247366/webkit
"[WebGPU] Move error scopes out of GPUDevice for more portable error generation"
https://bugs.webkit.org/show_bug.cgi?id=199740
https://trac.webkit.org/changeset/247397/webkit
2019-07-15 Rob Buis <rbuis@igalia.com>
MathML WPT test for RadicalDegreeBottomRaisePercent fails
https://bugs.webkit.org/show_bug.cgi?id=183631
Reviewed by Frédéric Wang.
When stretching the radical operator also take thickness
and radical gap into account:
https://mathml-refresh.github.io/mathml-core/#radicals-msqrt-mroot
Test: imported/w3c/web-platform-tests/mathml/presentation-markup/radicals/root-parameters-1.html
* rendering/mathml/RenderMathMLRoot.cpp:
(WebCore::RenderMathMLRoot::layoutBlock):
2019-07-15 Yusuke Suzuki <ysuzuki@apple.com>
[JSC] Improve wasm wpt test results by fixing miscellaneous issues
https://bugs.webkit.org/show_bug.cgi?id=199783
Reviewed by Mark Lam.
Remove WebAssemblyPrototype.
Tests: imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.html
imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.html
imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/interface.any.html
imported/w3c/web-platform-tests/wasm/jsapi/interface.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.worker.html
* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::compileStreaming):
(WebCore::JSDOMWindowBase::instantiateStreaming):
2019-07-15 Youenn Fablet <youenn@apple.com>
Enable a debug WebRTC mode without any encryption
https://bugs.webkit.org/show_bug.cgi?id=199177
<rdar://problem/52074986>
Reviewed by Eric Carlson.
For every RTCPeerConnection, first set whether to use encryption or not
based on page settings.
If encryption is disabled, log it.
Add internals API to toggle the switch from tests.
Test: webrtc/disable-encryption.html
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::RTCPeerConnection):
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::createLibWebRTCPeerConnectionBackend):
* inspector/agents/InspectorPageAgent.cpp:
* page/Settings.yaml:
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::LibWebRTCProvider::setEnableWebRTCEncryption):
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
* testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setEnableWebRTCEncryption):
* testing/Internals.h:
* testing/Internals.idl:
2019-07-15 Sihui Liu <sihui_liu@apple.com>
window.openDatabase is not writable
https://bugs.webkit.org/show_bug.cgi?id=199737
<rdar://problem/52551332>
Reviewed by Chris Dumez.
In r246707 we made openDatabase an undetectable attribute of window, and it was set to be read-only. This broke
some sites which replace window.openDatabase with their own implementation when window.openDatabase does not
exists or WebSQL is not implemented.
This patch removes the readonly property and adds a setter for openDatabase.
* Modules/webdatabase/DOMWindowWebDatabase.idl:
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::setOpenDatabase):
2019-07-15 Youenn Fablet <youenn@apple.com>
Filter SDP c lines
https://bugs.webkit.org/show_bug.cgi?id=199791
Reviewed by Eric Carlson.
As discussed in https://github.com/rtcweb-wg/mdns-ice-candidates/issues/91,
use 0.0.0.0 for c lines when filtering the SDP.
Covered by updated test.
* Modules/mediastream/PeerConnectionBackend.cpp:
(WebCore::PeerConnectionBackend::filterSDP const):
2019-07-15 Zalan Bujtas <zalan@apple.com>
naver.com: Video stops when tapping on the video to use buttons
https://bugs.webkit.org/show_bug.cgi?id=199784
<rdar://problem/48068610>
Reviewed by Maciej Stachowiak.
Opt out of simulated mouse event sending for tv.naver.com.
When tv.naver.com receives the simulated mouseUp at touchEnd, it pauses the video right away and calls preventDefault()
which prevents us from running the hover heuristics.
* page/Quirks.cpp:
(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
2019-07-15 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] GitHub breaks on FreeBSD because of "unsupported browser"
https://bugs.webkit.org/show_bug.cgi?id=199745
Reviewed by Carlos Garcia Campos.
It's been a while since I last updated the fake version numbers in our user agent, both for
the user agent quirks for naughty websites and also the Safari version in our standard user
agent. Update them. This should fix github.com on FreeBSD at least. I also noticed some
wonkiness on Google Docs recently that I thought required this update, but I didn't do
anything about it at the time because I wasn't able to reproduce the issue when I tried
again later.
This could absolutely break websites, because the web is awful, but that's calculated risk.
* platform/UserAgentQuirks.cpp:
(WebCore::UserAgentQuirks::stringForQuirk):
* platform/glib/UserAgentGLib.cpp:
(WebCore::buildUserAgentString):
2019-07-14 Chris Dumez <cdumez@apple.com>
Add threading assertion to WeakPtrFactory::createWeakPtr()
https://bugs.webkit.org/show_bug.cgi?id=199639
Reviewed by Ryosuke Niwa.
* platform/ScrollableArea.cpp:
* rendering/RenderObject.cpp:
2019-07-14 Dean Jackson <dino@apple.com>
WebGL not supported on WKWebView on UIKit for Mac
https://bugs.webkit.org/show_bug.cgi?id=199785
<rdar://problem/52911449>
Reviewed by Antoine Quint.
UIKit for Mac was not creating a CGLPixelFormatObj because
it wasn't using the code hidden in PLATFORM(MAC). Instead
we should be guarding for USE(OPENGL).
There are still some inconsistencies: <rdar://53062794>
Test: webgl/smell-test.html
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::allowOfflineRenderers const): We have to return
true for this, since we don't have access to the Window Server.
2019-07-13 Wenson Hsieh <wenson_hsieh@apple.com>
[Text autosizing] [iPadOS] Further adjust our heuristics to determine text autosizing candidates
https://bugs.webkit.org/show_bug.cgi?id=199780
<rdar://problem/52289088>
Reviewed by Simon Fraser.
Our current idempotent text autosizing candidate heuristic makes the right judgment call most of the time, but
there is still a large batch of text autosizing bugs left unfixed by the first iteration of the heuristic added
in r246781. This patch attempts to address most of these bugs by adjusting the decision-tree-based heuristic
once again, mostly with improvements to the model generation pipeline.
During the first iteration, I placed emphasis on tuning the max tree depth and min leaf size hyperparameters
when coming up with my decision tree, and didn't consider the inclusion or exclusion of each feature as a
hyperparameters. As such, the trees generated using the pipeline tended to use too many features, and as a
result, tended to have cross-validation overall accuracy scores hovering around 73%.
In this revised model generation pipeline, I now consider the inclusion of each feature (along with max depth
and min leaf size, as before) as a hyperparameter. Since this increases the number of hyperparameters by many
orders of magnitude, a naive grid search (as described in the prior ChangeLog entry) is no longer a tractible
procedure for tuning hyperparameters to the training algorithm.
Instead, I now use a stochastic greedy algorithm to search for good sets of hyperparameters; this process begins
with seeding some number (usually 20-24) of "searchers" with completely randomized sets of hyperparameters (i.e.
random max depth, random leaf size, and random subsets of features). I then evaluate the average performance of
each set of hyperparameters by using them to generate 2000 decision trees over 90% of the training data, and
then cross-validating these trees against the remaining 10%. These cross-validation scores are aggregated into a
single confusion matrix, which is then passed into a loss function that computes a single value indicating how
well training with the set of hyperparameters generalized to cross-validation data. After experimenting with
various loss functions, I settled on the following:
`k(false positive rate)^2 + (false negative rate)^2`
...where a constant k is chosen to penalize false positives (i.e. broken layout) more harshly than false
negatives (small text). Additionally, squaring the false negative and false positive rates seems to help avoid
converging on solutions that heavily favor reducing only false positives or false negatives, or vice versa.
The stochastic algorithm starts by computing a loss value for the randomly generated configuration. Then, for
an indefinite number of iterations, it randomly mutates the configuration (e.g. by adding or removing features,
or changing min leaf size or max tree depth) and computes a new loss value for the mutated configuration. If the
mutated configuration performs better (i.e. achieves lower loss) than the current configuration, I set the
current configuration to be the mutated configuration. Otherwise, I keep the current (non-mutated) configuration
as-is. The stochastic algorithm then proceeds, ad-infinitum, with this current configuration.
Of course, since each mutation is small, this strategy so far is prone to leaving each searcher stuck in local
optima. To mitigate this, for each searcher, I keep track of a side-table of configurations that have already
been tested; when random mutations would normally lead to testing a configuration that has already been tested,
each searcher instead increases the chance of applying additional mutations. This has the effect of searchers
initially exhausting similar configurations, and expanding to test more and more dissimilar configurations as
the local alternatives all turn out to be worse. This allows searchers to effectively jump out of local optima
after being stuck for a long time.
So, using these strategies, I simultaneously ran a handful of searchers until they all appeared to converge
(a process that takes 8-12 hours on my current dataset). Many of the searchers achieved configurations with
cross-validation scores of 81% and above, up from the 73% of the previous attempt. These additionally have the
added bonus of reducing the number of features, often making the final trees themselves shallower and simpler to
understand than before.
This patch introduces one such decision tree generated using a set of hyperparameters acquired via this
stochasic search algorithm; it appears to simultaneously use fewer features, and achieve better cross-validation
performance.
Test: fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html
* css/StyleResolver.cpp:
(WebCore::StyleResolver::adjustRenderStyleForTextAutosizing):
Adjust the early return to bail if either (1) the element is a candidate and the computed size is already equal
to the boosted size, or (2) the element is not a candidate and the computed size is already equal to the
specified size. Since the autosizing candidate heuristic depends on styles specified on the element itself (as
opposed to styles on any element in the ancestor chain), a parent may be an autosizing candidate, but a child of
it may not.
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::isIdempotentTextAutosizingCandidate const):
Revamp the idempotent text autosizing candidate heuristic. See the explanation above for more details.
* rendering/style/RenderStyle.h:
Remove some bits from RenderStyle's autosizeStatus, now that we care about fewer bits of information from the
inherited flags.
* rendering/style/TextSizeAdjustment.cpp:
(WebCore::AutosizeStatus::updateStatus):
* rendering/style/TextSizeAdjustment.h:
2019-07-13 Simon Fraser <simon.fraser@apple.com>
Don't do async overflow scrolling for visibility:hidden scrollers
https://bugs.webkit.org/show_bug.cgi?id=199779
Reviewed by Dean Jackson.
An overflow:scroll with visibility:hidden is not scrollable on macOS, even if it has visible
content. So disable async overflow:scroll when the scroller has non-visible visibility (this also
takes visibility on ancestors into account).
visibility:hidden overflow:scroll can be common because some JS libraries use it
(https://github.com/wnr/element-resize-detector).
Test: compositing/scrolling/async-overflow-scrolling/visibility-hidden-scrollers.html
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::canUseCompositedScrolling const): Don't use hasVisibleContent() because
that's affected by visible children.
2019-07-13 Robin Morisset <rmorisset@apple.com>
[WHLSL] Return statements don't need to keep track of the function they're in
https://bugs.webkit.org/show_bug.cgi?id=199763
Reviewed by Myles C. Maxfield.
Return::m_function is only used in the Checker, and it can easily enough keep track of the current function.
This means we no longer need to keep track of the current function in the NameResolver, and we can save 8 bytes per Return
Since I was touching the NameResolver I also removed a few pointless overrides of Visitor::visit().
No new tests as there is no intended functional change.
* Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::NameResolver):
(WebCore::WHLSL::resolveTypeNamesInFunctions):
* Modules/webgpu/WHLSL/WHLSLNameResolver.h:
2019-07-13 Andres Gonzalez <andresg_22@apple.com>
Add accessibility support to WKDataListSuggestionsView.
https://bugs.webkit.org/show_bug.cgi?id=199772
<rdar://problem/47095851>
Reviewed by Chris Fleizach.
Localizable strings for accessibility announcements.
* en.lproj/Localizable.strings:
2019-07-13 Chris Dumez <cdumez@apple.com>
Drop non thread-safe usage of WeakPtr in VideoFullscreenInterfaceAVKit
https://bugs.webkit.org/show_bug.cgi?id=199775
Reviewed by Eric Carlson.
The VideoFullscreenInterfaceAVKit constructor was making a weakPtr on the UI Thread
of an WebThread object. The WeakPtr would then be used as a data member throughout
the class on the UIThread. This is not thread-safe.
This patch switches to using a raw pointer instead of a WeakPtr. This is a partial
rollout of r243298, which turned the raw pointer into a WeakPtr for hardening
purposes. For extra safety, this patch updates the VideoFullscreenControllerContext
so that it notifies its clients (i.e. PlaybackSessionInterfaceAVKit) that it is
getting destroyed, so that they can null-out their m_videoFullscreenModel &
m_fullscreenChangeObserver data members. This gives the sames guarantees as WeakPtr
but in a thread-safe way.
This is very similar to the fix that was done for PlaybackSessionInterfaceAVKit in
r247380.
* platform/cocoa/VideoFullscreenModel.h:
(WebCore::VideoFullscreenModelClient::modelDestroyed):
* platform/ios/VideoFullscreenInterfaceAVKit.h:
* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(VideoFullscreenInterfaceAVKit::setVideoFullscreenModel):
(VideoFullscreenInterfaceAVKit::setVideoFullscreenChangeObserver):
(VideoFullscreenInterfaceAVKit::modelDestroyed):
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::~VideoFullscreenControllerContext):
2019-07-13 Zalan Bujtas <zalan@apple.com>
Cannot bring up custom media controls at all on v.youku.com
https://bugs.webkit.org/show_bug.cgi?id=199699
<rdar://problem/51835327>
Reviewed by Simon Fraser.
The "find the node under the finger" heuristic should only find nodes that are visible to hit-testing.
When the user taps on the screen, we run a "find the best node under the finger" heuristic and use the node's location
to dispatch the associated event (e.g. mousePressed).
Ideally the "best node under the finger" and the final target node for the associated event are the same.
However these two methods configure the hit-testing process differently which could lead to node mismatch.
The "best node" heuristic calls hit-testing with AllowChildFrameContent. This flag allows hit-testing to descend into
subframes even if the subframe is not visible to hit-testing (visibility: hidden).
While event dispatching never descends into subfames through hit-testing, but instead it forwards the dispatching to subframes that are visible to hit-testing.
This patch addresses the mismatching node issue by calling the descending version of hit-testing with a flag that enforces visiblity check before descending into a subframe.
Tests: fast/events/touch/ios/visibility-hidden-iframe-click.html
fast/events/touch/ios/visibility-hidden-nested-iframe-click.html
* page/ios/FrameIOS.mm:
(WebCore::Frame::hitTestResultAtViewportLocation):
* rendering/HitTestRequest.h:
(WebCore::HitTestRequest::skipsChildFrameContentInvisibleToHitTest const):
* rendering/RenderWidget.cpp:
(WebCore::RenderWidget::nodeAtPoint):
2019-07-13 Chris Dumez <cdumez@apple.com>
Fix non thread-safe usage of makeWeakPtr() in MediaPlayerPrivateAVFoundation
https://bugs.webkit.org/show_bug.cgi?id=199777
Reviewed by Eric Carlson.
The code was calling makeWeakPtr() on a main-thread object, from a background thread.
This is not thread safe. To address the issue, this patches creates the WeakPtr ahead
of time, on the main thread.
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::MediaPlayerPrivateAVFoundation):
(WebCore::MediaPlayerPrivateAVFoundation::scheduleMainThreadNotification):
(WebCore::MediaPlayerPrivateAVFoundation::dispatchNotification):
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
2019-07-12 Thibault Saunier <tsaunier@igalia.com>
[GStreamer] Mock GStreamer realtime sources should keep a Ref of their mock realtime media sources
https://bugs.webkit.org/show_bug.cgi?id=194326
WrappedMockRealtimeVideoSource is a subclass of RealtimeMediaSource which is refcounted, we can't
use a unique_ptr on those.
Also changed m_wrappedSource type to its actual type so it is cleaner even if needed
to upcast it to RealtimeMediaSource so some method that are made private in the mock
can still be called.
Reviewed by Youenn Fablet.
This fixes MediaStream tests
* platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:
(WebCore::WrappedMockRealtimeAudioSource::create):
(WebCore::WrappedMockRealtimeAudioSource::asRealtimeMediaSource):
(WebCore::WrappedMockRealtimeAudioSource::WrappedMockRealtimeAudioSource):
(WebCore::m_wrappedSource):
(WebCore::MockGStreamerAudioCaptureSource::startProducingData):
(WebCore::MockGStreamerAudioCaptureSource::settings):
(WebCore::MockGStreamerAudioCaptureSource::capabilities):
* platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h:
* platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp:
(WebCore::WrappedMockRealtimeVideoSource::create):
(WebCore::WrappedMockRealtimeVideoSource::asRealtimeMediaSource):
(WebCore::WrappedMockRealtimeVideoSource::WrappedMockRealtimeVideoSource):
(WebCore::m_wrappedSource):
(WebCore::MockGStreamerVideoCaptureSource::settings):
(WebCore::MockGStreamerVideoCaptureSource::capabilities):
* platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.h:
2019-07-12 Alex Christensen <achristensen@webkit.org>
Change RELEASE_ASSERT in DocumentWriter::addData to ASSERT and early return
https://bugs.webkit.org/show_bug.cgi?id=199756
<rdar://problem/51554775>
Reviewed by Brady Eidson.
Attempts to reach this assertion were unsuccessful, but sometimes this assertion crashes.
Let's change it to an early return to prevent crashes.
* loader/DocumentWriter.cpp:
(WebCore::DocumentWriter::addData):
2019-07-12 Justin Fan <justin_fan@apple.com>
[WebGPU] Move error scopes out of GPUDevice for more portable error generation
https://bugs.webkit.org/show_bug.cgi?id=199740
Reviewed by Myles C. Maxfield.
Move error generation into a separate RefCounted class to allow GPU objects to generate
errors independent of any GPUDevice.
Create GPUObjectBase to delegate error generation and refactor GPUBuffer to inherit from GPUObjectBase.
No behavior change or new tests. Error scopes covered by error-scopes-test.html.
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::WebGPUDevice): Now creates a GPUErrorGenerator.
(WebCore::WebGPUDevice::createBuffer const): Pass the GPUErrorGenerator to any created GPUBuffer.
(WebCore::WebGPUDevice::createBufferMapped const): Ditto.
(WebCore::WebGPUDevice::popErrorScope): Shouldn't be const. Can just ask for the GPUError rather than passing a lambda.
(WebCore::WebGPUDevice::pushErrorScope const): Deleted.
(WebCore::WebGPUDevice::popErrorScope const): Deleted.
* Modules/webgpu/WebGPUDevice.h:
(WebCore::WebGPUDevice::pushErrorScope):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/gpu/GPUBuffer.h: Now inherits from GPUObjectBase for error generation ease.
* platform/graphics/gpu/GPUDevice.cpp:
(WebCore::GPUDevice::tryCreateBuffer): Ensure GPUBuffers reference the GPUErrorGenerator.
(WebCore::GPUDevice::pushErrorScope): Deleted. No longer needed here.
(WebCore::GPUDevice::popErrorScope): Deleted.
(WebCore::GPUDevice::registerError): Deleted.
* platform/graphics/gpu/GPUDevice.h: Move error scope logic out.
* platform/graphics/gpu/GPUErrorGenerator.cpp: Added.
(WebCore::GPUErrorGenerator::pushErrorScope):
(WebCore::GPUErrorGenerator::popErrorScope):
(WebCore::GPUErrorGenerator::generateError):
* platform/graphics/gpu/GPUErrorGenerator.h: Added.
(WebCore::GPUErrorGenerator::create):
* platform/graphics/gpu/GPUObjectBase.h: Added.
(WebCore::GPUObjectBase::generateError):
(WebCore::GPUObjectBase::GPUObjectBase):
* platform/graphics/gpu/cocoa/GPUBufferMetal.mm: Use the GPUErrorGenerator directly during buffer creation.
(WebCore::GPUBuffer::validateBufferUsage):
(WebCore::GPUBuffer::tryCreate):
(WebCore::GPUBuffer::GPUBuffer):
* platform/graphics/gpu/cocoa/GPUQueueMetal.mm:
(WebCore::GPUQueue::submit): Prevent possible null dereference.
2019-07-12 Youenn Fablet <youenn@apple.com>
Add release logging for quota checks
https://bugs.webkit.org/show_bug.cgi?id=199697
Reviewed by Alex Christensen.
Log whether a request to extend quota is made and the result of the request.
This logging should happen in the networking process.
No change of behavior.
* platform/Logging.h:
* storage/StorageQuotaManager.cpp:
(WebCore::StorageQuotaManager::askForMoreSpace):
(WebCore::StorageQuotaManager::processPendingRequests):
2019-07-12 Youenn Fablet <youenn@apple.com>
Stopping a cloned MediaStream video track should not stop any other video track
https://bugs.webkit.org/show_bug.cgi?id=199635
Reviewed by Eric Carlson.
In case a track is requesting its source to end, the
RealtimeVideoSource should request its own source to end and not stop it directly.
Also, if a track is removing itself as an observer to a RealtimeVideoSource, we should
stop the underlying source only if this one does not have any other observer.
Covered by updated test.
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::removeObserver):
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/RealtimeVideoSource.cpp:
(WebCore::RealtimeVideoSource::requestToEnd):
(WebCore::RealtimeVideoSource::stopBeingObserved):
* platform/mediastream/RealtimeVideoSource.h:
2019-07-12 Timothy Hatcher <timothy@apple.com>
Drop DarkModeCSSEnabled as an experimental feature and always enable it.
https://bugs.webkit.org/show_bug.cgi?id=199725
rdar://problem/52970972
Reviewed by Megan Gardner.
Tests: css-dark-mode
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
* css/MediaQueryEvaluator.cpp:
(WebCore::prefersColorSchemeEvaluate):
* css/MediaQueryExpression.cpp:
(WebCore::featureWithValidIdent):
(WebCore::isFeatureValidWithoutValue):
* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::parseSingleValue):
* html/HTMLMetaElement.cpp:
(WebCore::HTMLMetaElement::process):
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setDarkModeCSSEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::darkModeCSSEnabled const): Deleted.
2019-07-12 Carlos Alberto Lopez Perez <clopez@igalia.com>
Refactor ShadowBlur: remove some class variables and use function parameters instead.
https://bugs.webkit.org/show_bug.cgi?id=199511
Reviewed by Said Abou-Hallawa.
On the ShadowBlur class it is confusing to know if the status of the m_layerImage buffer or the
values calculated by calculateLayerBoundingRect() are valid between the different function calls.
To avoid this problem, pass this values as function parameters instead of storing them in the class.
No new tests, no intended behaviour change.
* platform/graphics/ShadowBlur.cpp:
(WebCore::ShadowBlur::ShadowBlur):
(WebCore::ShadowBlur::calculateLayerBoundingRect):
(WebCore::ShadowBlur::drawShadowBuffer):
(WebCore::ShadowBlur::drawRectShadow): Pass the parameters from the callback.
(WebCore::ShadowBlur::drawInsetShadow): Ditto.
(WebCore::ShadowBlur::drawRectShadowWithoutTiling):
(WebCore::ShadowBlur::drawInsetShadowWithoutTiling):
(WebCore::ShadowBlur::drawRectShadowWithTiling):
(WebCore::ShadowBlur::drawInsetShadowWithTiling):
(WebCore::ShadowBlur::drawLayerPieces):
(WebCore::ShadowBlur::drawLayerPiecesAndFillCenter):
(WebCore::ShadowBlur::blurShadowBuffer):
(WebCore::ShadowBlur::blurAndColorShadowBuffer):
(WebCore::ShadowBlur::drawShadowLayer):
* platform/graphics/ShadowBlur.h: Use a struct to pass the values calculated on calculateLayerBoundingRect().
2019-07-12 Adrian Perez de Castro <aperez@igalia.com>
[ATK] Avoid unneeded call to to core(selection) in listObjectForSelection()
https://bugs.webkit.org/show_bug.cgi?id=199748
<rdar://problem/52995908>
Reviewed by Konstantin Tokarev.
No new tests needed.
* accessibility/atk/WebKitAccessibleInterfaceSelection.cpp:
(listObjectForCoreSelection): Renamed from listObjectForSelection() and remove the
unneeded call to core() now that coreSelection is passed directly to the function.
(optionFromList): Change to pass coreSelection directly to listObjectForCoreSelection().
2019-07-11 Chris Dumez <cdumez@apple.com>
Fix non-thread safe use of makeWeakPtr() under MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::processInputNotify()
https://bugs.webkit.org/show_bug.cgi?id=199727
Reviewed by Eric Carlson.
Stop calling makeWeakPtr() on a main thread object from a background thread.
* platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::processInputNotify):
2019-07-11 Youenn Fablet <youenn@apple.com>
Register a MediaStreamTrack as media producer only if it is a capture track
https://bugs.webkit.org/show_bug.cgi?id=199566
<rdar://problem/52761361>
Addressing post-landing comment to simplify setMuted call.
Unreviewed.
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::MediaStreamTrack):
2019-07-11 Youenn Fablet <youenn@apple.com>
Protect CoreAudioSharedUnit::m_clients for accessing in different threads simultaneously
https://bugs.webkit.org/show_bug.cgi?id=199717
Reviewed by Eric Carlson.
Add a lock whenever accessing to m_clients.
Manual tests show that audio capture still works.
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioSharedUnit::addClient):
(WebCore::CoreAudioSharedUnit::removeClient):
(WebCore::CoreAudioSharedUnit::forEachClient const):
(WebCore::CoreAudioSharedUnit::processMicrophoneSamples):
(WebCore::CoreAudioSharedUnit::captureFailed):
2019-07-11 Chris Dumez <cdumez@apple.com>
Drop non thread-safe usage of WeakPtr in PlaybackSessionInterfaceAVKit
https://bugs.webkit.org/show_bug.cgi?id=199698
Reviewed by Eric Carlson.
The PlaybackSessionInterfaceAVKit constructor was making a weakPtr on the UI Thread
of an WebThread object. The WeakPtr would then be used as a data member throughout
the class on the UIThread. This is not thread-safe.
This patch switches to using a raw pointer instead of a WeakPtr. This is a partial
rollout of r243337, which turned the raw pointer into a WeakPtr for hardening
purposes. For extra safety, this patch updates the VideoFullscreenControllerContext
so that it notifies its clients (i.e. PlaybackSessionInterfaceAVKit) that it is
getting destroyed, so that they can null-out their m_playbackSessionModel data
member. This gives the sames guarantees than WeakPtr but in a thread-safe way.
* platform/cocoa/PlaybackSessionModel.h:
(WebCore::PlaybackSessionModelClient::modelDestroyed):
* platform/ios/PlaybackSessionInterfaceAVKit.h:
* platform/ios/PlaybackSessionInterfaceAVKit.mm:
(WebCore::PlaybackSessionInterfaceAVKit::PlaybackSessionInterfaceAVKit):
(WebCore::PlaybackSessionInterfaceAVKit::~PlaybackSessionInterfaceAVKit):
(WebCore::PlaybackSessionInterfaceAVKit::playbackSessionModel const):
(WebCore::PlaybackSessionInterfaceAVKit::modelDestroyed):
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::~VideoFullscreenControllerContext):
(VideoFullscreenControllerContext::addClient):
(VideoFullscreenControllerContext::removeClient):
2019-07-11 Simon Fraser <simon.fraser@apple.com>
Fix builds where HAVE_DESIGN_SYSTEM_UI_FONTS is not defined.
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::fontWithFamilySpecialCase):
2019-07-11 Justin Fan <justin_fan@apple.com>
Unreviewed build fix.
* Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp: Missing include.
2019-07-11 Myles C. Maxfield <mmaxfield@apple.com>
New York font erroneously gets synthetic bold
https://bugs.webkit.org/show_bug.cgi?id=199653
<rdar://problem/51692592>
Reviewed by Simon Fraser.
This patch adds support for -apple-system-ui-serif, -apple-system-ui-monospaced,
and -apple-system-ui-rounded, behind an SPI that is off-by-default. We don't want
to expose these fonts to the web because we don't a standardization story for them
yet, but we do want some apps to be able to use them.
WebKit clients who want to use these fonts can set
-[WKPreferences _shouldAllowDesignSystemUIFonts] = YES.
The patch generalizes our existing system-ui infrastructure to handle these three
additional fonts. It also explicitly disables the unsupported dot-prefixed names
so they don't leak out into Web content.
Tests: fast/text/design-system-ui-10.html
fast/text/design-system-ui-11.html
fast/text/design-system-ui-12.html
fast/text/design-system-ui-13.html
fast/text/design-system-ui-14.html
fast/text/design-system-ui-15.html
fast/text/design-system-ui-16.html
fast/text/design-system-ui-2.html
fast/text/design-system-ui-3.html
fast/text/design-system-ui-4.html
fast/text/design-system-ui-5.html
fast/text/design-system-ui-6.html
fast/text/design-system-ui-7.html
fast/text/design-system-ui-8.html
fast/text/design-system-ui-9.html
fast/text/design-system-ui.html
* css/CSSFontFace.cpp:
(WebCore::CSSFontFace::shouldAllowDesignSystemUIFonts const):
* css/CSSFontFace.h:
* css/CSSFontFaceSource.cpp:
(WebCore::CSSFontFaceSource::load):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::initializeFontStyle):
* page/Settings.yaml:
* platform/graphics/FontDescription.cpp:
(WebCore::m_shouldAllowDesignSystemUIFonts):
(WebCore::m_shouldAllowUserInstalledFonts): Deleted.
* platform/graphics/FontDescription.h:
(WebCore::FontDescription::shouldAllowDesignSystemUIFonts const):
(WebCore::FontDescription::setShouldAllowDesignSystemUIFonts):
(WebCore::FontDescription::operator== const):
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::platformFontLookupWithFamily):
(WebCore::fontWithFamily):
* platform/graphics/cocoa/FontCacheCoreText.h:
* platform/graphics/cocoa/FontDescriptionCocoa.cpp:
(WebCore::systemFontUse):
(WebCore::systemFontCascadeList):
(WebCore::FontCascadeDescription::effectiveFamilyCount const):
(WebCore::FontCascadeDescription::effectiveFamilyAt const):
(WebCore::isSystemFontString): Deleted.
(WebCore::isUIFontTextStyle): Deleted.
* platform/graphics/cocoa/FontPlatformDataCocoa.mm:
(WebCore::FontPlatformData::ctFont const):
* platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:
(WebCore::SystemFontDatabaseCoreText::createSystemUI):
(WebCore::SystemFontDatabaseCoreText::createDesignSystemUI):
(WebCore::SystemFontDatabaseCoreText::createTextStyle):
(WebCore::SystemFontDatabaseCoreText::cascadeList):
(WebCore::SystemFontDatabaseCoreText::applyWeightItalicsAndFallbackBehavior):
(WebCore::SystemFontDatabaseCoreText::systemFontParameters):
* platform/graphics/cocoa/SystemFontDatabaseCoreText.h:
* platform/graphics/ios/FontCacheIOS.mm:
(WebCore::platformFontWithFamilySpecialCase):
* platform/graphics/mac/FontCacheMac.mm:
(WebCore::platformFontWithFamilySpecialCase):
* style/StyleResolveForDocument.cpp:
(WebCore::Style::resolveForDocument):
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::dataChanged):
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setShouldAllowDesignSystemUIFonts):
* testing/InternalSettings.h:
* testing/InternalSettings.idl:
2019-07-11 Pablo Saavedra <psaavedra@igalia.com>
[WPE][GTK] Build failure with ENABLE_ACCESSIBILITY=OFF
https://bugs.webkit.org/show_bug.cgi?id=199625
Added ENABLE(ACCESSIBILITY) and replaced HAVE(ACCESSIBILITY)
with ENABLE(ACCESSIBILITY) in the code.
Additionally, the TestRunner code generator now honors the
Conditional IDL format.
No new tests as there is no intended functional change
Reviewed by Konstantin Tokarev.
* accessibility/AXObjectCache.cpp:
* accessibility/AXObjectCache.h:
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::detach):
(WebCore::AccessibilityObject::isDetached const):
* accessibility/AccessibilityObject.h:
* accessibility/atk/AXObjectCacheAtk.cpp:
* accessibility/atk/AccessibilityObjectAtk.cpp:
* accessibility/atk/WebKitAccessible.cpp:
* accessibility/atk/WebKitAccessible.h:
* accessibility/atk/WebKitAccessibleHyperlink.cpp:
* accessibility/atk/WebKitAccessibleHyperlink.h:
* accessibility/atk/WebKitAccessibleInterfaceAction.cpp:
* accessibility/atk/WebKitAccessibleInterfaceAction.h:
* accessibility/atk/WebKitAccessibleInterfaceComponent.cpp:
* accessibility/atk/WebKitAccessibleInterfaceComponent.h:
* accessibility/atk/WebKitAccessibleInterfaceDocument.cpp:
* accessibility/atk/WebKitAccessibleInterfaceDocument.h:
* accessibility/atk/WebKitAccessibleInterfaceEditableText.cpp:
* accessibility/atk/WebKitAccessibleInterfaceEditableText.h:
* accessibility/atk/WebKitAccessibleInterfaceHyperlinkImpl.cpp:
* accessibility/atk/WebKitAccessibleInterfaceHyperlinkImpl.h:
* accessibility/atk/WebKitAccessibleInterfaceHypertext.cpp:
* accessibility/atk/WebKitAccessibleInterfaceHypertext.h:
* accessibility/atk/WebKitAccessibleInterfaceImage.cpp:
* accessibility/atk/WebKitAccessibleInterfaceImage.h:
* accessibility/atk/WebKitAccessibleInterfaceSelection.cpp:
* accessibility/atk/WebKitAccessibleInterfaceSelection.h:
* accessibility/atk/WebKitAccessibleInterfaceTable.cpp:
* accessibility/atk/WebKitAccessibleInterfaceTable.h:
* accessibility/atk/WebKitAccessibleInterfaceTableCell.cpp:
* accessibility/atk/WebKitAccessibleInterfaceTableCell.h:
* accessibility/atk/WebKitAccessibleInterfaceText.cpp:
* accessibility/atk/WebKitAccessibleInterfaceText.h:
* accessibility/atk/WebKitAccessibleInterfaceValue.cpp:
* accessibility/atk/WebKitAccessibleInterfaceValue.h:
* accessibility/atk/WebKitAccessibleUtil.cpp:
* accessibility/atk/WebKitAccessibleUtil.h:
* accessibility/ios/AXObjectCacheIOS.mm:
* accessibility/ios/AccessibilityObjectIOS.mm:
* accessibility/ios/WebAccessibilityObjectWrapperIOS.h:
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
* accessibility/mac/AXObjectCacheMac.mm:
* accessibility/mac/AccessibilityObjectBase.mm:
* accessibility/mac/AccessibilityObjectMac.mm:
* accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
* accessibility/win/AccessibilityObjectWin.cpp:
* accessibility/win/AccessibilityObjectWrapperWin.cpp:
* dom/Document.cpp:
(WebCore::Document::prepareForDestruction):
* editing/FrameSelection.h:
* editing/atk/FrameSelectionAtk.cpp:
* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::setInnerTextValue):
* testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
2019-07-11 Justin Fan <justin_fan@apple.com>
[WebGPU] Implement GPUError and error scopes
https://bugs.webkit.org/show_bug.cgi?id=199655
Reviewed by Myles C. Maxfield.
Add GPUErrorFilter, GPUError, and the ability to push and pop error scopes on a GPUDevice.
This will allow us to check for WebGPU errors from JavaScript.
Currently, only some GPUBuffer creation errors are reported for testing; more errors will follow in later patches.
Test: webgpu/error-scopes-test.html
* Modules/webgpu/GPUErrorFilter.idl: Added.
* Modules/webgpu/GPUOutOfMemoryError.idl: Added.
* Modules/webgpu/GPUValidationError.idl: Added.
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::pushErrorScope):
(WebCore::WebGPUDevice::popErrorScope): Resolve the Promise here, since GPUDevice shouldn't worry about DOM layer.
* Modules/webgpu/WebGPUDevice.h:
* Modules/webgpu/WebGPUDeviceErrorScopes.cpp: Added.
(WebCore::WebGPUDeviceErrorScopes::pushErrorScope): Delegates to WebGPUDevice.
(WebCore::WebGPUDeviceErrorScopes::popErrorScope): Ditto.
* Modules/webgpu/WebGPUDeviceErrorScopes.h: Added.
* Modules/webgpu/WebGPUDeviceErrorScopes.idl: Added.
* platform/graphics/gpu/GPUBuffer.h:
* platform/graphics/gpu/GPUDevice.cpp: The actual error stack lives here.
(WebCore::GPUDevice::pushErrorScope):
(WebCore::GPUDevice::popErrorScope): Calls a callback with a GPUError, if any.
(WebCore::GPUDevice::registerError): Actually creates GPUErrors.
* platform/graphics/gpu/GPUDevice.h:
* platform/graphics/gpu/GPUError.cpp: Added.
(WebCore::createError): Factory function for various error types.
* platform/graphics/gpu/GPUError.h: Added.
* platform/graphics/gpu/GPUErrorFilter.h: Added.
* platform/graphics/gpu/GPUOutOfMemoryError.h: Added.
(WebCore::GPUOutOfMemoryError::create):
* platform/graphics/gpu/GPUValidationError.cpp: Added.
(WebCore::GPUValidationError::create):
(WebCore::GPUValidationError::GPUValidationError):
* platform/graphics/gpu/GPUValidationError.h: Added.
(WebCore::GPUValidationError::message const):
* platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
(WebCore::GPUBuffer::validateBufferUsage): Create an actual GPUValidationError :)
(WebCore::GPUBuffer::tryCreate): Create GPUOutOfMemoryErrors where appropriate.
Add file/name references:
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
Missing includes:
* Modules/webgpu/WHLSL/WHLSLCheckTextureReferences.cpp:
2019-07-11 Tim Horton <timothy_horton@apple.com>
Null deref of RenderView under FrameView::setNeedsCompositingConfigurationUpdate
https://bugs.webkit.org/show_bug.cgi?id=199723
<rdar://problem/51554747>
Reviewed by Simon Fraser.
* page/FrameView.cpp:
(WebCore::FrameView::setNeedsCompositingConfigurationUpdate):
Add a null-check; it looks like it is possible to get here by dismissing
the find overlay (or other page overlay) at an inopportune time.
2019-07-11 Chris Dumez <cdumez@apple.com>
Pages using Google Tag Manager Google's anti-flicker optimization may take ~5 seconds to do initial paint
https://bugs.webkit.org/show_bug.cgi?id=199704
<rdar://problem/52966461>
Reviewed by Geoffrey Garen.
Apply the same fix as r246764 for when "https://www.googletagmanager.com/gtm.js" load is blocked by a content
extension to avoid delaying initial paint by ~5 seconds. This was tested on https://www.formula1.com/en.html.
* contentextensions/ContentExtensionsBackend.cpp:
(WebCore::ContentExtensions::ContentExtensionsBackend::processContentRuleListsForLoad):
2019-07-11 Chris Dumez <cdumez@apple.com>
Disable RGB10 IOSurface pixel format for Mac Catalyst
https://bugs.webkit.org/show_bug.cgi?id=199712
<rdar://problem/52793584>
Reviewed by Beth Dakin.
Disable RGB10 IOSurface pixel format for Mac Catalyst. This format is not supported
on Mac Catalyst and causes us not to render anything.
* platform/graphics/cocoa/IOSurface.h:
2019-07-11 Simon Fraser <simon.fraser@apple.com>
[iOS WK2] Can't place caret or select in content that overflows a contenteditable element
https://bugs.webkit.org/show_bug.cgi?id=199741
rdar://problem/50545233
Reviewed by Wenson Hsieh.
Various code paths for editing used renderer->absoluteBoundingBoxRect(), which is the border
box of the element (or a set of line boxes for inline elements) converted to absolute
coordinates. This excludes overflow content, but contenteditable needs to be able to
place the caret in overflow content, and allow selection rects to be in the overflow area
(if the element has visible overflow).
Try to clean this up by adding some static helpers on WebPage for accessing the relevant
rects, and use them in code call from visiblePositionInFocusedNodeForPoint(), and
code that is input to selectionClipRect.
This changes selectionClipRect to use the padding box (excluding borders), which is a progression.
Tests: editing/caret/ios/caret-in-overflow-area.html
editing/selection/ios/place-selection-in-overflow-area.html
editing/selection/ios/selection-extends-into-overflow-area.html
* editing/FrameSelection.cpp:
(WebCore::DragCaretController::editableElementRectInRootViewCoordinates const):
2019-07-11 Jonathan Bedard <jbedard@apple.com>
[iOS 13] Enable WebKit build
https://bugs.webkit.org/show_bug.cgi?id=199481
<rdar://problem/52619048>
Reviewed by Tim Horton.
No new tests, iOS 13 test expectations will be migrated in the near future.
* platform/ios/LocalCurrentTraitCollection.mm:
(WebCore::LocalCurrentTraitCollection::LocalCurrentTraitCollection): Remove underscore from currentTraitCollection.
(WebCore::LocalCurrentTraitCollection::~LocalCurrentTraitCollection): Remove underscore from setCurrentTraitCollection.
2019-07-11 Chris Dumez <cdumez@apple.com>
Fix non thread-safe usage of makeWeakPtr() in MediaPlayerPrivateMediaFoundation
https://bugs.webkit.org/show_bug.cgi?id=199700
Reviewed by Eric Carlson.
The code was calling makeWeakPtr() on a main-thread object, from a background thread.
This is not thread safe. To address the issue, this patches creates the WeakPtr ahead
of time, on the main thread.
* platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
(WebCore::MediaPlayerPrivateMediaFoundation::MediaPlayerPrivateMediaFoundation):
(WebCore::MediaPlayerPrivateMediaFoundation::endCreatedMediaSource):
(WebCore::MediaPlayerPrivateMediaFoundation::endGetEvent):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::processInputNotify):
* platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:
(WebCore::MediaPlayerPrivateMediaFoundation::ThreadSafeWrapper::create):
(WebCore::MediaPlayerPrivateMediaFoundation::ThreadSafeWrapper::wrapped):
(WebCore::MediaPlayerPrivateMediaFoundation::ThreadSafeWrapper::ThreadSafeWrapper):
2019-07-11 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Cleanup InlineFormattingContext::LineLayout class.
https://bugs.webkit.org/show_bug.cgi?id=199702
<rdar://problem/52931733>
Reviewed by Sam Weinig.
Move some structs to .cpp. They don't need to pollute the class declaration.
* layout/inlineformatting/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::LineLayout::layoutState const):
(): Deleted.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::LineInput::HorizontalConstraint::HorizontalConstraint):
(WebCore::Layout::LineInput::LineInput):
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
(WebCore::Layout::InlineFormattingContext::LineLayout::LineInput::HorizontalConstraint::HorizontalConstraint): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::LineInput::LineInput): Deleted.
2019-07-11 Joanmarie Diggs <jdiggs@igalia.com>
AX: Implement support for ARIA roles insertion, deletion, subscript, superscript, and time
https://bugs.webkit.org/show_bug.cgi?id=199692
Reviewed by Chris Fleizach.
Create new AccessibilityRole types which correspond to the new ARIA roles and
update AccessibilityRenderObject::determineAccessibilityRole() to assign these
internal roles to the related HTML elements.
Update both ATK and Mac to recognize these new internal roles. In addition, update
the ATK mappings for the ins and del elements to ATK_ROLE_CONTENT_INSERTION and
ATK_ROLE_CONTENT_DELETION respectively. Also expose "insertion" and "deletion" via
the AtkObject xml-roles attribute so that this information is not completely absent
for GTK or WPE built against earlier versions of ATK.
Remove AccessibilityObject's isSubscriptStyleGroup() and isSuperscriptStyleGroup().
These two methods were only being used by ATK and are no longer needed for platform
role mapping.
No new tests. Instead add the roles to the existing role-exposure tests.
* accessibility/AccessibilityObject.cpp:
(WebCore::initializeRoleMap):
(WebCore::AccessibilityObject::isSubscriptStyleGroup const): Deleted.
(WebCore::AccessibilityObject::isSuperscriptStyleGroup const): Deleted.
* accessibility/AccessibilityObject.h:
* accessibility/AccessibilityObjectInterface.h:
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::determineAccessibilityRole):
* accessibility/atk/WebKitAccessible.cpp:
(webkitAccessibleGetAttributes):
(atkRole):
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(createAccessibilityRoleMap):
(-[WebAccessibilityObjectWrapper subrole]):
2019-07-11 Thibault Saunier <tsaunier@igalia.com>
[GStreamer][MediaStream] Use the new dispatchMediaSampleToObservers to dispatch new buffers
https://bugs.webkit.org/show_bug.cgi?id=199689
Reviewed by Philippe Normand.
We already have tests for this.
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
(WebCore::GStreamerVideoCaptureSource::processNewFrame):
(WebCore::GStreamerVideoCaptureSource::newSampleCallback):
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
2019-07-10 Simon Fraser <simon.fraser@apple.com>
[iOS WK2] With modal overlay and body overflow:hidden, can't access all the content
https://bugs.webkit.org/show_bug.cgi?id=199693
rdar://problem/51930364
Reviewed by Tim Horton.
A page with overflow:hidden on the root needs to be scrollable if:
* it's zoomed
* the visual viewport is smaller than the layout viewport (including visible keyboard)
* scrolling is required to hide MobileSafari's squishy bars
This patch does the last two, plumbing a "visual viewport is smaller than layout viewport"
bit up from WebCore via the scrolling tree (that way, when it changes we automatically trigger
a commit), and checking for squished bars in WKWebView.
Tested by new API tests.
* page/FrameView.cpp:
(WebCore::FrameView::updateLayoutViewport):
(WebCore::FrameView::layoutOrVisualViewportChanged): Make this not iOS-specific. It's not yet called
in all the right places (doing so has risk because it's exposed via VisualViewport resize events).
(WebCore::FrameView::didUpdateViewportOverrideRects): Deleted.
* page/FrameView.h:
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::frameViewVisualViewportChanged):
(WebCore::AsyncScrollingCoordinator::setFrameScrollingNodeState):
* page/scrolling/AsyncScrollingCoordinator.h:
* page/scrolling/ScrollingCoordinator.h:
(WebCore::ScrollingCoordinator::frameViewVisualViewportChanged):
* page/scrolling/ScrollingStateFrameScrollingNode.cpp:
(WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
(WebCore::ScrollingStateFrameScrollingNode::setPropertyChangedBitsAfterReattach):
(WebCore::ScrollingStateFrameScrollingNode::setVisualViewportIsSmallerThanLayoutViewport):
(WebCore::ScrollingStateFrameScrollingNode::dumpProperties const):
* page/scrolling/ScrollingStateFrameScrollingNode.h:
* page/scrolling/ScrollingTreeFrameScrollingNode.cpp:
(WebCore::ScrollingTreeFrameScrollingNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNode::dumpProperties const):
* page/scrolling/ScrollingTreeFrameScrollingNode.h:
2019-07-10 Robin Morisset <rmorisset@apple.com>
[WHLSL] Optional<UniqueRef<T>> -> std::unique_ptr in Return/IfStatement/ForLoop
https://bugs.webkit.org/show_bug.cgi?id=199695
Reviewed by Dean Jackson.
Trivial patch that saves 8 bytes per Return/If, and 16 bytes per For loop.
No new tests as there is no intended functional change.
* Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
(WebCore::WHLSL::AST::ForLoop::ForLoop):
(WebCore::WHLSL::AST::ForLoop::condition):
(WebCore::WHLSL::AST::ForLoop::increment):
* Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h:
(WebCore::WHLSL::AST::IfStatement::IfStatement):
(WebCore::WHLSL::AST::IfStatement::elseBody):
* Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
(WebCore::WHLSL::AST::Return::Return):
(WebCore::WHLSL::AST::Return::value):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseIfStatement):
(WebCore::WHLSL::Parser::parseForLoop):
(WebCore::WHLSL::Parser::parseStatement):
2019-07-10 Robin Morisset <rmorisset@apple.com>
[WHLSL] The recursion checker should not have quadratic complexity
https://bugs.webkit.org/show_bug.cgi?id=199688
Reviewed by Saam Barati.
I fix it by using two different hash sets, tracking which functions we have started visiting, and which we have finished visiting.
The difference are those that are currently "on the stack", and calling any of those is an error.
As a bonus, I also overrode visit(Program&), so that we only bother visiting function definitions.
On whlsl-compute.html ran 5 times, this patch reduces the time spent in the recursion checker from 26ms to 12ms.
It is likely to be a much bigger win on larger programs (since it took the complexity from quadratic to linear).
No new tests as there is no intended functional change.
* Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp:
2019-07-10 Sihui Liu <sihui_liu@apple.com>
Crash at WebCore::IDBServer::MemoryObjectStoreCursor::incrementReverseIterator
https://bugs.webkit.org/show_bug.cgi?id=199677
<rdar://problem/52334665>
Reviewed by Alex Christensen.
Add an early return in incrementReverseIterator when setFirstInRemainingRange fails to set m_iterator. This is
in line with what we did in incrementForwardIterator.
* Modules/indexeddb/server/MemoryObjectStoreCursor.cpp:
(WebCore::IDBServer::MemoryObjectStoreCursor::incrementReverseIterator):
2019-07-10 Chris Dumez <cdumez@apple.com>
Stop using GenericTaskQueue from multiple threads
https://bugs.webkit.org/show_bug.cgi?id=199652
Reviewed by Eric Carlson and Geoffrey Garen.
WebCoreAVFLoaderDelegate was calling GenericTaskQueue::enqueueTask() from a background thread,
which is not safe because the implementation of enqueueTask() calls makeWeakPtr() on the
GenericTaskQueue (a main thread object).
Update WebCoreAVFLoaderDelegate to make sure it is on the main thread before it calls
GenericTaskQueue::enqueueTask().
* platform/GenericTaskQueue.h:
Remove last template parameter which was used exclusively by WebCoreAVFLoaderDelegate to try and
make GenericTaskQueue thread-safe.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(-[WebCoreAVFMovieObserver metadataLoaded]):
(-[WebCoreAVFMovieObserver didEnd:]):
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
(-[WebCoreAVFMovieObserver legibleOutput:didOutputAttributedStrings:nativeSampleBuffers:forItemTime:]):
(-[WebCoreAVFMovieObserver outputSequenceWasFlushed:]):
(-[WebCoreAVFLoaderDelegate resourceLoader:shouldWaitForLoadingOfRequestedResource:]):
(-[WebCoreAVFLoaderDelegate resourceLoader:didCancelLoadingRequest:]):
2019-07-10 Chris Fleizach <cfleizach@apple.com>
AX: VoiceOver ignored role="presentation" on <table> HTML elements
https://bugs.webkit.org/show_bug.cgi?id=199659
Reviewed by Zalan Bujtas.
Only include a table ancestor if it's a table we care about for accessibility.
Modified Test: accessibility/ios-simulator/tables-lists.html
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper _accessibilityTableAncestor]):
2019-07-10 Robin Morisset <rmorisset@apple.com>
[WHLSL] Track code locations correctly throughout the compiler to get good error messages
https://bugs.webkit.org/show_bug.cgi?id=199675
Reviewed by Myles Maxfield.
The basic idea is to go from having each AST node contain its own token to having each AST node contain a pair of offsets into the source,
the offset before its start and the offset after its end. This will let us get good error messages.
As a bonus, it saves a bit of memory as Tokens are larger (one extra word for their type).
The new CodeLocation class is put in Lexer.h, because it has a cyclic dependency on Token, which also has a cyclic dependency on Lexer.
No new tests as there is no intended functional change.
* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
(WebCore::WHLSL::AST::ArrayReferenceType::ArrayReferenceType):
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
(WebCore::WHLSL::AST::ArrayType::ArrayType):
* Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h:
(WebCore::WHLSL::AST::AssignmentExpression::AssignmentExpression):
* Modules/webgpu/WHLSL/AST/WHLSLBaseFunctionAttribute.h:
(WebCore::WHLSL::AST::BaseFunctionAttribute::BaseFunctionAttribute):
* Modules/webgpu/WHLSL/AST/WHLSLBaseSemantic.h:
(WebCore::WHLSL::AST::BaseSemantic::BaseSemantic):
* Modules/webgpu/WHLSL/AST/WHLSLBlock.h:
(WebCore::WHLSL::AST::Block::Block):
* Modules/webgpu/WHLSL/AST/WHLSLBooleanLiteral.h:
(WebCore::WHLSL::AST::BooleanLiteral::BooleanLiteral):
(WebCore::WHLSL::AST::BooleanLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLBreak.h:
(WebCore::WHLSL::AST::Break::Break):
* Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h:
(WebCore::WHLSL::AST::BuiltInSemantic::BuiltInSemantic):
* Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h:
(WebCore::WHLSL::AST::CallExpression::CallExpression):
* Modules/webgpu/WHLSL/AST/WHLSLCommaExpression.h:
(WebCore::WHLSL::AST::CommaExpression::CommaExpression):
* Modules/webgpu/WHLSL/AST/WHLSLContinue.h:
(WebCore::WHLSL::AST::Continue::Continue):
* Modules/webgpu/WHLSL/AST/WHLSLDereferenceExpression.h:
(WebCore::WHLSL::AST::DereferenceExpression::DereferenceExpression):
* Modules/webgpu/WHLSL/AST/WHLSLDoWhileLoop.h:
(WebCore::WHLSL::AST::DoWhileLoop::DoWhileLoop):
* Modules/webgpu/WHLSL/AST/WHLSLDotExpression.h:
(WebCore::WHLSL::AST::DotExpression::DotExpression):
* Modules/webgpu/WHLSL/AST/WHLSLEffectfulExpressionStatement.h:
(WebCore::WHLSL::AST::EffectfulExpressionStatement::EffectfulExpressionStatement):
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:
(WebCore::WHLSL::AST::EnumerationDefinition::EnumerationDefinition):
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMember.h:
(WebCore::WHLSL::AST::EnumerationMember::EnumerationMember):
(WebCore::WHLSL::AST::EnumerationMember::codeLocation const):
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMemberLiteral.h:
(WebCore::WHLSL::AST::EnumerationMemberLiteral::EnumerationMemberLiteral):
(WebCore::WHLSL::AST::EnumerationMemberLiteral::wrap):
(WebCore::WHLSL::AST::EnumerationMemberLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
(WebCore::WHLSL::AST::Expression::Expression):
(WebCore::WHLSL::AST::Expression::codeLocation const):
(WebCore::WHLSL::AST::Expression::updateCodeLocation):
* Modules/webgpu/WHLSL/AST/WHLSLFallthrough.h:
(WebCore::WHLSL::AST::Fallthrough::Fallthrough):
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteral.h:
(WebCore::WHLSL::AST::FloatLiteral::FloatLiteral):
(WebCore::WHLSL::AST::FloatLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.cpp:
(WebCore::WHLSL::AST::FloatLiteralType::FloatLiteralType):
(WebCore::WHLSL::AST::FloatLiteralType::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
(WebCore::WHLSL::AST::ForLoop::ForLoop):
* Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
(WebCore::WHLSL::AST::FunctionDeclaration::FunctionDeclaration):
(WebCore::WHLSL::AST::FunctionDeclaration::codeLocation const):
* Modules/webgpu/WHLSL/AST/WHLSLGlobalVariableReference.h:
(WebCore::WHLSL::AST::GlobalVariableReference::GlobalVariableReference):
* Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h:
(WebCore::WHLSL::AST::IfStatement::IfStatement):
* Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
(WebCore::WHLSL::AST::IndexExpression::IndexExpression):
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.h:
(WebCore::WHLSL::AST::IntegerLiteral::IntegerLiteral):
(WebCore::WHLSL::AST::IntegerLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.cpp:
(WebCore::WHLSL::AST::IntegerLiteralType::IntegerLiteralType):
(WebCore::WHLSL::AST::IntegerLiteralType::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLLogicalExpression.h:
(WebCore::WHLSL::AST::LogicalExpression::LogicalExpression):
* Modules/webgpu/WHLSL/AST/WHLSLLogicalNotExpression.h:
(WebCore::WHLSL::AST::LogicalNotExpression::LogicalNotExpression):
* Modules/webgpu/WHLSL/AST/WHLSLMakeArrayReferenceExpression.h:
(WebCore::WHLSL::AST::MakeArrayReferenceExpression::MakeArrayReferenceExpression):
* Modules/webgpu/WHLSL/AST/WHLSLMakePointerExpression.h:
(WebCore::WHLSL::AST::MakePointerExpression::MakePointerExpression):
* Modules/webgpu/WHLSL/AST/WHLSLNamedType.h:
(WebCore::WHLSL::AST::NamedType::NamedType):
(WebCore::WHLSL::AST::NamedType::codeLocation const):
(WebCore::WHLSL::AST::NamedType::updateCodeLocation):
* Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h:
(WebCore::WHLSL::AST::NativeTypeDeclaration::NativeTypeDeclaration):
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h:
(WebCore::WHLSL::AST::NullLiteral::NullLiteral):
(WebCore::WHLSL::AST::NullLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLNumThreadsFunctionAttribute.h:
(WebCore::WHLSL::AST::NumThreadsFunctionAttribute::NumThreadsFunctionAttribute):
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
(WebCore::WHLSL::AST::PointerType::PointerType):
* Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:
(WebCore::WHLSL::AST::PropertyAccessExpression::PropertyAccessExpression):
* Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
(WebCore::WHLSL::AST::ReadModifyWriteExpression::create):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::ReadModifyWriteExpression):
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
(WebCore::WHLSL::AST::ReferenceType::ReferenceType):
* Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.h:
(WebCore::WHLSL::AST::ResourceSemantic::ResourceSemantic):
* Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
(WebCore::WHLSL::AST::Return::Return):
* Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.h:
(WebCore::WHLSL::AST::SpecializationConstantSemantic::SpecializationConstantSemantic):
* Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.h:
(WebCore::WHLSL::AST::StageInOutSemantic::StageInOutSemantic):
* Modules/webgpu/WHLSL/AST/WHLSLStatement.h:
(WebCore::WHLSL::AST::Statement::Statement):
(WebCore::WHLSL::AST::Statement::codeLocation const):
(WebCore::WHLSL::AST::Statement::updateCodeLocation):
* Modules/webgpu/WHLSL/AST/WHLSLStatementList.h:
(WebCore::WHLSL::AST::StatementList::StatementList):
* Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h:
(WebCore::WHLSL::AST::StructureDefinition::StructureDefinition):
* Modules/webgpu/WHLSL/AST/WHLSLStructureElement.h:
(WebCore::WHLSL::AST::StructureElement::StructureElement):
(WebCore::WHLSL::AST::StructureElement::codeLocation const):
* Modules/webgpu/WHLSL/AST/WHLSLSwitchCase.h:
(WebCore::WHLSL::AST::SwitchCase::SwitchCase):
* Modules/webgpu/WHLSL/AST/WHLSLSwitchStatement.h:
(WebCore::WHLSL::AST::SwitchStatement::SwitchStatement):
* Modules/webgpu/WHLSL/AST/WHLSLTernaryExpression.h:
(WebCore::WHLSL::AST::TernaryExpression::TernaryExpression):
* Modules/webgpu/WHLSL/AST/WHLSLTrap.h:
(WebCore::WHLSL::AST::Trap::Trap):
* Modules/webgpu/WHLSL/AST/WHLSLTypeDefinition.h:
(WebCore::WHLSL::AST::TypeDefinition::TypeDefinition):
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.cpp:
(WebCore::WHLSL::AST::TypeReference::wrap):
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
(WebCore::WHLSL::AST::TypeReference::TypeReference):
(WebCore::WHLSL::AST::TypeReference::cloneTypeReference const):
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
(WebCore::WHLSL::AST::UnnamedType::UnnamedType):
(WebCore::WHLSL::AST::UnnamedType::codeLocation const):
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.h:
(WebCore::WHLSL::AST::UnsignedIntegerLiteral::UnsignedIntegerLiteral):
(WebCore::WHLSL::AST::UnsignedIntegerLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.cpp:
(WebCore::WHLSL::AST::UnsignedIntegerLiteralType::UnsignedIntegerLiteralType):
(WebCore::WHLSL::AST::UnsignedIntegerLiteralType::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclarationsStatement.h:
(WebCore::WHLSL::AST::VariableDeclarationsStatement::VariableDeclarationsStatement):
* Modules/webgpu/WHLSL/AST/WHLSLVariableReference.h:
(WebCore::WHLSL::AST::VariableReference::VariableReference):
(WebCore::WHLSL::AST::VariableReference::wrap):
* Modules/webgpu/WHLSL/AST/WHLSLWhileLoop.h:
(WebCore::WHLSL::AST::WhileLoop::WhileLoop):
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.cpp:
(WebCore::WHLSL::AutoInitialize::visit):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveWithOperatorAnderIndexer):
(WebCore::WHLSL::resolveWithOperatorLength):
(WebCore::WHLSL::resolveWithReferenceComparator):
(WebCore::WHLSL::resolveByInstantiation):
(WebCore::WHLSL::resolveFunction):
(WebCore::WHLSL::Checker::visit):
(WebCore::WHLSL::argumentTypeForAndOverload):
(WebCore::WHLSL::Checker::finishVisiting):
* Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:
(WebCore::WHLSL::matchAndCommit):
* Modules/webgpu/WHLSL/WHLSLLexer.cpp:
(WebCore::WHLSL::Token::typeName):
(WebCore::WHLSL::Lexer::consumeTokenFromStream):
* Modules/webgpu/WHLSL/WHLSLLexer.h:
(WebCore::WHLSL::AST::CodeLocation::CodeLocation):
(WebCore::WHLSL::AST::CodeLocation::startOffset const):
(WebCore::WHLSL::AST::CodeLocation::endOffset const):
(WebCore::WHLSL::Token::startOffset const):
(WebCore::WHLSL::Lexer::errorString):
(WebCore::WHLSL::Token::stringView const):
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::visit):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parse):
(WebCore::WHLSL::Parser::peek):
(WebCore::WHLSL::Parser::peekFurther):
(WebCore::WHLSL::Types::includes):
(WebCore::WHLSL::Types::appendNameTo):
(WebCore::WHLSL::Types<t>::includes):
(WebCore::WHLSL::Types<t>::appendNameTo):
(WebCore::WHLSL::Parser::peekType):
(WebCore::WHLSL::Parser::tryType):
(WebCore::WHLSL::Parser::tryTypes):
(WebCore::WHLSL::Parser::consumeType):
(WebCore::WHLSL::Parser::consumeTypes):
(WebCore::WHLSL::Parser::consumeIntegralLiteral):
(WebCore::WHLSL::Parser::parseConstantExpression):
(WebCore::WHLSL::Parser::parseTypeArgument):
(WebCore::WHLSL::Parser::parseTypeArguments):
(WebCore::WHLSL::Parser::parseTypeSuffixAbbreviated):
(WebCore::WHLSL::Parser::parseTypeSuffixNonAbbreviated):
(WebCore::WHLSL::Parser::parseType):
(WebCore::WHLSL::Parser::parseTypeDefinition):
(WebCore::WHLSL::Parser::parseBuiltInSemantic):
(WebCore::WHLSL::Parser::parseResourceSemantic):
(WebCore::WHLSL::Parser::parseSpecializationConstantSemantic):
(WebCore::WHLSL::Parser::parseStageInOutSemantic):
(WebCore::WHLSL::Parser::parseSemantic):
(WebCore::WHLSL::Parser::parseQualifiers):
(WebCore::WHLSL::Parser::parseStructureElement):
(WebCore::WHLSL::Parser::parseStructureDefinition):
(WebCore::WHLSL::Parser::parseEnumerationDefinition):
(WebCore::WHLSL::Parser::parseEnumerationMember):
(WebCore::WHLSL::Parser::parseNativeTypeDeclaration):
(WebCore::WHLSL::Parser::parseNumThreadsFunctionAttribute):
(WebCore::WHLSL::Parser::parseAttributeBlock):
(WebCore::WHLSL::Parser::parseParameter):
(WebCore::WHLSL::Parser::parseParameters):
(WebCore::WHLSL::Parser::parseComputeFunctionDeclaration):
(WebCore::WHLSL::Parser::parseVertexOrFragmentFunctionDeclaration):
(WebCore::WHLSL::Parser::parseRegularFunctionDeclaration):
(WebCore::WHLSL::Parser::parseOperatorFunctionDeclaration):
(WebCore::WHLSL::Parser::parseFunctionDeclaration):
(WebCore::WHLSL::Parser::parseBlock):
(WebCore::WHLSL::Parser::parseBlockBody):
(WebCore::WHLSL::Parser::parseIfStatement):
(WebCore::WHLSL::Parser::parseSwitchStatement):
(WebCore::WHLSL::Parser::parseSwitchCase):
(WebCore::WHLSL::Parser::parseForLoop):
(WebCore::WHLSL::Parser::parseWhileLoop):
(WebCore::WHLSL::Parser::parseDoWhileLoop):
(WebCore::WHLSL::Parser::parseVariableDeclaration):
(WebCore::WHLSL::Parser::parseVariableDeclarations):
(WebCore::WHLSL::Parser::parseStatement):
(WebCore::WHLSL::Parser::parseEffectfulExpression):
(WebCore::WHLSL::Parser::parseEffectfulAssignment):
(WebCore::WHLSL::Parser::parseLimitedSuffixOperator):
(WebCore::WHLSL::Parser::parseSuffixOperator):
(WebCore::WHLSL::Parser::parseExpression):
(WebCore::WHLSL::Parser::completeTernaryConditional):
(WebCore::WHLSL::Parser::completeAssignment):
(WebCore::WHLSL::Parser::parsePossibleTernaryConditional):
(WebCore::WHLSL::Parser::completePossibleLogicalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleRelationalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleShift):
(WebCore::WHLSL::Parser::completePossibleAdd):
(WebCore::WHLSL::Parser::completePossibleMultiply):
(WebCore::WHLSL::Parser::parsePossiblePrefix):
(WebCore::WHLSL::Parser::parsePossibleSuffix):
(WebCore::WHLSL::Parser::parseCallExpression):
(WebCore::WHLSL::Parser::parseTerm):
* Modules/webgpu/WHLSL/WHLSLParser.h:
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
(WebCore::WHLSL::anonymousToken):
(WebCore::WHLSL::PreserveLifetimes::PreserveLifetimes):
(WebCore::WHLSL::PreserveLifetimes::assignVariableIntoStruct):
(WebCore::WHLSL::preserveVariableLifetimes):
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::PropertyResolver::visit):
(WebCore::WHLSL::wrapAnderCallArgument):
(WebCore::WHLSL::setterCall):
(WebCore::WHLSL::getterCall):
(WebCore::WHLSL::modify):
(WebCore::WHLSL::PropertyResolver::simplifyRightValue):
(WebCore::WHLSL::LeftValueSimplifier::finishVisiting):
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
(WebCore::WHLSL::synthesizeArrayOperatorLength):
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
(WebCore::WHLSL::synthesizeConstructors):
* Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
(WebCore::WHLSL::synthesizeEnumerationFunctions):
* Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
(WebCore::WHLSL::synthesizeStructureAccessors):
2019-07-10 Ryosuke Niwa <rniwa@webkit.org>
[iOS] REGRESSION(r244851): Revealing caret sometimes fails when content inset is used
https://bugs.webkit.org/show_bug.cgi?id=199662
Reviewed by Simon Fraser.
The bug was caused by ScrollableArea::maximumScrollPosition using ScrollableArea::visibleSize, which does not
take the content insets into account correctly, rather than FrameView::visualViewportRectExpandedByContentInsets,
which does, and is used for "viewRect" in RenderLayer::scrollRectToVisible.
Override the maximum scroll position using visualViewportRectExpandedByContentInsets in iOS to fix the issue.
Test: editing/selection/ios/autoscroll-with-top-content-inset-2.html
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollRectToVisible): Fixed the bug.
2019-07-10 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r247316.
Broke Mojave build
Reverted changeset:
"[WHLSL] Track code locations correctly throughout the
compiler to get good error messages"
https://bugs.webkit.org/show_bug.cgi?id=199675
https://trac.webkit.org/changeset/247316
2019-07-10 Alex Christensen <achristensen@webkit.org>
Allow CMake to build WebCore on Mac
https://bugs.webkit.org/show_bug.cgi?id=198979
Reviewed by Don Olmstead.
* Modules/websockets/ThreadableWebSocketChannel.cpp:
(WebCore::ThreadableWebSocketChannel::validateURL):
* PlatformMac.cmake:
* platform/cocoa/VideoFullscreenModelVideoElement.mm:
* platform/ios/WebItemProviderPasteboard.h:
2019-07-10 Chris Dumez <cdumez@apple.com>
Unreviewed, rolling out r247292.
Caused CloseWebViewDuringEnterFullscreen.VideoFullscreen API
test to time out on Mojave bots
Reverted changeset:
"Stop using GenericTaskQueue from multiple threads"
https://bugs.webkit.org/show_bug.cgi?id=199652
https://trac.webkit.org/changeset/247292
2019-07-10 Robin Morisset <rmorisset@apple.com>
[WHLSL] Track code locations correctly throughout the compiler to get good error messages
https://bugs.webkit.org/show_bug.cgi?id=199675
Reviewed by Myles Maxfield.
The basic idea is to go from having each AST node contain its own token to having each AST node contain a pair of offsets into the source,
the offset before its start and the offset after its end. This will let us get good error messages.
As a bonus, it saves a bit of memory as Tokens are larger (one extra word for their type).
The new CodeLocation class is put in Lexer.h, because it has a cyclic dependency on Token, which also has a cyclic dependency on Lexer.
No new tests as there is no intended functional change.
* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
(WebCore::WHLSL::AST::ArrayReferenceType::ArrayReferenceType):
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
(WebCore::WHLSL::AST::ArrayType::ArrayType):
* Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h:
(WebCore::WHLSL::AST::AssignmentExpression::AssignmentExpression):
* Modules/webgpu/WHLSL/AST/WHLSLBaseFunctionAttribute.h:
(WebCore::WHLSL::AST::BaseFunctionAttribute::BaseFunctionAttribute):
* Modules/webgpu/WHLSL/AST/WHLSLBaseSemantic.h:
(WebCore::WHLSL::AST::BaseSemantic::BaseSemantic):
* Modules/webgpu/WHLSL/AST/WHLSLBlock.h:
(WebCore::WHLSL::AST::Block::Block):
* Modules/webgpu/WHLSL/AST/WHLSLBooleanLiteral.h:
(WebCore::WHLSL::AST::BooleanLiteral::BooleanLiteral):
(WebCore::WHLSL::AST::BooleanLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLBreak.h:
(WebCore::WHLSL::AST::Break::Break):
* Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h:
(WebCore::WHLSL::AST::BuiltInSemantic::BuiltInSemantic):
* Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h:
(WebCore::WHLSL::AST::CallExpression::CallExpression):
* Modules/webgpu/WHLSL/AST/WHLSLCommaExpression.h:
(WebCore::WHLSL::AST::CommaExpression::CommaExpression):
* Modules/webgpu/WHLSL/AST/WHLSLContinue.h:
(WebCore::WHLSL::AST::Continue::Continue):
* Modules/webgpu/WHLSL/AST/WHLSLDereferenceExpression.h:
(WebCore::WHLSL::AST::DereferenceExpression::DereferenceExpression):
* Modules/webgpu/WHLSL/AST/WHLSLDoWhileLoop.h:
(WebCore::WHLSL::AST::DoWhileLoop::DoWhileLoop):
* Modules/webgpu/WHLSL/AST/WHLSLDotExpression.h:
(WebCore::WHLSL::AST::DotExpression::DotExpression):
* Modules/webgpu/WHLSL/AST/WHLSLEffectfulExpressionStatement.h:
(WebCore::WHLSL::AST::EffectfulExpressionStatement::EffectfulExpressionStatement):
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:
(WebCore::WHLSL::AST::EnumerationDefinition::EnumerationDefinition):
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMember.h:
(WebCore::WHLSL::AST::EnumerationMember::EnumerationMember):
(WebCore::WHLSL::AST::EnumerationMember::codeLocation const):
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMemberLiteral.h:
(WebCore::WHLSL::AST::EnumerationMemberLiteral::EnumerationMemberLiteral):
(WebCore::WHLSL::AST::EnumerationMemberLiteral::wrap):
(WebCore::WHLSL::AST::EnumerationMemberLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
(WebCore::WHLSL::AST::Expression::Expression):
(WebCore::WHLSL::AST::Expression::codeLocation const):
(WebCore::WHLSL::AST::Expression::updateCodeLocation):
* Modules/webgpu/WHLSL/AST/WHLSLFallthrough.h:
(WebCore::WHLSL::AST::Fallthrough::Fallthrough):
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteral.h:
(WebCore::WHLSL::AST::FloatLiteral::FloatLiteral):
(WebCore::WHLSL::AST::FloatLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.cpp:
(WebCore::WHLSL::AST::FloatLiteralType::FloatLiteralType):
(WebCore::WHLSL::AST::FloatLiteralType::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
(WebCore::WHLSL::AST::ForLoop::ForLoop):
* Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
(WebCore::WHLSL::AST::FunctionDeclaration::FunctionDeclaration):
(WebCore::WHLSL::AST::FunctionDeclaration::codeLocation const):
* Modules/webgpu/WHLSL/AST/WHLSLGlobalVariableReference.h:
(WebCore::WHLSL::AST::GlobalVariableReference::GlobalVariableReference):
* Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h:
(WebCore::WHLSL::AST::IfStatement::IfStatement):
* Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
(WebCore::WHLSL::AST::IndexExpression::IndexExpression):
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.h:
(WebCore::WHLSL::AST::IntegerLiteral::IntegerLiteral):
(WebCore::WHLSL::AST::IntegerLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.cpp:
(WebCore::WHLSL::AST::IntegerLiteralType::IntegerLiteralType):
(WebCore::WHLSL::AST::IntegerLiteralType::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLLogicalExpression.h:
(WebCore::WHLSL::AST::LogicalExpression::LogicalExpression):
* Modules/webgpu/WHLSL/AST/WHLSLLogicalNotExpression.h:
(WebCore::WHLSL::AST::LogicalNotExpression::LogicalNotExpression):
* Modules/webgpu/WHLSL/AST/WHLSLMakeArrayReferenceExpression.h:
(WebCore::WHLSL::AST::MakeArrayReferenceExpression::MakeArrayReferenceExpression):
* Modules/webgpu/WHLSL/AST/WHLSLMakePointerExpression.h:
(WebCore::WHLSL::AST::MakePointerExpression::MakePointerExpression):
* Modules/webgpu/WHLSL/AST/WHLSLNamedType.h:
(WebCore::WHLSL::AST::NamedType::NamedType):
(WebCore::WHLSL::AST::NamedType::codeLocation const):
(WebCore::WHLSL::AST::NamedType::updateCodeLocation):
* Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h:
(WebCore::WHLSL::AST::NativeTypeDeclaration::NativeTypeDeclaration):
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h:
(WebCore::WHLSL::AST::NullLiteral::NullLiteral):
(WebCore::WHLSL::AST::NullLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLNumThreadsFunctionAttribute.h:
(WebCore::WHLSL::AST::NumThreadsFunctionAttribute::NumThreadsFunctionAttribute):
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
(WebCore::WHLSL::AST::PointerType::PointerType):
* Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:
(WebCore::WHLSL::AST::PropertyAccessExpression::PropertyAccessExpression):
* Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
(WebCore::WHLSL::AST::ReadModifyWriteExpression::create):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::ReadModifyWriteExpression):
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
(WebCore::WHLSL::AST::ReferenceType::ReferenceType):
* Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.h:
(WebCore::WHLSL::AST::ResourceSemantic::ResourceSemantic):
* Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
(WebCore::WHLSL::AST::Return::Return):
* Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.h:
(WebCore::WHLSL::AST::SpecializationConstantSemantic::SpecializationConstantSemantic):
* Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.h:
(WebCore::WHLSL::AST::StageInOutSemantic::StageInOutSemantic):
* Modules/webgpu/WHLSL/AST/WHLSLStatement.h:
(WebCore::WHLSL::AST::Statement::Statement):
(WebCore::WHLSL::AST::Statement::codeLocation const):
(WebCore::WHLSL::AST::Statement::updateCodeLocation):
* Modules/webgpu/WHLSL/AST/WHLSLStatementList.h:
(WebCore::WHLSL::AST::StatementList::StatementList):
* Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h:
(WebCore::WHLSL::AST::StructureDefinition::StructureDefinition):
* Modules/webgpu/WHLSL/AST/WHLSLStructureElement.h:
(WebCore::WHLSL::AST::StructureElement::StructureElement):
(WebCore::WHLSL::AST::StructureElement::codeLocation const):
* Modules/webgpu/WHLSL/AST/WHLSLSwitchCase.h:
(WebCore::WHLSL::AST::SwitchCase::SwitchCase):
* Modules/webgpu/WHLSL/AST/WHLSLSwitchStatement.h:
(WebCore::WHLSL::AST::SwitchStatement::SwitchStatement):
* Modules/webgpu/WHLSL/AST/WHLSLTernaryExpression.h:
(WebCore::WHLSL::AST::TernaryExpression::TernaryExpression):
* Modules/webgpu/WHLSL/AST/WHLSLTrap.h:
(WebCore::WHLSL::AST::Trap::Trap):
* Modules/webgpu/WHLSL/AST/WHLSLTypeDefinition.h:
(WebCore::WHLSL::AST::TypeDefinition::TypeDefinition):
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.cpp:
(WebCore::WHLSL::AST::TypeReference::wrap):
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
(WebCore::WHLSL::AST::TypeReference::TypeReference):
(WebCore::WHLSL::AST::TypeReference::cloneTypeReference const):
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
(WebCore::WHLSL::AST::UnnamedType::UnnamedType):
(WebCore::WHLSL::AST::UnnamedType::codeLocation const):
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.h:
(WebCore::WHLSL::AST::UnsignedIntegerLiteral::UnsignedIntegerLiteral):
(WebCore::WHLSL::AST::UnsignedIntegerLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.cpp:
(WebCore::WHLSL::AST::UnsignedIntegerLiteralType::UnsignedIntegerLiteralType):
(WebCore::WHLSL::AST::UnsignedIntegerLiteralType::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclarationsStatement.h:
(WebCore::WHLSL::AST::VariableDeclarationsStatement::VariableDeclarationsStatement):
* Modules/webgpu/WHLSL/AST/WHLSLVariableReference.h:
(WebCore::WHLSL::AST::VariableReference::VariableReference):
(WebCore::WHLSL::AST::VariableReference::wrap):
* Modules/webgpu/WHLSL/AST/WHLSLWhileLoop.h:
(WebCore::WHLSL::AST::WhileLoop::WhileLoop):
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.cpp:
(WebCore::WHLSL::AutoInitialize::visit):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveWithOperatorAnderIndexer):
(WebCore::WHLSL::resolveWithOperatorLength):
(WebCore::WHLSL::resolveWithReferenceComparator):
(WebCore::WHLSL::resolveByInstantiation):
(WebCore::WHLSL::resolveFunction):
(WebCore::WHLSL::Checker::visit):
(WebCore::WHLSL::argumentTypeForAndOverload):
(WebCore::WHLSL::Checker::finishVisiting):
* Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:
(WebCore::WHLSL::matchAndCommit):
* Modules/webgpu/WHLSL/WHLSLLexer.cpp:
(WebCore::WHLSL::Token::typeName):
(WebCore::WHLSL::Lexer::consumeTokenFromStream):
* Modules/webgpu/WHLSL/WHLSLLexer.h:
(WebCore::WHLSL::AST::CodeLocation::CodeLocation):
(WebCore::WHLSL::AST::CodeLocation::startOffset const):
(WebCore::WHLSL::AST::CodeLocation::endOffset const):
(WebCore::WHLSL::Token::startOffset const):
(WebCore::WHLSL::Lexer::errorString):
(WebCore::WHLSL::Token::stringView const):
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::visit):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parse):
(WebCore::WHLSL::Parser::peek):
(WebCore::WHLSL::Parser::peekFurther):
(WebCore::WHLSL::Types::includes):
(WebCore::WHLSL::Types::appendNameTo):
(WebCore::WHLSL::Types<t>::includes):
(WebCore::WHLSL::Types<t>::appendNameTo):
(WebCore::WHLSL::Parser::peekType):
(WebCore::WHLSL::Parser::tryType):
(WebCore::WHLSL::Parser::tryTypes):
(WebCore::WHLSL::Parser::consumeType):
(WebCore::WHLSL::Parser::consumeTypes):
(WebCore::WHLSL::Parser::consumeIntegralLiteral):
(WebCore::WHLSL::Parser::parseConstantExpression):
(WebCore::WHLSL::Parser::parseTypeArgument):
(WebCore::WHLSL::Parser::parseTypeArguments):
(WebCore::WHLSL::Parser::parseTypeSuffixAbbreviated):
(WebCore::WHLSL::Parser::parseTypeSuffixNonAbbreviated):
(WebCore::WHLSL::Parser::parseType):
(WebCore::WHLSL::Parser::parseTypeDefinition):
(WebCore::WHLSL::Parser::parseBuiltInSemantic):
(WebCore::WHLSL::Parser::parseResourceSemantic):
(WebCore::WHLSL::Parser::parseSpecializationConstantSemantic):
(WebCore::WHLSL::Parser::parseStageInOutSemantic):
(WebCore::WHLSL::Parser::parseSemantic):
(WebCore::WHLSL::Parser::parseQualifiers):
(WebCore::WHLSL::Parser::parseStructureElement):
(WebCore::WHLSL::Parser::parseStructureDefinition):
(WebCore::WHLSL::Parser::parseEnumerationDefinition):
(WebCore::WHLSL::Parser::parseEnumerationMember):
(WebCore::WHLSL::Parser::parseNativeTypeDeclaration):
(WebCore::WHLSL::Parser::parseNumThreadsFunctionAttribute):
(WebCore::WHLSL::Parser::parseAttributeBlock):
(WebCore::WHLSL::Parser::parseParameter):
(WebCore::WHLSL::Parser::parseParameters):
(WebCore::WHLSL::Parser::parseComputeFunctionDeclaration):
(WebCore::WHLSL::Parser::parseVertexOrFragmentFunctionDeclaration):
(WebCore::WHLSL::Parser::parseRegularFunctionDeclaration):
(WebCore::WHLSL::Parser::parseOperatorFunctionDeclaration):
(WebCore::WHLSL::Parser::parseFunctionDeclaration):
(WebCore::WHLSL::Parser::parseBlock):
(WebCore::WHLSL::Parser::parseBlockBody):
(WebCore::WHLSL::Parser::parseIfStatement):
(WebCore::WHLSL::Parser::parseSwitchStatement):
(WebCore::WHLSL::Parser::parseSwitchCase):
(WebCore::WHLSL::Parser::parseForLoop):
(WebCore::WHLSL::Parser::parseWhileLoop):
(WebCore::WHLSL::Parser::parseDoWhileLoop):
(WebCore::WHLSL::Parser::parseVariableDeclaration):
(WebCore::WHLSL::Parser::parseVariableDeclarations):
(WebCore::WHLSL::Parser::parseStatement):
(WebCore::WHLSL::Parser::parseEffectfulExpression):
(WebCore::WHLSL::Parser::parseEffectfulAssignment):
(WebCore::WHLSL::Parser::parseLimitedSuffixOperator):
(WebCore::WHLSL::Parser::parseSuffixOperator):
(WebCore::WHLSL::Parser::parseExpression):
(WebCore::WHLSL::Parser::completeTernaryConditional):
(WebCore::WHLSL::Parser::completeAssignment):
(WebCore::WHLSL::Parser::parsePossibleTernaryConditional):
(WebCore::WHLSL::Parser::completePossibleLogicalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleRelationalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleShift):
(WebCore::WHLSL::Parser::completePossibleAdd):
(WebCore::WHLSL::Parser::completePossibleMultiply):
(WebCore::WHLSL::Parser::parsePossiblePrefix):
(WebCore::WHLSL::Parser::parsePossibleSuffix):
(WebCore::WHLSL::Parser::parseCallExpression):
(WebCore::WHLSL::Parser::parseTerm):
* Modules/webgpu/WHLSL/WHLSLParser.h:
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
(WebCore::WHLSL::anonymousToken):
(WebCore::WHLSL::PreserveLifetimes::PreserveLifetimes):
(WebCore::WHLSL::PreserveLifetimes::assignVariableIntoStruct):
(WebCore::WHLSL::preserveVariableLifetimes):
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::PropertyResolver::visit):
(WebCore::WHLSL::wrapAnderCallArgument):
(WebCore::WHLSL::setterCall):
(WebCore::WHLSL::getterCall):
(WebCore::WHLSL::modify):
(WebCore::WHLSL::PropertyResolver::simplifyRightValue):
(WebCore::WHLSL::LeftValueSimplifier::finishVisiting):
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
(WebCore::WHLSL::synthesizeArrayOperatorLength):
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
(WebCore::WHLSL::synthesizeConstructors):
* Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
(WebCore::WHLSL::synthesizeEnumerationFunctions):
* Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
(WebCore::WHLSL::synthesizeStructureAccessors):
2019-07-10 Kenneth Russell <kbr@chromium.org>
Hook up WebGL's back buffer in ANGLE backend on macOS
https://bugs.webkit.org/show_bug.cgi?id=198982
Reviewed by Alex Christensen.
Fix a few places which were accidentally calling desktop OpenGL rather
than ANGLE. Fix some calls which were using ANGLE's OpenGL ES 3.0
entry points rather than the OpenGL ES 2.0 extension APIs, causing
them to generate errors in WebGL 1.0's backend. Change
Extensions3DANGLE to use ANGLE's requestable extension mechanism.
Fix framebuffer setup when using ANGLE for WebGL 1.0 contexts, for
both antialias:true and false.
Remove ANGLEWebKitBridge in ANGLE backend. It interfered with the
correct operation of ANGLE's internal shader compiler, and was
unnecessary given the use of ANGLE. Remove all manual shader name
hashing and mapping in ANGLE backend.
Tested with parts of the WebGL conformance suite and the San
Angeles demo, which now runs properly with WebKit's ANGLE backend
for WebGL.
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::getProgramParameter):
(WebCore::WebGLRenderingContextBase::getUniformLocation):
(WebCore::WebGLRenderingContextBase::linkProgramWithoutInvalidatingAttribLocations):
* platform/graphics/GraphicsContext3D.h:
* platform/graphics/angle/Extensions3DANGLE.cpp:
(WebCore::Extensions3DANGLE::Extensions3DANGLE):
(WebCore::Extensions3DANGLE::supports):
(WebCore::Extensions3DANGLE::ensureEnabled):
(WebCore::Extensions3DANGLE::isEnabled):
(WebCore::Extensions3DANGLE::getTranslatedShaderSourceANGLE):
(WebCore::Extensions3DANGLE::initializeAvailableExtensions):
(WebCore::Extensions3DANGLE::blitFramebuffer):
(WebCore::Extensions3DANGLE::renderbufferStorageMultisample):
(WebCore::Extensions3DANGLE::createVertexArrayOES):
(WebCore::Extensions3DANGLE::deleteVertexArrayOES):
(WebCore::Extensions3DANGLE::isVertexArrayOES):
(WebCore::Extensions3DANGLE::bindVertexArrayOES):
(WebCore::Extensions3DANGLE::supportsExtension):
(WebCore::Extensions3DANGLE::drawBuffersEXT):
(WebCore::Extensions3DANGLE::drawArraysInstanced):
(WebCore::Extensions3DANGLE::drawElementsInstanced):
(WebCore::Extensions3DANGLE::vertexAttribDivisor):
* platform/graphics/angle/Extensions3DANGLE.h:
* platform/graphics/angle/GraphicsContext3DANGLE.cpp:
(WebCore::GraphicsContext3D::validateAttributes):
(WebCore::GraphicsContext3D::reshapeFBOs):
(WebCore::GraphicsContext3D::attachDepthAndStencilBufferIfNeeded):
(WebCore::GraphicsContext3D::resolveMultisamplingIfNecessary):
(WebCore::GraphicsContext3D::validateDepthStencil):
(WebCore::GraphicsContext3D::prepareTexture):
(WebCore::GraphicsContext3D::attachShader):
(WebCore::GraphicsContext3D::bindAttribLocation):
(WebCore::GraphicsContext3D::compileShader):
(WebCore::GraphicsContext3D::compileShaderDirect):
(WebCore::GraphicsContext3D::detachShader):
(WebCore::GraphicsContext3D::getActiveAttribImpl):
(WebCore::GraphicsContext3D::getActiveAttrib):
(WebCore::GraphicsContext3D::getActiveUniformImpl):
(WebCore::GraphicsContext3D::getActiveUniform):
(WebCore::GraphicsContext3D::getAttribLocation):
(WebCore::GraphicsContext3D::getAttribLocationDirect):
(WebCore::GraphicsContext3D::moveErrorsToSyntheticErrorList):
(WebCore::GraphicsContext3D::linkProgram):
(WebCore::GraphicsContext3D::shaderSource):
(WebCore::GraphicsContext3D::getUnmangledInfoLog):
(WebCore::GraphicsContext3D::getShaderiv):
(WebCore::GraphicsContext3D::getShaderInfoLog):
(WebCore::GraphicsContext3D::getUniformLocation):
(WebCore::GraphicsContext3D::createBuffer):
(WebCore::GraphicsContext3D::createFramebuffer):
(WebCore::GraphicsContext3D::createProgram):
(WebCore::GraphicsContext3D::createRenderbuffer):
(WebCore::GraphicsContext3D::createShader):
(WebCore::GraphicsContext3D::createTexture):
(WebCore::GraphicsContext3D::deleteBuffer):
(WebCore::GraphicsContext3D::deleteFramebuffer):
(WebCore::GraphicsContext3D::deleteProgram):
(WebCore::GraphicsContext3D::deleteRenderbuffer):
(WebCore::GraphicsContext3D::deleteShader):
(WebCore::GraphicsContext3D::deleteTexture):
(WebCore::GraphicsContext3D::synthesizeGLError):
(): Deleted.
(WebCore::setCurrentNameHashMapForShader): Deleted.
(WebCore::nameHashForShader): Deleted.
(WebCore::GraphicsContext3D::checkVaryingsPacking const): Deleted.
(WebCore::GraphicsContext3D::precisionsMatch const): Deleted.
(WebCore::generateHashedName): Deleted.
(WebCore::GraphicsContext3D::mappedSymbolInShaderSourceMap): Deleted.
(WebCore::GraphicsContext3D::mappedSymbolName): Deleted.
(WebCore::GraphicsContext3D::originalSymbolInShaderSourceMap): Deleted.
(WebCore::GraphicsContext3D::originalSymbolName): Deleted.
(WebCore::GraphicsContext3D::getNonBuiltInActiveSymbolCount): Deleted.
(WebCore::GraphicsContext3D::getShaderSource): Deleted.
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::~GraphicsContext3D):
(WebCore::GraphicsContext3D::makeContextCurrent):
(WebCore::GraphicsContext3D::checkGPUStatus):
(WebCore::GraphicsContext3D::allocateIOSurfaceBackingStore):
(WebCore::GraphicsContext3D::updateFramebufferTextureBackingStoreFromLayer):
* platform/graphics/cocoa/WebGLLayer.h:
* platform/graphics/cocoa/WebGLLayer.mm:
(-[WebGLLayer initWithGraphicsContext3D:]):
(-[WebGLLayer copyImageSnapshotWithColorSpace:]):
(-[WebGLLayer display]):
(-[WebGLLayer setEGLDisplay:andConfig:]):
(-[WebGLLayer dealloc]):
(-[WebGLLayer allocateIOSurfaceBackingStoreWithSize:usingAlpha:]):
(-[WebGLLayer bindFramebufferToNextAvailableSurface]):
2019-07-10 Youenn Fablet <youenn@apple.com>
openDatabase property should not be enumerable on DOMWindow
https://bugs.webkit.org/show_bug.cgi?id=199672
<rdar://problem/52809000>
Reviewed by Chris Dumez.
Test: storage/websql/openDatabase-deprecation.html
* Modules/webdatabase/DOMWindowWebDatabase.idl:
2019-07-10 Chris Dumez <cdumez@apple.com>
Fix unsafe usage of makeWeakPtr() in CMTimebaseEffectiveRateChangedCallback()
https://bugs.webkit.org/show_bug.cgi?id=199656
Reviewed by Eric Carlson.
CMTimebaseEffectiveRateChangedCallback() is getting called on a background thread and would call
makeWeakPtr() on the MediaPlayerPrivateMediaSourceAVFObjC object, which is not safe because
MediaPlayerPrivateMediaSourceAVFObjC is a main thread object.
To address the issue, move the logic for listening to effective rate changes to its own
Listener class which is ThreadSafeRefCounted. Instead of using makeWeakPtr() on the background
thread, we now merely ref the thread-safe listener.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::EffectiveRateChangedListener::create):
(WebCore::EffectiveRateChangedListener::effectiveRateChanged):
(WebCore::CMTimebaseEffectiveRateChangedCallback):
(WebCore::EffectiveRateChangedListener::stop):
(WebCore::EffectiveRateChangedListener::EffectiveRateChangedListener):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::~MediaPlayerPrivateMediaSourceAVFObjC):
2019-07-10 Antti Koivisto <antti@apple.com>
Remove TouchActionData
https://bugs.webkit.org/show_bug.cgi?id=199668
Reviewed by Simon Fraser.
TouchActionData structure has been superseded by touch-action regions in EventRegion and is unused.
Remove it and the supporting code.
No functional changes.
* dom/Document.cpp:
(WebCore::Document::nodeWillBeRemoved):
(WebCore::Document::updateTouchActionElements): Deleted.
* dom/Document.h:
(WebCore::Document::mayHaveElementsWithNonAutoTouchAction const):
(WebCore::Document::setMayHaveElementsWithNonAutoTouchAction):
Replace touchActionElements set with a bit that covers the only remaining clients (optimizations).
Note that touchActionElements was not deleted when emptied, it had the same "may have" behavior (which
is currently needed).
(WebCore::Document::touchActionElements const): Deleted.
* dom/Element.cpp:
(WebCore::Element::computedTouchActions const): Deleted.
* dom/Element.h:
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::absoluteEventTrackingRegionsForFrame const):
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::touchActionDataAtPoint const): Deleted.
* page/scrolling/ScrollingTree.h:
* platform/EventTrackingRegions.cpp:
(WebCore::operator==):
* platform/EventTrackingRegions.h:
(): Deleted.
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paintObject):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateEventRegion):
* style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::resolveElement):
2019-07-10 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Remove redundant InlineFormattingContext::LineLayout members.
https://bugs.webkit.org/show_bug.cgi?id=199654
<rdar://problem/52869206>
Reviewed by Antti Koivisto.
Some of the members are actually only needed in selected functions.
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layout const):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthConstraints const):
* layout/inlineformatting/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::LineLayout::layoutState const):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::LineLayout):
(WebCore::Layout::InlineFormattingContext::LineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::LineLayout::computedIntrinsicWidth const):
(WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const):
(WebCore::Layout::InlineFormattingContext::LineLayout::alignRuns const):
* layout/inlineformatting/InlineFormattingState.h:
(WebCore::Layout::InlineFormattingState::inlineItems):
(WebCore::Layout::InlineFormattingState::inlineRuns):
(WebCore::Layout::InlineFormattingState::lineBoxes):
2019-07-10 Enrique Ocaña González <eocanha@igalia.com>
[GStreamer] Protect against null samples and samples with null buffers
https://bugs.webkit.org/show_bug.cgi?id=199619
Reviewed by Philippe Normand.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::GstVideoFrameHolder::GstVideoFrameHolder): Assert to enforce non-null samples.
(WebCore::GstVideoFrameHolder::updateTexture): Protect against null m_buffer and improperly mapped video frame.
2019-07-09 Andres Gonzalez <andresg_22@apple.com>
AX: HTML datalist accessibility is not exposed by WebKit
https://bugs.webkit.org/show_bug.cgi?id=196998
<rdar://problem/49962521>
Reviewed by Chris Fleizach.
Input fields with datalist are exposed as having a listbox popup.
Test: accessibility/datalist.html
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::popupValue const):
(WebCore::AccessibilityObject::hasDatalist const):
* accessibility/AccessibilityObject.h:
2019-07-09 Justin Fan <justin_fan@apple.com>
Replace old, broken WebGPU IDL spec link with the new one in IDL comments.
Rubber-stamped by Myles C. Maxfield.
No test changes or change in behavior.
* Modules/webgpu/GPUBindGroupLayoutBinding.idl:
* Modules/webgpu/GPUBindGroupLayoutDescriptor.idl:
* Modules/webgpu/GPUBlendDescriptor.idl:
* Modules/webgpu/GPUBufferDescriptor.idl:
* Modules/webgpu/GPUBufferUsage.idl:
* Modules/webgpu/GPUCanvasContext.idl:
* Modules/webgpu/GPUColor.idl:
* Modules/webgpu/GPUColorStateDescriptor.idl:
* Modules/webgpu/GPUColorWriteBits.idl:
* Modules/webgpu/GPUCompareFunction.idl:
* Modules/webgpu/GPUDepthStencilStateDescriptor.idl:
* Modules/webgpu/GPUExtent3D.idl:
* Modules/webgpu/GPULoadOp.idl:
* Modules/webgpu/GPUOrigin3D.idl:
* Modules/webgpu/GPURequestAdapterOptions.idl:
* Modules/webgpu/GPUSamplerDescriptor.idl:
* Modules/webgpu/GPUShaderStageBit.idl:
* Modules/webgpu/GPUStoreOp.idl:
* Modules/webgpu/GPUTextureDescriptor.idl:
* Modules/webgpu/GPUTextureUsage.idl:
* Modules/webgpu/GPUVertexAttributeDescriptor.idl:
* Modules/webgpu/GPUVertexBufferDescriptor.idl:
* Modules/webgpu/GPUVertexInputDescriptor.idl:
* Modules/webgpu/WebGPU.idl:
* Modules/webgpu/WebGPUAdapter.idl:
* Modules/webgpu/WebGPUBindGroup.idl:
* Modules/webgpu/WebGPUBindGroupBinding.idl:
* Modules/webgpu/WebGPUBindGroupDescriptor.idl:
* Modules/webgpu/WebGPUBindGroupLayout.idl:
* Modules/webgpu/WebGPUBuffer.idl:
* Modules/webgpu/WebGPUBufferBinding.idl:
* Modules/webgpu/WebGPUCommandBuffer.idl:
* Modules/webgpu/WebGPUCommandEncoder.idl:
* Modules/webgpu/WebGPUComputePassEncoder.idl:
* Modules/webgpu/WebGPUComputePipeline.idl:
* Modules/webgpu/WebGPUComputePipelineDescriptor.idl:
* Modules/webgpu/WebGPUDevice.idl:
* Modules/webgpu/WebGPUPipelineDescriptorBase.idl:
* Modules/webgpu/WebGPUPipelineLayout.idl:
* Modules/webgpu/WebGPUPipelineLayoutDescriptor.idl:
* Modules/webgpu/WebGPUPipelineStageDescriptor.idl:
* Modules/webgpu/WebGPUProgrammablePassEncoder.idl:
* Modules/webgpu/WebGPUQueue.idl:
* Modules/webgpu/WebGPURenderPassDescriptor.idl:
* Modules/webgpu/WebGPURenderPassEncoder.idl:
* Modules/webgpu/WebGPURenderPipeline.idl:
* Modules/webgpu/WebGPURenderPipelineDescriptor.idl:
* Modules/webgpu/WebGPUSampler.idl:
* Modules/webgpu/WebGPUShaderModule.idl:
* Modules/webgpu/WebGPUShaderModuleDescriptor.idl:
* Modules/webgpu/WebGPUSwapChain.idl:
* Modules/webgpu/WebGPUTexture.idl:
* Modules/webgpu/WebGPUTextureView.idl:
2019-07-09 Chris Dumez <cdumez@apple.com>
Stop using GenericTaskQueue from multiple threads
https://bugs.webkit.org/show_bug.cgi?id=199652
Reviewed by Geoffrey Garen.
WebCoreAVFLoaderDelegate was calling GenericTaskQueue::enqueueTask() from a background thread,
which is not safe because the implementation of enqueueTask() calls makeWeakPtr() on the
GenericTaskQueue (a main thread object).
Update WebCoreAVFLoaderDelegate to use callOnMainThread() instead.
* platform/GenericTaskQueue.h:
Stop last template parameter which was used exclusively by WebCoreAVFLoaderDelegate to try and
make GenericTaskQueue thread-safe.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(-[WebCoreAVFMovieObserver metadataLoaded]):
(-[WebCoreAVFMovieObserver didEnd:]):
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
(-[WebCoreAVFMovieObserver legibleOutput:didOutputAttributedStrings:nativeSampleBuffers:forItemTime:]):
(-[WebCoreAVFMovieObserver outputSequenceWasFlushed:]):
(-[WebCoreAVFLoaderDelegate resourceLoader:shouldWaitForLoadingOfRequestedResource:]):
(-[WebCoreAVFLoaderDelegate resourceLoader:didCancelLoadingRequest:]):
2019-07-09 Tim Horton <timothy_horton@apple.com>
Fixed elements appear in the middle of full page screenshots taken when scrolled
https://bugs.webkit.org/show_bug.cgi?id=199649
<rdar://problem/52476226>
Reviewed by Simon Fraser.
* page/FrameView.h:
Expose a getter for the layout viewport override rect.
2019-07-09 Alex Christensen <achristensen@webkit.org>
Fix build after r247279
https://bugs.webkit.org/show_bug.cgi?id=199640
* WebCore.xcodeproj/project.pbxproj:
2019-07-09 Alex Christensen <achristensen@webkit.org>
Move AutofillElements.{h,cpp} from editing/ios to editing/cocoa since they're used on macOS
https://bugs.webkit.org/show_bug.cgi?id=199640
Reviewed by Chris Dumez.
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* editing/cocoa/AutofillElements.cpp: Copied from Source/WebCore/editing/ios/AutofillElements.cpp.
* editing/cocoa/AutofillElements.h: Copied from Source/WebCore/editing/ios/AutofillElements.h.
* editing/ios/AutofillElements.cpp: Removed.
* editing/ios/AutofillElements.h: Removed.
2019-07-09 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: replace WTF::Vector with std::initializer_list in CallTracer to avoid dynamic allocations
https://bugs.webkit.org/show_bug.cgi?id=199611
Reviewed by Joseph Pecoraro.
The number of arguments for each member function is known at build time, so there's no need
to dynamically allocate a `WTF::Vector` when capturing the arguments. One downside to using
a `std::initializer_list` is that we can no longer "flatten" `WTF::Variant` arguments into
a `RecordCanvasActionVariant`, but this is acceptable because `WTF::Variant` supports having
yet another `WTF::Variant` as one of it's types, which the `InspectorCanvas` can then figure
out when it finally gets the data. The same applies to `nullptr`/`Optional` checks as well.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateAttributeSetterBodyDefinition):
(GenerateImplementationFunctionCall):
(GenerateCallTracer):
(GenerateCallTracerParameter): Deleted.
* bindings/scripts/test/JS/JSTestCallTracer.cpp:
* bindings/js/CallTracerTypes.h:
* bindings/js/CallTracer.h:
* bindings/js/CallTracer.cpp:
(WebCore::CallTracer::recordCanvasAction):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::recordCanvasAction):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::recordCanvasActionImpl):
* inspector/agents/InspectorCanvasAgent.h:
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::recordCanvasAction):
* inspector/InspectorCanvas.h:
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::recordAction):
(WebCore::InspectorCanvas::buildAction):
Drive-by: handle the situation where a parameter is an array of deduplicated strings, which
would otherwise be treated as an array of numbers.
2019-07-09 Chris Dumez <cdumez@apple.com>
Fix non thread-safe use of WeakPtr in DisplayRefreshMonitorMac::displayLinkFired()
https://bugs.webkit.org/show_bug.cgi?id=199626
Reviewed by Ryosuke Niwa.
Fix non thread-safe use of WeakPtr in DisplayRefreshMonitorMac::displayLinkFired().
DisplayRefreshMonitorMac gets constructed / destroyed on the main thread, it is
not thread-safe to call makeWeakPtr() on a DisplayRefreshMonitorMac object like it
was done before.
To address the issue, mark the object as ThreadSafeRefCounted and ref the object
in the lambda instead.
* platform/graphics/DisplayRefreshMonitor.h:
(WebCore::DisplayRefreshMonitor::stop):
* platform/graphics/DisplayRefreshMonitorManager.cpp:
(WebCore::DisplayRefreshMonitorManager::unregisterClient):
* platform/graphics/mac/DisplayRefreshMonitorMac.cpp:
(WebCore::DisplayRefreshMonitorMac::~DisplayRefreshMonitorMac):
(WebCore::DisplayRefreshMonitorMac::stop):
(WebCore::DisplayRefreshMonitorMac::displayLinkFired):
* platform/graphics/mac/DisplayRefreshMonitorMac.h:
2019-07-09 Sihui Liu <sihui_liu@apple.com>
Only allow fetching and removing session credentials from WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=199385
<rdar://problem/52622080>
Reviewed by Alex Christensen.
Fetch and remove only session credentials from NSURLCredentialStorage.
Modified existing API tests: WKWebsiteDataStore.FetchPersistentCredentials
* platform/network/CredentialStorage.cpp:
(WebCore::CredentialStorage::originsWithCredentials const):
(WebCore::CredentialStorage::originsWithSessionCredentials):
(WebCore::CredentialStorage::removeSessionCredentialsWithOrigins):
(WebCore::CredentialStorage::clearSessionCredentials):
(WebCore::CredentialStorage::clearPermanentCredentialsForProtectionSpace):
* platform/network/CredentialStorage.h:
* platform/network/mac/CredentialStorageMac.mm:
(WebCore::CredentialStorage::originsWithSessionCredentials):
(WebCore::CredentialStorage::removeSessionCredentialsWithOrigins):
(WebCore::CredentialStorage::clearSessionCredentials):
(WebCore::CredentialStorage::clearPermanentCredentialsForProtectionSpace):
(WebCore::CredentialStorage::originsWithPersistentCredentials): Deleted.
2019-07-09 Alex Christensen <achristensen@webkit.org>
Null check HistoryItems given to loadDifferentDocumentItem
https://bugs.webkit.org/show_bug.cgi?id=199596
<rdar://problem/49884391>
Reviewed by Ryosuke Niwa.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::retryAfterFailedCacheOnlyMainResourceLoad):
Under some rare and mysterious conditions we can have a null provisionalItem when loading from the cache.
2019-07-09 Zalan Bujtas <zalan@apple.com>
Fix LOG_DISABLED and TREE_DEBUGGING enabled build.
https://bugs.webkit.org/show_bug.cgi?id=199623
<rdar://problem/52837648>
Reviewed by Simon Fraser.
* rendering/RenderLayerCompositor.cpp:
2019-07-09 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Remove InlineItem references from inline runs.
https://bugs.webkit.org/show_bug.cgi?id=199608
<rdar://problem/52812775>
Reviewed by Antti Koivisto.
Constructing the inline runs is where we stop using InlineItems in the process of processing the inline content.
InlineItems are redundant in the context of Display::Runs.
It also enables us to create temporary InlineItems to process split content.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const):
* layout/inlineformatting/InlineFormattingContextQuirks.cpp:
(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Content::Run::Run):
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::removeTrailingTrimmableContent):
(WebCore::Layout::Line::trailingTrimmableWidth const):
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendHardLineBreak):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Content::Run::layoutBox const):
(WebCore::Layout::Line::Content::Run::logicalRect const):
(WebCore::Layout::Line::Content::Run::textContext const):
(WebCore::Layout::Line::Content::Run::type const):
(WebCore::Layout::Line::Content::Run::isText const):
(WebCore::Layout::Line::Content::Run::isBox const):
(WebCore::Layout::Line::Content::Run::isLineBreak const):
(WebCore::Layout::Line::Content::Run::isContainerStart const):
(WebCore::Layout::Line::Content::Run::isContainerEnd const):
(WebCore::Layout::Line::Content::Run::adjustLogicalTop):
(WebCore::Layout::Line::Content::Run::moveVertically):
(WebCore::Layout::Line::Content::Run::moveHorizontally):
(WebCore::Layout::Line::Content::Run::setTextIsCollapsed):
2019-07-09 Antti Koivisto <antti@apple.com>
REGRESSION(r244906): Crash in WebCore::positionOffsetValue
https://bugs.webkit.org/show_bug.cgi?id=199613
<rdar://problem/51518172>
Reviewed by Zalan Bujtas.
Test: fast/css/getComputedStyle/sticky-scroll-container-crash.html
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::positionOffsetValue):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::enclosingScrollportBox const): Deleted.
The client trivally hits nullptr when this is called for element without overflow scroll parent.
Fix by removing the whole function and using shared enclosingClippingBoxForStickyPosition instead.
It does the same ancestor walk more efficiently via layer tree.
* rendering/RenderBox.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::enclosingClippingBoxForStickyPosition const):
Factor into function.
(WebCore::RenderBoxModelObject::computeStickyPositionConstraints const):
* rendering/RenderBoxModelObject.h:
2019-07-09 Cathie Chen <cathiechen@igalia.com>
Support writing-mode and direction for scrollIntoViewOptions.
https://bugs.webkit.org/show_bug.cgi?id=161611
Reviewed by Frédéric Wang and Simon Fraser.
To determine which physical side to align we need to transform ScrollIntoViewOptions to scrollAlignment.
We'll translate the inline and block direction separately. The writing-mode will affect the block scrollAlignment.
While both writing-mode and CSS direction will affect the inline scrollAlignment. The argument for scrollRectToVisible
should be physical, so if !isHorizontalWritingMode(), we need to switch alignX and alignY.
For direction: rtl and writing-mode: horizontal-tb box, WebKit puts the scrollbar on the left side. The visible rect
starts from the right side of the scroll bar, so localExposeRect should also start from the right side of
scroll bar.
* dom/Element.cpp:
(WebCore::toScrollAlignmentForInlineDirection):
(WebCore::toScrollAlignmentForBlockDirection):
(WebCore::Element::scrollIntoView):
(WebCore::toScrollAlignment): Deleted.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollRectToVisible):
2019-07-08 Saam Barati <sbarati@apple.com>
[WHLSL Import 23 new JS reference spec tests
https://bugs.webkit.org/show_bug.cgi?id=199604
Reviewed by Myles C. Maxfield.
This patch imports a bunch of JS reference spec tests on our way to
completing https://bugs.webkit.org/show_bug.cgi?id=199595
It also fixes the recursion checker phase. That phase had two bugs:
1. We'd assert after visiting the function declaration that it was
still in the set. However, it will not be in the set when we actually
detect recursion.
2. We would not visit the arguments to a call, so if they contained other
calls which were recursive, we would not detect such recursive calls.
Tests: webgpu/whlsl-int-literal-compare.html
webgpu/whlsl-simple-tests.html
webgpu/whlsl-type-mismatch.html
webgpu/whlsl-uint-bitwise.html
* Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp:
2019-07-08 Chris Dumez <cdumez@apple.com>
Make Document::postTask() safe to call from a background thread
https://bugs.webkit.org/show_bug.cgi?id=199585
Reviewed by Alex Christensen.
Make Document::postTask() safe to call from a background thread by not calling makeWeakPtr() on the Document.
Calling makeWeakPtr() on a document from a background thread is not safe since Document is a main thread
object. Instead, capture Document::identifier() in the lambda and lookup the document from its identifier
once we're on the main thread.
* dom/Document.cpp:
(WebCore::Document::postTask):
2019-07-08 Youenn Fablet <youenn@apple.com>
Hop explicitly to the main thread after generating a frame in ScreenDisplayCaptureSourceMac
https://bugs.webkit.org/show_bug.cgi?id=199581
Reviewed by Eric Carlson.
Instead of locking and setting the current frame from a background thread, hop to the main thread.
This also makes sure the weakThis check is done in the main thread.
Manually tested.
* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h:
(WebCore::ScreenDisplayCaptureSourceMac::DisplaySurface::DisplaySurface):
* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
(WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream):
(WebCore::ScreenDisplayCaptureSourceMac::generateFrame):
(WebCore::ScreenDisplayCaptureSourceMac::newFrame):
(WebCore::ScreenDisplayCaptureSourceMac::frameAvailable): Deleted.
2019-07-08 Daniel Bates <dabates@apple.com>
Command + . generates Escape with key identifier Period, should be Escape
https://bugs.webkit.org/show_bug.cgi?id=199393
<rdar://problem/52498001>
Reviewed by Wenson Hsieh.
Remap the key code for Command + . before we compute the Windows virtual key code.
Otherwise, the Windows virtual key code reveals the pre-mapped key code.
* platform/ios/WebEvent.mm:
(-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:withInputManagerHint:keyCode:isTabKey:]):
2019-07-08 Alex Christensen <achristensen@webkit.org>
Prevent null dereferencing in SubresourceLoader::init's lambda
https://bugs.webkit.org/show_bug.cgi?id=199580
Reviewed by Ryosuke Niwa.
Crash logs indicate that sometimes m_documentLoader is null.
This is similar to https://bugs.webkit.org/show_bug.cgi?id=187360
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::init):
2019-07-08 Wenson Hsieh <wenson_hsieh@apple.com>
Unable to paste from Notes into Excel 365 spreadsheet
https://bugs.webkit.org/show_bug.cgi?id=199565
<rdar://problem/43615497>
Reviewed by Chris Dumez.
When pasting into Microsoft Excel 365, the copied data is all inserted into a single cell, even when copying a
table. To understand why this happens, we first need to understand how Excel's logic for handling paste works.
When tapping on the "Paste" button, Excel performs and expects the following:
1. Before triggering programmatic paste, move focus into a hidden contenteditable area specifically intended to
capture pasted content.
2. Run a promise that resolves immediately; the promise callback restores focus to the originally focused
element prior to (1).
3. Invoke programmatic paste using `document.execCommand("Paste")`.
4. The callback scheduled in step (2) then runs, restoring focus to the main editable element representing a
table cell.
However, what ends up happening is this:
Steps (1)-(3): same as before.
4. We (WebKit) create a temporary Page for the purposes of sanitizing copied web content before exposing it to
the paste handler. This involves creating and loading a document; when this is finished, we call into
Document::finishedParsing which flushes the microtask queue.
5. This causes us to immediately run the microtask enqueued in step (2), which restores focus to the previously
focused element (importantly, this is not the element that was focused in step (1)).
6. The paste commences, and inserts the sanitized fragment into the originally focused element rather than the
content editable area intended to capture pasted content.
Excel's script then gets confused, and does not end up using their special paste logic to handle the paste. The
pasted content is instead just inserted as plain text in a cell. To address this, we simply prevent document
load in the Page for web content sanitization from triggering a microtask checkpoint; this allows any scheduled
main thread microtasks to be deferred until the next turn of the runloop.
Test: editing/pasteboard/paste-does-not-fire-promises-while-sanitizing-web-content.html
* dom/Document.cpp:
(WebCore::Document::finishedParsing):
Don't immediately dispatch microtasks when we finish document parsing, in the case where the page is intended
only for web content sanitization, since this may end up executing script in the original document. As explained
above, this causes compatibility issues when pasting in Excel.
* editing/markup.cpp:
(WebCore::createPageForSanitizingWebContent):
When creating a page for sanitizing web content, mark it as such.
* page/Page.h:
Add a new flag to indicate that a Page is only intended for sanitizing web content.
(WebCore::Page::setIsForSanitizingWebContent):
(WebCore::Page::isForSanitizingWebContent const):
2019-07-08 Konstantin Tokarev <annulen@yandex.ru>
Remove unused #include "ImageBufferData.h"
https://bugs.webkit.org/show_bug.cgi?id=199574
Reviewed by Michael Catanzaro.
* html/canvas/ImageBitmapRenderingContext.h:
2019-07-08 Chris Dumez <cdumez@apple.com>
Fix thread safety issue in Database::scheduleTransactionCallback()
https://bugs.webkit.org/show_bug.cgi?id=199557
Reviewed by Alex Christensen.
I am working on adding threading assertions to WeakPtr and found a potentially
unsafe call to makeWeakPtr() on a Document from Database::scheduleTransactionCallback()
via Document::postTask(), on a background database thread. Document is a main thread
object and we should therefore not be interacting with it from a background thread.
For clarity, this patch also switches the webdatabase code to use Document instead
of ScriptExecution as type since it is only exposed to Window contexts, not workers.
* Modules/webdatabase/Database.cpp:
(WebCore::Database::Database):
(WebCore::Database::~Database):
(WebCore::Database::runTransaction):
(WebCore::Database::scheduleTransactionCallback):
(WebCore::Database::logErrorMessage):
(WebCore::Database::securityOrigin):
(WebCore::Database::didExceedQuota):
* Modules/webdatabase/Database.h:
(WebCore::Database::document):
* Modules/webdatabase/DatabaseContext.cpp:
(WebCore::DatabaseContext::DatabaseContext):
* Modules/webdatabase/DatabaseContext.h:
* Modules/webdatabase/DatabaseManager.cpp:
(WebCore::DatabaseManager::databaseContext):
(WebCore::logOpenDatabaseError):
(WebCore::DatabaseManager::openDatabaseBackend):
(WebCore::DatabaseManager::tryToOpenDatabaseBackend):
(WebCore::DatabaseManager::openDatabase):
(WebCore::DatabaseManager::hasOpenDatabases):
(WebCore::DatabaseManager::stopDatabases):
(WebCore::DatabaseManager::logErrorMessage):
* Modules/webdatabase/DatabaseManager.h:
* Modules/webdatabase/SQLStatement.cpp:
(WebCore::SQLStatement::SQLStatement):
* Modules/webdatabase/SQLTransaction.cpp:
(WebCore::SQLTransaction::SQLTransaction):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didOpenDatabase):
* inspector/agents/InspectorDatabaseAgent.cpp:
(WebCore::InspectorDatabaseAgent::executeSQL):
2019-07-08 Chris Dumez <cdumez@apple.com>
Add threading assertion to WTF::CompletionHandler
https://bugs.webkit.org/show_bug.cgi?id=199516
Reviewed by Alex Christensen.
Update some MessagePort-related code to use WTF::Function instead of WTF::CompletionHandler
since the callback is always called on the main thread, even when it was created on a
worker thread. Ideally, this code would be refactored so that the callback gets called on
the worker thread directly.
* dom/messageports/MessagePortChannel.cpp:
(WebCore::MessagePortChannel::checkRemotePortForActivity):
* dom/messageports/MessagePortChannel.h:
* dom/messageports/MessagePortChannelProvider.h:
* dom/messageports/MessagePortChannelProviderImpl.cpp:
(WebCore::MessagePortChannelProviderImpl::checkRemotePortForActivity):
* dom/messageports/MessagePortChannelProviderImpl.h:
* dom/messageports/MessagePortChannelRegistry.cpp:
(WebCore::MessagePortChannelRegistry::checkRemotePortForActivity):
* dom/messageports/MessagePortChannelRegistry.h:
2019-07-08 Charlie Turner <cturner@igalia.com>
REGRESSION(r243197): [GStreamer] Web process hangs when scrolling twitter timeline which contains HLS videos
https://bugs.webkit.org/show_bug.cgi?id=197558
Reviewed by Xabier Rodriguez-Calvar.
Not covered, I have a test locally that would probably trigger the
deadlock if the network requests took a realistic amount of time,
but from a local webserver the window of time to hit this deadlock
is too narrow.
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webkit_web_src_init): Make the websrc start asynchronously, this
allows the main thread to be free to complete resource loader
setup.
(webKitWebSrcCreate): Calling start() from the create() vfunc is a
recipe for deadlock, since BaseSrc holds the streaming lock during
seeks, and then calls create(). In these cases, we do not want to
notify async-completion, since we've already completed from the
necessarily preceeding start() vfunc, and calling it again would
require the stream-lock and deadlock us.
(webKitWebSrcStart): Refactor to use webKitWebSrcMakeRequest, but
ensuring that we do perform an async-complete notification.
(webKitWebSrcMakeRequest): What Start() used to be, but now can be
toggled when to notify of async-completion. Start() no longer
blocks, since the return value of initiating a resource loader is
of no interest to the callers.
(webKitWebSrcCloseSession): Similarly to Start(), we do not need
to wait for the completion of cancelled net requests.
2019-07-08 Chris Dumez <cdumez@apple.com>
Unable to play videos on xfinity.com/stream on macOS Catalina
https://bugs.webkit.org/show_bug.cgi?id=199576
<rdar://problem/50101264>
Reviewed by Alex Christensen.
Enable invalidate Fetch signal quirk for all sites as the blacklist is getting too large and
we are finding too much breakage too late in the release cycle.
* Modules/fetch/FetchRequest.cpp:
(WebCore::processInvalidSignal):
* page/Quirks.cpp:
(WebCore::Quirks::shouldIgnoreInvalidSignal const):
2019-07-08 Youenn Fablet <youenn@apple.com>
MediaStreamTrackPrivate should always call readyStateChanged on the main thread
https://bugs.webkit.org/show_bug.cgi?id=199538
<rdar://problem/52709106>
Reviewed by Eric Carlson.
MediaStreamTrackPrivate is sometimes calling readyStateChanged in a
background thread inside its audioSamplesAvailable method.
Instead of doing that, we hop to the main thread to call readyStateChanged.
Once the call is made in the main thread, MediaStreamTrackPrivate will
send the audio samples to its observers.
To make mock audio source closer to real capture audio sources,
audioSamplesAvailable is called on a background thread.
RealtimeMediaSource is updated to always be destroyed in the main
run loop since it is WebKit2 only.
Covered by existing tests and making sure the mock audio source calls
the audioSamplesAvailable method on a background thread.
* platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::videoSampleAvailable):
(WebCore::MediaStreamTrackPrivate::audioSamplesAvailable):
* platform/mediastream/MediaStreamTrackPrivate.h:
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::scheduleDeferredTask):
scheduleDeferredTask may be called from a background thread.
It is thus safer to ref the source instead of creating a weak pointer.
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
(WebCore::MockRealtimeAudioSourceMac::MockRealtimeAudioSourceMac):
(WebCore::MockRealtimeAudioSourceMac::emitSampleBuffers):
(WebCore::MockRealtimeAudioSourceMac::reconfigure):
(WebCore::MockRealtimeAudioSourceMac::render):
(WebCore::MockRealtimeAudioSourceMac::settingsDidChange):
* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::MockRealtimeAudioSource):
(WebCore::MockRealtimeAudioSource::tick):
* platform/mock/MockRealtimeAudioSource.h:
2019-07-08 Youenn Fablet <youenn@apple.com>
Register a MediaStreamTrack as media producer only if it is a capture track
https://bugs.webkit.org/show_bug.cgi?id=199566
Reviewed by Eric Carlson.
MediaStreamTrack registration as a media producer is only useful for capture tracks.
Otherwise, the audio/video playing state is computed through HTMLMediaElement.
Do not register MediaStreamTrack as a media producer if it is not a capture track.
Set the muted state of the track before registering it as an audio
producer. Otherwise, it might create unnecessary small change of playing state.
Covered by existing tests.
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::~MediaStreamTrack):
* Modules/mediastream/MediaStreamTrack.h:
2019-07-08 Simon Fraser <simon.fraser@apple.com>
YouTube embedding iframes in WebView sometimes go blank when the video starts playing
https://bugs.webkit.org/show_bug.cgi?id=199600
rdar://problem/47806012
Reviewed by Tim Horton.
With some combinations of nested iframes that are being resized from empty, and toggling into
compositing mode, we'd fail to update compositing in the iframe's enclosing document, so never
host the iframes's layers.
Fix by moving some widget-resize-related code into RenderLayerCompositor::widgetDidChangeSize(),
and adding code to schedule a compositing update.
I was unable to come up with a layout test for this.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::widgetDidChangeSize):
* rendering/RenderLayerCompositor.h:
* rendering/RenderWidget.cpp:
(WebCore::RenderWidget::setWidgetGeometry):
2019-07-08 Antoine Quint <graouts@apple.com>
[Pointer Events] Enable only on the most recent version of the supported iOS family
https://bugs.webkit.org/show_bug.cgi?id=199562
<rdar://problem/52766511>
Reviewed by Dean Jackson.
* Configurations/FeatureDefines.xcconfig:
2019-07-08 Philippe Normand <pnormand@igalia.com>
[GStreamer] The CREATE_TRACK macro is messed up
https://bugs.webkit.org/show_bug.cgi?id=199356
Reviewed by Xabier Rodriguez-Calvar.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::updateTracks): Fix the
CREATE_TRACK macro for !VIDEO_TRACK builds.
2019-07-07 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] Difficult to control videos on iqiyi.com as the actions are mouse hover
https://bugs.webkit.org/show_bug.cgi?id=199542
<rdar://problem/51886813>
Reviewed by Simon Fraser.
Decouple isVisuallyHidden and isConsideredVisible. Just because an element is not visually hidden (1px wide content)
it is not necessarily qualified to be visible in the context of hover heuristic (e.g. iqiyi.com brings up a 1px wide
clickable element when hovering over the scrubber. This element is clearly not designed to be actionable.)
Tests: fast/events/touch/ios/content-observation/tap-on-1px-height-content.html
fast/events/touch/ios/content-observation/tap-on-1px-width-content.html
* dom/Node.cpp:
(WebCore::Node::defaultEventHandler):
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::isVisuallyHidden):
(WebCore::ContentChangeObserver::isConsideredVisible):
(WebCore::ContentChangeObserver::didAddTransition):
(WebCore::ContentChangeObserver::didFinishTransition):
(WebCore::ContentChangeObserver::willDestroyRenderer):
(WebCore::ContentChangeObserver::StyleChangeScope::StyleChangeScope):
(WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope):
(WebCore::ContentChangeObserver::isConsideredHidden): Deleted.
* page/ios/ContentChangeObserver.h:
2019-07-07 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Introduce splitPosition to LineLayout
https://bugs.webkit.org/show_bug.cgi?id=199558
<rdar://problem/52737649>
Reviewed by Antti Koivisto.
This is in preparation for breaking runs at line end.
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::LineInput::LineInput):
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
(WebCore::Layout::InlineFormattingContext::LineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::LineLayout::computedIntrinsicWidth const):
2019-07-07 Zalan Bujtas <zalan@apple.com>
[LFC] Fix formatting context root for inflow positioned inline containers
https://bugs.webkit.org/show_bug.cgi?id=199551
<rdar://problem/52728868>
Reviewed by Antti Koivisto.
Relatively positioned (inflow) inline container lives in the formatting context where its parent lives unless
the parent establishes a formatting context. This is slightly different from the usual behavior which is containing block driven.
div id=outer style="position: absolute">><div id=inner><span style="position: relative">content</span></div></div>
While the relatively positioned inline container (span) is placed relative to its containing block "outer", it lives in the inline formatting context established by "inner".
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::layoutOutOfFlowDescendants const):
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::formattingContextRoot const):
* layout/layouttree/LayoutBox.h:
* layout/layouttree/LayoutInlineContainer.cpp:
(WebCore::Layout::InlineContainer::formattingContextRoot const):
* layout/layouttree/LayoutInlineContainer.h:
2019-07-06 Simon Fraser <simon.fraser@apple.com>
Long hang when loading a cnn.com page on iOS
https://bugs.webkit.org/show_bug.cgi?id=199556
Reviewed by Zalan Bujtas.
Loading https://edition.cnn.com/travel/article/brussels-airlines-flight-to-nowhere/index.html in the iOS 13 sim
results in a long hang under OverlapMapContainer::append(). We were creating pathological clipping scopes with
thousands of entries, because OverlapMapContainer::mergeClippingScopesRecursive() had a logic error where
it added 'sourceScope' to the child instead of 'sourceChildScope'. Add a new assertion to detect that case.
I wasn't able to create a testcase that caused a hang, but a number of existing tests would have
hit the assertion.
* rendering/LayerOverlapMap.cpp:
(WebCore::OverlapMapContainer::ClippingScope::addChild):
(WebCore::OverlapMapContainer::mergeClippingScopesRecursive):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::flushPendingLayerChanges): Drive-by fix: m_overflowControlsHostLayer is null on iOS, so use rootGraphicsLayer().
2019-07-05 Youenn Fablet <youenn@apple.com>
Carvana.com needs the fetch AbortSignal quirk
https://bugs.webkit.org/show_bug.cgi?id=199540
Reviewed by Chris Dumez.
Manually tested.
* page/Quirks.cpp:
(WebCore::Quirks::shouldIgnoreInvalidSignal const):
2019-07-05 Robin Morisset <rmorisset@apple.com>
[WHLSL] The checker does not need to keep a separate m_typeAnnotations map
https://bugs.webkit.org/show_bug.cgi?id=199537
Reviewed by Myles C. Maxfield.
Nothing is ever deleted from it, and all of its contents are eventually copied into the expressions.
We might as well put the type annotations directly into the expressions in the first place.
It is about a 5% speedup of the checker.
No new test as there is no inteded functional change.
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::Checker::assignTypes):
(WebCore::WHLSL::Checker::getInfo):
(WebCore::WHLSL::Checker::assignType):
(WebCore::WHLSL::Checker::forwardType):
(WebCore::WHLSL::Checker::visit):
2019-07-05 Youenn Fablet <youenn@apple.com> and Simon Fraser <simon.fraser@apple.com>
Trigger a compositing update when video element is changing
https://bugs.webkit.org/show_bug.cgi?id=199522
<rdar://problem/47297159>
Reviewed by Simon Fraser.
Test: compositing/video/video-update-rendering.html
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::contentChanged):
2019-07-05 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, fix -Wmisleading-indentation warning introduced in r246764
https://bugs.webkit.org/show_bug.cgi?id=199173
<rdar://problem/45968770>
* contentextensions/ContentExtensionsBackend.cpp:
(WebCore::ContentExtensions::ContentExtensionsBackend::processContentRuleListsForLoad):
2019-07-05 Timothy Hatcher <timothy@apple.com>
Mail's use of punchOutWhiteBackgroundsInDarkMode not working on iOS.
https://bugs.webkit.org/show_bug.cgi?id=199534
rdar://problem/52586836
Reviewed by Simon Fraser.
Tests: css3/color-filters/punch-out-white-backgrounds.html
* dom/Document.cpp:
(WebCore::Document::compositeOperatorForBackgroundColor const): Added.
Use CompositeDestinationOut for transparent frames, otherwise CompositeDestinationIn.
* dom/Document.h:
* rendering/InlineFlowBox.cpp:
(WebCore::InlineFlowBox::paintBoxDecorations): Use compositeOperatorForBackgroundColor.
* rendering/RenderBox.cpp:
(WebCore::RenderBox::paintRootBoxFillLayers): Ditto.
(WebCore::RenderBox::paintBackground): Ditto.
* rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::paintBackgroundsBehindCell): Ditto.
2019-07-05 Jer Noble <jer.noble@apple.com>
Revert change to block playback when process is ostensibly "suspended".
https://bugs.webkit.org/show_bug.cgi?id=199530
Reviewed by Eric Carlson.
In r243958, a drive-by-fix was added that blocked playback when the WebProcess thought it
was susposed to be suspended. The intent was to keep the AVAudioSession for the process
from being activated just before the process was suspended, and thus avoid receiving an
"interruption" and having the AVAudioSession deactivated out from under us upon resuming.
Unfortunately, this caused problems when another process resumes the WebContent process
in order to start playback; namely the Now Playing UI's play button. Because we may receive
the play command long before whe notice that we've been resumed, the WebContent process
may refuse to honor the play command because it thinks its supposed to be suspended.
* platform/audio/PlatformMediaSessionManager.cpp:
(WebCore::PlatformMediaSessionManager::sessionWillBeginPlayback):
2019-07-05 Ryosuke Niwa <rniwa@webkit.org>
[iOS] Crash in WebKit::WebPage::positionInformation via Range::startPosition
https://bugs.webkit.org/show_bug.cgi?id=199503
Reviewed by Wenson Hsieh.
* editing/Editor.cpp:
(WebCore::Editor::compositionRange const): Added a FIXME.
2019-07-02 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Standard library is too big to directly include in WebCore
https://bugs.webkit.org/show_bug.cgi?id=198186
<rdar://problem/51288898>
Reviewed by Saam Barati.
This patch adds almost the entire remainder of the standard library. There are a few
pieces missing:
- step() because of https://bugs.webkit.org/show_bug.cgi?id=199289
- sign() also because of https://bugs.webkit.org/show_bug.cgi?id=199289
- faceforward() because it calls sign()
- Some of the more rarely-used texturing functions (e.g. Gather()) https://bugs.webkit.org/show_bug.cgi?id=195813
- RWTextures https://bugs.webkit.org/show_bug.cgi?id=198985
There were two problems with adding so many standard library functions:
- We didn't want to increase the WebCore binary size that much
- Compiling all the functions at runtime took 7 seconds, which is much too long
This patch addresses the first problem by gzipping the standard library before including it in the binary.
At runtime, we use libcompression to unzip it.
To address the second problem, we did some analysis and found that 14% of that 7 seconds was simply
destroying all the AST nodes. Even if we eliminated all processing of the AST, simply having the AST
of the entire standard library built and destroyed would still be too slow. Therefore, this patch limits
which parts of the standard library get parsed in the first place. All the functions in the standard library
file are sorted by name, and each group of functions with the same name are preceeded by a comment of the
form /* Functions named xyz */. At build time, a Python script looks for all these comments, and builds a
map from function name to character offset inside the file where those functions begin. At run time, we
parse the user program first, look for all function calls within it, and look up those function call names
in the map to see which part of the standard library holds those functions. We then parse just that part.
Because the standard library can call other functions in the standard library, we do this in a loop until
we have exhausted all the functions.
Covered by existing tests.
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make: gzip the standard library, and add a build step to generate the offset map.
* Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h:
(WebCore::WHLSL::AST::CallExpression::setOverloads):
(WebCore::WHLSL::AST::CallExpression::function): Every caller of this ASSERT()s the result. Might as well
move the ASSERT() into the function.
(WebCore::WHLSL::AST::CallExpression::setFunction):
* Modules/webgpu/WHLSL/Cocoa/WHLSLStandardLibraryUtilities.cpp: Added.
(WebCore::WHLSL::decompressStandardLibrary): Use libcompression. This is why this file is in a Cocoa/
subfolder, and is listed in SourcesCocoa.txt instead of Sources.txt.
(WebCore::WHLSL::decompressAndDecodeStandardLibrary):
(WebCore::WHLSL::NameFinder::takeFunctionNames):
(WebCore::WHLSL::includeStandardLibrary): Include only the bits of the standard library which are relevant,
as described above.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp: Only emit MSL code for functions which are actually
reached. The MSL compiler is a significant amount of our compile time, so reducing the size of the emitted
program can significantly improve compile times.
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
(WebCore::WHLSL::Metal::sharedMetalFunctions):
(WebCore::WHLSL::Metal::metalFunctions):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeFunction):
- Change how load() and store() are written. We need explicit functions because we have explicit atomic
types, which HLSL doesn't have. load() and store() aren't present in HLSL.
- Delete f16tof32 because they're probably not important and are not obvious how to implement. We can re-add
them again later if necessary.
- Various fixes to make us generate the correct MSL code for each standard library function.
* Modules/webgpu/WHLSL/WHLSLBuildStandardLibraryFunctionMap.py: Added. Build the function map as described
above.
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveByInstantiation): Previously, the standard library included an operator== for two
pointers. However, that function should be generated by the compiler instead. This fixes the bug in the
compiler which allows the compiler to correctly generate the right function. This also prompted me to file
https://bugs.webkit.org/show_bug.cgi?id=199335
(WebCore::WHLSL::checkOperatorOverload):
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLFunctionStageChecker.cpp: Update to the new function() signature.
* Modules/webgpu/WHLSL/WHLSLLexer.h: Add a new position() method to the lexer. This isn't actually used
in this patch, but it's useful when doing some analysis during parsing.
(WebCore::WHLSL::Lexer::Lexer):
(WebCore::WHLSL::Lexer::consumeToken):
(WebCore::WHLSL::Lexer::peek const):
(WebCore::WHLSL::Lexer::peekFurther const):
(WebCore::WHLSL::Lexer::position const):
(WebCore::WHLSL::Lexer::state const):
(WebCore::WHLSL::Lexer::setState):
(WebCore::WHLSL::Lexer::isFullyConsumed const): Fixes a bug where isFullyConsumed() might return true even
when there is a token in the ring buffer.
(WebCore::WHLSL::Lexer::peek): Deleted.
(WebCore::WHLSL::Lexer::peekFurther): Deleted.
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::visit): Drive-by partial fix of https://bugs.webkit.org/show_bug.cgi?id=199347
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp: Call includeStandardLibrary().
(WebCore::WHLSL::prepareShared):
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
* Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp:
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
* Modules/webgpu/WHLSL/WHLSLStandardLibraryFunctionMap.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp.
* Modules/webgpu/WHLSL/WHLSLStandardLibraryUtilities.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp.
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
2019-07-05 Youenn Fablet <youenn@apple.com>
Add fetch quirk for www.bnz.co.nz
https://bugs.webkit.org/show_bug.cgi?id=199518
rdar://problem/52230914
Reviewed by Chris Dumez.
Use fetch quirk to make bnz main page load properly.
Manually tested.
* page/Quirks.cpp:
(WebCore::Quirks::shouldIgnoreInvalidSignal const):
2019-07-05 Robin Morisset <rmorisset@apple.com>
[WHLSL] Optimize the lexer
https://bugs.webkit.org/show_bug.cgi?id=199520
Reviewed by Myles Maxfield.
This patch includes a number of small optimizations to the lexer:
- By creating two new types of Token (Invalid and EOF), we can avoid having to manipulate Optional<Token> everywhere
- By combining the lexing of identifiers, keywords and operator names, we can avoid re-reading them several times
- By storing mere offsets in the tokens instead of string views, we save space in the common case where the string view is unused (e.g. for keywords)
- By storing mere offsets in the tokens instead of line numbers, we can simplify the whitespace and comment lexing; and we can easily recompute the line number on demand
- By using templates we can avoid constructing and destructing vectors at runtime every time we call tryTypes, consumeTypes or peekTypes; as well as avoiding a call to find().
- I also hoisted the length check out of the loop in Lexer::string()
All of this combined brought the time spent in the parser when running LayoutTests/webgpu/whlsl-test-harness-test.html 5 times on my machine from 612ms to 462ms.
I also removed the 'anyCharacter' method since it was dead code.
I also removed Lexer::position(), but it is directly equivalent now to peek().startOffset.
No new tests as there is no intended functional change.
* Modules/webgpu/WHLSL/WHLSLLexer.cpp:
(WebCore::WHLSL::Lexer::Token::typeName):
(WebCore::WHLSL::Lexer::consumeTokenFromStream):
(WebCore::WHLSL::Lexer::lineNumberFromOffset):
(WebCore::WHLSL::isWhitespace):
(WebCore::WHLSL::isNewline):
(WebCore::WHLSL::Lexer::skipWhitespaceAndComments):
(WebCore::WHLSL::Lexer::digitStar const):
(WebCore::WHLSL::Lexer::completeOperatorName const):
* Modules/webgpu/WHLSL/WHLSLLexer.h:
(WebCore::WHLSL::Lexer::Lexer):
(WebCore::WHLSL::Lexer::Token::stringView):
(WebCore::WHLSL::Lexer::consumeToken):
(WebCore::WHLSL::Lexer::peek const):
(WebCore::WHLSL::Lexer::peekFurther const):
(WebCore::WHLSL::Lexer::state const):
(WebCore::WHLSL::Lexer::setState):
(WebCore::WHLSL::Lexer::isFullyConsumed const):
(WebCore::WHLSL::Lexer::errorString):
(WebCore::WHLSL::Lexer::string const):
* Modules/webgpu/WHLSL/WHLSLNameResolver.h:
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parse):
(WebCore::WHLSL::Parser::peek):
(WebCore::WHLSL::Parser::peekFurther):
(WebCore::WHLSL::Types::includes):
(WebCore::WHLSL::Types::appendNameTo):
(WebCore::WHLSL::Types<t>::includes):
(WebCore::WHLSL::Types<t>::appendNameTo):
(WebCore::WHLSL::Parser::peekTypes):
(WebCore::WHLSL::Parser::tryType):
(WebCore::WHLSL::Parser::tryTypes):
(WebCore::WHLSL::Parser::consumeType):
(WebCore::WHLSL::Parser::consumeTypes):
(WebCore::WHLSL::Parser::consumeIntegralLiteral):
(WebCore::WHLSL::Parser::parseConstantExpression):
(WebCore::WHLSL::Parser::parseTypeArgument):
(WebCore::WHLSL::Parser::parseTypeSuffixAbbreviated):
(WebCore::WHLSL::Parser::parseTypeSuffixNonAbbreviated):
(WebCore::WHLSL::Parser::parseType):
(WebCore::WHLSL::Parser::parseTypeDefinition):
(WebCore::WHLSL::Parser::parseBuiltInSemantic):
(WebCore::WHLSL::Parser::parseResourceSemantic):
(WebCore::WHLSL::Parser::parseQualifiers):
(WebCore::WHLSL::Parser::parseStructureElement):
(WebCore::WHLSL::Parser::parseStructureDefinition):
(WebCore::WHLSL::Parser::parseEnumerationDefinition):
(WebCore::WHLSL::Parser::parseEnumerationMember):
(WebCore::WHLSL::Parser::parseNativeTypeDeclaration):
(WebCore::WHLSL::Parser::parseParameter):
(WebCore::WHLSL::Parser::parseComputeFunctionDeclaration):
(WebCore::WHLSL::Parser::parseVertexOrFragmentFunctionDeclaration):
(WebCore::WHLSL::Parser::parseRegularFunctionDeclaration):
(WebCore::WHLSL::Parser::parseBlockBody):
(WebCore::WHLSL::Parser::parseSwitchCase):
(WebCore::WHLSL::Parser::parseVariableDeclaration):
(WebCore::WHLSL::Parser::parseStatement):
(WebCore::WHLSL::Parser::parseEffectfulAssignment):
(WebCore::WHLSL::Parser::parseLimitedSuffixOperator):
(WebCore::WHLSL::Parser::parseSuffixOperator):
(WebCore::WHLSL::Parser::completeAssignment):
(WebCore::WHLSL::Parser::parsePossibleTernaryConditional):
(WebCore::WHLSL::Parser::completePossibleLogicalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleRelationalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleShift):
(WebCore::WHLSL::Parser::completePossibleAdd):
(WebCore::WHLSL::Parser::completePossibleMultiply):
(WebCore::WHLSL::Parser::parsePossiblePrefix):
(WebCore::WHLSL::Parser::parseCallExpression):
(WebCore::WHLSL::Parser::parseTerm):
* Modules/webgpu/WHLSL/WHLSLParser.h:
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
(WebCore::WHLSL::anonymousToken):
2019-07-05 Robin Morisset <rmorisset@apple.com>
[WHLSL] Remove the phase resolveCallsInFunctions
https://bugs.webkit.org/show_bug.cgi?id=199474
Reviewed by Myles Maxfield.
This pass only stores into each property access and call expression vectors of all the functions it might be calling, for use by the Checker afterwards.
But the checker is perfectly able to compute a pointer to these vectors by itself.
So by removing this pass, we gain the following:
- One less pass over the AST
- No need to copy these vectors (which can be large for heavily overloaded functions, of which there are quite a few in the stdlib)
- No need to have these vectors in the expressions, saving 24 bytes per CallExpression and 72 bytes per PropertyAccessExpression
- No need to allocate and then destroy these vectors.
No new tests as there is no intended functional change.
* Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h:
(WebCore::WHLSL::AST::CallExpression::castReturnType):
* Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.cpp:
(WebCore::WHLSL::AutoInitialize::visit):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveFunction):
(WebCore::WHLSL::Checker::finishVisiting):
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::NameResolver):
(WebCore::WHLSL::NameResolver::visit):
* Modules/webgpu/WHLSL/WHLSLNameResolver.h:
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
2019-07-05 Youenn Fablet <youenn@apple.com>
[iOS] Local capture MediaStreamTrack does not render in portrait mode
https://bugs.webkit.org/show_bug.cgi?id=199519
<rdar://problem/52689720>
Reviewed by Eric Carlson.
RealtimeVideoSource was badly computing its size in case of rotation.
Whenever its underlying source is notifying of settings change,
compute the size and transpose it only in left/right case.
Update mock video source to cover that case.
Covered by updated test.
* platform/mediastream/RealtimeVideoSource.cpp:
(WebCore::RealtimeVideoSource::sourceSettingsChanged):
* platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
* platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
(WebCore::MockRealtimeVideoSourceMac::updateSampleBuffer):
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::settings):
(WebCore::MockRealtimeVideoSource::orientationChanged):
(WebCore::MockRealtimeVideoSource::monitorOrientation):
* platform/mock/MockRealtimeVideoSource.h:
2019-07-05 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r247115.
Breaks lldbWebKitTester (and by extension, test-webkitpy)
Reverted changeset:
"[WHLSL] Standard library is too big to directly include in
WebCore"
https://bugs.webkit.org/show_bug.cgi?id=198186
https://trac.webkit.org/changeset/247115
2019-07-05 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r247159.
IndexedDB layout tests are failing the new assert.
Reverted changeset:
"ASSERT that a sessionID is valid when encoding it"
https://bugs.webkit.org/show_bug.cgi?id=199302
https://trac.webkit.org/changeset/247159
2019-07-05 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r247123.
Caused TestWebKitAPI.Challenge.BasicProposedCredential to
fail.
Reverted changeset:
"Only allow fetching and removing session credentials from
WebsiteDataStore"
https://bugs.webkit.org/show_bug.cgi?id=199385
https://trac.webkit.org/changeset/247123
2019-07-05 Youenn Fablet <youenn@apple.com>
ASSERT that a sessionID is valid when encoding it
https://bugs.webkit.org/show_bug.cgi?id=199302
Reviewed by Darin Adler.
For IDBValue, instead of encoding an invalid session ID, encode a boolean that tells there is no sessionID.
For IDBRequestData, keep track of whether there is an IDBDatabaseIdentifier
and encode/decode accordingly to not encode an invalid sessionID.
No observable change of behavior.
* Modules/indexeddb/IDBValue.h:
(WebCore::IDBValue::sessionID const):
(WebCore::IDBValue::encode const):
(WebCore::IDBValue::decode):
* Modules/indexeddb/shared/IDBRequestData.cpp:
(WebCore::IDBRequestData::isolatedCopy):
* Modules/indexeddb/shared/IDBRequestData.h:
(WebCore::IDBRequestData::databaseIdentifier const):
(WebCore::IDBRequestData::decode):
2019-07-05 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Inline runs should be relative to the line's top/left initially
https://bugs.webkit.org/show_bug.cgi?id=199157
<rdar://problem/52053415>
Reviewed by Antti Koivisto.
Let's construct the runs relative to the line's top/left and convert them relative to the formatting root's border box top/left
when the line is being closed. When the line moves (floats etc) we don't have to move each runs individually.
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::moveLogicalLeft):
(WebCore::Layout::Line::appendInlineContainerStart):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendHardLineBreak):
2019-07-05 Antti Koivisto <antti@apple.com>
REGRESSION(r244218): desmos.com: Cannot scroll formulas region when region is scrollable
https://bugs.webkit.org/show_bug.cgi?id=199508
<rdar://problem/50925173>
Reviewed by Zalan Bujtas.
The page invokes preventDefault on simulated mouse events which stops scrolling.
To fix, add a quirk that turns simulated mouse events non-cancelable.
* dom/MouseEvent.h:
* dom/ios/MouseEventIOS.cpp:
(WebCore::MouseEvent::create):
* page/Quirks.cpp:
(WebCore::Quirks::simulatedMouseEventTypeForTarget const):
(WebCore::Quirks::shouldDispatchSimulatedMouseEventsOnTarget const): Deleted.
To avoid adding more similar functions, and for future flexibility, make this one return the type too.
* page/Quirks.h:
2019-07-05 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Empty text node should generate empty InlineTextItem
https://bugs.webkit.org/show_bug.cgi?id=199495
<rdar://problem/52643225>
Reviewed by Antti Koivisto.
Empty text nodes generate empty RenderText renderers but they don't generate inline boxes.
This patch aligns LFC with the current rendering code.
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::appendTextContent):
* layout/inlineformatting/InlineTextItem.cpp:
(WebCore::Layout::InlineTextItem::createAndAppendTextItems):
2019-07-05 Adrian Perez de Castro <aperez@igalia.com>
[ATK] Do not use C linkage for functions using C++ features
https://bugs.webkit.org/show_bug.cgi?id=199510
<rdar://problem/52674702>
Reviewed by Carlos Garcia Campos.
No new tests needed.
* accessibility/atk/WebKitAccessible.h: Move function and type declarations involving
C++ features outside of the block delimited by the G_BEGIN_DECLS and G_END_DECLS macros,
which were setting the C linkage.
2019-07-05 Antoine Quint <graouts@apple.com>
[Pointer Events] Respect pointer capture when dispatching mouse boundary events and updating :hover
https://bugs.webkit.org/show_bug.cgi?id=198999
<rdar://problem/51979477>
Reviewed by Dean Jackson.
Up until now, we would not account for pointer capture (see ​https://w3c.github.io/pointerevents/#pointer-capture) when dispatching
mouse boundary events (mouseover, mouseout, mouseenter, mouseleave) and their counterpart pointer events. We would also not account
for it when updating :hover styles.
Now, when pointer capture changes for an element, we call setCapturingMouseEventsElement() on the EventHandler such that the element
that would naturally hit-test is overridden by the pointer capture element when identifying which target to use for the dispatch of
boundary mouse events. Additionally, when calling Document::prepareMouseEvent(), we also use the pointer capture element to
pass down to Document::updateHoverActiveState() such that :hover styles are applied to the correct element.
* dom/Document.cpp:
(WebCore::Document::prepareMouseEvent): When a new event is going to be dispatched, we must run the Process Pending Capture Element
steps as mandated by the Pointer Events spec. Calling this will dispatch the appropriate pointer capture change events and also
required boundary events since EventHandler::setCapturingMouseEventsElement() calls into EventHandler::updateMouseEventTargetNode().
Since this may update the capturing mouse events element, we ensure that we call updateHoverActiveState() with a flag that indicates that.
Finally, we use the capturing mouse events element instead of the hit-testing element to pass to updateHoverActiveState() to ensure
that is has :hover styles applied.
(WebCore::Document::updateHoverActiveState): Account for the new CaptureChange flag to force the invalidation of the :hover and :active
elements chain at all times when the capturing mouse events element changed.
* dom/Document.h:
* dom/PointerEvent.h: Update PointerEvent::createForPointerCapture() to take specific parameters rather than a single PointerEvent to
set the pointerId, isPrimary and pointerType properties of the generated event. This is required to call processPendingPointerCapture()
outside of PointerEvent dispatch logic since we now call it from Document::prepareMouseEvent() where we haven't yet generated such an
event.
* page/EventHandler.cpp:
(WebCore::EventHandler::pointerCaptureElementDidChange): When a new pointer capture element is set, call updateMouseEventTargetNode()
to ensure that boundary events are fired to indicate the pointer capture state change.
(WebCore::EventHandler::prepareMouseEvent): Keep track of the last PlatformMouseEvent used to prepare a mouse event so that we can use
it when setCapturingMouseEventsElement() is called.
* page/EventHandler.h:
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::pointerCaptureElement): Since Document::prepareMouseEvent() needs to know the current pointer capture
element, add a new public method that indicates the pointer capture element if that element is contained in the provided document. We need
to provide the document since PointerCaptureController is owned by the Page and may manage several documents.
(WebCore::PointerCaptureController::dispatchEvent): Only run the Process Pending Capture Element steps when dealing with a touch or pen
event since those steps are already ran for mouse events in Document::prepareMouseEvent(). Additionally, since the element target is already
set to be the pointer capture element with the changes made to processPendingPointerCapture(), and because on iOS pointer capture is always
active, we can remove the code that would retarget the event to the pointer capture element.
(WebCore::PointerCaptureController::pointerEventWasDispatched):
(WebCore::PointerCaptureController::cancelPointer):
(WebCore::PointerCaptureController::processPendingPointerCapture): We now call into EventHandler::setCapturingMouseEventsElement() when the
capture target element changes. We must be careful to call this method prior to dispatching the "gotpointercapture" event and after dispatching
the "lostpointercapture" event so that boundary events are fired at the right time.
* page/PointerCaptureController.h:
2019-07-04 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] didFinishTransition triggers a nested style recalc via isConsideredClickable
https://bugs.webkit.org/show_bug.cgi?id=199506
<rdar://problem/52656221>
Reviewed by Ryosuke Niwa.
isConsideredClickable() may trigger style update through Node::computeEditability. Let's adjust the observer state in the next runloop.
Test: fast/events/touch/ios/content-observation/animation-end-with-visiblity-change-and-recursive-update-style.html
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::didFinishTransition):
* page/ios/ContentChangeObserver.h:
2019-07-04 Zalan Bujtas <zalan@apple.com>
[ContentChangeObserver] Limit mouseOut dispatching after synthetic click to YouTube.com
https://bugs.webkit.org/show_bug.cgi?id=199497
<rdar://problem/52361019>
Reviewed by Wenson Hsieh.
r242798 introduced synthetic mouseOut dispatching soon after sythentic click to dismiss certain type of content (e.g. video control bar on YouTube).
However on many sites, it resulted in dismissing useful content, like menu panes and other, non-clickable but informative content.
This patch limits the mouseOut dispatching to YouTube.com.
Test: fast/events/touch/ios/content-observation/mouse-out-event-should-not-fire-on-click.html
* page/Quirks.cpp:
(WebCore::Quirks::needsYouTubeMouseOutQuirk const):
* page/Quirks.h:
* page/Settings.yaml:
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setShouldDispatchSyntheticMouseOutAfterSyntheticClick):
* testing/InternalSettings.h:
* testing/InternalSettings.idl:
2019-07-04 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r247127.
Broke the watchOS build.
Reverted changeset:
"[WHLSL] Remove the phase resolveCallsInFunctions"
https://bugs.webkit.org/show_bug.cgi?id=199474
https://trac.webkit.org/changeset/247127
2019-07-03 Simon Fraser <simon.fraser@apple.com>
Some layers inside overflow:scroll don't move back to correct positions when the contents are shrunk
https://bugs.webkit.org/show_bug.cgi?id=199464
rdar://problem/52613285
Reviewed by Sam Weinig.
When an overflow scroller's content shrink and it becomes non-scrollable, the 'boundsOrigin' in
the ancestor clipping stacks of related layers wouldn't get reset to zero, leaving layers in
the wrong place, so always set boundsOrigin to zero on the clipping layers of non-overflow entries
in the ancestor clipping stack.
Test: compositing/scrolling/async-overflow-scrolling/become-non-scrollable-with-child.html
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGeometry):
2019-07-04 Konstantin Tokarev <annulen@yandex.ru>
HyphenationLibHyphen: Include GLib-related headers only for PLATFORM(GTK)
https://bugs.webkit.org/show_bug.cgi?id=199469
Reviewed by Michael Catanzaro.
Also added compile guard for a couple of functions used only in GTK port.
* platform/text/hyphen/HyphenationLibHyphen.cpp:
2019-07-03 Eric Carlson <eric.carlson@apple.com>
[MSE] Add more debug and error logging
https://bugs.webkit.org/show_bug.cgi?id=199473
<rdar://problem/52615882>
Reviewed by Jer Noble.
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::provideMediaData): Log if we don't enqueue every buffer.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::playInternal): Log if we return
without starting playback.
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::enqueueSample): Log if
prerollDecodeWithCompletionHandler fails.
2019-07-03 Simon Fraser <simon.fraser@apple.com>
RELEASE_ASSERT in WebCore: WebCore::ScrollingStateTree::insertNode()
https://bugs.webkit.org/show_bug.cgi?id=199479
rdar://problem/52392556
Reviewed by Zalan Bujtas.
Certain compositing tree updates could leave a layer with a ScrollingProxy role, but having an
AncestorClippingStack with no overflow scrolling layers - for example, a related scroller could become
scrollable, but we failed to mark the layer with the ancestor clippings stack as needing a geometry update.
When this happened updateScrollingNodeForScrollingProxyRole() would return 0, causing the next child to be
inserted with a parent of 0 (which should only happen for the root), and triggering a release assert in
ScrollingStateTree::insertNode().
Fix by ensuring that updateScrollingNodeForScrollingProxyRole() always returns the existing parentNodeID if we
don't have a new node to insert.
Test: scrollingcoordinator/scrolling-tree/scrolling-proxy-with-no-scrolling-layer.html
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateAncestorClippingStack):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingProxyRole):
2019-07-03 Konstantin Tokarev <annulen@yandex.ru>
RenderLayerCompositor.cpp should include RenderImage.h
https://bugs.webkit.org/show_bug.cgi?id=199478
Reviewed by Michael Catanzaro.
* rendering/RenderLayerCompositor.cpp:
2019-07-03 Robin Morisset <rmorisset@apple.com>
[WHLSL] Remove the phase resolveCallsInFunctions
https://bugs.webkit.org/show_bug.cgi?id=199474
Reviewed by Myles C. Maxfield.
This pass only stores into each property access and call expression vectors of all the functions it might be calling, for use by the Checker afterwards.
But the checker is perfectly able to compute a pointer to these vectors by itself.
So by removing this pass, we gain the following:
- One less pass over the AST
- No need to copy these vectors (which can be large for heavily overloaded functions, of which there are quite a few in the stdlib)
- No need to have these vectors in the expressions, saving 24 bytes per CallExpression and 72 bytes per PropertyAccessExpression
- No need to allocate and then destroy these vectors.
No new tests as there is no intended functional change.
* Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h:
(WebCore::WHLSL::AST::CallExpression::castReturnType):
* Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.cpp:
(WebCore::WHLSL::AutoInitialize::visit):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveFunction):
(WebCore::WHLSL::Checker::finishVisiting):
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::NameResolver):
(WebCore::WHLSL::NameResolver::visit):
* Modules/webgpu/WHLSL/WHLSLNameResolver.h:
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
2019-07-03 Robin Morisset <rmorisset@apple.com>
[WHLSL] Make the destructor of VariableDeclaration non-virtual
https://bugs.webkit.org/show_bug.cgi?id=199460
Reviewed by Myles C. Maxfield.
Three steps:
- Remove WHLSL::AST::Value, inlining it into its children (it is trivial, it just has one field m_origin with a getter and nothing else)
- Mark WHLSL::AST::VariableDeclaration final
- Now that it inherits from nothing and nothing can inherit from it, there is no reason for it to have any virtual method, including its destructor.
This not only saves 8 bytes from every variable declaration (for the virtual table pointer), it also should make destructing the AST at the end of compilation a bit faster by removing the virtual destructor call.
No new tests as there is no intended functional change.
* Modules/webgpu/WHLSL/AST/WHLSLAST.h:
* Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
(WebCore::WHLSL::AST::Expression::Expression):
(WebCore::WHLSL::AST::Expression::origin const):
* Modules/webgpu/WHLSL/AST/WHLSLStatement.h:
(WebCore::WHLSL::AST::Statement::Statement):
(WebCore::WHLSL::AST::Statement::origin const):
* Modules/webgpu/WHLSL/AST/WHLSLValue.h: Removed.
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
* Modules/webgpu/WHLSL/WHLSLParser.h:
* WebCore.xcodeproj/project.pbxproj:
2019-07-03 Sihui Liu <sihui_liu@apple.com>
Only allow fetching and removing session credentials from WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=199385
Reviewed by Alex Christensen.
Fetch and remove only session credentials from NSURLCredentialStorage.
Modified existing API tests: WKWebsiteDataStore.FetchPersistentCredentials
* platform/network/CredentialStorage.cpp:
(WebCore::CredentialStorage::originsWithCredentials const):
(WebCore::CredentialStorage::originsWithSessionCredentials):
(WebCore::CredentialStorage::removeSessionCredentialsWithOrigins):
(WebCore::CredentialStorage::clearSessionCredentials):
* platform/network/CredentialStorage.h:
* platform/network/mac/CredentialStorageMac.mm:
(WebCore::CredentialStorage::originsWithSessionCredentials):
(WebCore::CredentialStorage::removeSessionCredentialsWithOrigins):
(WebCore::CredentialStorage::clearSessionCredentials):
(WebCore::CredentialStorage::originsWithPersistentCredentials): Deleted.
2019-07-03 Said Abou-Hallawa <sabouhallawa@apple.com>
The destructor of CSSAnimationControllerPrivate must explicitly clear the composite animations
https://bugs.webkit.org/show_bug.cgi?id=199415
Reviewed by Simon Fraser.
After the destructor of CSSAnimationControllerPrivate exists, the non
static members are deleted. When the HashMap m_compositeAnimations is
deleted, its entries are deleted. The destructor of CompositeAnimation
calls the method CSSAnimationControllerPrivate::animationWillBeRemoved()
back through its back reference m_animationController. The non static
members of CSSAnimationControllerPrivate are being deleted and it is
incorrect to try to use any of these members after exiting the destructor.
We need to explicitly clear the composite animations before exiting the
destructor of CSSAnimationControllerPrivate.
* page/animation/CSSAnimationController.cpp:
(WebCore::CSSAnimationControllerPrivate::~CSSAnimationControllerPrivate):
2019-07-03 Jer Noble <jer.noble@apple.com>
HTMLMediaElement can hold onto display sleep assertion while process is suspended.
https://bugs.webkit.org/show_bug.cgi?id=199471
<rdar://problem/52124320>
If the WebContent process is suspended before HTMLMediaElement gets a callback telling it
that the MediaPlayer has stopped playing, the SleepDisabler may stay set (and hold a display
or system sleep assertion) for the entire duration the process is suspended, causing excess
power drain.
Add a PlatformMediaSessionClient method (and an implementation in HTMLMediaElement) which will
be called during the preperation for process suspension, and in this callback, clear the
SleepDisabler token.
Reviewed by Eric Carlson.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::shouldDisableSleep const):
(WebCore::HTMLMediaElement::processIsSuspendedChanged):
* html/HTMLMediaElement.h:
* platform/audio/PlatformMediaSession.h:
(WebCore::PlatformMediaSessionClient::processIsSuspendedChanged):
* platform/audio/PlatformMediaSessionManager.cpp:
(WebCore::PlatformMediaSessionManager::processWillSuspend):
(WebCore::PlatformMediaSessionManager::processDidResume):
* platform/audio/PlatformMediaSessionManager.h:
(WebCore::PlatformMediaSessionManager::processIsSuspended const):
2019-07-03 Jonathan Bedard <jbedard@apple.com>
[Catalina] Enable WebKit build
https://bugs.webkit.org/show_bug.cgi?id=199209
Reviewed by Darin Adler.
No new tests, Catalina test expectations will be migrated in the near future.
* WebCorePrefix.h: Exclude the header which declares SecTrustedApplicationCreateFromPath unavailable on Mac.
* crypto/mac/SerializedCryptoKeyWrapMac.mm: Ensure that we define SecTrustedApplicationCreateFromPath
before other headers declare it unavailable on Mac.
2019-07-02 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Standard library is too big to directly include in WebCore
https://bugs.webkit.org/show_bug.cgi?id=198186
<rdar://problem/51288898>
Reviewed by Saam Barati.
This patch adds almost the entire remainder of the standard library. There are a few
pieces missing:
- step() because of https://bugs.webkit.org/show_bug.cgi?id=199289
- sign() also because of https://bugs.webkit.org/show_bug.cgi?id=199289
- faceforward() because it calls sign()
- Some of the more rarely-used texturing functions (e.g. Gather()) https://bugs.webkit.org/show_bug.cgi?id=195813
- RWTextures https://bugs.webkit.org/show_bug.cgi?id=198985
There were two problems with adding so many standard library functions:
- We didn't want to increase the WebCore binary size that much
- Compiling all the functions at runtime took 7 seconds, which is much too long
This patch addresses the first problem by gzipping the standard library before including it in the binary.
At runtime, we use libcompression to unzip it.
To address the second problem, we did some analysis and found that 14% of that 7 seconds was simply
destroying all the AST nodes. Even if we eliminated all processing of the AST, simply having the AST
of the entire standard library built and destroyed would still be too slow. Therefore, this patch limits
which parts of the standard library get parsed in the first place. All the functions in the standard library
file are sorted by name, and each group of functions with the same name are preceeded by a comment of the
form /* Functions named xyz */. At build time, a Python script looks for all these comments, and builds a
map from function name to character offset inside the file where those functions begin. At run time, we
parse the user program first, look for all function calls within it, and look up those function call names
in the map to see which part of the standard library holds those functions. We then parse just that part.
Because the standard library can call other functions in the standard library, we do this in a loop until
we have exhausted all the functions.
Covered by existing tests.
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make: gzip the standard library, and add a build step to generate the offset map.
* Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h:
(WebCore::WHLSL::AST::CallExpression::setOverloads):
(WebCore::WHLSL::AST::CallExpression::function): Every caller of this ASSERT()s the result. Might as well
move the ASSERT() into the function.
(WebCore::WHLSL::AST::CallExpression::setFunction):
* Modules/webgpu/WHLSL/Cocoa/WHLSLStandardLibraryUtilities.cpp: Added.
(WebCore::WHLSL::decompressStandardLibrary): Use libcompression. This is why this file is in a Cocoa/
subfolder, and is listed in SourcesCocoa.txt instead of Sources.txt.
(WebCore::WHLSL::decompressAndDecodeStandardLibrary):
(WebCore::WHLSL::NameFinder::takeFunctionNames):
(WebCore::WHLSL::includeStandardLibrary): Include only the bits of the standard library which are relevant,
as described above.
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp: Only emit MSL code for functions which are actually
reached. The MSL compiler is a significant amount of our compile time, so reducing the size of the emitted
program can significantly improve compile times.
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
(WebCore::WHLSL::Metal::sharedMetalFunctions):
(WebCore::WHLSL::Metal::metalFunctions):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeFunction):
- Change how load() and store() are written. We need explicit functions because we have explicit atomic
types, which HLSL doesn't have. load() and store() aren't present in HLSL.
- Delete f16tof32 because they're probably not important and are not obvious how to implement. We can re-add
them again later if necessary.
- Various fixes to make us generate the correct MSL code for each standard library function.
* Modules/webgpu/WHLSL/WHLSLBuildStandardLibraryFunctionMap.py: Added. Build the function map as described
above.
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveByInstantiation): Previously, the standard library included an operator== for two
pointers. However, that function should be generated by the compiler instead. This fixes the bug in the
compiler which allows the compiler to correctly generate the right function. This also prompted me to file
https://bugs.webkit.org/show_bug.cgi?id=199335
(WebCore::WHLSL::checkOperatorOverload):
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLFunctionStageChecker.cpp: Update to the new function() signature.
* Modules/webgpu/WHLSL/WHLSLLexer.h: Add a new position() method to the lexer. This isn't actually used
in this patch, but it's useful when doing some analysis during parsing.
(WebCore::WHLSL::Lexer::Lexer):
(WebCore::WHLSL::Lexer::consumeToken):
(WebCore::WHLSL::Lexer::peek const):
(WebCore::WHLSL::Lexer::peekFurther const):
(WebCore::WHLSL::Lexer::position const):
(WebCore::WHLSL::Lexer::state const):
(WebCore::WHLSL::Lexer::setState):
(WebCore::WHLSL::Lexer::isFullyConsumed const): Fixes a bug where isFullyConsumed() might return true even
when there is a token in the ring buffer.
(WebCore::WHLSL::Lexer::peek): Deleted.
(WebCore::WHLSL::Lexer::peekFurther): Deleted.
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::visit): Drive-by partial fix of https://bugs.webkit.org/show_bug.cgi?id=199347
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp: Call includeStandardLibrary().
(WebCore::WHLSL::prepareShared):
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
* Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp:
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
* Modules/webgpu/WHLSL/WHLSLStandardLibraryFunctionMap.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp.
* Modules/webgpu/WHLSL/WHLSLStandardLibraryUtilities.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp.
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
2019-07-03 Jer Noble <jer.noble@apple.com>
Exception thrown from -[AVSampleBufferRenderSynchronizer addRenderer:], not a valid renderer.
https://bugs.webkit.org/show_bug.cgi?id=199419
<rdar://problem/52141139>
Reviewed by Eric Carlson.
Sometimes, -[AVSampleBufferDisplayLayer init] will return nil. When that happens, passing a nil
pointer to -addRenderer: will throw an exception.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayer):
2019-07-03 Robin Morisset <rmorisset@apple.com>
[WHLSL] "Semantic" should be held by a unique_ptr, not an Optional
https://bugs.webkit.org/show_bug.cgi?id=199462
Reviewed by Myles C. Maxfield.
Most StructureElement, FunctionDeclaration and (especially) VariableDeclaration don't have a 'Semantic' field.
Using an Optional<Semantic> to represent this is a major memory waste, as Semantic is 56 bytes, so Optional<Semantic> is 64 bytes!
Putting one level of indirection through a unique_ptr thus saves 56 bytes for each VariableDeclaration (and FunctionDeclaration and StructureElement) that does not have a Semantic,
at the low cost of one pointer dereference when accessing the field for those that have one.
This patch also reorders the fields of FunctionDefinition to save another 8 bytes.
No new tests as there is no intended functional change.
* Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
(WebCore::WHLSL::AST::FunctionDeclaration::FunctionDeclaration):
(WebCore::WHLSL::AST::FunctionDeclaration::semantic):
* Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
(WebCore::WHLSL::AST::ReadModifyWriteExpression::ReadModifyWriteExpression):
* Modules/webgpu/WHLSL/AST/WHLSLStructureElement.h:
(WebCore::WHLSL::AST::StructureElement::StructureElement):
(WebCore::WHLSL::AST::StructureElement::semantic):
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
(WebCore::WHLSL::AST::VariableDeclaration::VariableDeclaration):
(WebCore::WHLSL::AST::VariableDeclaration::semantic):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveWithOperatorAnderIndexer):
(WebCore::WHLSL::resolveWithOperatorLength):
(WebCore::WHLSL::resolveWithReferenceComparator):
* Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.cpp:
(WebCore::WHLSL::Gatherer::visit):
(WebCore::WHLSL::gatherEntryPointItems):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseSemantic):
* Modules/webgpu/WHLSL/WHLSLParser.h:
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
(WebCore::WHLSL::preserveVariableLifetimes):
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::wrapAnderCallArgument):
(WebCore::WHLSL::modify):
(WebCore::WHLSL::PropertyResolver::visit):
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
(WebCore::WHLSL::synthesizeArrayOperatorLength):
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
(WebCore::WHLSL::synthesizeConstructors):
* Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
(WebCore::WHLSL::synthesizeEnumerationFunctions):
* Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
(WebCore::WHLSL::synthesizeStructureAccessors):
2019-07-03 Robin Morisset <rmorisset@apple.com>
[WHLSL] WHLSL::AST::Node is useless
https://bugs.webkit.org/show_bug.cgi?id=199391
Reviewed by Dean Jackson.
It has no member, no non-trivial method, and we never access an AST node completely generically.
So WHLSL::AST::Node can be removed, as a first step towards removing the virtual table pointer from most AST nodes (and avoiding a virtual destructor call at the end of the compiler).
No new test because there is no functional change.
* Modules/webgpu/WHLSL/AST/WHLSLAST.h:
* Modules/webgpu/WHLSL/AST/WHLSLBaseFunctionAttribute.h:
* Modules/webgpu/WHLSL/AST/WHLSLBaseSemantic.h:
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMember.h:
* Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
* Modules/webgpu/WHLSL/AST/WHLSLNamedType.h:
* Modules/webgpu/WHLSL/AST/WHLSLReplaceWith.h: Renamed from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLNode.h.
(WebCore::WHLSL::AST::replaceWith):
* Modules/webgpu/WHLSL/AST/WHLSLStructureElement.h:
* Modules/webgpu/WHLSL/AST/WHLSLType.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeDefinition.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
* Modules/webgpu/WHLSL/AST/WHLSLValue.h:
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
* Modules/webgpu/WHLSL/WHLSLParser.h:
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
* WebCore.xcodeproj/project.pbxproj:
2019-07-03 Youenn Fablet <youenn@apple.com>
Strengthen updating/removing of registrations from the database
https://bugs.webkit.org/show_bug.cgi?id=199450
rdar://problem/51891395
Reviewed by Chris Dumez.
SWServerWorker is ref counted and has a ref to its SWServer.
There is thus a possibility for SWServerWorker to live longer than its SWServer.
To mitigate this, have SWServerWorker use a WeakPtr<SWServer> and
check whether SWServer is null when receiving messages from WebProcess.
Make also sure that RegistrationStore updated registration map does not get corrupted by checking
the registration keys explicitly.
Covered by existing tests.
* workers/service/ServiceWorkerRegistrationKey.h:
(WebCore::ServiceWorkerRegistrationKey::operator!= const):
(WebCore::ServiceWorkerRegistrationKey::isEmpty const):
* workers/service/server/RegistrationStore.cpp:
(WebCore::RegistrationStore::updateRegistration):
(WebCore::RegistrationStore::removeRegistration):
(WebCore::RegistrationStore::addRegistrationFromDatabase):
* workers/service/server/RegistrationStore.h:
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::workerByID const):
(WebCore::SWServer::removeRegistration):
* workers/service/server/SWServer.h:
* workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::SWServerWorker):
(WebCore::m_scriptResourceMap):
(WebCore::SWServerWorker::contextData const):
(WebCore::SWServerWorker::terminate):
(WebCore::SWServerWorker::scriptContextFailedToStart):
(WebCore::SWServerWorker::scriptContextStarted):
(WebCore::SWServerWorker::didFinishInstall):
(WebCore::SWServerWorker::didFinishActivation):
(WebCore::SWServerWorker::contextTerminated):
(WebCore::SWServerWorker::findClientByIdentifier const):
(WebCore::SWServerWorker::matchAll):
(WebCore::SWServerWorker::userAgent const):
(WebCore::SWServerWorker::claim):
(WebCore::SWServerWorker::skipWaiting):
(WebCore::SWServerWorker::setHasPendingEvents):
(WebCore::SWServerWorker::setState):
* workers/service/server/SWServerWorker.h:
(WebCore::SWServerWorker::server):
2019-07-03 Sam Weinig <weinig@apple.com>
Adopt simple structured bindings in more places
https://bugs.webkit.org/show_bug.cgi?id=199247
Reviewed by Alex Christensen.
Replaces simple uses of std::tie() with structured bindings. Does not touch
uses of std::tie() that are not initial declarations, use std::ignore or in
case where the binding is captured by a lambda, as structured bindings don't
work for those cases yet.
* css/StyleResolver.cpp:
(WebCore::checkForOrientationChange):
* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::allowInlineScript const):
(WebCore::ContentSecurityPolicy::allowInlineStyle const):
* platform/graphics/ComplexTextController.cpp:
(WebCore::ComplexTextController::adjustGlyphsAndAdvances):
* platform/graphics/PathUtilities.cpp:
(WebCore::PathUtilities::pathWithShrinkWrappedRectsForOutline):
* platform/graphics/WidthIterator.cpp:
(WebCore::WidthIterator::advanceInternal):
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontCache::createFontPlatformData):
(WebCore::FontCache::systemFallbackForCharacters):
(WebCore::FontCache::lastResortFallbackFont):
* platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:
(WebCore::FontFamilySpecificationCoreText::fontRanges const):
* platform/network/SocketStreamHandleImpl.cpp:
(WebCore::cookieDataForHandshake):
* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::selectionState):
(WebCore::createMarkedTextFromSelectionInBox):
* rendering/svg/SVGInlineTextBox.cpp:
(WebCore::SVGInlineTextBox::paintSelectionBackground):
* style/StyleResolveForDocument.cpp:
(WebCore::Style::resolveForDocument):
* svg/animation/SVGSMILElement.cpp:
(WebCore::SVGSMILElement::constructAttributeName const):
2019-07-03 Wenson Hsieh <wenson_hsieh@apple.com>
REGRESSION (iOS 13): Tapping an element with a click event handler no longer clears the selection
https://bugs.webkit.org/show_bug.cgi?id=199430
Reviewed by Tim Horton.
After <trac.webkit.org/r245067>, we no longer immediately clear the text selection when recognizing a single tap
in WKContentView, and instead only clear it out in the case where the single tap didn't result in a click event
in the web process. This fixed an issue wherein the text selection would be prematurely cleared when tapping,
but also made it such that tapping on an element with a click event handler would not cause the selection to
change, even if preventDefault() is not called on mousedown. On web pages that add a click event listener to
`document.body`, it's nearly impossible to dismiss text selections by tapping elsewhere in the body.
On macOS, this works because EventHandler::handleMousePressEventSingleClick contains logic to modify the
selection when handling a mousedown, as a part of default behavior. However, there is platform-specific logic
added in <trac.webkit.org/r233311> that avoids changing the selection when handling a synthetic mousedown on
iOS; this is because we defer to the single tap text interaction gesture on iOS, which (among other things)
provides additional support for moving the selection to word boundaries, instead of the editing position
directly under the click.
However, no such platform-specific text interaction single tap gesture exists for non-editable text, so there's
no reason we need to bail in the case where the root editable element is null. We can fix this bug without
breaking the fix in r233311 by matching macOS behavior and not bailing via early return in the case where the
single tap would move selection into non-editable text.
Tests: editing/selection/ios/clear-selection-after-tapping-on-element-with-click-handler.html
editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler.html
* page/EventHandler.cpp:
(WebCore::EventHandler::handleMousePressEventSingleClick):
2019-07-03 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r246616.
Caused http/tests/inspector/network/har/har-page.html to fail
on Catalina.
Reverted changeset:
"Web Inspector: Network: replace CFNetwork SPI with new API
where able"
https://bugs.webkit.org/show_bug.cgi?id=198762
https://trac.webkit.org/changeset/246616
2019-07-03 Andres Gonzalez <andresg_22@apple.com>
Safari hanging while loading pages - WebCore::AccessibilityRenderObject::visiblePositionRangeForLine.
https://bugs.webkit.org/show_bug.cgi?id=199434
<rdar://problem/52475140>
Reviewed by Chris Fleizach.
Tests were disabled until underlying bug is fixed.
Rolling out a workaround for CharacterIterator::advance bug because it
seems to be causing a hang in Safari.
* editing/Editing.cpp:
(WebCore::visiblePositionForIndexUsingCharacterIterator):
2019-07-02 Simon Fraser <simon.fraser@apple.com>
REGRESSION (r246723): ScrollingTreeOverflowScrollProxyNode::m_overflowScrollingNodeID is uninitialized sometimes
https://bugs.webkit.org/show_bug.cgi?id=199432
Reviewed by Antti Koivisto.
I noticed while debugging rdar://problem/52291642 that m_overflowScrollingNodeID was uninitialized in
ScrollingTreeOverflowScrollProxyNode. This could lead to the wrong node being found by m_scrollingTree->nodeForID(),
which could result in type confusion bugs.
This can happen with negative z-order layers when we fail to find their related scrolling tree node
on the first pass.
* page/scrolling/cocoa/ScrollingTreeOverflowScrollProxyNode.h:
2019-07-02 Zan Dobersek <zdobersek@igalia.com>
FetchResponse::BodyLoader should not be movable
https://bugs.webkit.org/show_bug.cgi?id=199380
Reviewed by Youenn Fablet.
The FetchResponse::BodyLoader class has a FetchLoader member that is
initialized in the start() method with the reference of the owning
FetchResponse::BodyLoader object. This reference doesn't change when
the FetchResponse::BodyLoader object is moved into a different object
and the FetchLoader unique_ptr along with it, leading to problems when
that FetchLoader tries to invoke the FetchLoaderClient methods on the
FetchResponse::BodyLoader object that's been moved from and is possibly
already destroyed.
To avoid this, the FetchResponse::BodyLoader has the move constructor
removed and is now managed through std::unique_ptr instead of Optional,
ensuring the FetchResponse::BodyLoader object itself isn't moved around.
* Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::fetch):
(WebCore::FetchResponse::BodyLoader::didSucceed):
(WebCore::FetchResponse::BodyLoader::didFail):
* Modules/fetch/FetchResponse.h:
2019-07-02 Said Abou-Hallawa <sabouhallawa@apple.com>
Assertion fires when animating the 'class' attribute of an SVG element
https://bugs.webkit.org/show_bug.cgi?id=197372
Reviewed by Ryosuke Niwa.
All instances of SVG animated properties have to share a single animVal
such that once its value is progressed, all the instances will see the
change. This was not happening for SVGAnimatedPrimitiveProperty. To do
that we need to:
-- Introduce the new template class SVGSharedPrimitiveProperty which is
derived from SVGProperty. This class manages a single primitive value.
-- Change the type of SVGAnimatedPrimitiveProperty::m_animVal to
RefPtr<SVGSharedPrimitiveProperty<PropertyType>>. The master property
creates it and all the instances hold references to the same pointer.
-- Change the type of SVGAnimatedPrimitiveProperty::m_baseVal to
Ref<SVGSharedPrimitiveProperty<PropertyType>> for simplicity and get
rid of SVGAnimatedPrimitiveProperty::m_state.
-- Override the virtual methods instanceStartAnimation() and
instanceStopAnimation() of SVGAnimatedPrimitiveProperty.
-- SVGAnimatedStringAnimator should invalidate the style of the target
element if attribute name is 'class' and when its animVal changes.
* WebCore.xcodeproj/project.pbxproj:
* svg/properties/SVGAnimatedPrimitiveProperty.h:
(WebCore::SVGAnimatedPrimitiveProperty::setBaseVal):
(WebCore::SVGAnimatedPrimitiveProperty::setBaseValInternal):
(WebCore::SVGAnimatedPrimitiveProperty::baseVal const):
(WebCore::SVGAnimatedPrimitiveProperty::setAnimVal):
(WebCore::SVGAnimatedPrimitiveProperty::animVal const):
(WebCore::SVGAnimatedPrimitiveProperty::animVal):
(WebCore::SVGAnimatedPrimitiveProperty::currentValue const):
(WebCore::SVGAnimatedPrimitiveProperty::SVGAnimatedPrimitiveProperty):
(WebCore::SVGAnimatedPrimitiveProperty::ensureAnimVal):
* svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
* svg/properties/SVGAttributeAnimator.cpp:
(WebCore::SVGAttributeAnimator::invalidateStyle):
(WebCore::SVGAttributeAnimator::applyAnimatedStylePropertyChange):
(WebCore::SVGAttributeAnimator::removeAnimatedStyleProperty):
* svg/properties/SVGAttributeAnimator.h:
* svg/properties/SVGSharedPrimitiveProperty.h: Added.
(WebCore::SVGSharedPrimitiveProperty::create):
(WebCore::SVGSharedPrimitiveProperty::value const):
(WebCore::SVGSharedPrimitiveProperty::value):
(WebCore::SVGSharedPrimitiveProperty::setValue):
(WebCore::SVGSharedPrimitiveProperty::SVGSharedPrimitiveProperty):
2019-07-02 Andres Gonzalez <andresg_22@apple.com>
Enhance support of aria-haspopup per ARIA 1.1 specification.
https://bugs.webkit.org/show_bug.cgi?id=199216
<rdar://problem/46221342>
Reviewed by Chris Fleizach.
Test button-with-aria-haspopup-role.html was expanded to cover testing
of new functionality.
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::popupValue const): replaces hasPopupValue.
(WebCore::AccessibilityObject::hasPopupValue const): Deleted.
* accessibility/AccessibilityObject.h:
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::hasPopup const): method rename.
* accessibility/atk/WebKitAccessible.cpp:
(webkitAccessibleGetAttributes): method rename.
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityPopupValue]):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
2019-07-02 Saam Barati <sbarati@apple.com>
[WHLSL] Import bitwise bool tests
https://bugs.webkit.org/show_bug.cgi?id=199093
Reviewed by Myles C. Maxfield.
Add standard library functions for:
- bool bit ops
- converting from bool to number
- converting from number to bool
Test: webgpu/whlsl-bitwise-bool-ops.html
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
2019-07-02 Takashi Komori <Takashi.Komori@sony.com>
[Curl] Fix CookieJarCurl::getRawCookie.
https://bugs.webkit.org/show_bug.cgi?id=199300
Reviewed by Fujii Hironori.
On wincairo some cookie information was not displayed in WebInspector's storage tab as
CookieJarCurl::getRawCookies was calling CookieJarDB::searchCookies with wrong arguments.
This patch fixes it.
Test: http/tests/inspector/page/get-cookies.html
* platform/network/curl/CookieJarCurl.cpp:
(WebCore::CookieJarCurl::getRawCookies const):
2019-07-02 Robin Morisset <rmorisset@apple.com>
[WHLSL] the initializer in VariableDeclaration should be a std::unique_ptr, not Optional<UniqueRef<..>>
https://bugs.webkit.org/show_bug.cgi?id=199389
Reviewed by Sam Weinig.
Optional<UniqueRef<..>> is not only semantically weird (UniqueRef is basically a unique_ptr that promises not to be null), but also inefficient, wasting 8 bytes for the boolean in Optional.
It is a pattern that appears throughout the AST. In this patch I start by removing it in a fairly simple spot: the initializer for VariableDeclaration.
No test because there is no intended functional change.
* Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
(WebCore::WHLSL::AST::ReadModifyWriteExpression::ReadModifyWriteExpression):
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
(WebCore::WHLSL::AST::VariableDeclaration::VariableDeclaration):
(WebCore::WHLSL::AST::VariableDeclaration::initializer):
(WebCore::WHLSL::AST::VariableDeclaration::takeInitializer):
(WebCore::WHLSL::AST::VariableDeclaration::setInitializer):
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.cpp:
(WebCore::WHLSL::AutoInitialize::visit):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveWithOperatorAnderIndexer):
(WebCore::WHLSL::resolveWithOperatorLength):
(WebCore::WHLSL::resolveWithReferenceComparator):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseParameter):
(WebCore::WHLSL::Parser::parseVariableDeclaration):
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::wrapAnderCallArgument):
(WebCore::WHLSL::modify):
(WebCore::WHLSL::PropertyResolver::visit):
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
(WebCore::WHLSL::synthesizeArrayOperatorLength):
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
(WebCore::WHLSL::synthesizeConstructors):
* Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
(WebCore::WHLSL::synthesizeEnumerationFunctions):
* Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
(WebCore::WHLSL::synthesizeStructureAccessors):
2019-07-02 Jer Noble <jer.noble@apple.com>
Pipe suport for 'cenc' init data type into CDMFairPlayStreaming
https://bugs.webkit.org/show_bug.cgi?id=199381
Reviewed by Eric Carlson.
Expose the parsing of 'cenc' init data from InitDataRegistry, so it can be used in the
evaluation steps inside CDMFairPlayStreaming.
+ Add a new method, extractPsshBoxesFromCenc() which returns an optional array of
unique_ptrs to different types of ISOPSSHBoxes.
+ Add a peekScheme() method to ISOPSSHBox so that we can create the correct subclass
of ISOPSSHBox from the above method.
+ Remove an extra definition of fairPlaySystemID() from CDMFairPlayStreaming.
+ Add 'cenc' to the list of supported types in CDMPrivateFairPlayStreaming::vaildInitDataTypes().
+ Add support for 'cenc' in CDMPrivateFairPlayStreaming::supportsInitData().
+ Format the 'cenc' init data as an encodec-JSON structure for AVContentKeySession.
+ Update the ISOFairPlayStreamingKeyRequestInfoBox to be a ISOFullBox.
+ Update the box name of ISOFairPlayStreamingInitDataBox.
* Modules/encryptedmedia/InitDataRegistry.cpp:
(WebCore::InitDataRegistry::extractPsshBoxesFromCenc):
(WebCore::InitDataRegistry::extractKeyIDsCenc):
(WebCore::InitDataRegistry::sanitizeCenc):
(WebCore::InitDataRegistry::cencName):
(WebCore::InitDataRegistry::keyidsName):
(WebCore::InitDataRegistry::webmName):
(WebCore::extractKeyIDsCenc): Deleted.
(WebCore::sanitizeCenc): Deleted.
* Modules/encryptedmedia/InitDataRegistry.h:
(WebCore::SourceBuffer::changeType):
* platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:
(WebCore::validInitDataTypes):
(WebCore::CDMPrivateFairPlayStreaming::supportsInitData const):
(WebCore::CDMPrivateFairPlayStreaming::fairPlaySystemID): Deleted.
* platform/graphics/avfoundation/CDMFairPlayStreaming.h:
* platform/graphics/avfoundation/ISOFairPlayStreamingPsshBox.h:
(isType):
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::requestLicense):
* platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.cpp:
(WebCore::ISOProtectionSystemSpecificHeaderBox::peekSystemID):
* platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.h:
2019-07-02 Daniel Bates <dabates@apple.com>
[iOS] Cannot tab cycle through credit card fields on antonsvpatisserie.com checkout page
https://bugs.webkit.org/show_bug.cgi?id=196053
<rdar://problem/49093034>
Reviewed by Wenson Hsieh.
Remove the iOS override for isKeyboardFocusable() so that the focus controller allows
iframes to be keyboard focusable.
Tests: fast/events/ios/tab-cycle.html
fast/events/ios/tab-into-text-field-inside-iframe.html
* html/HTMLIFrameElement.h:
2019-07-02 Daniel Bates <dabates@apple.com>
Left and right option key has Unidentified key identifier
https://bugs.webkit.org/show_bug.cgi?id=199392
<rdar://problem/52497604>
Reviewed by Wenson Hsieh.
Fix up switch case for left Option key and add a case statement for the right Option key.
* platform/ios/PlatformEventFactoryIOS.mm:
(WebCore::codeForKeyEvent):
2019-07-02 Antti Koivisto <antti@apple.com>
Crash when adding inline stylesheet to shadow tree in document with null base URL
https://bugs.webkit.org/show_bug.cgi?id=199400
Reviewed by Zalan Bujtas.
We compute CSSParserContextHash for the inline stylesheet cache but that hits a nullptr crash
if the document happens to have null base URL (which is uncommon but possible).
Test: fast/shadow-dom/stylesheet-in-shadow-without-base-url-crash.html
* css/parser/CSSParserContext.h:
(WebCore::CSSParserContextHash::hash):
Null check the base URL (like other strings), it is a valid case.
2019-07-02 Devin Rousso <drousso@apple.com>
Web Inspector: Debug: "Reset Web Inspector" should also clear the saved window size and attachment side
https://bugs.webkit.org/show_bug.cgi?id=198956
Reviewed by Matt Baker.
* inspector/InspectorFrontendClient.h:
* inspector/InspectorFrontendClientLocal.h:
* inspector/InspectorFrontendClientLocal.cpp:
(WebCore::InspectorFrontendClientLocal::Settings::deleteProperty): Added.
(WebCore::InspectorFrontendClientLocal::resetWindowState): Added.
* inspector/InspectorFrontendHost.idl:
* inspector/InspectorFrontendHost.h:
* inspector/InspectorFrontendHost.cpp:
(WebCore::InspectorFrontendHost::reset): Added.
2019-07-01 Zalan Bujtas <zalan@apple.com>
[Text autosizing] [iPadOS] AutosizeStatus::idempotentTextSize returns the computed font size in certain cases.
https://bugs.webkit.org/show_bug.cgi?id=199382
<rdar://problem/52483097>
Reviewed by Wenson Hsieh.
Adjust the font size on the style only when the autosized value is different from the computed value.
* css/StyleResolver.cpp:
(WebCore::StyleResolver::adjustRenderStyleForTextAutosizing):
2019-07-01 Chris Dumez <cdumez@apple.com>
It should not be possible to trigger a load while in the middle of restoring a page in PageCache
https://bugs.webkit.org/show_bug.cgi?id=199190
<rdar://problem/52114552>
Reviewed by Brady Eidson.
Test: http/tests/security/navigate-when-restoring-cached-page.html
* history/CachedFrame.cpp:
(WebCore::CachedFrame::open):
Stop attaching the cached document before calling FrameLoader::open() given that the previous document
is still attached to the frame at this point. This avoids having 2 documents attached to the same frame
during a short period of time.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::open):
We now attach the cached document to the frame *after* calling FrameLoader::clear(), which means that
the previous document now has been detached from this frame.
(WebCore::FrameLoader::detachChildren):
As per the HTML specification [1], an attempt to navigate should fail if the prompt to unload algorithm
is being run for the active document of browsingContext. Note that the "prompt to unload" algorithm [2]
includes firing the 'unload' event in the current document and in all the documents in the subframes.
As a result, FrameLoader::detachChildren() is the right prevent such navigations. We were actually trying
to do this via the SubframeLoadingDisabler stack variable inside detachChildren(). The issue is that this
only prevents navigation in the subframes (i.e. <iframe> elements), not the main frame. As a result,
script would be able to navigate the top-frame even though detachChildren() is being called on the top
frame. To address the issue, I now create a NavigationDisabler variable in the scope of detachChildren()
when detachChildren() is called on the top frame. NavigationDisabler prevents all navigations within the
page, including navigations on the main/top frame.
[1] https://html.spec.whatwg.org/multipage/browsing-the-web.html#navigate
[2] https://html.spec.whatwg.org/multipage/browsing-the-web.html#prompt-to-unload-a-document
2019-07-01 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r246844.
Broke 12 tests in imported/w3c/web-platform-
tests/pointerevents/
Reverted changeset:
"[Pointer Events] Respect pointer capture when dispatching
mouse boundary events and updating :hover"
https://bugs.webkit.org/show_bug.cgi?id=198999
https://trac.webkit.org/changeset/246844
2019-07-01 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r246849.
12 tests broken in r246844 require this to be rolled out.
Reverted changeset:
"[Pointer Events] Respect pointer capture when dispatching
mouse boundary events and updating :hover"
https://bugs.webkit.org/show_bug.cgi?id=198999
https://trac.webkit.org/changeset/246849
2019-07-01 Alex Christensen <achristensen@webkit.org>
Null check provisionalItem in FrameLoader::continueLoadAfterNavigationPolicy
https://bugs.webkit.org/show_bug.cgi?id=199327
<rdar://problem/48262384>
Reviewed by Darin Adler.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
Sometimes provisionalItem is null. Let's not crash.
2019-07-01 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r246958.
Broke inspector/dom/getAccessibilityPropertiesForNode.html
Reverted changeset:
"Enhance support of aria-haspopup per ARIA 1.1 specification."
https://bugs.webkit.org/show_bug.cgi?id=199216
https://trac.webkit.org/changeset/246958
2019-07-01 Brady Eidson <beidson@apple.com>
More judiciously handle clearing/creation of DOMWindows for new Documents.
<rdar://problem/51665406> and https://bugs.webkit.org/show_bug.cgi?id=198786
Reviewed by Chris Dumez.
* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::executeIfJavaScriptURL):
* loader/DocumentWriter.cpp:
(WebCore::DocumentWriter::replaceDocumentWithResultOfExecutingJavascriptURL): Rename for clarity.
(WebCore::DocumentWriter::begin): Handle DOMWindow taking/creation inside FrameLoader::clear via a lambda.
(WebCore::DocumentWriter::replaceDocument): Deleted.
* loader/DocumentWriter.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::clear): Take a "handleDOMWindowCreation" lambda to run after clearing the previous document.
* loader/FrameLoader.h:
2019-07-01 Zalan Bujtas <zalan@apple.com>
[iPadOS] Tapping on the bottom part of youtube video behaves as if controls were visible
https://bugs.webkit.org/show_bug.cgi?id=199349
<rdar://problem/51955744>
Reviewed by Simon Fraser.
Synthetic click event should not be dispatched to a node that is initially hidden (by opacity: 0) and becomes visible by the touchStart event.
While this behaves different from macOS where opacity: 0; content is "clickable", it impoves usability on certain sites like YouTube.com.
Test: fast/events/touch/ios/content-observation/opacity-change-happens-on-touchstart-with-transition2.html
* dom/Node.cpp:
(WebCore::Node::defaultEventHandler):
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::isConsideredHidden):
(WebCore::ContentChangeObserver::reset):
(WebCore::isConsideredHidden): Deleted.
* page/ios/ContentChangeObserver.h:
(WebCore::ContentChangeObserver::setHiddenTouchTarget):
(WebCore::ContentChangeObserver::resetHiddenTouchTarget):
(WebCore::ContentChangeObserver::hiddenTouchTarget const):
2019-06-28 Brent Fulgham <bfulgham@apple.com>
[FTW] Build WebCore
https://bugs.webkit.org/show_bug.cgi?id=199199
Reviewed by Don Olmstead.
Make some minor corrections needed to get FTW WebCore to build and link.
* PlatformFTW.cmake: Added.
* platform/graphics/win/GlyphPageTreeNodeDirect2D.cpp:
(WebCore::GlyphPage::fill):
* platform/graphics/win/GraphicsContextDirect2D.cpp:
(WebCore::GraphicsContext::setURLForRect):
* platform/graphics/win/PatternDirect2D.cpp:
* platform/graphics/win/SimpleFontDataDirect2D.cpp:
* platform/image-decoders/ScalableImageDecoder.cpp:
(WebCore::ScalableImageDecoder::setTargetContext): Added stub.
* platform/image-decoders/ScalableImageDecoder.h:
* platform/network/curl/CookieJarDB.cpp:
(WebCore::CookieJarDB::hasCookies):
(WebCore::CookieJarDB::canAcceptCookie):
2019-07-01 Wenson Hsieh <wenson_hsieh@apple.com>
iOS: REGRESSION(async scroll): Caret doesn't scroll when scrolling textarea
https://bugs.webkit.org/show_bug.cgi?id=198217
<rdar://problem/51097296>
Reviewed by Simon Fraser.
Add a ScrollingLayerPositionAction argument to ScrollingTreeScrollingNode::wasScrolledByDelegatedScrolling, and
avoid bailing early in the case where ScrollingLayerPositionAction::Set is used. See the WebKit ChangeLog for
more detail.
Test: editing/selection/ios/update-selection-after-overflow-scroll.html
* page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::wasScrolledByDelegatedScrolling):
* page/scrolling/ScrollingTreeScrollingNode.h:
2019-07-01 Antti Koivisto <antti@apple.com>
REGRESSION(r240047): Overflow scrollers on WK1 fail to update their content size when it changes
https://bugs.webkit.org/show_bug.cgi?id=199360
<rdar://problem/51643386>
Reviewed by Simon Fraser.
r240047 replaced didCommitChangesForLayer() mechanism by a more narrow didChangePlatformLayerForLayer.
Unfortunately on WK1 we relied on scroll layers being invalidated after every size (and scrollbar) change.
Without this invalidation we don't call WebChromeClientIOS::addOrUpdateScrollingLayer and the UIKit delegate
that resizes the UIScrollView content.
Fix by removing the scroll layer invalidation mechanism from LegacyWebKitScrollingLayerCoordinator completely and instead
simply update all scroll layers after commit. The UIKit delegate doesn't do any significant work if nothing changes,
this was not a very meaninful optimization.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateScrollCoordinatedLayersAfterFlush):
Update all scroll layers after flush (similar to viewport constrained layers).
(WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer):
(WebCore::LegacyWebKitScrollingLayerCoordinator::updateScrollingLayer):
(WebCore::LegacyWebKitScrollingLayerCoordinator::addScrollingLayer):
(WebCore::LegacyWebKitScrollingLayerCoordinator::removeScrollingLayer):
(WebCore::LegacyWebKitScrollingLayerCoordinator::registerScrollingLayersNeedingUpdate): Deleted.
(WebCore::LegacyWebKitScrollingLayerCoordinator::didChangePlatformLayerForLayer): Deleted.
* rendering/RenderLayerCompositor.h:
2019-07-01 Philippe Normand <pnormand@igalia.com>
[GStreamer] Cannot play Bert's Bytes radio stream from http://radio.dos.nl/
https://bugs.webkit.org/show_bug.cgi?id=198376
Reviewed by Xabier Rodriguez-Calvar.
The delayed startup was due to a mix of buffering feedback
messages not handled correctly by the player. We were handling
download and streaming buffering metrics without distinction.
Range requests (used for seeking) were also triggering on-disk
buffering in some cases. The buffering percentage estimation based
on network read position was not working either because uint64_t
division doesn't return a floating point value.
No new tests, existing media tests cover this patch.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::commitLoad):
(WebCore::MediaPlayerPrivateGStreamer::play):
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::processBufferingStats):
(WebCore::MediaPlayerPrivateGStreamer::updateBufferingStatus):
(WebCore::MediaPlayerPrivateGStreamer::fillTimerFired):
(WebCore::MediaPlayerPrivateGStreamer::maxTimeLoaded const):
(WebCore::MediaPlayerPrivateGStreamer::didLoadingProgress const):
(WebCore::MediaPlayerPrivateGStreamer::updateStates):
(WebCore::MediaPlayerPrivateGStreamer::updateDownloadBufferingFlag):
(WebCore::MediaPlayerPrivateGStreamer::setPreload):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webkitWebSrcReset):
* platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:
2019-07-01 Miguel Gomez <magomez@igalia.com>
REGRESSION(r246963) GTK's debug build is broken
https://bugs.webkit.org/show_bug.cgi?id=199358
Reviewed by Michael Catanzaro.
Add traits to be able to downcast AnimatedBackingStoreClient.
* platform/graphics/nicosia/NicosiaAnimatedBackingStoreClient.h:
(Nicosia::AnimatedBackingStoreClient::AnimatedBackingStoreClient):
(Nicosia::AnimatedBackingStoreClient::type const):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::updateContentBuffers):
2019-07-01 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Fix GTK build with GSTREAMER_GL disabled after r246710
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
2019-07-01 Carlos Garcia Campos <cgarcia@igalia.com>
WebSockets: add support for sending blob messages when using web sockets platform APIs
https://bugs.webkit.org/show_bug.cgi?id=199189
Reviewed by Youenn Fablet.
* Headers.cmake: Add missing headers.
2019-07-01 Miguel Gomez <magomez@igalia.com>
[WPE][GTK] Content disappearing when using CSS transforms
https://bugs.webkit.org/show_bug.cgi?id=181757
Reviewed by Žan Doberšek.
During each layer flush, create an AnimatedBackingStoreClient instance for each layer that
has a backingStore and is to be animated, and send that client to the appropriate
TextureMapperLayer on the compositor thread. During each frame rendering, the client will
use the future layer position (currently 50ms in the future) to check whether new tiles are
required to keep the animation ongoing, and notify the appropriate CoordinatedGraphicsLayer so
it can perform a layer flush and provide new tiles.
* platform/TextureMapper.cmake:
* platform/graphics/nicosia/NicosiaAnimatedBackingStoreClient.h: Added.
* platform/graphics/nicosia/NicosiaPlatformLayer.h:
(Nicosia::CompositionLayer::flushState):
* platform/graphics/texmap/TextureMapperAnimation.cpp:
(WebCore::TextureMapperAnimation::applyKeepingInternalState):
(WebCore::TextureMapperAnimations::applyKeepingInternalState):
* platform/graphics/texmap/TextureMapperAnimation.h:
* platform/graphics/texmap/TextureMapperLayer.cpp:
(WebCore::TextureMapperLayer::computeTransformsRecursive):
(WebCore::TextureMapperLayer::setAnimatedBackingStoreClient):
(WebCore::TextureMapperLayer::syncAnimations):
* platform/graphics/texmap/TextureMapperLayer.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::~CoordinatedGraphicsLayer):
(WebCore::clampToContentsRectIfRectIsInfinite):
(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):
(WebCore::CoordinatedGraphicsLayer::requestBackingStoreUpdate):
(WebCore::CoordinatedGraphicsLayer::updateContentBuffers):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
2019-06-30 Antti Koivisto <antti@apple.com>
Use separate variables for moving and stationary scrolling relationships in RemoteLayerTreeNode
https://bugs.webkit.org/show_bug.cgi?id=199348
Reviewed by Darin Adler.
* page/scrolling/ScrollingStateStickyNode.cpp:
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::commitTreeState):
* page/scrolling/ScrollingTree.h:
(WebCore::ScrollingTree::activeOverflowScrollProxyNodes):
(WebCore::ScrollingTree::activePositionedNodes):
(WebCore::ScrollingTree::nodesWithRelatedOverflow): Deleted.
Use separate sets for overflow proxies and positioned nodes.
Use Refs to nodes instead of ids to simplify client code. This doesn't affect lifetimes, these sets are cleared
at the beginning of each commit.
* page/scrolling/cocoa/ScrollingTreeOverflowScrollProxyNode.mm:
(WebCore::ScrollingTreeOverflowScrollProxyNode::commitStateBeforeChildren):
* page/scrolling/cocoa/ScrollingTreePositionedNode.mm:
(WebCore::ScrollingTreePositionedNode::commitStateBeforeChildren):
2019-06-30 Andres Gonzalez <andresg_22@apple.com>
Enhance support of aria-haspopup per ARIA 1.1 specification.
https://bugs.webkit.org/show_bug.cgi?id=199216
<rdar://problem/46221342>
Reviewed by Chris Fleizach.
Test button-with-aria-haspopup-role.html was expanded to cover testing
of new functionality.
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::popupValue const): replaces hasPopupValue.
(WebCore::AccessibilityObject::hasPopupValue const): Deleted.
* accessibility/AccessibilityObject.h:
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::hasPopup const): method rename.
* accessibility/atk/WebKitAccessible.cpp:
(webkitAccessibleGetAttributes): method rename.
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityPopupValue]):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
2019-06-30 Zalan Bujtas <zalan@apple.com>
[LFC] Implement Layout::printLayoutTreeForLiveDocuments
https://bugs.webkit.org/show_bug.cgi?id=199343
<rdar://problem/52393047>
Reviewed by Antti Koivisto.
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::printLayoutTreeForLiveDocuments):
* page/FrameViewLayoutContext.cpp:
(WebCore::layoutUsingFormattingContext):
2019-06-22 Darin Adler <darin@apple.com>
Streamline some string code, focusing on functions that were using substringSharingImpl
https://bugs.webkit.org/show_bug.cgi?id=198898
Reviewed by Daniel Bates.
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::CSSComputedStyleDeclaration::CSSComputedStyleDeclaration): Take a StringView
instead of a String argument for the pseudo-element name. This prevents us from having
to use substringSharingImpl to strip off leading colons.
(WebCore::CSSComputedStyleDeclaration::create): Moved this function in here since it's
no longer being inlined.
* css/CSSComputedStyleDeclaration.h: Moved the create function to no longer be inlined,
since it's better to have the constructor be inlined in the create function instead.
Changed the pseudo-element name argument to be a StringView rather than a String.
Also initialize m_refCount in the class definition.
* css/CSSSelector.cpp:
(WebCore::CSSSelector::parsePseudoElementType): Take a StringView instead of a String.
* css/CSSSelector.h: Updated for the above change.
* css/SelectorPseudoTypeMap.h: Change both parse functions to take StringView. Before
one took a StringImpl and the other used const StringView&, which is not as good as
StringView.
* css/makeSelectorPseudoClassAndCompatibilityElementMap.py: Use StringView, not
const StringView&.
* css/makeSelectorPseudoElementsMap.py: Use StringView rather than StringImpl.
* css/parser/CSSParserImpl.cpp:
(WebCore::CSSParserImpl::parsePageSelector): Use a StringView for the pseudo-element
name. It was already computed as a StringView, but the old code converted it to
an AtomicString.
* css/parser/CSSParserSelector.cpp:
(WebCore::CSSParserSelector::parsePagePseudoSelector): Take a StringView, and
return a std::unique_ptr.
(WebCore::CSSParserSelector::parsePseudoElementSelector): Renamed to not mention
StringView in function name. Take a StringView, not a StringView&. Do the lowercasing
inside this function rather than having it be a caller responsibility. Don't convert
from a StringView to an AtomicString before starting to parse; only do it in the
"unknown/custom" case. Return a std::unique_ptr.
(WebCore::CSSParserSelector::parsePseudoClassSelector): Ditto.
* css/parser/CSSParserSelector.h: Make the three parse functions all take a StringView
and all return a std::unique_ptr. They were already creating objects, but before
callers just had to know to adopt.
* css/parser/CSSSelectorParser.cpp:
(WebCore::CSSSelectorParser::consumePseudo): Updated to use improved parse
functions above.
* page/DOMWindow.cpp:
(WebCore::DOMWindow::getMatchedCSSRules const): Updated to use the new
parsePseudoElementType above and use StringView::substring instead of
String::substringSharingImpl.
* platform/Length.cpp:
(WebCore::newCoordsArray): Local string that is "spacified" can't have any non-Latin-1
characters, so use LChar instead of UChar.
* rendering/RenderText.cpp:
(WebCore::convertNoBreakSpaceToSpace): Renamed for clarity. Also use constexpr
instead of inline since this is a pure function.
(WebCore::capitalize): Tighten up logic a bit.
2019-06-29 Simon Fraser <simon.fraser@apple.com>
Remove a PLATFORM(IOS_FAMILY) related to repaint offsets in composited scrolling layers
https://bugs.webkit.org/show_bug.cgi?id=199342
Reviewed by Zalan Bujtas.
Code in RenderObject::shouldApplyCompositedContainerScrollsForRepaint() adds VisibleRectContextOption::ApplyCompositedContainerScrolls
only for iOS, and RenderLayerBacking::setContentsNeedDisplayInRect() subtracts out scroll position for only iOS,
so remove this iOS-specific code.
Blame for this code mentions touch event regions, so I tested these but they use absoluteBoundingBoxRect()
which doesn't hit this code. Still, I added a layout test for touch regions inside scrolled overflow.
Existing tests exist for repaint inside scrolled overflow.
Test: fast/events/touch/ios/touch-event-regions/scrolled-overflow.html
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::shouldApplyCompositedContainerScrollsForRepaint): Deleted.
(WebCore::RenderObject::visibleRectContextForRepaint): Deleted.
* rendering/RenderObject.h:
(WebCore::RenderObject::visibleRectContextForRepaint):
2019-06-28 Tim Horton <timothy_horton@apple.com>
iOS WebKit2 find-in-page indicator doesn't move with 'overflow: scroll'
https://bugs.webkit.org/show_bug.cgi?id=175032
<rdar://problem/29346482>
Reviewed by Wenson Hsieh.
* editing/FrameSelection.cpp:
(WebCore::FrameSelection::selectionBounds const):
(WebCore::FrameSelection::revealSelection):
* editing/FrameSelection.h:
Make selectionBounds' clipToVisibleContent param an enum class.
* page/TextIndicator.cpp:
(WebCore::initializeIndicator):
Save the un-clipped selection rect; otherwise we'll frequently save 0, 0
here when finding a match that is off-screen.
2019-06-28 Zalan Bujtas <zalan@apple.com>
[Text autosizing][iPadOS] bing.com is hard to read even with boosted text because of the line height
https://bugs.webkit.org/show_bug.cgi?id=199318
<rdar://problem/51826096>
Reviewed by Wenson Hsieh.
Initial implementation of line height boosting on iPadOs. It enlarges line height in certain cases to improve readability when the text content feels too dense.
It kicks in only for relatively small text (12px) where it slightly (1.25x) changes the line height to widen the gap between lines.
* css/StyleResolver.cpp:
(WebCore::StyleResolver::adjustRenderStyleForTextAutosizing):
2019-06-28 Alex Christensen <achristensen@webkit.org>
Make getHostnamesWithCookies more robust
https://bugs.webkit.org/show_bug.cgi?id=199334
<rdar://problem/51860593>
Reviewed by Brent Fulgham.
Crash logs suggest either httpCookies is returning a nil cookie or a cookie without a domain.
This should not happen, but if it does we shouldn't crash.
* platform/network/cocoa/NetworkStorageSessionCocoa.mm:
(WebCore::NetworkStorageSession::getHostnamesWithCookies):
2019-06-28 chris fleizach <cfleizach@apple.com>
AX: Both convertToNSArray() functions in WebAccessibilityObjectWrapperBase.mm leak every NSMutableArray returned
https://bugs.webkit.org/show_bug.cgi?id=199306
Reviewed by David Kilzer.
Stop leaking every instance of convertToNSArray and return an autoreleased version.
Remove unneeded casts.
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityFindMatchingObjects:]):
* accessibility/mac/WebAccessibilityObjectWrapperBase.h:
* accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
(convertToNSArray):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper childrenVectorArray]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
2019-06-28 Wenson Hsieh <wenson_hsieh@apple.com>
Followup to r246931
https://bugs.webkit.org/show_bug.cgi?id=199331
Reviewed by Tim Horton.
Extend the site-specific quirk added in r246931 to *.sharepoint.com, so that it fixes Word for enterprise
customers as well.
* page/Quirks.cpp:
(WebCore::Quirks::shouldAvoidResizingWhenInputViewBoundsChange const):
2019-06-28 Timothy Hatcher <timothy@apple.com>
Rename effectiveAppearanceIsInactive and useInactiveAppearance to better match UIUserInterfaceLevel.
https://bugs.webkit.org/show_bug.cgi?id=199336
rdar://problem/52348938
Reviewed by Tim Horton.
* css/StyleColor.h:
* dom/Document.cpp:
(WebCore::Document::useElevatedUserInterfaceLevel const):
(WebCore::Document::styleColorOptions const):
(WebCore::Document::useInactiveAppearance const): Deleted.
* dom/Document.h:
* page/Page.cpp:
(WebCore::Page::effectiveAppearanceDidChange):
* page/Page.h:
(WebCore::Page::useElevatedUserInterfaceLevel const):
(WebCore::Page::useInactiveAppearance const): Deleted.
* platform/ios/LocalCurrentTraitCollection.h:
(WebCore::LocalCurrentTraitCollection::usingElevatedUserInterfaceLevel const):
(WebCore::LocalCurrentTraitCollection::usingBaseLevelAppearance const): Deleted.
* platform/ios/LocalCurrentTraitCollection.mm:
(WebCore::LocalCurrentTraitCollection::LocalCurrentTraitCollection):
* rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::systemColor const):
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::setUseDarkAppearanceInternal):
2019-06-28 Simon Fraser <simon.fraser@apple.com>
REGRESSION (r239984): pages with custom scrollbars also show normal scrollbars
https://bugs.webkit.org/show_bug.cgi?id=199321
<rdar://problem/52308095>
Reviewed by Timothy Hatcher.
Revert the part of r239984 that made isCustomScrollbar() virtual, since theme().registerScrollbar()
calls it from the base class constructor.
I wasn't able to make a test that tests rendering of overlay scrollbars (webkit.org/b/199323).
* platform/Scrollbar.cpp:
(WebCore::Scrollbar::Scrollbar):
* platform/Scrollbar.h:
(WebCore::Scrollbar::isCustomScrollbar const):
* rendering/RenderScrollbar.cpp:
(WebCore::RenderScrollbar::RenderScrollbar):
* rendering/RenderScrollbar.h:
2019-06-28 Wenson Hsieh <wenson_hsieh@apple.com>
Need a way for SPI clients to know when to avoid resizing to accommodate for the input view bounds
https://bugs.webkit.org/show_bug.cgi?id=199331
<rdar://problem/52116170>
Reviewed by Tim Horton.
Add a new quirk to avoid resizing the web view when input view bounds change.
* page/Quirks.cpp:
(WebCore::Quirks::shouldAvoidResizingWhenInputViewBoundsChange const):
* page/Quirks.h:
2019-06-28 Konstantin Tokarev <annulen@yandex.ru>
Remove traces of ENABLE_ICONDATABASE remaining after its removal in 219733
https://bugs.webkit.org/show_bug.cgi?id=199317
Reviewed by Michael Catanzaro.
While IconDatabase and all code using it was removed,
ENABLE_ICONDATABASE still exists as build option and C++ macro.
* Configurations/FeatureDefines.xcconfig:
* Resources/urlIcon.png: Removed file which was only used in
IconDatabase.cpp.
2019-06-28 Fujii Hironori <Hironori.Fujii@sony.com>
[Win] unresolved external symbol "JSC::JSObject::didBecomePrototype(void)" referenced in function "JSC::Structure::create(...)"
https://bugs.webkit.org/show_bug.cgi?id=199312
Reviewed by Keith Miller.
WinCairo port, clang-cl Release builds reported a following linkage error:
> WebCore.lib(UnifiedSource-4babe430-10.cpp.obj) : error LNK2019: unresolved external symbol "public: void __cdecl JSC::JSObject::didBecomePrototype(void)" (?didBecomePrototype@JSObject@JSC@@QEAAXXZ) referenced in function "public: static class JSC::Structure * __cdecl JSC::Structure::create(class JSC::VM &,class JSC::JSGlobalObject *,class JSC::JSValue,class JSC::TypeInfo const &,struct JSC::ClassInfo const *,unsigned char,unsigned int)" (?create@Structure@JSC@@SAPEAV12@AEAVVM@2@PEAVJSGlobalObject@2@VJSValue@2@AEBVTypeInfo@2@PEBUClassInfo@2@EI@Z)
No new tests because there is no behavior change.
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp: Include <JavaScriptCore/JSCInlines.h>,
and do not include headers which is included by it.
2019-06-27 Zalan Bujtas <zalan@apple.com>
REGRESSION(r244633): e-mail with "height: 100%" causes unstable layout.
https://bugs.webkit.org/show_bug.cgi?id=199303
<rdar://problem/51340927>
Reviewed by Tim Horton.
This patch restores the previous behavior (pre r244633) where we intentionally reported stale content size value to
avoid unstable layout for content like height: 100px.
* page/FrameView.cpp:
(WebCore::FrameView::autoSizeIfEnabled):
2019-06-27 Fujii Hironori <Hironori.Fujii@sony.com>
[WinCairo][MediaFoundation] Stop using soft linking for Media Foundation
https://bugs.webkit.org/show_bug.cgi?id=198783
<rdar://problem/52301843>
Unreviewed compilation warning fix. clang-cl reports:
..\..\Source\WebCore\platform\graphics\win\MediaPlayerPrivateMediaFoundation.cpp(526,10): warning: address of function 'MFCreateTopology' will always evaluate to 'true' [-Wpointer-bool-conversion]
if (!MFCreateTopology)
~^~~~~~~~~~~~~~~~
* platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
(WebCore::MediaPlayerPrivateMediaFoundation::createTopologyFromSource): Removed the pointer check of MFCreateTopology.
2019-06-27 Fujii Hironori <Hironori.Fujii@sony.com>
[WinCairo][MediaFoundation] Stop using soft linking for Media Foundation
https://bugs.webkit.org/show_bug.cgi?id=198783
Reviewed by Alex Christensen.
WinCairo is supporting Windows 7 or newer. It doesn't need soft
linking anymore.
No new tests because there is no behavior change.
* PlatformWinCairo.cmake: Added libraries to WebCore_LIBRARIES.
* platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
(WebCore::mimeTypeCache):
(WebCore::MediaPlayerPrivateMediaFoundation::setRate):
(WebCore::MediaPlayerPrivateMediaFoundation::setAllChannelVolumes):
(WebCore::MediaPlayerPrivateMediaFoundation::createSession):
(WebCore::MediaPlayerPrivateMediaFoundation::endSession):
(WebCore::MediaPlayerPrivateMediaFoundation::startCreateMediaSource):
(WebCore::MediaPlayerPrivateMediaFoundation::createTopologyFromSource):
(WebCore::MediaPlayerPrivateMediaFoundation::createOutputNode):
(WebCore::MediaPlayerPrivateMediaFoundation::createSourceStreamNode):
(WebCore::MediaPlayerPrivateMediaFoundation::updateReadyState):
(WebCore::MediaPlayerPrivateMediaFoundation::videoDisplay):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::createOptimalVideoType):
(WebCore::MediaPlayerPrivateMediaFoundation::VideoScheduler::setFrameRate):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::presentSample):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::initializeD3D):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::createD3DSample):
2019-06-27 Basuke Suzuki <Basuke.Suzuki@sony.com>
Fix build error on WebCore when disabling ENABLE_INDEXED_DATABASE.
https://bugs.webkit.org/show_bug.cgi?id=199286
Unreviewed build fix.
* testing/Internals.cpp: Make method conditional.
* testing/Internals.h: Ditto.
* testing/Internals.idl: Ditto.
2019-06-27 Simon Fraser <simon.fraser@apple.com>
Fix crash in ScrollingStateNode::insertChild()
https://bugs.webkit.org/show_bug.cgi?id=199297
rdar://problem/49415136
Reviewed by Tim Horton.
Crash data suggest that 'parent' can be deleted in ScrollingStateTree::insertNode(). To avoid this,
have ScrollingStateTree::m_stateNodeMap store RefPts, and do the same for ScrollingTree::m_nodeMap.
* page/scrolling/ScrollingStateNode.cpp:
(WebCore::ScrollingStateNode::ScrollingStateNode): The relaxAdoptionRequirement() is required
to avoid ASSERT(!m_adoptionIsRequired) when the node is added to the tree in its constructor.
* page/scrolling/ScrollingStateTree.cpp:
(WebCore::ScrollingStateTree::unparentNode):
(WebCore::ScrollingStateTree::unparentChildrenAndDestroyNode):
(WebCore::ScrollingStateTree::detachAndDestroySubtree):
(WebCore::ScrollingStateTree::stateNodeForID const):
* page/scrolling/ScrollingStateTree.h:
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::updateTreeFromStateNode):
* page/scrolling/ScrollingTree.h:
2019-06-27 Simon Fraser <simon.fraser@apple.com>
REGRESSION (r246869): ASSERTION FAILED: !renderer().hasRepaintLayoutRects() || renderer().repaintLayoutRects().m_repaintRect == renderer().clippedOverflowRectForRepaint(renderer().containerForRepaint())
https://bugs.webkit.org/show_bug.cgi?id=199274
Reviewed by Zalan Bujtas.
When layer backing sharing changes, we need to clear cached repaint rects, since they
painting root changes.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::setBackingProviderLayer):
2019-06-27 Beth Dakin <bdakin@apple.com>
Upstream use of MACCATALYST
https://bugs.webkit.org/show_bug.cgi?id=199245
rdar://problem/51687723
Reviewed by Tim Horton.
* Configurations/Base.xcconfig:
* Configurations/FeatureDefines.xcconfig:
* Configurations/SDKVariant.xcconfig:
* Configurations/WebCore.xcconfig:
* Modules/geolocation/ios/GeolocationPositionIOS.mm:
(WebCore::GeolocationPosition::GeolocationPosition):
* editing/cocoa/DictionaryLookup.mm:
(-[WebRevealHighlight drawHighlightContentForItem:context:]):
(WebCore::showPopupOrCreateAnimationController):
* editing/cocoa/WebContentReaderCocoa.mm:
* page/Navigator.h:
* page/SettingsBase.cpp:
(WebCore::SettingsBase::defaultContentChangeObserverEnabled):
* page/cocoa/MemoryReleaseCocoa.mm:
(WebCore::platformReleaseMemory):
* platform/audio/ios/AudioSessionIOS.mm:
(WebCore::AudioSession::setCategory):
(WebCore::AudioSession::routingContextUID const):
* platform/cocoa/ParentalControlsContentFilter.mm:
(WebCore::canHandleResponse):
* platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm:
(WebCore::AVAssetMIMETypeCache::isAvailable const):
* platform/graphics/avfoundation/objc/AVStreamDataParserMIMETypeCache.mm:
(WebCore::AVStreamDataParserMIMETypeCache::isAvailable const):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldDisableSleep):
* platform/graphics/cv/ImageTransferSessionVT.h:
* platform/graphics/cv/ImageTransferSessionVT.mm:
(WebCore::cvPixelFormatOpenGLKey):
(WebCore::ImageTransferSessionVT::ImageTransferSessionVT):
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::readPasteboardWebContentDataForType):
(WebCore::Pasteboard::supportedWebContentPasteboardTypes):
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::registerItemToPasteboard):
(WebCore::PlatformPasteboard::write):
* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerLayer setVideoGravity:]):
* platform/ios/WebItemProviderPasteboard.mm:
(-[WebItemProviderRegistrationInfoList itemProvider]):
(-[WebItemProviderLoadResult canBeRepresentedAsFileUpload]):
(-[WebItemProviderPasteboard numberOfFiles]):
* platform/network/cf/CertificateInfoCFNet.cpp:
(WebCore::CertificateInfo::summaryInfo const):
2019-06-27 Brent Fulgham <bfulgham@apple.com>
Correct document lifecycle while processing commands
https://bugs.webkit.org/show_bug.cgi?id=199146
<rdar://problem/52047462>
Reviewed by Darin Adler.
Protect the document while commands are being processed since script may run
during the style resolution. We should protect against this.
* dom/Document.cpp:
(WebCore::command):
2019-06-27 Jon Davis <jond@apple.com>
Add status for Web Bluetooth Scanning standards specification.
https://bugs.webkit.org/show_bug.cgi?id=199235
Reviewed by Joseph Pecoraro.
* features.json:
2019-06-27 Saam Barati <sbarati@apple.com>
Make WEBGPU enabled only on Mojave and later.
Rubber-stamped by Myles C. Maxfield.
We're going to look into re-enabling it on High Sierra in:
https://bugs.webkit.org/show_bug.cgi?id=199275
* Configurations/FeatureDefines.xcconfig:
2019-06-27 Antti Koivisto <antti@apple.com>
REGRESSION (touch-action): Can't scroll vertically when touching a horizontally-scrollable element on instagram.com
https://bugs.webkit.org/show_bug.cgi?id=199268
<rdar://problem/52246473>
Reviewed by Antoine Quint.
Test: pointerevents/ios/touch-action-region-manipulation.html
Having a restrictive touch-action value like 'pan-y' on on element and then having a descendant with
'touch-action: manipulation' computes to 'none'.
* css/StyleResolver.cpp:
(WebCore::computeEffectiveTouchActions):
For value 'manipulation' return the current effective value, similar to the reverse case above.
Set intersection should only be computed out of restrictive values (pan-x/pan-y/pinch-zoom/none).
2019-06-27 Carlos Garcia Campos <cgarcia@igalia.com>
[SOUP] Use libsoup WebSockets API
https://bugs.webkit.org/show_bug.cgi?id=199151
Reviewed by Michael Catanzaro.
Use createWebSocketChannel() from the provider also for libsoup when WEBKIT_USE_SOUP_WEBSOCKETS env var is set.
* Modules/websockets/ThreadableWebSocketChannel.cpp:
(WebCore::ThreadableWebSocketChannel::create):
2019-06-27 Devin Rousso <drousso@apple.com>
Web Inspector: throw an error if console.count/console.countReset is called with an object that throws an error from toString
https://bugs.webkit.org/show_bug.cgi?id=199252
Reviewed by Joseph Pecoraro.
Parse the arguments passed to `console.count` and `console.countReset` before sending it to
the `ConsoleClient` so that an error can be thrown if the first argument doesn't `toString`
nicely (e.g. without throwing an error).
Generate call stacks for `console.countReset` to match other `console` methods. Also do this
for `console.time`, `console.timeLog`, and `console.timeEnd`. Limit the call stack to only
have the top frame, so no unnecessary/extra data is sent to the frontend (right now, only
the call location is displayed).
Rename `title` to `label` for `console.time`, `console.timeLog`, and `console.timeEnd` to
better match the spec.
Updated existing LayoutTests:
- inspector/console/console-count.html
- inspector/console/console-api.html
Also covered by existing WPT tests.
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::consoleCount):
(WebCore::InspectorInstrumentation::consoleCountReset):
(WebCore::InspectorInstrumentation::startConsoleTiming):
(WebCore::InspectorInstrumentation::logConsoleTiming):
(WebCore::InspectorInstrumentation::stopConsoleTiming):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::consoleCountImpl):
(WebCore::InspectorInstrumentation::consoleCountResetImpl):
(WebCore::InspectorInstrumentation::startConsoleTimingImpl):
(WebCore::InspectorInstrumentation::logConsoleTimingImpl):
(WebCore::InspectorInstrumentation::stopConsoleTimingImpl):
* page/PageConsoleClient.h:
* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::count):
(WebCore::PageConsoleClient::countReset):
(WebCore::PageConsoleClient::time):
(WebCore::PageConsoleClient::timeLog):
(WebCore::PageConsoleClient::timeEnd):
* workers/WorkerConsoleClient.h:
* workers/WorkerConsoleClient.cpp:
(WebCore::WorkerConsoleClient::count):
(WebCore::WorkerConsoleClient::countReset):
(WebCore::WorkerConsoleClient::time):
(WebCore::WorkerConsoleClient::timeLog):
(WebCore::WorkerConsoleClient::timeEnd):
* worklets/WorkletConsoleClient.h:
* worklets/WorkletConsoleClient.cpp:
(WebCore::WorkletConsoleClient::count):
(WebCore::WorkletConsoleClient::countReset):
2019-06-27 Saam Barati <sbarati@apple.com>
[WHLSL] Implement arrays and MakeArrayReference
https://bugs.webkit.org/show_bug.cgi?id=198414
Reviewed by Myles C. Maxfield.
This patch implements WHLSL arrays. The main implementation detail is that
arrays get compiled to use Metal's array type. To make everything work, this
patch also fixes a few bugs:
- The checker now allows "operator.length" to be called on arrays. Prior to
this patch, it was just allowed on array references.
- The preserve variable lifetimes pass now looks at MakeArrayReference nodes.
Prior to this patch, it just looked at MakePointerExpression.
- We were producing the wrong type for ander arguments for indexed accesses
on array types. We were saying the argument that was produced was a reference
to an array instead of an array reference to the element type.
- The trie we compose for the reverse type hierarchy was inserting elements
into the wrong "children" vector. We were always inserting things into the
top level vector. This is wrong when we have a nesting of types > 1.
I also found a bug with having arrays of pointers when writing this patch.
Work on this will take place in a follow up: https://bugs.webkit.org/show_bug.cgi?id=199197
Tests: webgpu/whlsl-huge-array.html
webgpu/whlsl-make-array-reference.html
webgpu/whlsl-simple-arrays.html
webgpu/whlsl-two-dimensional-array.html
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeFunction):
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::TypeNamer::insert):
(WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.h:
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveByInstantiation):
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
(WebCore::WHLSL::EscapedVariableCollector::escapeVariableUse):
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::wrapAnderCallArgument):
(WebCore::WHLSL::anderCallArgument):
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
2019-06-27 Fujii Hironori <Hironori.Fujii@sony.com>
[CMake] Bump cmake_minimum_required version to 3.10
https://bugs.webkit.org/show_bug.cgi?id=199181
Reviewed by Don Olmstead.
No new tests because there is no behavior change.
* CMakeLists.txt:
2019-06-26 Simon Fraser <simon.fraser@apple.com>
[Async overflow scrolling] Fix missing or misplaced content inside overflow:scroll
https://bugs.webkit.org/show_bug.cgi?id=199253
rdar://problem/51855156, rdar://problem/51934514
Reviewed by Zalan Bujtas.
This patch fixes a couple of related issues triggered by failing to composite layers inside non-stacking-context
overflow scroll.
First, we relied on overlap testing to composite position:relative layers inside overflow:scroll, but this only
worked when they came later in z-order, so didn't work for layers with negative z-index.
RenderLayerCompositor::requiresCompositingForIndirectReason() was intended to trigger compositing in such cases,
but it only did so for position:absolute inside stacking-context scroller, because
isNonScrolledLayerInsideScrolledCompositedAncestor() tested ancestorMovedByScroller && !layerMovedByScroller.
I fixed this by sharing code between the three places that ask whether compositing crosses a containing-block
boundary to call a single function, RenderLayerCompositor::layerScrollBehahaviorRelativeToCompositedAncestor(),
that returns a ScrollPositioningBehavior. We now do compositing for both "moves" and "stationary" behaviors (but
not "none"), ensuring that position:relative inside non-stacking scroller is always composited.
However, this would trigger compositing on layers that should be using backing sharing; if they were outside the
visible part of the scroller, the overlap code would not trigger, but the
"IndirectCompositingReason::OverflowScrollPositioning" code would. This is undesirable; any layer that can use
backing sharing should, because that's fewer composited layers, so smaller layer trees and less backing store.
To fix this, I moved the backing-sharing check before the overlap check in
RenderLayerCompositor::computeCompositingRequirements().
The "layer.setHasCompositingDescendant(currentState.subtreeIsCompositing)" line was in the wrong place,
triggering assertions on some content; "subtreeIsCompositing" only refers to child layers, so this bit needs to
be set right after we've traversed the z-order lists.
Tests: compositing/scrolling/async-overflow-scrolling/hidden-relative-layer-content-in-scroller.html
compositing/scrolling/async-overflow-scrolling/layer-for-negative-z-in-scroller.html
compositing/scrolling/async-overflow-scrolling/negative-z-in-scroller.html
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::traverseUnchangedSubtree):
(WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason const):
(WebCore::isScrolledByOverflowScrollLayer):
(WebCore::enclosingCompositedScrollingLayer):
(WebCore::RenderLayerCompositor::layerScrollBehahaviorRelativeToCompositedAncestor):
(WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):
(WebCore::isNonScrolledLayerInsideScrolledCompositedAncestor): Deleted.
(WebCore::RenderLayerCompositor::layerContainingBlockCrossesCoordinatedScrollingBoundary): Deleted.
* rendering/RenderLayerCompositor.h:
2019-06-26 Ryosuke Niwa <rniwa@webkit.org>
ReplacementFragment should not have script observable side effects
https://bugs.webkit.org/show_bug.cgi?id=199147
Reviewed by Wenson Hsieh.
Fixed the bug that ReplacementFragment has script observable side effects.
Use a brand new document for sanitization where the script is disabled for test rendering,
and remove style and script elements as well as event handlers before the test rendering
and the actual pasting.
Test: editing/pasteboard/paste-contents-with-side-effects.html
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplacementFragment::document): Deleted.
(WebCore::ReplacementFragment::ReplacementFragment): Use createPageForSanitizingWebContent
to create our own document for test rendering. We need to copy over the computed style
from the root editable element (editing host) to respect whitespace treatment, etc...
(WebCore::ReplacementFragment::removeContentsWithSideEffects): Moved from removeHeadContents.
Now removes event handlers and JavaScript URLs.
(WebCore::ReplacementFragment::insertFragmentForTestRendering): Renamed variable names.
(WebCore::ReplaceSelectionCommand::willApplyCommand): Create the plain text and HTML markup
for beforeinput and input events before ReplacementFragment removes contents with side effects.
(WebCore::ReplaceSelectionCommand::ensureReplacementFragment): The removal of head elements
is now done in ReplacementFragment's constructor.
2019-06-26 Andy Estes <aestes@apple.com>
[Payment Request] Set state to Closed when show() is called during an active session
https://bugs.webkit.org/show_bug.cgi?id=199239
Reviewed by Alex Christensen.
According to step 7 of https://w3c.github.io/payment-request/#show-method (as of 26 June
2019), when another payment request is showing, calling show() should set the [[state]]
internal slot to Closed in addition to rejecting the show promise with an AbortError. WebKit
was only doing the latter. Let's do both.
Test: http/tests/paymentrequest/payment-is-showing.https.html
* Modules/paymentrequest/PaymentRequest.cpp:
(WebCore::PaymentRequest::show):
2019-06-26 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Implement console.countReset
https://bugs.webkit.org/show_bug.cgi?id=199200
Reviewed by Devin Rousso.
Updated existing tests.
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::consoleCountImpl):
(WebCore::InspectorInstrumentation::consoleCountResetImpl):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::consoleCountReset):
* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::countReset):
* page/PageConsoleClient.h:
* workers/WorkerConsoleClient.cpp:
(WebCore::WorkerConsoleClient::countReset):
* workers/WorkerConsoleClient.h:
* worklets/WorkletConsoleClient.cpp:
(WebCore::WorkletConsoleClient::countReset):
* worklets/WorkletConsoleClient.h:
2019-06-26 Antoine Quint <graouts@apple.com>
[Pointer Events] Respect pointer capture when dispatching mouse boundary events and updating :hover
https://bugs.webkit.org/show_bug.cgi?id=198999
<rdar://problem/51979477>
Reviewed by Dean Jackson.
Make sure we don't return early prior to setting the flag that prevents re-entrancy, or else we would never
enter this function again. No new tests, this was caught because Pointer Events WPT tests on iOS tests regressed.
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::processPendingPointerCapture):
2019-06-26 Myles C. Maxfield <mmaxfield@apple.com>
REGRESSION: ( r246394 ) webgpu/whlsl-buffer-fragment.html and webgpu/whlsl-buffer-vertex.html are failing
https://bugs.webkit.org/show_bug.cgi?id=199012
Reviewed by Saam Barati.
* platform/graphics/gpu/cocoa/GPUDeviceMetal.mm:
(WebCore::isAcceptableDevice):
(WebCore::GPUDevice::tryCreate):
2019-06-26 Simon Fraser <simon.fraser@apple.com>
Incorrect clippping with overflow:scroll inside oveflow:hidden with border-radius
https://bugs.webkit.org/show_bug.cgi?id=199135
rdar://problem/51882383
Reviewed by Zalan Bujtas.
In some cases the geometry of the shape mask layer added to m_childContainmentLayer, for
border-radius, was incorrect. GraphicsLayerCA::updateClippingStrategy() treated
the rounded rect as if it were in renderer coordinates, but to match the other geometry
on GraphicsLayer, it should in GraphicsLayer coordinates, so we need to offset by
clipLayer->offsetFromRenderer().
In addition, RenderLayerBacking::updateChildClippingStrategy() is called from
the updateConfiguration(), which is before we've set offsetFromRenderer() on the clipLayer.
This first call is really to find out whether the platform supports this rounded rect
as a shape mask.
So we need to call setMasksToBoundsRect() a second time in RenderLayerBacking::updateGeometry()
after clipLayers's offsetFromRenderer() has been computed.
Test: compositing/scrolling/async-overflow-scrolling/border-radius-on-scroll-container.html
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::updateClippingStrategy):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
(WebCore::RenderLayerBacking::updateDescendantClippingLayer):
(WebCore::RenderLayerBacking::updateChildClippingStrategy):
2019-06-26 Antoine Quint <graouts@apple.com>
[Pointer Events] Respect pointer capture when dispatching mouse boundary events and updating :hover
https://bugs.webkit.org/show_bug.cgi?id=198999
<rdar://problem/51979477>
Reviewed by Dean Jackson.
Up until now, we would not account for pointer capture (see ​https://w3c.github.io/pointerevents/#pointer-capture) when dispatching
mouse boundary events (mouseover, mouseout, mouseenter, mouseleave) and their counterpart pointer events. We would also not account
for it when updating :hover styles.
Now, when pointer capture changes for an element, we call setCapturingMouseEventsElement() on the EventHandler such that the element
that would naturally hit-test is overridden by the pointer capture element when identifying which target to use for the dispatch of
boundary mouse events. Additionally, when calling Document::prepareMouseEvent(), we also use the pointer capture element to
pass down to Document::updateHoverActiveState() such that :hover styles are applied to the correct element.
* dom/Document.cpp:
(WebCore::Document::prepareMouseEvent): When a new event is going to be dispatched, we must run the Process Pending Capture Element
steps as mandated by the Pointer Events spec. Calling this will dispatch the appropriate pointer capture change events and also
required boundary events since EventHandler::setCapturingMouseEventsElement() calls into EventHandler::updateMouseEventTargetNode().
Since this may update the capturing mouse events element, we ensure that we call updateHoverActiveState() with a flag that indicates that.
Finally, we use the capturing mouse events element instead of the hit-testing element to pass to updateHoverActiveState() to ensure
that is has :hover styles applied.
(WebCore::Document::updateHoverActiveState): Account for the new CaptureChange flag to force the invalidation of the :hover and :active
elements chain at all times when the capturing mouse events element changed.
* dom/Document.h:
* dom/PointerEvent.h: Update PointerEvent::createForPointerCapture() to take specific parameters rather than a single PointerEvent to
set the pointerId, isPrimary and pointerType properties of the generated event. This is required to call processPendingPointerCapture()
outside of PointerEvent dispatch logic since we now call it from Document::prepareMouseEvent() where we haven't yet generated such an
event.
* page/EventHandler.cpp:
(WebCore::EventHandler::pointerCaptureElementDidChange): When a new pointer capture element is set, call updateMouseEventTargetNode()
to ensure that boundary events are fired to indicate the pointer capture state change.
(WebCore::EventHandler::prepareMouseEvent): Keep track of the last PlatformMouseEvent used to prepare a mouse event so that we can use
it when setCapturingMouseEventsElement() is called.
* page/EventHandler.h:
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::pointerCaptureElement): Since Document::prepareMouseEvent() needs to know the current pointer capture
element, add a new public method that indicates the pointer capture element if that element is contained in the provided document. We need
to provide the document since PointerCaptureController is owned by the Page and may manage several documents.
(WebCore::PointerCaptureController::dispatchEvent): Only run the Process Pending Capture Element steps when dealing with a touch or pen
event since those steps are already ran for mouse events in Document::prepareMouseEvent(). Additionally, since the element target is already
set to be the pointer capture element with the changes made to processPendingPointerCapture(), and because on iOS pointer capture is always
active, we can remove the code that would retarget the event to the pointer capture element.
(WebCore::PointerCaptureController::pointerEventWasDispatched):
(WebCore::PointerCaptureController::cancelPointer):
(WebCore::PointerCaptureController::processPendingPointerCapture): We now call into EventHandler::setCapturingMouseEventsElement() when the
capture target element changes. We must be careful to call this method prior to dispatching the "gotpointercapture" event and after dispatching
the "lostpointercapture" event so that boundary events are fired at the right time.
* page/PointerCaptureController.h:
2019-06-25 Fujii Hironori <Hironori.Fujii@sony.com>
[WinCairo] incorrect font height for 'Google Sans Display' font
https://bugs.webkit.org/show_bug.cgi?id=198909
Reviewed by Frédéric Wang.
r191893 changed to use OS/2 typo metrics, but its calculation
wasn't correct. And, there is no reliable way to get OS/2 table by
using Windows API. Revert the part of r191893 change at the
moment.
* platform/graphics/win/SimpleFontDataCairoWin.cpp:
(WebCore::Font::platformInit):
* platform/graphics/win/SimpleFontDataWin.cpp:
(WebCore::Font::initGDIFont):
Reverted the part of r191893 change, and added FIXME comments.
2019-06-25 Timothy Hatcher <timothy@apple.com>
Clicking the up/down spin buttons for a number input increments/decrements by 2.
https://bugs.webkit.org/show_bug.cgi?id=198809
Reviewed by Tim Horton.
AppKit no longer registers NSScrollerButtonDelay and NSScrollerButtonPeriod in the base
NSUserDefaults for an app. This caused our use to always get 0s when setting the click
and hold timer, causing the value to increment quickly for a single press.
* platform/mac/ScrollbarThemeMac.h:
(WebCore::ScrollbarThemeMac::initialAutoscrollTimerDelay): Added. Hardcode 500ms.
(WebCore::ScrollbarThemeMac::autoscrollTimerDelay): Added. Hardcode 50ms.
* platform/mac/ScrollbarThemeMac.mm:
(WebCore::ScrollbarThemeMac::preferencesChanged): Removed use of old user defaults.
(WebCore::ScrollbarThemeMac::initialAutoscrollTimerDelay): Deleted.
(WebCore::ScrollbarThemeMac::autoscrollTimerDelay): Deleted.
2019-06-25 Keith Miller <keith_miller@apple.com>
Unreviewed, windows build fix.
* bindings/js/JSDOMGlobalObject.h:
2019-06-25 Keith Miller <keith_miller@apple.com>
Add didBecomePrototype() calls to global context prototypes
https://bugs.webkit.org/show_bug.cgi?id=199202
Reviewed by Mark Lam.
This fixes some crashes related to asserting that all prototypes
have been marked as such in JSC from
https://trac.webkit.org/changeset/246801. It's ok to call
didBecomePrototype here as we setting up the world state right now
so we won't be having a bad time.
We don't automatically call didBecomePrototype() for
setPrototypeWithoutTransition because existing objects may already
have this structure so it seems more reasonable to be explicit
there.
* bindings/js/JSWindowProxy.cpp:
(WebCore::JSWindowProxy::setWindow):
* bindings/js/WorkerScriptController.cpp:
(WebCore::WorkerScriptController::initScript):
* worklets/WorkletScriptController.cpp:
(WebCore::WorkletScriptController::initScriptWithSubclass):
2019-06-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Implement console.timeLog
https://bugs.webkit.org/show_bug.cgi?id=199184
Reviewed by Devin Rousso.
Updated existing tests.
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::logConsoleTimingImpl):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::logConsoleTiming):
* page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::timeLog):
* page/PageConsoleClient.h:
* workers/WorkerConsoleClient.cpp:
(WebCore::WorkerConsoleClient::timeLog):
* workers/WorkerConsoleClient.h:
* worklets/WorkletConsoleClient.cpp:
(WebCore::WorkletConsoleClient::timeLog):
* worklets/WorkletConsoleClient.h:
2019-06-25 Michael Catanzaro <mcatanzaro@igalia.com>
Add user agent quirk for bankofamerica.com
https://bugs.webkit.org/show_bug.cgi?id=199154
Reviewed by Carlos Garcia Campos.
This suppresses an unsupported browser warning.
* platform/UserAgentQuirks.cpp:
(WebCore::urlRequiresMacintoshPlatform):
2019-06-25 Michael Catanzaro <mcatanzaro@igalia.com>
Fully rename WebKitGTK+ -> WebKitGTK everywhere
https://bugs.webkit.org/show_bug.cgi?id=199159
Reviewed by Carlos Garcia Campos.
* accessibility/atk/WebKitAccessibleInterfaceText.cpp:
(webkitAccessibleTextGetStringAtOffset):
* platform/UserAgentQuirks.cpp:
(WebCore::urlRequiresMacintoshPlatform):
* platform/network/soup/NetworkStorageSessionSoup.cpp:
(WebCore::NetworkStorageSession::saveCredentialToPersistentStorage):
* rendering/RenderThemeGtk.cpp:
(WebCore::RenderThemeGtk::adjustTextFieldStyle const):
2019-06-25 Rob Buis <rbuis@igalia.com>
Introduce LinkLoadParameters
https://bugs.webkit.org/show_bug.cgi?id=198960
Reviewed by Frédéric Wang.
Avoid the long parameters lists in LinkLoader by moving them
to LinkLoadParameters.
No new tests because there is no behavior change.
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::process):
* loader/LinkLoader.cpp:
(WebCore::LinkLoader::loadLinksFromHeader):
(WebCore::LinkLoader::preconnectIfNeeded):
(WebCore::LinkLoader::preloadIfNeeded):
(WebCore::LinkLoader::prefetchIfNeeded):
(WebCore::LinkLoader::loadLink):
* loader/LinkLoader.h:
2019-06-24 Wenson Hsieh <wenson_hsieh@apple.com>
[Text autosizing] [iPadOS] Revise our heuristics to determine idempotent text autosizing candidates
https://bugs.webkit.org/show_bug.cgi?id=198763
<rdar://problem/51826266>
Reviewed by Simon Fraser.
This patch adjusts existing text autosizing heuristics, based on a survey of text on websites in the Alexa top
500 that shrink down to fit the viewport when requesting the desktop version of the site. The new heuristic is
derived from training decision trees against the dataset obtained from this survey, and balances false positives
(cases where layout is broken due to autosizing) against overall accuracy (measured using cross-validation).
See below for more details. Additionally, please refer to the link in the radar for more details, as well as
resources used to generate, validate, and analyze these decision trees.
Test: fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html
* css/StyleResolver.cpp:
(WebCore::StyleResolver::adjustRenderStyleForTextAutosizing):
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::isIdempotentTextAutosizingCandidate const):
Rename AutosizeStatus::shouldSkipSubtree to RenderStyle::isIdempotentTextAutosizingCandidate. We relocate this
logic to RenderStyle, such that we're able to ask the element's RenderStyle questions when determining whether
the element should be autosized.
Of course, this patch additionally revamps the heuristic used to determine whether it is safe to autosize an
element. Our current heuristic in trunk simply checks for the presence of inline block display, out of flow
positioning and a fixed height ancestor; if any of these conditions are satisfied, we opt the element out of
text autosizing. This is an excellent strategy for boosting some runs of text while avoiding autosizing in the
vast majority of cases where increasing font size may lead to layout breakage (e.g. overlapping or clipped text,
content unexpectedly flowing to the next line, etc.). However, it also avoids boosting font sizes in many
scenarios where boosting font sizes is desired; for concrete examples, see the (currently 24) radars about small
font sizes that are duped to <rdar://problem/51826266>.
To help analyze and identify trends in autosizable and non-autosizable text, we assembled a dataset of elements
with text from the Alexa top 500 that either: (1) were too small and could be boosted safely, or (2) would break
layout if boosted. With this labeled dataset, we then trained binary decision trees to classify the data. Each
decision tree was trained with a number of hyperparameters: namely, maximum depth, minimum leaf size, and the
amount of bias towards negative samples (i.e. the ratio of the weight of a non-autosizable sample relative to
the weight of an autosizable sample).
For each 3-tuple of these hyperparameters (800 in total: max depth between 3 and 10, min leaf size between 1 and
10 and bias between 1 and 10), for 5000 iterations each, we split the full dataset into a training dataset and
a cross-validation dataset, trained a decision tree using the training set, and tested against the cross-
validation set to compute average precision, recall, and overall accuracy for each tuple of hyperparameters.
The decision tree introduced in this patch was generated using a hand-picked set of hyperparameters (max depth
10, min leaf size 4, and negative bias 2) to provide a balance between precision scores (limiting layout
breakage) and recall score (ensuring that small text is mostly autosized), while optimizing for overall
accuracy. Cross-validation scores predict that the overall accuracy of this classifier is approximately 70%, up
from the current accuracy in trunk (~53%).
* rendering/style/RenderStyle.h:
Grow the width of `autosizeStatus` from 4 to 8 (notably, this does not increase the size of RenderStyle).
* rendering/style/TextSizeAdjustment.cpp:
(WebCore::AutosizeStatus::updateStatus):
(WebCore::AutosizeStatus::shouldSkipSubtree const): Deleted.
* rendering/style/TextSizeAdjustment.h:
Introduce new text autosizing state flags, and remove some existing ones.
2019-06-24 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r246714.
https://bugs.webkit.org/show_bug.cgi?id=199179
revert to do patch in a different way. (Requested by keith_mi_
on #webkit).
Reverted changeset:
"All prototypes should call didBecomePrototype()"
https://bugs.webkit.org/show_bug.cgi?id=196315
https://trac.webkit.org/changeset/246714
2019-06-24 Sihui Liu <sihui_liu@apple.com>
REGRESSION (r244436): IndexedDB Uint8Array returned as ArrayBuffer
https://bugs.webkit.org/show_bug.cgi?id=198738
<rdar://problem/51614053>
Reviewed by Brady Eidson.
In InexedDB, two binary keys are the same as long as their data is the same.
Modified tests: storage/indexeddb/key-type-binary.html
storage/indexeddb/key-type-binary-private.html
* bindings/js/IDBBindingUtilities.cpp:
(WebCore::injectIDBKeyIntoScriptValue):
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneDeserializer::readArrayBufferView):
2019-06-24 Sihui Liu <sihui_liu@apple.com>
Remove WebSQL quirk for nytimes.com
https://bugs.webkit.org/show_bug.cgi?id=199175
Reviewed by Geoffrey Garen.
Removed unused code.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateRuntimeEnableConditionalString):
* bindings/scripts/IDLAttributes.json:
* page/Quirks.cpp:
(WebCore::Quirks::hasBrokenEncryptedMediaAPISupportQuirk const):
(WebCore::Quirks::hasWebSQLSupportQuirk const): Deleted.
* page/Quirks.h:
2019-06-24 Brady Eidson <beidson@apple.com>
Null deref in WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad.
<rdar://problem/51535942> and https://bugs.webkit.org/show_bug.cgi?id=199123
Reviewed by Andy Estes.
* loader/FrameLoaderStateMachine.h:
(WebCore::FrameLoaderStateMachine::stateForDebugging const):
2019-06-24 Simon Fraser <simon.fraser@apple.com>
REGRESSION (r246725 ): Crashes on twitch.tv
https://bugs.webkit.org/show_bug.cgi?id=199176
rdar://problem/52071249
Reviewed by Zalan Bujtas.
With a composited negative z-index child inside a scroller, we can register the overflow scroll
proxy node before we've traversed the overflow layer, so it that layer hasn't got its OverflowScrollingNode
yet. Thus, AsyncScrollingCoordinator::setRelatedOverflowScrollingNodes() can be called with an empty vector.
Avoid crashing when this happens.
Test: scrollingcoordinator/scrolling-tree/scroller-with-negative-z-child.html
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::setRelatedOverflowScrollingNodes):
* page/scrolling/cocoa/ScrollingTreeOverflowScrollProxyNode.mm:
(WebCore::ScrollingTreeOverflowScrollProxyNode::commitStateBeforeChildren):
2019-06-24 Chris Dumez <cdumez@apple.com>
Pages using Google's anti-flicker optimization may take ~5 seconds to do initial paint
https://bugs.webkit.org/show_bug.cgi?id=199173
<rdar://problem/45968770>
Reviewed by Geoffrey Garen.
Pages using Google's anti-flicker optimization [1] take ~5 seconds to do initial paint when
analytics.js load is blocked by a content blocker.
To address the issue, this patch introduces a quirk behind an experimental feature flag that
calls window.dataLayer.hide.end() on the page when the load of https://www.google-analytics.com/analytics.js
is blocked by a content blocker. Note that this is more robust than dropping the 'async-hide'
class from document.documentElement since the class name is customizable by the caller.
A message is logged in the console when the quirk causes window.dataLayer.hide.end() to get called
early.
[1] https://developers.google.com/optimize/
* contentextensions/ContentExtensionsBackend.cpp:
(WebCore::ContentExtensions::ContentExtensionsBackend::processContentRuleListsForLoad):
* page/Settings.yaml:
2019-06-24 John Wilander <wilander@apple.com>
Remove IsITPFirstPartyWebsiteDataRemovalEnabled as runtime check
https://bugs.webkit.org/show_bug.cgi?id=199164
<rdar://problem/52061147>
Reviewed by Brent Fulgham.
No new tests. Just a removal of a runtime feature check. The functionality
already has a layout test.
We've had this toggle as a safety thing since mid-March. No need for it any longer.
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::isITPDatabaseEnabled const):
(WebCore::RuntimeEnabledFeatures::setIsITPFirstPartyWebsiteDataRemovalEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::isITPFirstPartyWebsiteDataRemovalEnabled const): Deleted.
2019-06-24 Jer Noble <jer.noble@apple.com>
iOS 12.2 Drawing portrait video to canvas is sideways
https://bugs.webkit.org/show_bug.cgi?id=196772
<rdar://problem/49781802>
Reviewed by Eric Carlson.
Test: media/video-orientation-canvas.html
Move rotation code into its own ImageRotationSessionVT class for re-use across
all existing classes with rotation operations. Should slightly increase performance
for painting rotated media files, as the rotation only occurs once per frame, rather
than once per drawing operation.
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.h:
(WebCore::ImageDecoderAVFObjC::RotationProperties::isIdentity const): Deleted.
* platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:
(WebCore::ImageDecoderAVFObjC::readTrackMetadata):
(WebCore::ImageDecoderAVFObjC::storeSampleBuffer):
(WebCore::ImageDecoderAVFObjC::setTrack):
(WebCore::transformToRotationProperties): Deleted.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastPixelBuffer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithVideoOutput):
* platform/graphics/cv/ImageRotationSessionVT.h: Added.
(WebCore::ImageRotationSessionVT::RotationProperties::isIdentity const):
(WebCore::ImageRotationSessionVT::rotationProperties const):
(WebCore::ImageRotationSessionVT::rotatedSize):
* platform/graphics/cv/ImageRotationSessionVT.mm: Added.
(WebCore::transformToRotationProperties):
(WebCore::ImageRotationSessionVT::ImageRotationSessionVT):
(WebCore::ImageRotationSessionVT::rotate):
* platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:
* platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.h:
* platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.mm:
(WebCore::rotationToAngle):
(WebCore::RealtimeOutgoingVideoSourceCocoa::rotatePixelBuffer):
(WebCore::computeRotatedWidthAndHeight): Deleted.
2019-06-24 Zalan Bujtas <zalan@apple.com>
[StyleResolver] Pass RenderStyle& instead of RenderStyle* to updateFont() related functions.
https://bugs.webkit.org/show_bug.cgi?id=199167
<rdar://problem/52062669>
Reviewed by Antti Koivisto.
It is expected to have a valid RenderStyle object here (and existing code relies on it).
* css/StyleResolver.cpp:
(WebCore::checkForOrientationChange):
(WebCore::StyleResolver::updateFont):
(WebCore::StyleResolver::checkForTextSizeAdjust):
(WebCore::StyleResolver::checkForZoomChange):
(WebCore::StyleResolver::checkForGenericFamilyChange):
* css/StyleResolver.h:
2019-06-24 Antoine Quint <graouts@apple.com>
[Pointer Events WPT] Unskip imported/w3c/web-platform-tests/pointerevents/pointerevent_lostpointercapture_is_first.html
https://bugs.webkit.org/show_bug.cgi?id=197005
Reviewed by Dean Jackson.
We were calling processPendingPointerCapture() at the wrong time, calling in after dispatching a PointerEvent rather than before.
We now do this correctly in the consolidated PointerCaptureController::dispatchEvent() method, which we call for dispatching all
PointerEvents, save for gotpointercapture and lostpointercapture since these should not yield the processing of the pending pointer
capture per the spec.
This uncovered a couple of new issues. First, since we would now call processPendingPointerCapture() and dispatch a lostpointercapture
event earlier, the alternative lostpointercapture dispatch when an element is removed (which is dispatched asynchronously on the
document) would be dispatched *after* dispatching the event in processPendingPointerCapture(). We now check in processPendingPointerCapture()
whether the event target is connected to fix this. This makes sure pointerevent_lostpointercapture_for_disconnected_node.html doesn't regress.
Finally, we must also call processPendingPointerCapture() when implicitly releasing pointer capture during handling of a "pointerup" event.
This ensures that pointerevent_releasepointercapture_invalid_pointerid.html doesn't regress.
As a result of all these changes, we now pass imported/w3c/web-platform-tests/pointerevents/pointerevent_lostpointercapture_is_first.html reliably.
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::dispatchEventForTouchAtIndex):
(WebCore::PointerCaptureController::dispatchEvent): We now more closely adhere to the spec when determining what the pointer capture target is by
only checking for the target override. We can now do this safely since we call processPendingPointerCapture() before and not after event dispatch.
(WebCore::PointerCaptureController::pointerEventWasDispatched):
(WebCore::PointerCaptureController::processPendingPointerCapture): Cache the pending target override to make sure that dispatching a "gotpointercapture"
or "lostpointercapture" event during this function does not alter it until the next call is made when the next event is dispatched.
2019-06-24 Greg Doolittle <gr3g@apple.com>
Web Inspector: AXI: Audit: image label test is throwing spurious errors on elements with existing alt attr, but no value: <img alt>
https://bugs.webkit.org/show_bug.cgi?id=194754
Reviewed by Chris Fleizach.
Test: accessibility/img-alt-attribute-unassigned-value.html
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::computedRoleString const):
2019-06-24 Adrian Perez de Castro <aperez@igalia.com>
[WPE][GTK] Fixes for compilation with unified builds disabled
https://bugs.webkit.org/show_bug.cgi?id=199155
Reviewed by Michael Catanzaro.
No new tests needed.
* rendering/LayerAncestorClippingStack.h: Add missing inclusion of RenderLayer.h
2019-06-24 Michael Catanzaro <mcatanzaro@igalia.com>
Add user agent quirk for Google Drive
https://bugs.webkit.org/show_bug.cgi?id=199153
Reviewed by Carlos Garcia Campos.
This suppresses an unsupported browser warning.
* platform/UserAgentQuirks.cpp:
(WebCore::urlRequiresMacintoshPlatform):
(WebCore::urlRequiresLinuxDesktopPlatform):
2019-06-24 Charlie Turner <cturner@igalia.com>
[GStreamer][MSE] Pausing video sometimes causes skip to finish
https://bugs.webkit.org/show_bug.cgi?id=197355
Reviewed by Philippe Normand.
Covered by existing tests.
* platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
(WebCore::MediaPlayerPrivateGStreamerMSE::currentMediaTime const):
Assuming that when m_eosPending is on and we're paused() that the
network resource is fully loaded and the end is reached is clearly
wrong. Whether this is now correct is unclear...
2019-06-24 Charlie Turner <cturner@igalia.com>
[GStreamer] Volume level sometimes changes inappropriately
https://bugs.webkit.org/show_bug.cgi?id=197358
Reviewed by Xabier Rodriguez-Calvar.
Be consistent with our application of volume scaling. We were
setting volumes using cubic interpolation in setVolume() and using
the inverse in volume(); however setting initial volumes was done
linearly in setStreamVolumeElement, which was causing strange
jumps in the volume level at non-deterministic times. The fix
looks to be that we should use linear interpolation consistently,
since PulseAudio already applies cubic scaling to software
volumes.
Covered by existing tests.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::paused const): Bump the
logging here to LOG level, it's very spammy at DEBUG.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::setVolume): Switch to
linear interpolation.
(WebCore::MediaPlayerPrivateGStreamerBase::volume const): Ditto.
(WebCore::MediaPlayerPrivateGStreamerBase::notifyPlayerOfVolumeChange):
Ditto.
(WebCore::MediaPlayerPrivateGStreamerBase::setStreamVolumeElement):
Ditto, and be consistent here with the API, do not set the raw
volume managed by MediaElement.
2019-06-24 Antoine Quint <graouts@apple.com>
[Pointer Events] Respect pointer capture when dispatching mouse boundary events and updating :hover
https://bugs.webkit.org/show_bug.cgi?id=198999
<rdar://problem/51979477>
Unreviewed.
Rolling back all changes made for this bug (r246728 + r246716 + r246674) as it regressed one test
(imported/w3c/web-platform-tests/pointerevents/pointerevent_mouse_pointercapture_in_frame.html).
* dom/Document.cpp:
(WebCore::Document::prepareMouseEvent):
(WebCore::Document::updateHoverActiveState):
* page/EventHandler.cpp:
(WebCore::EventHandler::handleMousePressEvent):
(WebCore::EventHandler::handleMouseMoveEvent):
(WebCore::EventHandler::handleMouseReleaseEvent):
(WebCore::EventHandler::setCapturingMouseEventsElement):
* page/EventHandler.h:
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::releasePointerCapture):
(WebCore::PointerCaptureController::hasPointerCapture):
(WebCore::PointerCaptureController::dispatchEventForTouchAtIndex):
(WebCore::PointerCaptureController::dispatchEvent):
(WebCore::PointerCaptureController::processPendingPointerCapture):
(WebCore::PointerCaptureController::pointerCaptureElement): Deleted.
* page/PointerCaptureController.h:
* rendering/HitTestRequest.h:
(WebCore::HitTestRequest::includesAllElementsUnderPoint const):
(WebCore::HitTestRequest::pointerCaptureElementChanged const): Deleted.
2019-06-23 Antoine Quint <graouts@apple.com>
[Pointer Events] Respect pointer capture when dispatching mouse boundary events and updating :hover
https://bugs.webkit.org/show_bug.cgi?id=198999
<rdar://problem/52005663>
Reviewed by Dean Jackson.
We should only set the mouse events capturing element in EventHandler if we're dealing with mouse-originated Pointer Events (part 2).
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::releasePointerCapture):
2019-06-23 Simon Fraser <simon.fraser@apple.com>
[Async overflow scroll] Clipped composited layers inside overflow scroll jitter and get incorrectly clipped
https://bugs.webkit.org/show_bug.cgi?id=199133
rdar://problem/43614439
Reviewed by Antti Koivisto.
Currently a composited layer with an overflow:scroll ancestor (which is not a paint-order
ancestor) gets a single "ancestor clip layer" that represents the intersection of all the
clips provided by its containing-block ancestors with non-visible overflow (both scrolling
and non-scrolling ones).
To correctly update clips with async overflow scroll, this single clip layer needs to be
broken up into multiple clipping ancestors. We need a separate layer, and scrolling tree
node for each ancestor that is an overflow scroll, and layers that represent non-moving
clips (i.e. overflow:hidden and 'clip') between them. This patch adds
LayerAncestorClippingStack to represent this stack of clipping layers. For example with the
following content:
<div style="overflow:hidden"> <--- A
<div style="overflow:scroll"> <--- B
<div style="overflow:hidden"> <--- C
<div style="overflow:hidden"> <--- D
<div style="overflow:scroll"> <--- E
<div style="overflow:hidden"> <--- F
<div style="overflow:hidden"> <--- G
<div></div> <--- H
<div>
<div>
<div>
<div>
<div>
<div>
<div>
the composited RenderLayer for H owns a LayerAncestorClippingStack with the following contents:
[clip - A]
[scroller - B]
[clip - intersection of C and D]
[scroller - E]
[clip - intersection of F and G]
Each stack entry has a 'masksToBounds' GraphicsLayer for clipping. Entries representing
overflow:scroll clips have a ScrollingNodeID for their OverflowScrollProxy scrolling tree
node (which references the actual OverflowScrollingNode). The non-scroller clips in this
stack are computed unconstrained by the enclosing overflow:scroll.
When the OverflowScrollingNode is scrolled, the boundsOrigin of related OverflowScrollProxy nodes
is adjusted to move the descendant layers (other clipping layers, or composited layers).
OverflowScrollProxy nodes thus take over the role that "Moves" ScrollingTreePositionedNode had.
With this patch, ScrollingTreePositionedNode are purely for absolute position inside non-containing-block
stacking context overflow scroll. LayoutConstraints is renamed to AbsolutePositionConstraints accordingly.
Tests: compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-clipped-by-scroll.html
compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-nested.html
compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow.html
compositing/scrolling/async-overflow-scrolling/layer-in-overflow-clip-to-hidden.html
compositing/scrolling/async-overflow-scrolling/layer-in-overflow-clip-to-visible.html
compositing/scrolling/async-overflow-scrolling/layer-in-overflow-gain-clipping-layer.html
compositing/scrolling/async-overflow-scrolling/layer-in-overflow-in-clipped.html
compositing/scrolling/async-overflow-scrolling/layer-in-overflow-lose-clipping-layer.html
compositing/scrolling/async-overflow-scrolling/layer-in-overflow.html
scrollingcoordinator/scrolling-tree/clipped-layer-in-overflow-nested.html
scrollingcoordinator/scrolling-tree/clipped-layer-in-overflow.html
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::setPositionedNodeConstraints):
(WebCore::AsyncScrollingCoordinator::setPositionedNodeGeometry): Deleted.
* page/scrolling/AsyncScrollingCoordinator.h:
* page/scrolling/ScrollingConstraints.cpp:
(WebCore::operator<<):
* page/scrolling/ScrollingConstraints.h:
(WebCore::AbsolutePositionConstraints::operator== const):
(WebCore::AbsolutePositionConstraints::operator!= const):
(WebCore::LayoutConstraints::operator== const): Deleted.
(WebCore::LayoutConstraints::operator!= const): Deleted.
(WebCore::LayoutConstraints::alignmentOffset const): Deleted.
(WebCore::LayoutConstraints::setAlignmentOffset): Deleted.
(WebCore::LayoutConstraints::layerPositionAtLastLayout const): Deleted.
(WebCore::LayoutConstraints::setLayerPositionAtLastLayout): Deleted.
(WebCore::LayoutConstraints::scrollPositioningBehavior const): Deleted.
(WebCore::LayoutConstraints::setScrollPositioningBehavior): Deleted.
* page/scrolling/ScrollingCoordinator.h:
(WebCore::ScrollingCoordinator::setPositionedNodeConstraints):
(WebCore::ScrollingCoordinator::setPositionedNodeGeometry): Deleted.
* page/scrolling/ScrollingStatePositionedNode.cpp:
(WebCore::ScrollingStatePositionedNode::updateConstraints):
* page/scrolling/ScrollingStatePositionedNode.h:
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::commitTreeState):
* page/scrolling/ScrollingTree.h:
(WebCore::ScrollingTree::nodesWithRelatedOverflow):
(WebCore::ScrollingTree::positionedNodesWithRelatedOverflow): Deleted.
* page/scrolling/cocoa/ScrollingTreeFixedNode.mm:
(WebCore::ScrollingTreeFixedNode::applyLayerPositions):
* page/scrolling/cocoa/ScrollingTreeOverflowScrollProxyNode.mm:
(WebCore::ScrollingTreeOverflowScrollProxyNode::commitStateBeforeChildren):
* page/scrolling/cocoa/ScrollingTreePositionedNode.h:
(WebCore::ScrollingTreePositionedNode::scrollPositioningBehavior const): Deleted.
* page/scrolling/cocoa/ScrollingTreePositionedNode.mm:
(WebCore::ScrollingTreePositionedNode::commitStateBeforeChildren):
(WebCore::ScrollingTreePositionedNode::scrollDeltaSinceLastCommit const):
* page/scrolling/cocoa/ScrollingTreeStickyNode.mm:
(WebCore::ScrollingTreeStickyNode::computeLayerPosition const):
* rendering/LayerAncestorClippingStack.cpp: Added.
(WebCore::LayerAncestorClippingStack::LayerAncestorClippingStack):
(WebCore::LayerAncestorClippingStack::equalToClipData const):
(WebCore::LayerAncestorClippingStack::hasAnyScrollingLayers const):
(WebCore::LayerAncestorClippingStack::clear):
(WebCore::LayerAncestorClippingStack::detachFromScrollingCoordinator):
(WebCore::LayerAncestorClippingStack::firstClippingLayer const):
(WebCore::LayerAncestorClippingStack::lastClippingLayer const):
(WebCore::LayerAncestorClippingStack::lastOverflowScrollProxyNodeID const):
(WebCore::LayerAncestorClippingStack::updateScrollingNodeLayers):
(WebCore::LayerAncestorClippingStack::updateWithClipData):
(WebCore::operator<<):
* rendering/LayerAncestorClippingStack.h: Added.
(WebCore::CompositedClipData::CompositedClipData):
(WebCore::CompositedClipData::operator== const):
(WebCore::CompositedClipData::operator!= const):
(WebCore::LayerAncestorClippingStack::stack):
(WebCore::LayerAncestorClippingStack::stack const):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::~RenderLayerBacking):
(WebCore::RenderLayerBacking::updateDebugIndicators):
(WebCore::RenderLayerBacking::destroyGraphicsLayers):
(WebCore::RenderLayerBacking::updateTransform):
(WebCore::RenderLayerBacking::updateBlendMode):
(WebCore::RenderLayerBacking::updateAfterLayout):
(WebCore::RenderLayerBacking::updateConfiguration):
(WebCore::computeOffsetFromAncestorGraphicsLayer):
(WebCore::RenderLayerBacking::computePrimaryGraphicsLayerRect const):
(WebCore::RenderLayerBacking::computeParentGraphicsLayerRect const):
(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::updateInternalHierarchy):
(WebCore::RenderLayerBacking::updateAncestorClippingStack):
(WebCore::RenderLayerBacking::updateAncestorClipping):
(WebCore::RenderLayerBacking::detachFromScrollingCoordinator):
(WebCore::RenderLayerBacking::scrollingNodeIDForChildren const):
(WebCore::RenderLayerBacking::childForSuperlayers const):
(WebCore::RenderLayerBacking::backingStoreMemoryEstimate const):
(WebCore::operator<<):
(WebCore::RenderLayerBacking::updateAncestorClippingLayer): Deleted.
(WebCore::RenderLayerBacking::coordinatedScrollingRoles const): Deleted.
* rendering/RenderLayerBacking.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer):
(WebCore::RenderLayerCompositor::updateBackingAndHierarchy):
(WebCore::RenderLayerCompositor::layerStyleChanged): We need to run the checks for changed
clipping whether or not this layer has backing, because a non-composited layer with clipping can be
represented in the clipping stack of some other layer.
(WebCore::RenderLayerCompositor::clippedByAncestor const):
(WebCore::RenderLayerCompositor::updateAncestorClippingStack const):
(WebCore::RenderLayerCompositor::computeAncestorClippingStack const): The output of this function
is a Vector<CompositedClipData> which represents the ancestor clipping stack, but without the proxy node
and GraphicsLayer information. It's input to LayerAncestorClippingStack::updateWithClipData() which does
the merging of old and new states.
(WebCore::collectRelatedCoordinatedScrollingNodes):
(WebCore::RenderLayerCompositor::removeFromScrollCoordinatedLayers):
(WebCore::scrollCoordinationRoleForNodeType):
(WebCore::RenderLayerCompositor::attachScrollingNode):
(WebCore::RenderLayerCompositor::registerScrollingNodeID):
(WebCore::RenderLayerCompositor::detachScrollCoordinatedLayerWithRole):
(WebCore::RenderLayerCompositor::detachScrollCoordinatedLayer):
(WebCore::RenderLayerCompositor::coordinatedScrollingRolesForLayer const): Code moved from RenderLayerBacking.
(WebCore::RenderLayerCompositor::updateScrollCoordinationForLayer):
(WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingProxyRole):
(WebCore::RenderLayerCompositor::updateScrollingNodeForPositioningRole):
* rendering/RenderLayerCompositor.h:
(WebCore::allScrollCoordinationRoles):
2019-06-23 Simon Fraser <simon.fraser@apple.com>
Add OverflowScrollProxyNodes to the scrolling tree
https://bugs.webkit.org/show_bug.cgi?id=199132
Reviewed by Antti Koivisto.
Add ScrollingStateOverflowScrollProxyNode and ScrollingTreeOverflowScrollProxyNode. These
nodes represent clip and scroll position for an overflow:scroll in the containing block chain,
but not the paint ancestor chain of a layer. They will be used to correctly manipulate clip
rects for composited layers in non-stacking-context scrollers, and in a future patch will
replace the functionality of "Moves" positioned nodes.
An OverflowScrollProxyNode has the ScrollingNodeID of the scrolling node that it relates to,
and we use the existing "related overflow nodes" to create the back references in the scrolling tree.
These nodes are not instantiated yet; a future patch will hook them up.
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::setRelatedOverflowScrollingNodes):
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::operator<<):
* page/scrolling/ScrollingCoordinatorTypes.h:
* page/scrolling/ScrollingStateNode.h:
(WebCore::ScrollingStateNode::isOverflowScrollProxyNode const):
* page/scrolling/ScrollingStateOverflowScrollProxyNode.cpp: Added.
(WebCore::ScrollingStateOverflowScrollProxyNode::create):
(WebCore::ScrollingStateOverflowScrollProxyNode::ScrollingStateOverflowScrollProxyNode):
(WebCore::ScrollingStateOverflowScrollProxyNode::clone):
(WebCore::ScrollingStateOverflowScrollProxyNode::setOverflowScrollingNode):
(WebCore::ScrollingStateOverflowScrollProxyNode::dumpProperties const):
* page/scrolling/ScrollingStateOverflowScrollProxyNode.h: Copied from Source/WebCore/page/scrolling/ScrollingStateOverflowScrollingNode.cpp.
(WebCore::ScrollingStateOverflowScrollProxyNode::overflowScrollingNode const):
* page/scrolling/ScrollingStateOverflowScrollingNode.cpp:
* page/scrolling/ScrollingStateTree.cpp:
(WebCore::ScrollingStateTree::createNode):
* page/scrolling/ScrollingTreeNode.h:
(WebCore::ScrollingTreeNode::isOverflowScrollProxyNode const):
* page/scrolling/ScrollingTreeOverflowScrollProxyNode.cpp: Added.
(WebCore::ScrollingTreeOverflowScrollProxyNode::create):
(WebCore::ScrollingTreeOverflowScrollProxyNode::ScrollingTreeOverflowScrollProxyNode):
(WebCore::ScrollingTreeOverflowScrollProxyNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeOverflowScrollProxyNode::applyLayerPositions):
(WebCore::ScrollingTreeOverflowScrollProxyNode::dumpProperties const):
* page/scrolling/ScrollingTreeOverflowScrollProxyNode.h: Copied from Source/WebCore/page/scrolling/ScrollingStateOverflowScrollingNode.cpp.
* page/scrolling/ScrollingTreeScrollingNode.h:
* page/scrolling/cocoa/ScrollingTreeOverflowScrollProxyNode.h: Copied from Source/WebCore/page/scrolling/ScrollingStateOverflowScrollingNode.cpp.
(WebCore::ScrollingTreeOverflowScrollProxyNode::overflowScrollingNodeID const):
(WebCore::ScrollingTreeOverflowScrollProxyNode::layer const):
* page/scrolling/cocoa/ScrollingTreeOverflowScrollProxyNode.mm: Added.
(WebCore::ScrollingTreeOverflowScrollProxyNode::create):
(WebCore::ScrollingTreeOverflowScrollProxyNode::ScrollingTreeOverflowScrollProxyNode):
(WebCore::ScrollingTreeOverflowScrollProxyNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeOverflowScrollProxyNode::scrollDeltaSinceLastCommit const):
(WebCore::ScrollingTreeOverflowScrollProxyNode::applyLayerPositions):
(WebCore::ScrollingTreeOverflowScrollProxyNode::dumpProperties const):
* page/scrolling/cocoa/ScrollingTreePositionedNode.mm:
* page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
* page/scrolling/mac/ScrollingTreeMac.cpp:
(ScrollingTreeMac::createScrollingTreeNode):
* page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
(WebCore::ScrollingTreeOverflowScrollingNodeMac::repositionScrollingLayers):
* rendering/RenderLayerCompositor.cpp:
(WebCore::scrollCoordinationRoleForNodeType):
2019-06-23 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Non-baseline aligned inline container should not mutate the baseline
https://bugs.webkit.org/show_bug.cgi?id=199129
<rdar://problem/52022533>
Reviewed by Antti Koivisto.
Only baseline aligned inline container (<span style="vertical-aligned: baseline">) should adjust line's baseline.
This patch also fixes m_baselineTop's value when we apply the initial strut.
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::isInlineContainerConsideredEmpty):
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
2019-06-22 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] The anonymous InlineBox wrapper for the text node should take the parent style.
https://bugs.webkit.org/show_bug.cgi?id=199127
<rdar://problem/52017744>
Reviewed by Antti Koivisto.
<span style="vertical-align: bottom">bottom aligned text</span>
The InlineBox wrapper for the "bottom aligned text" content should take the parent span's style.
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createSubTree):
2019-06-22 Antoine Quint <graouts@apple.com>
[Pointer Events] Respect pointer capture when dispatching mouse boundary events and updating :hover
https://bugs.webkit.org/show_bug.cgi?id=198999
<rdar://problem/52005663>
Reviewed by Dean Jackson.
We should only set the mouse events capturing element in EventHandler if we're dealing with mouse-originated Pointer Events.
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::processPendingPointerCapture):
2019-06-22 Andres Gonzalez <andresg_22@apple.com>
Accessibility objects contained in links should honor the aria-haspopup attribute in the ancestor link.
https://bugs.webkit.org/show_bug.cgi?id=199107
<rdar://problem/43663611>
Reviewed by Chris Fleizach.
Tests: accessibility/ios-simulator/button-with-aria-haspopup-role.html
accessibility/ios-simulator/element-haspopup.html
If an accessibility object is contained within an <a>, we should check
the aria-haspopup attribute on the ancestor <a> element. This was done
before in the iOS WebKit accessibility bunddle override.
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::hasPopup const):
2019-06-22 Robin Morisset <rmorisset@apple.com> and Yusuke Suzuki <ysuzuki@apple.com>
All prototypes should call didBecomePrototype()
https://bugs.webkit.org/show_bug.cgi?id=196315
Reviewed by Saam Barati.
* bindings/js/JSDOMIterator.h:
(WebCore::IteratorTraits>::finishCreation):
* bindings/js/JSDOMWindowProperties.h:
(WebCore::JSDOMWindowProperties::create): Deleted.
(WebCore::JSDOMWindowProperties::createStructure): Deleted.
(WebCore::JSDOMWindowProperties::JSDOMWindowProperties): Deleted.
* bindings/js/JSWindowProxy.cpp:
(WebCore::JSWindowProxy::setWindow):
* bindings/scripts/CodeGeneratorJS.pm:
(GeneratePrototypeDeclaration):
(GenerateConstructorHelperMethods):
* bindings/scripts/test/JS/JSInterfaceName.cpp:
(WebCore::JSInterfaceNamePrototype::JSInterfaceNamePrototype):
* bindings/scripts/test/JS/JSMapLike.cpp:
(WebCore::JSMapLikePrototype::JSMapLikePrototype):
* bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
(WebCore::JSReadOnlyMapLikePrototype::JSReadOnlyMapLikePrototype):
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
(WebCore::JSTestActiveDOMObjectPrototype::JSTestActiveDOMObjectPrototype):
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
(WebCore::JSTestCEReactionsPrototype::JSTestCEReactionsPrototype):
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
(WebCore::JSTestCEReactionsStringifierPrototype::JSTestCEReactionsStringifierPrototype):
* bindings/scripts/test/JS/JSTestCallTracer.cpp:
(WebCore::JSTestCallTracerPrototype::JSTestCallTracerPrototype):
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
(WebCore::JSTestClassWithJSBuiltinConstructorPrototype::JSTestClassWithJSBuiltinConstructorPrototype):
* bindings/scripts/test/JS/JSTestDOMJIT.cpp:
(WebCore::JSTestDOMJITPrototype::JSTestDOMJITPrototype):
(WebCore::JSTestDOMJITConstructor::prototypeForStructure):
* bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
(WebCore::JSTestEnabledBySettingPrototype::JSTestEnabledBySettingPrototype):
* bindings/scripts/test/JS/JSTestEnabledForContext.cpp:
(WebCore::JSTestEnabledForContextPrototype::JSTestEnabledForContextPrototype):
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
(WebCore::JSTestEventConstructorPrototype::JSTestEventConstructorPrototype):
(WebCore::JSTestEventConstructorConstructor::prototypeForStructure):
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
(WebCore::JSTestEventTargetPrototype::JSTestEventTargetPrototype):
(WebCore::JSTestEventTargetConstructor::prototypeForStructure):
* bindings/scripts/test/JS/JSTestException.cpp:
(WebCore::JSTestExceptionPrototype::JSTestExceptionPrototype):
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
(WebCore::JSTestGenerateIsReachablePrototype::JSTestGenerateIsReachablePrototype):
* bindings/scripts/test/JS/JSTestGlobalObject.h:
(WebCore::JSTestGlobalObjectPrototype::JSTestGlobalObjectPrototype):
* bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
(WebCore::JSTestIndexedSetterNoIdentifierPrototype::JSTestIndexedSetterNoIdentifierPrototype):
* bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
(WebCore::JSTestIndexedSetterThrowingExceptionPrototype::JSTestIndexedSetterThrowingExceptionPrototype):
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
(WebCore::JSTestIndexedSetterWithIdentifierPrototype::JSTestIndexedSetterWithIdentifierPrototype):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterfacePrototype::JSTestInterfacePrototype):
* bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
(WebCore::JSTestInterfaceLeadingUnderscorePrototype::JSTestInterfaceLeadingUnderscorePrototype):
* bindings/scripts/test/JS/JSTestIterable.cpp:
(WebCore::JSTestIterablePrototype::JSTestIterablePrototype):
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
(WebCore::JSTestJSBuiltinConstructorPrototype::JSTestJSBuiltinConstructorPrototype):
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
(WebCore::JSTestMediaQueryListListenerPrototype::JSTestMediaQueryListListenerPrototype):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
(WebCore::JSTestNamedAndIndexedSetterNoIdentifierPrototype::JSTestNamedAndIndexedSetterNoIdentifierPrototype):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
(WebCore::JSTestNamedAndIndexedSetterThrowingExceptionPrototype::JSTestNamedAndIndexedSetterThrowingExceptionPrototype):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
(WebCore::JSTestNamedAndIndexedSetterWithIdentifierPrototype::JSTestNamedAndIndexedSetterWithIdentifierPrototype):
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::JSTestNamedConstructorPrototype::JSTestNamedConstructorPrototype):
* bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
(WebCore::JSTestNamedDeleterNoIdentifierPrototype::JSTestNamedDeleterNoIdentifierPrototype):
* bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
(WebCore::JSTestNamedDeleterThrowingExceptionPrototype::JSTestNamedDeleterThrowingExceptionPrototype):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
(WebCore::JSTestNamedDeleterWithIdentifierPrototype::JSTestNamedDeleterWithIdentifierPrototype):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
(WebCore::JSTestNamedDeleterWithIndexedGetterPrototype::JSTestNamedDeleterWithIndexedGetterPrototype):
* bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
(WebCore::JSTestNamedGetterCallWithPrototype::JSTestNamedGetterCallWithPrototype):
* bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
(WebCore::JSTestNamedGetterNoIdentifierPrototype::JSTestNamedGetterNoIdentifierPrototype):
* bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
(WebCore::JSTestNamedGetterWithIdentifierPrototype::JSTestNamedGetterWithIdentifierPrototype):
* bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
(WebCore::JSTestNamedSetterNoIdentifierPrototype::JSTestNamedSetterNoIdentifierPrototype):
* bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
(WebCore::JSTestNamedSetterThrowingExceptionPrototype::JSTestNamedSetterThrowingExceptionPrototype):
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
(WebCore::JSTestNamedSetterWithIdentifierPrototype::JSTestNamedSetterWithIdentifierPrototype):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
(WebCore::JSTestNamedSetterWithIndexedGetterPrototype::JSTestNamedSetterWithIndexedGetterPrototype):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
(WebCore::JSTestNamedSetterWithIndexedGetterAndSetterPrototype::JSTestNamedSetterWithIndexedGetterAndSetterPrototype):
* bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:
(WebCore::JSTestNamedSetterWithOverrideBuiltinsPrototype::JSTestNamedSetterWithOverrideBuiltinsPrototype):
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
(WebCore::JSTestNamedSetterWithUnforgablePropertiesPrototype::JSTestNamedSetterWithUnforgablePropertiesPrototype):
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
(WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsPrototype::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsPrototype):
* bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::JSTestNodePrototype::JSTestNodePrototype):
(WebCore::JSTestNodeConstructor::prototypeForStructure):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObjPrototype::JSTestObjPrototype):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::JSTestOverloadedConstructorsPrototype::JSTestOverloadedConstructorsPrototype):
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
(WebCore::JSTestOverloadedConstructorsWithSequencePrototype::JSTestOverloadedConstructorsWithSequencePrototype):
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
(WebCore::JSTestOverrideBuiltinsPrototype::JSTestOverrideBuiltinsPrototype):
* bindings/scripts/test/JS/JSTestPluginInterface.cpp:
(WebCore::JSTestPluginInterfacePrototype::JSTestPluginInterfacePrototype):
* bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
(WebCore::JSTestPromiseRejectionEventPrototype::JSTestPromiseRejectionEventPrototype):
(WebCore::JSTestPromiseRejectionEventConstructor::prototypeForStructure):
* bindings/scripts/test/JS/JSTestSerialization.cpp:
(WebCore::JSTestSerializationPrototype::JSTestSerializationPrototype):
* bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp:
(WebCore::JSTestSerializationIndirectInheritancePrototype::JSTestSerializationIndirectInheritancePrototype):
(WebCore::JSTestSerializationIndirectInheritanceConstructor::prototypeForStructure):
* bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
(WebCore::JSTestSerializationInheritPrototype::JSTestSerializationInheritPrototype):
(WebCore::JSTestSerializationInheritConstructor::prototypeForStructure):
* bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
(WebCore::JSTestSerializationInheritFinalPrototype::JSTestSerializationInheritFinalPrototype):
(WebCore::JSTestSerializationInheritFinalConstructor::prototypeForStructure):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::JSTestSerializedScriptValueInterfacePrototype::JSTestSerializedScriptValueInterfacePrototype):
* bindings/scripts/test/JS/JSTestStringifier.cpp:
(WebCore::JSTestStringifierPrototype::JSTestStringifierPrototype):
* bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
(WebCore::JSTestStringifierAnonymousOperationPrototype::JSTestStringifierAnonymousOperationPrototype):
* bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
(WebCore::JSTestStringifierNamedOperationPrototype::JSTestStringifierNamedOperationPrototype):
* bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
(WebCore::JSTestStringifierOperationImplementedAsPrototype::JSTestStringifierOperationImplementedAsPrototype):
* bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
(WebCore::JSTestStringifierOperationNamedToStringPrototype::JSTestStringifierOperationNamedToStringPrototype):
* bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
(WebCore::JSTestStringifierReadOnlyAttributePrototype::JSTestStringifierReadOnlyAttributePrototype):
* bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
(WebCore::JSTestStringifierReadWriteAttributePrototype::JSTestStringifierReadWriteAttributePrototype):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefsPrototype::JSTestTypedefsPrototype):
2019-06-22 Mike Gorse <mgorse@suse.com>
webkitgtk 2.24.2 fails to build w/gstreamer 1.12.5
https://bugs.webkit.org/show_bug.cgi?id=198080
Reviewed by Philippe Normand.
No new tests (build fix only).
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
Move includes of gst/gl/gl.h and epoxy/gl.h into
MediaPlayerPrivateGStreamerBase.h.
2019-06-21 Sihui Liu <sihui_liu@apple.com>
openDatabase should return an empty object when WebSQL is disabled
https://bugs.webkit.org/show_bug.cgi?id=198805
Reviewed by Geoffrey Garen.
Some websites rely on calling openDatabase with null parameters to check for private browsing. To not break
those sites, we now expose openDatabase interface even if Web SQL is disabled. When Web SQL is disabled,
window.openDatabase returns false, but it is callable and returns empty object.
Test: WebSQL.OpenDatabaseAlwaysExists
* Modules/webdatabase/DOMWindowWebDatabase.idl:
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::jsDOMWindowInstanceFunctionOpenDatabaseBody):
(WebCore::IDLOperation<JSDOMWindow>::cast):
(WebCore::jsDOMWindowInstanceFunctionOpenDatabase):
(WebCore::JSDOMWindow::openDatabase const):
2019-06-21 Ryosuke Niwa <rniwa@webkit.org>
Nullptr crash in DeleteSelectionCommand::handleGeneralDelete
https://bugs.webkit.org/show_bug.cgi?id=199126
Reviewed by Wenson Hsieh.
Added null checks to handleGeneralDelete as well as mergeParagraphs which runs after handleGeneralDelete to be defensive.
Unfortunately no new tests since there is no reproducible test case.
* editing/DeleteSelectionCommand.cpp:
(WebCore::DeleteSelectionCommand::handleGeneralDelete):
(WebCore::DeleteSelectionCommand::mergeParagraphs):
2019-06-21 Youenn Fablet <youenn@apple.com>
ResourceLoadNotifier should check whether its frame document loader is null
https://bugs.webkit.org/show_bug.cgi?id=199118
Reviewed by Geoffrey Garen.
* loader/ResourceLoadNotifier.cpp:
(WebCore::ResourceLoadNotifier::dispatchWillSendRequest):
2019-06-21 Jiewen Tan <jiewen_tan@apple.com>
WebPageProxy::loadData should accept ShouldOpenExternalURLsPolicy
https://bugs.webkit.org/show_bug.cgi?id=199114
<rdar://problem/51671674>
Reviewed by Youenn Fablet.
Covered by new test content within existing tests.
* loader/FrameLoaderTypes.h:
Adds an EnumTraits for ShouldOpenExternalURLsPolicy.
2019-06-21 Saam Barati <sbarati@apple.com>
[WHLSL] Code that accesses an undefined variable crashes
https://bugs.webkit.org/show_bug.cgi?id=198775
Reviewed by Myles C. Maxfield.
Myles mostly fixed this in r246631 when he made NameResolver propagate
its error to its parent NameResolver. However, there was still one bug
where we ended up calling setError twice for an if statement. This patch
fixes that and adds tests.
Tests: webgpu/whlsl-use-undefined-variable-2.html
webgpu/whlsl-use-undefined-variable.html
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::visit):
2019-06-21 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r246611.
Introduced a flakey test.
Reverted changeset:
"iOS 12.2 Drawing portrait video to canvas is sideways"
https://bugs.webkit.org/show_bug.cgi?id=196772
https://trac.webkit.org/changeset/246611
2019-06-21 Tim Horton <timothy_horton@apple.com>
Preview of <picture> element doesn't match element bounds
https://bugs.webkit.org/show_bug.cgi?id=199049
<rdar://problem/51474402>
Reviewed by Simon Fraser.
Test: fast/text-indicator/text-indicator-uses-img-size-inside-picture.html
* dom/DOMRectReadOnly.idl:
* dom/Range.cpp:
(WebCore::Range::absoluteRectsForRangeInText const):
(WebCore::Range::absoluteTextRects const):
(WebCore::Range::borderAndTextRects const):
(WebCore::Range::boundingRect const):
(WebCore::Range::absoluteBoundingRect const):
* dom/Range.h:
(WebCore::Range::absoluteTextRects):
(WebCore::Range::absoluteBoundingRect):
(WebCore::Range::borderAndTextRects):
(WebCore::Range::boundingRect):
* page/TextIndicator.cpp:
(WebCore::absoluteBoundingRectForRange):
(WebCore::estimatedBackgroundColorForRange):
(WebCore::initializeIndicator):
* rendering/RenderBlock.h:
* testing/Internals.cpp:
(WebCore::Internals::TextIndicatorData::TextIndicatorData):
(WebCore::Internals::TextIndicatorData::~TextIndicatorData):
(WebCore::Internals::textIndicatorForRange):
* testing/Internals.h:
* testing/Internals.idl:
2019-06-21 Youenn Fablet <youenn@apple.com>
Safari crashes after ~2028 OfflineAudioContext objects are created (they never get garbage collected, consuming a thread each)
https://bugs.webkit.org/show_bug.cgi?id=198964
<rdar://problem/51891520>
Reviewed by Jer Noble.
Move from setPendingActivity/unsetPendingActivity to an
m_pendingActivity member which is easier to manage.
Keep setting a pending activity for AudioContext at construction time
but do not do that for Offline contexts.
Instead, set the pending activity when startRendering is called.
Unset the pending activity when the rendering activity is finished.
Make m_audioDecoder a unique pointer so that it can lazily be initialized.
This removes the burden of creating an audio decoder thread for each context.
Test: webaudio/offlineaudiocontext-gc.html
* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::AudioContext):
(WebCore::AudioContext::constructCommon):
(WebCore::AudioContext::clear):
(WebCore::AudioContext::decodeAudioData):
(WebCore::AudioContext::startRendering):
(WebCore::AudioContext::finishedRendering):
(WebCore::AudioContext::dispatchEvent):
(WebCore::AudioContext::clearPendingActivity):
(WebCore::AudioContext::makePendingActivity):
To keep it consistent with setPendingActivity/unsetPendingActivity, we
explicitly ref/unref the AudioContext. We should try to remove this ref/unref.
* Modules/webaudio/AudioContext.h:
* Modules/webaudio/OfflineAudioDestinationNode.cpp:
(WebCore::OfflineAudioDestinationNode::startRendering):
2019-06-21 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r246655.
Introduced a failing test
Reverted changeset:
"Web Inspector: AXI: Audit: image label test is throwing
spurious errors on elements with existing alt attr, but no
value: <img alt>"
https://bugs.webkit.org/show_bug.cgi?id=194754
https://trac.webkit.org/changeset/246655
2019-06-21 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] read modify write expressions do no work as expected
https://bugs.webkit.org/show_bug.cgi?id=195864
Reviewed by Saam Barati.
Turns out https://bugs.webkit.org/show_bug.cgi?id=199037 already fixed everything.
This patch just adds a test.
Test: webgpu/whlsl-read-modify-write.html
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
2019-06-21 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Adjust baseline top when the baseline moves.
https://bugs.webkit.org/show_bug.cgi?id=199091
<rdar://problem/51966257>
Reviewed by Antti Koivisto.
Currently only "text-align: bottom" adjusts the baseline top. This patch fixes the "text-align: baseline" case when
the growing ascent pushes the baseline top closer to the line top.
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
2019-06-21 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Rename Line::m_contentLogicalHeight to m_lineLogicalHeight
https://bugs.webkit.org/show_bug.cgi?id=199100
<rdar://problem/51973614>
Reviewed by Antti Koivisto.
m_logicalLineHeight name seems more appropriate at this point (though the line heigh is driven by the content height).
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::logicalHeight const):
2019-06-21 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] LineBox::Baseline should have a height getter.
https://bugs.webkit.org/show_bug.cgi?id=199092
<rdar://problem/51966958>
Reviewed by Antti Koivisto.
The baseline height does not need to be a getter on the Line (no one calls it).
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::contentLogicalWidth const):
(WebCore::Layout::Line::baselineAlignedContentHeight const): Deleted.
* layout/inlineformatting/InlineLineBox.h:
(WebCore::Layout::LineBox::Baseline::height const):
2019-06-21 Michael Catanzaro <mcatanzaro@igalia.com>
[WPE][GTK] Bump minimum versions of GLib, GTK, libsoup, ATK, GStreamer, and Cairo
https://bugs.webkit.org/show_bug.cgi?id=199094
Reviewed by Carlos Garcia Campos.
* accessibility/atk/AXObjectCacheAtk.cpp:
(WebCore::AXObjectCache::postPlatformNotification):
* accessibility/atk/WebKitAccessible.cpp:
(atkRole):
(setAtkStateSetFromCoreObject):
(interfaceMaskFromObject):
* accessibility/atk/WebKitAccessibleInterfaceTableCell.cpp:
* accessibility/atk/WebKitAccessibleInterfaceTableCell.h:
* accessibility/atk/WebKitAccessibleInterfaceText.cpp:
(webkitAccessibleTextGetStringAtOffset):
(webkitAccessibleTextInterfaceInit):
* accessibility/atk/WebKitAccessibleInterfaceValue.cpp:
(webkitAccessibleValueInterfaceInit):
* platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp:
(WebCore::AudioTrackPrivateGStreamer::kind const):
* platform/graphics/gstreamer/AudioTrackPrivateGStreamer.h:
* platform/graphics/gstreamer/GRefPtrGStreamer.cpp:
(WTF::derefGPtr<GstStreamCollection>):
* platform/graphics/gstreamer/GRefPtrGStreamer.h:
* platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::initializeGStreamerAndRegisterWebKitElements):
* platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp:
(WebCore::InbandTextTrackPrivateGStreamer::InbandTextTrackPrivateGStreamer):
* platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.h:
(WebCore::InbandTextTrackPrivateGStreamer::create):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::load):
(WebCore::MediaPlayerPrivateGStreamer::updateTracks):
(WebCore::MediaPlayerPrivateGStreamer::enableTrack):
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::sourceSetup):
(WebCore::MediaPlayerPrivateGStreamer::handleSyncMessage):
(WebCore::MediaPlayerPrivateGStreamer::supportsType):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::requestGLContext):
(WebCore::MediaPlayerPrivateGStreamerBase::createGLAppSink):
(WebCore::MediaPlayerPrivateGStreamerBase::createVideoSinkGL):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:
(WebCore::TrackPrivateBaseGStreamer::TrackPrivateBaseGStreamer):
(WebCore::TrackPrivateBaseGStreamer::disconnect):
(WebCore::TrackPrivateBaseGStreamer::tagsChanged):
* platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h:
(WebCore::TrackPrivateBaseGStreamer::stream):
* platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp:
(WebCore::VideoTrackPrivateGStreamer::kind const):
* platform/graphics/gstreamer/VideoTrackPrivateGStreamer.h:
* platform/gtk/PlatformKeyboardEventGtk.cpp:
(WebCore::eventTypeForGdkKeyEvent):
* platform/gtk/PlatformMouseEventGtk.cpp:
(WebCore::PlatformMouseEvent::PlatformMouseEvent):
* platform/gtk/PlatformScreenGtk.cpp:
(WebCore::screenRect):
(WebCore::screenAvailableRect):
(WebCore::screenHasTouchDevice):
(WebCore::screenIsTouchPrimaryInputDevice):
(): Deleted.
(WebCore::isTouchDevice): Deleted.
(WebCore::deviceAddedCallback): Deleted.
(WebCore::deviceRemovedCallback): Deleted.
* platform/gtk/PlatformWheelEventGtk.cpp:
(WebCore::PlatformWheelEvent::PlatformWheelEvent):
* platform/gtk/RenderThemeGadget.cpp:
* platform/gtk/RenderThemeGadget.h:
* platform/gtk/RenderThemeWidget.cpp:
* platform/gtk/RenderThemeWidget.h:
* platform/gtk/ScrollbarThemeGtk.cpp:
(WebCore::ScrollbarThemeGtk::ScrollbarThemeGtk):
(WebCore::ScrollbarThemeGtk::themeChanged):
(WebCore::ScrollbarThemeGtk::updateThemeProperties):
(WebCore::ScrollbarThemeGtk::trackRect):
(WebCore::ScrollbarThemeGtk::forwardButtonRect):
(WebCore::ScrollbarThemeGtk::paint):
(WebCore::ScrollbarThemeGtk::scrollbarThickness):
(WebCore::createStyleContext): Deleted.
(WebCore::createChildStyleContext): Deleted.
(WebCore::paintStepper): Deleted.
(WebCore::adjustRectAccordingToMargin): Deleted.
* platform/mediastream/gstreamer/GStreamerCapturer.cpp:
* platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
* platform/network/soup/ResourceRequest.h:
(WebCore::toSoupMessagePriority):
* platform/network/soup/SoupNetworkSession.cpp:
(WebCore::SoupNetworkSession::SoupNetworkSession):
* rendering/RenderThemeGtk.cpp:
(WebCore::themePartStateFlags):
(WebCore::paintToggle):
(WebCore::RenderThemeGtk::paintButton):
(WebCore::menuListColor):
(WebCore::RenderThemeGtk::paintMenuList):
(WebCore::RenderThemeGtk::paintTextField):
(WebCore::adjustSearchFieldIconStyle):
(WebCore::RenderThemeGtk::paintSearchFieldCancelButton):
(WebCore::RenderThemeGtk::paintSliderThumb):
(WebCore::RenderThemeGtk::paintProgressBar):
(WebCore::RenderThemeGtk::paintInnerSpinButton):
(WebCore::styleColor):
(WebCore::RenderThemeGtk::systemColor const):
(WebCore::RenderThemeGtk::paintMediaButton):
(WebCore::createStyleContext): Deleted.
(WebCore::loadThemedIcon): Deleted.
(WebCore::gtkTextDirection): Deleted.
(WebCore::gtkIconStateFlags): Deleted.
(WebCore::adjustRectForFocus): Deleted.
(WebCore::renderButton): Deleted.
(WebCore::getIconSizeForPixelSize): Deleted.
(WebCore::paintIcon): Deleted.
(WebCore::paintEntryIcon): Deleted.
(WebCore::centerRectVerticallyInParentInputElement): Deleted.
(WebCore::spinButtonArrowSize): Deleted.
(WebCore::paintSpinArrowButton): Deleted.
2019-06-20 Antoine Quint <graouts@apple.com>
[Pointer Events] Respect pointer capture when dispatching mouse boundary events and updating :hover
https://bugs.webkit.org/show_bug.cgi?id=198999
Reviewed by Dean Jackson.
Up until now, we would not account for pointer capture (see https://w3c.github.io/pointerevents/#pointer-capture) when dispatching
mouse boundary events (mouseover, mouseout, mouseenter, mouseleave) and their counterpart pointer events. We would also not account
for it when updating :hover styles.
Now, when pointer capture changes for an element, we call setCapturingMouseEventsElement() on the EventHandler such that the element
that would naturally hit-test is overridden by the pointer capture element when identifying which target to use for the dispatch of
boundary mouse events. Additionally, when calling EventHandler::prepareMouseEvent(), we also use the pointer capture element to
eventually pass down to Document::updateHoverActiveState() such that :hover styles are applied to the correct element.
This also means that we need to re-run EventHandler::prepareMouseEvent() during mouse state changes to ensure that the :hover styles
are applied correctly should the pointer capture element change during dispatch of boundary mouse events.
* dom/Document.cpp:
(WebCore::Document::prepareMouseEvent): If there is one, use the pointer capture element instead of the hit-test target.
(WebCore::Document::updateHoverActiveState): Relax the mustBeInActiveChain condition in case the pointer capture element changed when
updating the :hover/:active chains.
* page/EventHandler.cpp:
(WebCore::EventHandler::handleMousePressEvent): Re-process the mouse event if the pointer capture element changed during event dispatch.
(WebCore::EventHandler::handleMouseMoveEvent): Re-process the mouse event if the pointer capture element changed during event dispatch.
(WebCore::EventHandler::handleMouseReleaseEvent): As we know the pointer capture element will be reset as part of the mouse being
released, we reset the pointer capture element and EventHandler's capture element prior to invalidating hover styles and boundary events.
(WebCore::EventHandler::setCapturingMouseEventsElement): Dispatch boundary events when a new element is set.
(WebCore::EventHandler::dispatchMouseEvent): New dispatchMouseEvent() variant that re-processes the provided MouseEventWithHitTestResults
in case the pointer capture element changes during event dispatch, as called by handleMousePressEvent() and handleMouseMoveEvent().
* page/EventHandler.h:
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::pointerCaptureElement): We now need to query whay the pointer capture element might be from EventHandler,
so expose a new method to access it.
(WebCore::PointerCaptureController::releasePointerCapture): Since we may not call processPendingPointerCapture() until the dispatch of the
next event, we must reset EventHandler's capturing mouse element right now so that the next event processed does not use it as an overriding target.
(WebCore::PointerCaptureController::hasPointerCapture): We would mistakenly return true if the provided element was null, which could be the
case of EventHandler's capturing element. Rather than changing call sites to check that the provided value exists, we change the method to
return false when the provided element is null. Note that this does not affect the API since it's exposed on Element itself.
(WebCore::PointerCaptureController::dispatchEventForTouchAtIndex): Call dispatchEvent() instead of calling pointerEventWillBeDispatched() and
pointerEventWasDispatched().
(WebCore::PointerCaptureController::dispatchEvent): Remove all code specific to pointer capture since now the events will be dispatched on the
pointer capture element by EventHandler.
(WebCore::PointerCaptureController::processPendingPointerCapture): Make sure this method is not re-entrant since it dispatches events.
* page/PointerCaptureController.h:
* rendering/HitTestRequest.h:
(WebCore::HitTestRequest::pointerCaptureElementChanged const): Add a new HitTestRequestType bit such that we can indicate to Document::updateHoverActiveState()
that it must be update the :hover/:active chains when the pointer capture element has just changed.
2019-06-20 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Stop pretending WebCore::Widget can have a platform widget
https://bugs.webkit.org/show_bug.cgi?id=199066
Reviewed by Michael Catanzaro.
That was only possible in legacy WebKit that we no longer support. The code can be simplified a bit.
* platform/Widget.cpp:
(WebCore::Widget::init):
* platform/Widget.h:
(WebCore::Widget::setPlatformWidget):
(WebCore::Widget::releasePlatformWidget): Deleted.
(WebCore::Widget::retainPlatformWidget): Deleted.
* platform/gtk/PlatformScreenGtk.cpp:
(WebCore::systemVisual):
(WebCore::screenDepth):
(WebCore::screenDepthPerComponent):
(WebCore::screenRect):
(WebCore::screenAvailableRect):
(WebCore::getToplevel): Deleted.
(WebCore::getVisual): Deleted.
(WebCore::getScreen): Deleted.
* platform/gtk/WidgetGtk.cpp:
(WebCore::Widget::~Widget):
(WebCore::Widget::show):
(WebCore::Widget::hide):
(WebCore::Widget::setIsSelected):
(WebCore::Widget::setFrameRect):
(WebCore::Widget::releasePlatformWidget): Deleted.
(WebCore::Widget::retainPlatformWidget): Deleted.
* platform/ios/WidgetIOS.mm:
(WebCore::Widget::~Widget):
2019-06-20 Simon Fraser <simon.fraser@apple.com>
Make it possible to include clipping in GraphicsLayer tree dumps
https://bugs.webkit.org/show_bug.cgi?id=199096
Reviewed by Zalan Bujtas.
Add LAYER_TREE_INCLUDES_CLIPPING and plumb it down to GraphicsLayers, turning
it on for a couple of tests.
* page/Frame.h:
* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::dumpProperties const):
* platform/graphics/GraphicsLayerClient.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::layerTreeAsText):
* testing/Internals.cpp:
(WebCore::toLayerTreeFlags):
* testing/Internals.h:
* testing/Internals.idl:
2019-06-20 Daniel Bates <dabates@apple.com>
[iOS] Evernote crashes when creating a note
https://bugs.webkit.org/show_bug.cgi?id=199083
<rdar://problem/51759247>
Reviewed by Brent Fulgham.
Add runtime check whether WebKit is being used in Evernote. Evernote's bundle ID
references iPhone, but they use the same ID for their iPad app as well.
* platform/RuntimeApplicationChecks.h:
* platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::IOSApplication::isEvernote): Added.
2019-06-20 Greg Doolittle <gr3g@apple.com>
Web Inspector: AXI: Audit: image label test is throwing spurious errors on elements with existing alt attr, but no value: <img alt>
https://bugs.webkit.org/show_bug.cgi?id=194754
Reviewed by Chris Fleizach.
Test: accessibility/img-alt-attribute-unassigned-value.html
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::computedRoleString const):
2019-06-20 Ryosuke Niwa <rniwa@webkit.org>
REGRESSION(r245912): Crash in TextIterator::range via visiblePositionForIndexUsingCharacterIterator
https://bugs.webkit.org/show_bug.cgi?id=199061
Reviewed by Wenson Hsieh.
Avoid calling CharacterIterator::range when it's at the end. Otherwise, we'd crash with null pointer dereferencing.
Unfortunately no new tests since we don't have any reproducible test case.
* editing/Editing.cpp:
(WebCore::visiblePositionForIndexUsingCharacterIterator):
2019-06-20 Brent Fulgham <bfulgham@apple.com>
Resolve frequent crashes in topPrivatelyControlledDomain
https://bugs.webkit.org/show_bug.cgi?id=199072
<rdar://problem/51428162>
Reviewed by Youenn Fablet.
Crash data indicates that we are frequently crashing when multiple threads call
WebCore::topPrivatelyControlledDomain.
Code review showed the potential for a thread contention issue, since WebKit builds
with '--fno-threadsafe-statics'.
This patch corrects the thread safety issue in WebCore::topPrivatelyControlledDomain.
* platform/mac/PublicSuffixMac.mm:
(WebCore::topPrivatelyControlledDomain): Only instantiate the static cache after the
current thread has achieved its lock.
2019-06-20 Saam Barati <sbarati@apple.com>
[WHLSL] Property resolver needs to recurse on newValueExpression for RMW operations
https://bugs.webkit.org/show_bug.cgi?id=199037
Reviewed by Myles C. Maxfield.
When we had an expression like `<e1> += <e2>`, we weren't running the property
resolver on <e2>. If <e2> was something like `mat[1][2]`, we wouldn't end up
simplifying that into the needed getter calls. This patch fixes this by having
the property resolver recurse on <e2>.
This patch also fixes a bug in the property resolver where we weren't marking some
dereference expressions as LValues. This was causing bugs in the metal code generator.
This patch also adds a way to dump the AST between passes that are
guaranteed to not fail.
Test: webgpu/whlsl-read-modify-write-high-zombies.html
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::PropertyResolver::visit):
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
2019-06-20 John Wilander <wilander@apple.com>
Storage Access API: Cap the number of times an iframe document can request access
https://bugs.webkit.org/show_bug.cgi?id=199074
<rdar://problem/51857195>
Reviewed by Brent Fulgham.
Tested manually.
This change just adds a counter to the number of times the user explicitly
denies storage access and returns early if the counter has reached the limit
of 2.
We hoped that iframes that request storage access would count the number
of times the user has been asked and not repeat the request over and over.
However, we're seeing pretty aggressive use of the API and users are
complaining. Therefore, we need a cap on how many times an iframed
document can ask if it is explicitly denied access by the user.
This is a first measure. If we see continued aggressive use of the API,
we'll have to consider more drastic measures.
* dom/DocumentStorageAccess.cpp:
(WebCore::DocumentStorageAccess::requestStorageAccess):
* dom/DocumentStorageAccess.h:
2019-06-20 Youenn Fablet <youenn@apple.com>
Changing settings of a MediaStreamTrack clone should not alter the settings of the original track
https://bugs.webkit.org/show_bug.cgi?id=198840
Reviewed by Eric Carlson.
Rename RealtimeVideoSource in RealtimeVideoCaptureSource.
Introduce RealtimeVideoSource as a class wrapping RealtimeVideoCaptureSource.
Its goal is to be able to have independent settings from its underlying RealtimeVideoCaptureSource.
It can also adapt size based on its settings if different than its RealtimeVideoCaptureSource.
Apply this wrapping for AV video sources as well as mock video sources.
Test: fast/mediastream/mediastreamtrack-video-clone.html
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::clone):
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/RealtimeVideoCaptureSource.cpp: Added.
(WebCore::RealtimeVideoCaptureSource::RealtimeVideoCaptureSource):
(WebCore::RealtimeVideoCaptureSource::~RealtimeVideoCaptureSource):
(WebCore::RealtimeVideoCaptureSource::prepareToProduceData):
(WebCore::RealtimeVideoCaptureSource::presets):
(WebCore::RealtimeVideoCaptureSource::setSupportedPresets):
(WebCore::RealtimeVideoCaptureSource::standardVideoSizes):
(WebCore::updateMinMax):
(WebCore::RealtimeVideoCaptureSource::updateCapabilities):
(WebCore::RealtimeVideoCaptureSource::supportsSizeAndFrameRate):
(WebCore::RealtimeVideoCaptureSource::frameRateRangeIncludesRate):
(WebCore::RealtimeVideoCaptureSource::presetSupportsFrameRate):
(WebCore::RealtimeVideoCaptureSource::supportsCaptureSize):
(WebCore::RealtimeVideoCaptureSource::shouldUsePreset):
(WebCore::RealtimeVideoCaptureSource::bestSupportedSizeAndFrameRate):
(WebCore::RealtimeVideoCaptureSource::setSizeAndFrameRate):
(WebCore::RealtimeVideoCaptureSource::adaptVideoSample):
(WebCore::RealtimeVideoCaptureSource::dispatchMediaSampleToObservers):
(WebCore::RealtimeVideoCaptureSource::clientUpdatedSizeAndFrameRate):
(WebCore::SizeAndFrameRate::toJSONObject const):
(WebCore::SizeAndFrameRate::toJSONString const):
* platform/mediastream/RealtimeVideoCaptureSource.h: Added.
(WebCore::RealtimeVideoCaptureSource::sampleRotation const):
(WebCore::RealtimeVideoCaptureSource::prefersPreset):
(WebCore::RealtimeVideoCaptureSource::setFrameRateWithPreset):
(WebCore::RealtimeVideoCaptureSource::canResizeVideoFrames const):
(WebCore::RealtimeVideoCaptureSource::setDefaultSize):
(WebCore::RealtimeVideoCaptureSource::observedFrameRate const):
(WTF::LogArgument<WebCore::SizeAndFrameRate>::toString):
* platform/mediastream/RealtimeVideoSource.cpp:
(WebCore::RealtimeVideoSource::RealtimeVideoSource):
(WebCore::m_source):
(WebCore::RealtimeVideoSource::~RealtimeVideoSource):
(WebCore::RealtimeVideoSource::startProducingData):
(WebCore::RealtimeVideoSource::stopProducingData):
(WebCore::RealtimeVideoSource::supportsSizeAndFrameRate):
(WebCore::RealtimeVideoSource::setSizeAndFrameRate):
(WebCore::RealtimeVideoSource::sourceMutedChanged):
(WebCore::RealtimeVideoSource::sourceSettingsChanged):
(WebCore::RealtimeVideoSource::preventSourceFromStopping):
(WebCore::RealtimeVideoSource::sourceStopped):
(WebCore::RealtimeVideoSource::videoSampleAvailable):
(WebCore::RealtimeVideoSource::clone):
* platform/mediastream/RealtimeVideoSource.h:
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
(WebCore::GStreamerVideoCaptureSource::GStreamerVideoCaptureSource):
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::create):
(WebCore::AVVideoCaptureSource::AVVideoCaptureSource):
* platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
* platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
(WebCore::MockRealtimeVideoSource::create):
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::create):
(WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource):
(WebCore::MockRealtimeVideoSource::supportsSizeAndFrameRate):
(WebCore::MockRealtimeVideoSource::setSizeAndFrameRate):
* platform/mock/MockRealtimeVideoSource.h:
2019-06-20 Saam Barati <sbarati@apple.com>
Unreviewed. More speculative build fixing for watchOS after r246631.
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
2019-06-20 Saam Barati <sbarati@apple.com>
Unreviewed. Speculative build fix for watchOS after r246631.
* Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
2019-06-18 Darin Adler <darin@apple.com>
Tidy up the remaining bits of the AtomicString to AtomString rename
https://bugs.webkit.org/show_bug.cgi?id=198990
Reviewed by Michael Catanzaro.
* bindings/scripts/test/JS/JSTestObj.cpp: Updated names.
* bindings/scripts/test/TestObj.idl: Ditto.
* css/makeprop.pl: Updated comment.
* css/makevalues.pl: Ditto.
* html/FormController.cpp:
(WebCore::FormKeyGenerator::formKey): Ditto.
2019-06-20 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Make the initial strut explicit
https://bugs.webkit.org/show_bug.cgi?id=199057
<rdar://problem/51927864>
Reviewed by Antti Koivisto.
The strut always sets the initial vertical constraints on the new line in strict mode. However in quirks mode
we can ignore it as long as there's no baseline type content on the line.
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
* layout/inlineformatting/InlineFormattingContextQuirks.cpp:
(WebCore::Layout::InlineFormattingContext::Quirks::lineHeightConstraints):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendHardLineBreak):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
* layout/inlineformatting/InlineLine.h:
2019-06-20 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Introduce Line::InitialConstraints
https://bugs.webkit.org/show_bug.cgi?id=199056
<rdar://problem/51927597>
Reviewed by Antti Koivisto.
Line::InitialConstraints, as the name suggests, holds the initial constraint values for the new line.
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::LineInput::LineInput):
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
(WebCore::Layout::InlineFormattingContext::LineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::LineLayout::computedIntrinsicWidth const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Line):
(WebCore::Layout::m_skipVerticalAligment):
(WebCore::Layout::m_lineLogicalWidth): Deleted.
* layout/inlineformatting/InlineLine.h:
2019-06-20 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Remove support for GTK2 plugins
https://bugs.webkit.org/show_bug.cgi?id=199065
Reviewed by Sergio Villar Senin.
* PlatformGTK.cmake:
* SourcesGTK.txt:
* SourcesWPE.txt:
* platform/FreeType.cmake:
* platform/SourcesGLib.txt:
* platform/graphics/Color.h:
* platform/graphics/PlatformDisplay.cpp:
(WebCore::PlatformDisplay::createPlatformDisplay):
* platform/graphics/gtk/ColorGtk.cpp:
(WebCore::Color::operator GdkRGBA const):
* platform/graphics/gtk/DisplayRefreshMonitorGtk.cpp:
(WebCore::onFrameClockUpdate):
(WebCore::DisplayRefreshMonitorGtk::requestRefreshCallback):
* platform/graphics/gtk/DisplayRefreshMonitorGtk.h:
(WebCore::DisplayRefreshMonitorGtk::create):
* platform/graphics/gtk/GdkCairoUtilities.cpp:
* platform/gtk/GRefPtrGtk.cpp:
* platform/gtk/GRefPtrGtk.h:
* platform/gtk/GtkVersioning.c: Removed.
* platform/gtk/GtkVersioning.h: Removed.
* platform/gtk/PasteboardHelper.cpp:
(WebCore::PasteboardHelper::getClipboardContents):
* platform/gtk/PlatformKeyboardEventGtk.cpp:
(WebCore::modifiersForGdkKeyEvent):
(WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
* platform/gtk/PlatformMouseEventGtk.cpp:
(WebCore::PlatformMouseEvent::PlatformMouseEvent):
* platform/gtk/PlatformScreenGtk.cpp:
(WebCore::screenIsTouchPrimaryInputDevice):
* platform/gtk/PlatformWheelEventGtk.cpp:
(WebCore::PlatformWheelEvent::PlatformWheelEvent):
* platform/gtk/ScrollbarThemeGtk.cpp:
* platform/gtk/ScrollbarThemeGtk.h:
* platform/gtk/WidgetGtk.cpp:
* rendering/RenderThemeGtk.cpp:
* rendering/RenderThemeGtk.h:
2019-06-19 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Hook up common texture functions
https://bugs.webkit.org/show_bug.cgi?id=198704
<rdar://problem/51668841>
Reviewed by Saam Barati.
This patch adds the Metal implementation of the Sample(), Load(), and GetDimensions()
texture functions. The implementation simply performs string concatenation to produce the
correct results, and adds many new native functions to the standard library.
We can't zero-fill texture types or sampler types, so this patch forbids default
constructors for those types. It also forbids those types to exist within arrays, array
references, or pointers, becuase an out-of-bounds access may cause us to try to zero-fill
them.
Tests: webgpu/whlsl-textures-getdimensions.html
webgpu/whlsl-textures-load.html
webgpu/whlsl-textures-sample.html
* Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h: Add some more introspection functions
so we can generate the necessary Metal functions for the appropriate texture types.
(WebCore::WHLSL::AST::NativeTypeDeclaration::isAtomic const):
(WebCore::WHLSL::AST::NativeTypeDeclaration::isTextureArray const):
(WebCore::WHLSL::AST::NativeTypeDeclaration::isDepthTexture const):
(WebCore::WHLSL::AST::NativeTypeDeclaration::isWritableTexture const):
(WebCore::WHLSL::AST::NativeTypeDeclaration::textureDimension const):
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIsTextureArray):
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIsDepthTexture):
(WebCore::WHLSL::AST::NativeTypeDeclaration::setIsWritableTexture):
(WebCore::WHLSL::AST::NativeTypeDeclaration::setTextureDimension):
(WebCore::WHLSL::AST::NativeTypeDeclaration::isAtom const): Deleted.
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp: Native types can be passed into
entry points, too.
(WebCore::WHLSL::Metal::EntryPointScaffolding::resourceHelperTypes):
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp: Entry points that return void don't need a
semantic.
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp: Implement the functions.
(WebCore::WHLSL::Metal::vectorLength):
(WebCore::WHLSL::Metal::vectorInnerType):
(WebCore::WHLSL::Metal::vectorSuffix):
(WebCore::WHLSL::Metal::writeNativeFunction):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeTypeWriter.cpp: Textures come in two flavors: sample-able
and read/write-able. Make sure we produce the correct Metal types for them.
(WebCore::WHLSL::Metal::writeNativeType):
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.cpp: We can't auto-initialize textures and
samplers. Therefore, this function needs to be able to fail.
(WebCore::WHLSL::AutoInitialize::visit):
(WebCore::WHLSL::autoInitializeVariables):
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.h:
* Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp: We can't auto-initialize textures, so users
shouldn't be able to either.
(WebCore::WHLSL::checkDuplicateFunctions):
* Modules/webgpu/WHLSL/WHLSLCheckTextureReferences.cpp: Added. Make sure textures and samplers can't
exist inside arrays, array references, or pointers. This is because out-of-bounds accesses may cause
us to attempt to zero-fill the inner type, but we can't zero-fill textures and samplers.
(WebCore::WHLSL::TextureReferencesChecker::TextureReferencesChecker):
(WebCore::WHLSL::Searcher::Searcher):
(WebCore::WHLSL::Searcher::found const):
(WebCore::WHLSL::Searcher::visit):
(WebCore::WHLSL::TextureReferencesChecker::containsTextureOrSampler):
(WebCore::WHLSL::TextureReferencesChecker::visit):
(WebCore::WHLSL::checkTextureReferences):
* Modules/webgpu/WHLSL/WHLSLCheckTextureReferences.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.h.
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
* Modules/webgpu/WHLSL/WHLSLIntrinsics.cpp: Record more detailed information about texture types,
so we can emit correct Metal code.
(WebCore::WHLSL::Intrinsics::addFullTexture):
(WebCore::WHLSL::Intrinsics::addDepthTexture):
* Modules/webgpu/WHLSL/WHLSLIntrinsics.h:
(WebCore::WHLSL::Intrinsics::WTF_ARRAY_LENGTH):
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp: Nested NameResolvers need to propagate their error. Also,
native functions with named arguments shouldn't be adding their arguments to the global scope.
(WebCore::WHLSL::NameResolver::visit):
* Modules/webgpu/WHLSL/WHLSLNameResolver.h:
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
* Modules/webgpu/WHLSL/WHLSLProgram.h:
(WebCore::WHLSL::Program::intrinsics const):
* Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.cpp:
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt: Metal doesn't have writable depth textures.
* Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp: Don't generate default constructors for textures
or samplers.
(WebCore::WHLSL::synthesizeConstructors):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/gpu/GPUTexture.h: Make texture usages more clear.
(WebCore::GPUTexture::isSampled const):
(WebCore::GPUTexture::isStorage const):
* platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm: Ditto.
(WebCore::GPUBindGroup::tryCreate):
* platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm: Ditto.
(WebCore::GPUProgrammablePassEncoder::setBindGroup):
* platform/graphics/gpu/cocoa/GPUTextureMetal.mm: Ditto.
(WebCore::mtlTextureUsageForGPUTextureUsageFlags):
2019-06-19 Justin Fan <justin_fan@apple.com>
[WHLSL] Create a shading language test harness
https://bugs.webkit.org/show_bug.cgi?id=198978
Reviewed by Myles C. Maxfield.
When creating MTLArgumentEncoders for argument buffers, the user's arguments
must match the order that they are declared in the shader. Move back-end information
such as buffer lengths to the end of the argument arrays.
Test: webgpu/whlsl-harness-test.html
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
(WebCore::WHLSL::Metal::EntryPointScaffolding::resourceHelperTypes):
* platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:
(WebCore::GPUBindGroupLayout::tryCreate):
2019-06-19 Saam Barati <sbarati@apple.com>
[WHLSL] The checker needs to resolve types for the anonymous variables in ReadModifyWrite expressions
https://bugs.webkit.org/show_bug.cgi?id=198988
Reviewed by Dean Jackson and Myles C. Maxfield.
This patch makes it so that the Checker assigns types to the internal variables
in a read modify write expression. These were the only variables that didn't have
types ascribed to them.
This patch also does a fly by fix where we kept pointers to value types
in a HashMap in the checker. This is wrong precisely when the HashMap gets
resized. Instead, we now just store the value itself since we're just
dealing with a simple Variant that wraps either an empty struct or an
enum.
Test: webgpu/whlsl-checker-should-set-type-of-read-modify-write-variables.html
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
(WebCore::WHLSL::AST::VariableDeclaration::setType):
(WebCore::WHLSL::AST::VariableDeclaration::type const):
* Modules/webgpu/WHLSL/WHLSLASTDumper.cpp: Make it obvious that read
modify write expressions are such by prefixing them with "RMW".
(WebCore::WHLSL::ASTDumper::visit):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::Checker::visit):
2019-06-19 Devin Rousso <drousso@apple.com>
Web Inspector: Network: replace CFNetwork SPI with new API where able
https://bugs.webkit.org/show_bug.cgi?id=198762
Reviewed by Timothy Hatcher.
* platform/network/NetworkLoadMetrics.h:
2019-06-19 Jer Noble <jer.noble@apple.com>
iOS 12.2 Drawing portrait video to canvas is sideways
https://bugs.webkit.org/show_bug.cgi?id=196772
<rdar://problem/49781802>
Reviewed by Eric Carlson.
Test: media/video-orientation-canvas.html
Move rotation code into its own ImageRotationSessionVT class for re-use across
all existing classes with rotation operations. Should slightly increase performance
for painting rotated media files, as the rotation only occurs once per frame, rather
than once per drawing operation.
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.h:
(WebCore::ImageDecoderAVFObjC::RotationProperties::isIdentity const): Deleted.
* platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:
(WebCore::ImageDecoderAVFObjC::readTrackMetadata):
(WebCore::ImageDecoderAVFObjC::storeSampleBuffer):
(WebCore::ImageDecoderAVFObjC::setTrack):
(WebCore::transformToRotationProperties): Deleted.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastPixelBuffer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithVideoOutput):
* platform/graphics/cv/ImageRotationSessionVT.h: Added.
(WebCore::ImageRotationSessionVT::RotationProperties::isIdentity const):
(WebCore::ImageRotationSessionVT::rotationProperties const):
(WebCore::ImageRotationSessionVT::rotatedSize):
* platform/graphics/cv/ImageRotationSessionVT.mm: Added.
(WebCore::transformToRotationProperties):
(WebCore::ImageRotationSessionVT::ImageRotationSessionVT):
(WebCore::ImageRotationSessionVT::rotate):
* platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:
* platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.h:
* platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.mm:
(WebCore::rotationToAngle):
(WebCore::RealtimeOutgoingVideoSourceCocoa::rotatePixelBuffer):
(WebCore::computeRotatedWidthAndHeight): Deleted.
2019-06-19 Simon Fraser <simon.fraser@apple.com>
REGRESSION (246538): Newyorker.com header scrolls on page
Revert parts of r246538 so that frame scrolling is reverted to using layer positions.
Overflow scroll will still scroll by changing boundsOrigin.
The bug was caused by confusion about insetClipLayer and scrollContainerLayer; macOS
positions the clip layer using FrameView::yPositionForInsetClipLayer(), so it's not just
a simple scroll container, and this change broke positioning for fixed position layers.
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::reconcileScrollPosition):
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::insetClipLayerForFrameView):
* page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
(WebCore::ScrollingTreeFrameScrollingNodeMac::repositionScrollingLayers):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::~RenderLayerCompositor):
(WebCore::RenderLayerCompositor::frameViewDidChangeSize):
(WebCore::RenderLayerCompositor::updateScrollLayerPosition):
(WebCore::RenderLayerCompositor::updateScrollLayerClipping):
(WebCore::RenderLayerCompositor::frameViewDidScroll):
(WebCore::RenderLayerCompositor::updateRootLayerPosition):
(WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
(WebCore::RenderLayerCompositor::ensureRootLayer):
(WebCore::RenderLayerCompositor::destroyRootLayer):
(WebCore::RenderLayerCompositor::updateScrollingNodeLayers):
(WebCore::RenderLayerCompositor::updateLayersForScrollPosition): Deleted.
(WebCore::RenderLayerCompositor::updateScrollContainerGeometry): Deleted.
* rendering/RenderLayerCompositor.h:
2019-06-19 Adrian Perez de Castro <aperez@igalia.com>
[WPE][GTK] Fix build with unified sources disabled
https://bugs.webkit.org/show_bug.cgi?id=198752
Reviewed by Michael Catanzaro.
No new tests needed.
* Modules/indexeddb/server/UniqueIDBDatabase.h: Add missing forward declaration for IDBGetRecordData,
replace inclusion of UniqueIDBDatabaseConnection.h with a forward declaration.
* Modules/indexeddb/server/UniqueIDBDatabaseConnection.h: Remove unneeded inclusion of
UniqueIDBDatabaseTransaction.h, add missing inclusion of UniqueIDBDatabase.h
* Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h: Remove unneeded inclusion of
UniqueIDBDatabaseConnection.h inclusion.
* bridge/c/c_class.cpp: Add inclusion of JSCJSValueInlines.h to avoid linker errors due
to missing JSValue inline functions.
* dom/DocumentParser.h: Replace forward declaration of Document with inclusion of Document.h,
to avoid error due to usage of incomplete type in template expansion.
* dom/Microtasks.h: Add missing forward declaration of JSC::VM
* editing/markup.cpp: Add missing inclusion of PasteboardItemInfo.h
* page/Quirks.h: Add missing forward declaration of WebCore::EventTarget
* page/RuntimeEnabledFeatures.h: Add missing inclusion of wtf/Optional.h to avoid error due to
expansion of undefined template.
* page/SocketProvider.h: Add missing forward declaration for Document.
* platform/graphics/GraphicsLayerClient.h: Add missing inclusion of wtf/OptionSet.h to avoid
error due to expansion of undefined template.
* rendering/RenderMultiColumnSpannerPlaceholder.h: Replace forward declaration of RenderMultiColumnFlow
with inclusion of RenderMultiColumnFlow.h to avoid error due to usage of undefined class.
2019-06-19 Antti Koivisto <antti@apple.com>
RequestedScrollPosition shouldn't be applied after node reattach
https://bugs.webkit.org/show_bug.cgi?id=198994
<rdar://problem/51439685>
Reviewed by Simon Fraser.
Test: scrollingcoordinator/ios/scroll-position-after-reattach.html
If a scrolling node gets reattached, its scroll position resets to (0,0) or whatever the previous
requestedScrollPosition was, and the current position is lost.
* page/scrolling/ScrollingStateFixedNode.cpp:
(WebCore::ScrollingStateFixedNode::setPropertyChangedBitsAfterReattach):
(WebCore::ScrollingStateFixedNode::setAllPropertiesChanged): Deleted.
Rename to better reflect what this is for.
* page/scrolling/ScrollingStateFixedNode.h:
* page/scrolling/ScrollingStateFrameHostingNode.cpp:
(WebCore::ScrollingStateFrameHostingNode::setPropertyChangedBitsAfterReattach):
(WebCore::ScrollingStateFrameHostingNode::setAllPropertiesChanged): Deleted.
* page/scrolling/ScrollingStateFrameHostingNode.h:
* page/scrolling/ScrollingStateFrameScrollingNode.cpp:
(WebCore::ScrollingStateFrameScrollingNode::setPropertyChangedBitsAfterReattach):
(WebCore::ScrollingStateFrameScrollingNode::setAllPropertiesChanged): Deleted.
* page/scrolling/ScrollingStateFrameScrollingNode.h:
* page/scrolling/ScrollingStateNode.cpp:
(WebCore::ScrollingStateNode::setPropertyChangedBitsAfterReattach):
(WebCore::ScrollingStateNode::setAllPropertiesChanged): Deleted.
* page/scrolling/ScrollingStateNode.h:
* page/scrolling/ScrollingStatePositionedNode.cpp:
(WebCore::ScrollingStatePositionedNode::setPropertyChangedBitsAfterReattach):
(WebCore::ScrollingStatePositionedNode::setAllPropertiesChanged): Deleted.
* page/scrolling/ScrollingStatePositionedNode.h:
* page/scrolling/ScrollingStateScrollingNode.cpp:
(WebCore::ScrollingStateScrollingNode::setPropertyChangedBitsAfterReattach):
Don't set RequestedScrollPosition. It is a special property that is applied only once on request
and shouldn't get reapplied. Nodes should keep their existing scroll position on reattach.
(WebCore::ScrollingStateScrollingNode::setAllPropertiesChanged): Deleted.
* page/scrolling/ScrollingStateScrollingNode.h:
* page/scrolling/ScrollingStateStickyNode.cpp:
(WebCore::ScrollingStateStickyNode::setPropertyChangedBitsAfterReattach):
(WebCore::ScrollingStateStickyNode::setAllPropertiesChanged): Deleted.
* page/scrolling/ScrollingStateStickyNode.h:
* page/scrolling/ScrollingStateTree.cpp:
(WebCore::ScrollingStateTree::nodeWasReattachedRecursive):
2019-06-18 Saam Barati <sbarati@apple.com>
[WHLSL] Support matrices
https://bugs.webkit.org/show_bug.cgi?id=198876
<rdar://problem/51768882>
Reviewed by Dean Jackson and Myles Maxfield.
This patch adds in support for matrices to WHLSL. Most matrix related code
is defined by the standard library. This patch just needed to add support
for the native functions operator[] and operator[]= on matrix types. The only
native functions that are named operator[] and operator[]= are for matrix
operations, so we strongly assume when generating code for native operator[] and
operator[]= that we're dealing with matrix types.
operator[]= ignores the write if the index is out of bounds. operator[]
returns a zeroed vector if the index is out of bounds.
This patch also incorporates two bug fixes:
1. This patch takes Robin's patch in https://bugs.webkit.org/show_bug.cgi?id=198313 to ensure
we don't have pointers to values in a hash map. This was needed in this patch
otherwise we'd crash parsing the standard library.
2. This patch fixes how we handle "break" in metal codegen. When I first
implemented break, I strongly assumed we were in a loop. However, break
can be either from a loop or from switch. This patch teaches the metal code
generator to track which context we're in and to emit code accordingly.
Tests: webgpu/whlsl-matrix-2.html
webgpu/whlsl-matrix.html
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::emitLoop):
* Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.cpp:
(WebCore::WHLSL::Metal::generateMetalCodeShared):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeFunction):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::Checker::assignTypes):
(WebCore::WHLSL::Checker::getInfo):
(WebCore::WHLSL::Checker::assignType):
(WebCore::WHLSL::Checker::forwardType):
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
2019-06-18 Yusuke Suzuki <ysuzuki@apple.com>
[JSC] JSLock should be WebThread aware
https://bugs.webkit.org/show_bug.cgi?id=198911
Reviewed by Geoffrey Garen.
* bindings/js/CommonVM.cpp:
(WebCore::commonVMSlow):
2019-06-18 Joseph Pecoraro <pecoraro@apple.com>
WebSocketDeflater uses an unnecessarily constrained compression memory level
https://bugs.webkit.org/show_bug.cgi?id=198973
Reviewed by Alex Christensen.
* Modules/websockets/WebSocketDeflater.cpp:
Set the memLevel to the deflateInit2 default value, not a minimum value.
2019-06-18 Keith Miller <keith_miller@apple.com>
Add support for WeakRef
https://bugs.webkit.org/show_bug.cgi?id=198710
Reviewed by Yusuke Suzuki.
We need to make sure the Web MicrotaskQueue notifies the JSC VM
that it has finished performing a microtask checkpoint. This lets
the JSC VM know it is safe to collect referenced WeakRefs. Since
there was no way to get the VM from the MicrotaskQueue I have
added a RefPtr to the queue's VM. For the main thread the VM lives
forever so is fine. For workers the queue and the VM share an
owner so this shouldn't matter either.
Tests: js/weakref-async-is-collected.html
js/weakref-eventually-collects-values.html
js/weakref-microtasks-dont-collect.html
js/weakref-weakset-consistency.html
* dom/Microtasks.cpp:
(WebCore::MicrotaskQueue::MicrotaskQueue):
(WebCore::MicrotaskQueue::mainThreadQueue):
(WebCore::MicrotaskQueue::performMicrotaskCheckpoint):
* dom/Microtasks.h:
(WebCore::MicrotaskQueue::vm const):
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::WorkerGlobalScope):
2019-06-18 Kenneth Russell <kbr@chromium.org>
Add preliminary ANGLE backend to WebCore
https://bugs.webkit.org/show_bug.cgi?id=197755
Reviewed by Dean Jackson.
Add new files supplying an ANGLE version of GraphicsContext3D and
Extensions3D, conditionalized under USE_ANGLE. Update Xcode project to
build these files. This option compiles and links successfully.
FIXMEs remain in several common files which will be addressed in
subsequent patches.
This work will be tested with the preexisting WebGL conformance
suite.
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/ANGLEWebKitBridge.h:
* platform/graphics/GraphicsContext3D.h:
* platform/graphics/GraphicsContext3DManager.cpp:
(WebCore::GraphicsContext3DManager::updateAllContexts):
(WebCore::GraphicsContext3DManager::updateHighPerformanceState):
(WebCore::GraphicsContext3DManager::disableHighPerformanceGPUTimerFired):
* platform/graphics/angle/Extensions3DANGLE.cpp: Copied from Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLCommon.cpp.
(WebCore::Extensions3DANGLE::Extensions3DANGLE):
(WebCore::Extensions3DANGLE::supports):
(WebCore::Extensions3DANGLE::ensureEnabled):
(WebCore::Extensions3DANGLE::isEnabled):
(WebCore::Extensions3DANGLE::getGraphicsResetStatusARB):
(WebCore::Extensions3DANGLE::getTranslatedShaderSourceANGLE):
(WebCore::Extensions3DANGLE::initializeAvailableExtensions):
(WebCore::Extensions3DANGLE::readnPixelsEXT):
(WebCore::Extensions3DANGLE::getnUniformfvEXT):
(WebCore::Extensions3DANGLE::getnUniformivEXT):
(WebCore::Extensions3DANGLE::blitFramebuffer):
(WebCore::Extensions3DANGLE::renderbufferStorageMultisample):
(WebCore::Extensions3DANGLE::createVertexArrayOES):
(WebCore::Extensions3DANGLE::deleteVertexArrayOES):
(WebCore::Extensions3DANGLE::isVertexArrayOES):
(WebCore::Extensions3DANGLE::bindVertexArrayOES):
(WebCore::Extensions3DANGLE::insertEventMarkerEXT):
(WebCore::Extensions3DANGLE::pushGroupMarkerEXT):
(WebCore::Extensions3DANGLE::popGroupMarkerEXT):
(WebCore::Extensions3DANGLE::supportsExtension):
(WebCore::Extensions3DANGLE::drawBuffersEXT):
(WebCore::Extensions3DANGLE::drawArraysInstanced):
(WebCore::Extensions3DANGLE::drawElementsInstanced):
(WebCore::Extensions3DANGLE::vertexAttribDivisor):
(WebCore::Extensions3DANGLE::getExtensions):
* platform/graphics/angle/Extensions3DANGLE.h: Added.
* platform/graphics/angle/GraphicsContext3DANGLE.cpp: Copied from Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp.
(WebCore::GraphicsContext3D::releaseShaderCompiler):
(WebCore::wipeAlphaChannelFromPixels):
(WebCore::GraphicsContext3D::readPixelsAndConvertToBGRAIfNecessary):
(WebCore::GraphicsContext3D::validateAttributes):
(WebCore::GraphicsContext3D::reshapeFBOs):
(WebCore::GraphicsContext3D::attachDepthAndStencilBufferIfNeeded):
(WebCore::GraphicsContext3D::resolveMultisamplingIfNecessary):
(WebCore::GraphicsContext3D::renderbufferStorage):
(WebCore::GraphicsContext3D::getIntegerv):
(WebCore::GraphicsContext3D::getShaderPrecisionFormat):
(WebCore::GraphicsContext3D::texImage2D):
(WebCore::GraphicsContext3D::depthRange):
(WebCore::GraphicsContext3D::clearDepth):
(WebCore::GraphicsContext3D::getExtensions):
(WebCore::GraphicsContext3D::readPixels):
(WebCore::setCurrentNameHashMapForShader):
(WebCore::nameHashForShader):
(WebCore::GraphicsContext3D::validateDepthStencil):
(WebCore::GraphicsContext3D::paintRenderingResultsToCanvas):
(WebCore::GraphicsContext3D::paintCompositedResultsToCanvas):
(WebCore::GraphicsContext3D::paintRenderingResultsToImageData):
(WebCore::GraphicsContext3D::prepareTexture):
(WebCore::GraphicsContext3D::readRenderingResults):
(WebCore::GraphicsContext3D::reshape):
(WebCore::GraphicsContext3D::checkVaryingsPacking const):
(WebCore::GraphicsContext3D::precisionsMatch const):
(WebCore::GraphicsContext3D::getInternalFramebufferSize const):
(WebCore::GraphicsContext3D::activeTexture):
(WebCore::GraphicsContext3D::attachShader):
(WebCore::GraphicsContext3D::bindAttribLocation):
(WebCore::GraphicsContext3D::bindBuffer):
(WebCore::GraphicsContext3D::bindFramebuffer):
(WebCore::GraphicsContext3D::bindRenderbuffer):
(WebCore::GraphicsContext3D::bindTexture):
(WebCore::GraphicsContext3D::blendColor):
(WebCore::GraphicsContext3D::blendEquation):
(WebCore::GraphicsContext3D::blendEquationSeparate):
(WebCore::GraphicsContext3D::blendFunc):
(WebCore::GraphicsContext3D::blendFuncSeparate):
(WebCore::GraphicsContext3D::bufferData):
(WebCore::GraphicsContext3D::bufferSubData):
(WebCore::GraphicsContext3D::mapBufferRange):
(WebCore::GraphicsContext3D::unmapBuffer):
(WebCore::GraphicsContext3D::copyBufferSubData):
(WebCore::GraphicsContext3D::getInternalformativ):
(WebCore::GraphicsContext3D::renderbufferStorageMultisample):
(WebCore::GraphicsContext3D::texStorage2D):
(WebCore::GraphicsContext3D::texStorage3D):
(WebCore::GraphicsContext3D::getActiveUniforms):
(WebCore::GraphicsContext3D::checkFramebufferStatus):
(WebCore::GraphicsContext3D::clearColor):
(WebCore::GraphicsContext3D::clear):
(WebCore::GraphicsContext3D::clearStencil):
(WebCore::GraphicsContext3D::colorMask):
(WebCore::GraphicsContext3D::compileShader):
(WebCore::GraphicsContext3D::compileShaderDirect):
(WebCore::GraphicsContext3D::copyTexImage2D):
(WebCore::GraphicsContext3D::copyTexSubImage2D):
(WebCore::GraphicsContext3D::cullFace):
(WebCore::GraphicsContext3D::depthFunc):
(WebCore::GraphicsContext3D::depthMask):
(WebCore::GraphicsContext3D::detachShader):
(WebCore::GraphicsContext3D::disable):
(WebCore::GraphicsContext3D::disableVertexAttribArray):
(WebCore::GraphicsContext3D::drawArrays):
(WebCore::GraphicsContext3D::drawElements):
(WebCore::GraphicsContext3D::enable):
(WebCore::GraphicsContext3D::enableVertexAttribArray):
(WebCore::GraphicsContext3D::finish):
(WebCore::GraphicsContext3D::flush):
(WebCore::GraphicsContext3D::framebufferRenderbuffer):
(WebCore::GraphicsContext3D::framebufferTexture2D):
(WebCore::GraphicsContext3D::frontFace):
(WebCore::GraphicsContext3D::generateMipmap):
(WebCore::GraphicsContext3D::getActiveAttribImpl):
(WebCore::GraphicsContext3D::getActiveAttrib):
(WebCore::GraphicsContext3D::getActiveUniformImpl):
(WebCore::GraphicsContext3D::getActiveUniform):
(WebCore::GraphicsContext3D::getAttachedShaders):
(WebCore::generateHashedName):
(WebCore::GraphicsContext3D::mappedSymbolInShaderSourceMap):
(WebCore::GraphicsContext3D::mappedSymbolName):
(WebCore::GraphicsContext3D::originalSymbolInShaderSourceMap):
(WebCore::GraphicsContext3D::originalSymbolName):
(WebCore::GraphicsContext3D::getAttribLocation):
(WebCore::GraphicsContext3D::getAttribLocationDirect):
(WebCore::GraphicsContext3D::getContextAttributes):
(WebCore::GraphicsContext3D::moveErrorsToSyntheticErrorList):
(WebCore::GraphicsContext3D::getError):
(WebCore::GraphicsContext3D::getString):
(WebCore::GraphicsContext3D::hint):
(WebCore::GraphicsContext3D::isBuffer):
(WebCore::GraphicsContext3D::isEnabled):
(WebCore::GraphicsContext3D::isFramebuffer):
(WebCore::GraphicsContext3D::isProgram):
(WebCore::GraphicsContext3D::isRenderbuffer):
(WebCore::GraphicsContext3D::isShader):
(WebCore::GraphicsContext3D::isTexture):
(WebCore::GraphicsContext3D::lineWidth):
(WebCore::GraphicsContext3D::linkProgram):
(WebCore::GraphicsContext3D::pixelStorei):
(WebCore::GraphicsContext3D::polygonOffset):
(WebCore::GraphicsContext3D::sampleCoverage):
(WebCore::GraphicsContext3D::scissor):
(WebCore::GraphicsContext3D::shaderSource):
(WebCore::GraphicsContext3D::stencilFunc):
(WebCore::GraphicsContext3D::stencilFuncSeparate):
(WebCore::GraphicsContext3D::stencilMask):
(WebCore::GraphicsContext3D::stencilMaskSeparate):
(WebCore::GraphicsContext3D::stencilOp):
(WebCore::GraphicsContext3D::stencilOpSeparate):
(WebCore::GraphicsContext3D::texParameterf):
(WebCore::GraphicsContext3D::texParameteri):
(WebCore::GraphicsContext3D::uniform1f):
(WebCore::GraphicsContext3D::uniform1fv):
(WebCore::GraphicsContext3D::uniform2f):
(WebCore::GraphicsContext3D::uniform2fv):
(WebCore::GraphicsContext3D::uniform3f):
(WebCore::GraphicsContext3D::uniform3fv):
(WebCore::GraphicsContext3D::uniform4f):
(WebCore::GraphicsContext3D::uniform4fv):
(WebCore::GraphicsContext3D::uniform1i):
(WebCore::GraphicsContext3D::uniform1iv):
(WebCore::GraphicsContext3D::uniform2i):
(WebCore::GraphicsContext3D::uniform2iv):
(WebCore::GraphicsContext3D::uniform3i):
(WebCore::GraphicsContext3D::uniform3iv):
(WebCore::GraphicsContext3D::uniform4i):
(WebCore::GraphicsContext3D::uniform4iv):
(WebCore::GraphicsContext3D::uniformMatrix2fv):
(WebCore::GraphicsContext3D::uniformMatrix3fv):
(WebCore::GraphicsContext3D::uniformMatrix4fv):
(WebCore::GraphicsContext3D::useProgram):
(WebCore::GraphicsContext3D::validateProgram):
(WebCore::GraphicsContext3D::vertexAttrib1f):
(WebCore::GraphicsContext3D::vertexAttrib1fv):
(WebCore::GraphicsContext3D::vertexAttrib2f):
(WebCore::GraphicsContext3D::vertexAttrib2fv):
(WebCore::GraphicsContext3D::vertexAttrib3f):
(WebCore::GraphicsContext3D::vertexAttrib3fv):
(WebCore::GraphicsContext3D::vertexAttrib4f):
(WebCore::GraphicsContext3D::vertexAttrib4fv):
(WebCore::GraphicsContext3D::vertexAttribPointer):
(WebCore::GraphicsContext3D::viewport):
(WebCore::GraphicsContext3D::createVertexArray):
(WebCore::GraphicsContext3D::deleteVertexArray):
(WebCore::GraphicsContext3D::isVertexArray):
(WebCore::GraphicsContext3D::bindVertexArray):
(WebCore::GraphicsContext3D::getBooleanv):
(WebCore::GraphicsContext3D::getBufferParameteriv):
(WebCore::GraphicsContext3D::getFloatv):
(WebCore::GraphicsContext3D::getInteger64v):
(WebCore::GraphicsContext3D::getFramebufferAttachmentParameteriv):
(WebCore::GraphicsContext3D::getProgramiv):
(WebCore::GraphicsContext3D::getNonBuiltInActiveSymbolCount):
(WebCore::GraphicsContext3D::getUnmangledInfoLog):
(WebCore::GraphicsContext3D::getProgramInfoLog):
(WebCore::GraphicsContext3D::getRenderbufferParameteriv):
(WebCore::GraphicsContext3D::getShaderiv):
(WebCore::GraphicsContext3D::getShaderInfoLog):
(WebCore::GraphicsContext3D::getShaderSource):
(WebCore::GraphicsContext3D::getTexParameterfv):
(WebCore::GraphicsContext3D::getTexParameteriv):
(WebCore::GraphicsContext3D::getUniformfv):
(WebCore::GraphicsContext3D::getUniformiv):
(WebCore::GraphicsContext3D::getUniformLocation):
(WebCore::GraphicsContext3D::getVertexAttribfv):
(WebCore::GraphicsContext3D::getVertexAttribiv):
(WebCore::GraphicsContext3D::getVertexAttribOffset):
(WebCore::GraphicsContext3D::texSubImage2D):
(WebCore::GraphicsContext3D::compressedTexImage2D):
(WebCore::GraphicsContext3D::compressedTexSubImage2D):
(WebCore::GraphicsContext3D::createBuffer):
(WebCore::GraphicsContext3D::createFramebuffer):
(WebCore::GraphicsContext3D::createProgram):
(WebCore::GraphicsContext3D::createRenderbuffer):
(WebCore::GraphicsContext3D::createShader):
(WebCore::GraphicsContext3D::createTexture):
(WebCore::GraphicsContext3D::deleteBuffer):
(WebCore::GraphicsContext3D::deleteFramebuffer):
(WebCore::GraphicsContext3D::deleteProgram):
(WebCore::GraphicsContext3D::deleteRenderbuffer):
(WebCore::GraphicsContext3D::deleteShader):
(WebCore::GraphicsContext3D::deleteTexture):
(WebCore::GraphicsContext3D::synthesizeGLError):
(WebCore::GraphicsContext3D::markContextChanged):
(WebCore::GraphicsContext3D::markLayerComposited):
(WebCore::GraphicsContext3D::layerComposited const):
(WebCore::GraphicsContext3D::forceContextLost):
(WebCore::GraphicsContext3D::recycleContext):
(WebCore::GraphicsContext3D::dispatchContextChangedNotification):
(WebCore::GraphicsContext3D::texImage2DDirect):
(WebCore::GraphicsContext3D::drawArraysInstanced):
(WebCore::GraphicsContext3D::drawElementsInstanced):
(WebCore::GraphicsContext3D::vertexAttribDivisor):
* platform/graphics/angle/TemporaryANGLESetting.cpp: Added.
(WebCore::TemporaryANGLESetting::TemporaryANGLESetting):
(WebCore::TemporaryANGLESetting::~TemporaryANGLESetting):
* platform/graphics/angle/TemporaryANGLESetting.h: Added.
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::~GraphicsContext3D):
(WebCore::GraphicsContext3D::makeContextCurrent):
(WebCore::GraphicsContext3D::checkGPUStatus):
(WebCore::GraphicsContext3D::screenDidChange):
* platform/graphics/cocoa/WebGLLayer.h:
* platform/graphics/cocoa/WebGLLayer.mm:
(-[WebGLLayer display]):
* platform/graphics/cv/TextureCacheCV.mm:
(WebCore::TextureCacheCV::create):
(WebCore::TextureCacheCV::textureFromImage):
* platform/graphics/cv/VideoTextureCopierCV.cpp:
(WebCore::enumToStringMap):
(WebCore::VideoTextureCopierCV::initializeContextObjects):
(WebCore::VideoTextureCopierCV::initializeUVContextObjects):
(WebCore::VideoTextureCopierCV::copyImageToPlatformTexture):
(WebCore::VideoTextureCopierCV::copyVideoTextureToPlatformTexture):
* platform/graphics/opengl/Extensions3DOpenGL.cpp:
* platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
* platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
* platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:
2019-06-18 Saam Barati <sbarati@apple.com>
[WHLSL] Do not generate duplicate constructors/copy constructors in synthesizeConstructors
https://bugs.webkit.org/show_bug.cgi?id=198580
Reviewed by Robin Morisset.
Prior to this patch, we were generating duplicate constructors
for unnamed types. This is bad for two reasons:
1. It's inefficient, since we'd generate a constructor for every place in
the AST where we'd visit this unnamed type.
2. It made it impossible to resolve function overloads to call
the default constructor. This made it so that the autoInitializeVariables
pass would crash if we ever generated more than one of these functions
for the same type.
To make this work, this patch splits up what used to be the resolveNamesInFunctions
pass. Previously, this pass would both resolve calls and resolve type names.
Synthesize constructors would run before this, since resolving calls meant we
may resolve a call to one of these synthesized constructors. However, synthesize
constructors now needs to test for the equality unnamed types, so it now requires
running the type resolution part of resolveNamesInFunctions before it runs.
This patch splits resolveNamesInFunctions into two parts:
resolveTypeNamesInFunctions and resolveCallsInFunctions.
So we used to run:
synthesizeConstructors
resolveNamesInFunctions
And now we run:
resolveTypeNamesInFunctions
synthesizeConstructors
resolveCallsInFunctions
Test: webgpu/whlsl-duplicate-types-should-not-produce-duplicate-ctors.html
* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
* Modules/webgpu/WHLSL/AST/WHLSLBooleanLiteral.h:
(WebCore::WHLSL::AST::BooleanLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLEnumerationMemberLiteral.h:
(WebCore::WHLSL::AST::EnumerationMemberLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
(WebCore::WHLSL::AST::Expression::copyTypeTo const):
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteral.h:
(WebCore::WHLSL::AST::FloatLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.cpp:
(WebCore::WHLSL::AST::FloatLiteralType::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.h:
(WebCore::WHLSL::AST::IntegerLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.cpp:
(WebCore::WHLSL::AST::IntegerLiteralType::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.h:
* Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h:
(WebCore::WHLSL::AST::NullLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.h:
(WebCore::WHLSL::AST::UnsignedIntegerLiteral::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.cpp:
(WebCore::WHLSL::AST::UnsignedIntegerLiteralType::clone const):
* Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.h:
* Modules/webgpu/WHLSL/WHLSLASTDumper.h:
* Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:
(WebCore::WHLSL::matches):
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::NameResolver):
(WebCore::WHLSL::NameResolver::visit):
(WebCore::WHLSL::resolveTypeNamesInFunctions):
(WebCore::WHLSL::resolveCallsInFunctions):
(WebCore::WHLSL::resolveNamesInFunctions): Deleted.
* Modules/webgpu/WHLSL/WHLSLNameResolver.h:
(WebCore::WHLSL::NameResolver::setIsResolvingCalls):
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
(WebCore::WHLSL::UnnamedTypeKey::UnnamedTypeKey):
(WebCore::WHLSL::UnnamedTypeKey::isEmptyValue const):
(WebCore::WHLSL::UnnamedTypeKey::isHashTableDeletedValue const):
(WebCore::WHLSL::UnnamedTypeKey::hash const):
(WebCore::WHLSL::UnnamedTypeKey::operator== const):
(WebCore::WHLSL::UnnamedTypeKey::unnamedType const):
(WebCore::WHLSL::UnnamedTypeKey::Hash::hash):
(WebCore::WHLSL::UnnamedTypeKey::Hash::equal):
(WebCore::WHLSL::UnnamedTypeKey::Traits::isEmptyValue):
(WebCore::WHLSL::FindAllTypes::takeUnnamedTypes):
(WebCore::WHLSL::FindAllTypes::appendNamedType):
(WebCore::WHLSL::synthesizeConstructors):
2019-06-18 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r246524.
Caused 45 webgpu/ crashes.
Reverted changeset:
"[WHLSL] The name resolver does not deal with
nativeFunctionDeclaration"
https://bugs.webkit.org/show_bug.cgi?id=198306
https://trac.webkit.org/changeset/246524
2019-06-18 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Inline quirks should have their dedicated class.
https://bugs.webkit.org/show_bug.cgi?id=198962
<rdar://problem/51848170>
Reviewed by Antti Koivisto.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/LayoutState.h:
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const):
* layout/inlineformatting/InlineFormattingContextQuirks.cpp: Added.
(WebCore::Layout::InlineFormattingContext::Quirks::collapseLineDescent):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::close):
* layout/inlineformatting/InlineLineBreaker.cpp:
* layout/inlineformatting/InlineLineBreaker.h:
2019-06-18 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Line::append() should take care of all the inline types.
https://bugs.webkit.org/show_bug.cgi?id=198961
<rdar://problem/51847712>
Reviewed by Antti Koivisto.
Make all the existing Line::append* functions private.
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::staticHorizontalPositionForOutOfFlowPositioned): fix a typo.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::append):
* layout/inlineformatting/InlineLine.h:
2019-06-18 Simon Fraser <simon.fraser@apple.com>
Convert macOS to scroll by changing layer boundsOrigin
https://bugs.webkit.org/show_bug.cgi?id=198917
Reviewed by Antti Koivisto.
macOS did frame and overflow scrolling by changing the position of the scrolled
contents layer. iOS scrolls by changing the boundsOrigin of the scrollContainer layer
(which it has to, to match how UIScrollView works).
The iOS approach removes the need for an extra layer whose only role is for
scroll positioning, so migrate macOS to the same approach. A later patch can remove
m_scrolledContentsLayer.
We can remove RenderLayerCompositor::m_clipLayer since m_scrollContainerLayer has exactly
the same role now.
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::reconcileScrollPosition):
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::insetClipLayerForFrameView):
* page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
(WebCore::ScrollingTreeFrameScrollingNodeMac::repositionScrollingLayers):
* page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
(WebCore::ScrollingTreeOverflowScrollingNodeMac::repositionScrollingLayers):
* platform/graphics/cocoa/WebCoreCALayerExtras.h:
* platform/graphics/cocoa/WebCoreCALayerExtras.mm:
(-[CALayer _web_setLayerBoundsOrigin:]):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::setLocationOfScrolledContents):
(WebCore::RenderLayerBacking::updateScrollOffset):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::~RenderLayerCompositor):
(WebCore::RenderLayerCompositor::flushPendingLayerChanges):
(WebCore::RenderLayerCompositor::frameViewDidChangeSize):
(WebCore::RenderLayerCompositor::updateLayersForScrollPosition):
(WebCore::RenderLayerCompositor::updateScrollContainerGeometry):
(WebCore::RenderLayerCompositor::frameViewDidScroll):
(WebCore::RenderLayerCompositor::updateRootLayerPosition):
(WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
(WebCore::RenderLayerCompositor::ensureRootLayer):
(WebCore::RenderLayerCompositor::destroyRootLayer):
(WebCore::RenderLayerCompositor::updateScrollingNodeLayers):
(WebCore::RenderLayerCompositor::updateScrollLayerPosition): Deleted.
(WebCore::RenderLayerCompositor::updateScrollLayerClipping): Deleted.
* rendering/RenderLayerCompositor.h:
2019-06-18 Philippe Normand <pnormand@igalia.com>
[GStreamer] Identify elements with monotonically increasing counters
https://bugs.webkit.org/show_bug.cgi?id=198916
Reviewed by Xabier Rodriguez-Calvar.
Those ids tend to be shorter, easier to read for humans and for
diff tools :) Underscores were also replaced by dashes, for
consistency with the usual GStreamer element naming untold
conventions.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::load):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
* platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
(WebCore::GStreamerVideoEncoder::makeElement):
(WebCore::GStreamerVideoEncoder::InitEncode):
2019-06-18 Zan Dobersek <zdobersek@igalia.com>
[WebGL] Extensions3DOpenGLES::bindVertexArrayOES() should allow zero array object
https://bugs.webkit.org/show_bug.cgi?id=198929
Reviewed by Carlos Garcia Campos.
A 0 object parameter for the glBindVertexArrayOES() call is a valid
value since it binds the default vertex array object for any updates and
draws. As such the Extensions3DOpenGLES implementation shouldn't return
early if the object value is 0.
No new tests -- covered by existing tests.
* platform/graphics/opengl/Extensions3DOpenGLES.cpp:
(WebCore::Extensions3DOpenGLES::bindVertexArrayOES):
2019-06-17 Sihui Liu <sihui_liu@apple.com>
-[WKWebsiteDataStore removeDataOfTypes:modifiedSince:completionHandler:] doesn't delete _WKWebsiteDataTypeCredentials
https://bugs.webkit.org/show_bug.cgi?id=198854
<rdar://problem/51386058>
Reviewed by Geoffrey Garen.
Add option NSURLCredentialStorageRemoveSynchronizableCredentials when removing persistent credential so
credentials from same account will be removed from all devices.
Test: WKWebsiteDataStore.RemoveAllPersistentCredentials
* platform/network/CredentialStorage.cpp:
(WebCore::CredentialStorage::originsWithPersistentCredentials):
(WebCore::CredentialStorage::removePersistentCredentialsWithOrigins):
(WebCore::CredentialStorage::clearPersistentCredentials):
* platform/network/CredentialStorage.h:
* platform/network/mac/CredentialStorageMac.mm:
(WebCore::CredentialStorage::originsWithPersistentCredentials):
(WebCore::CredentialStorage::removePersistentCredentialsWithOrigins):
(WebCore::CredentialStorage::clearPersistentCredentials):
2019-06-17 Ryosuke Niwa <rniwa@webkit.org>
m_disconnectedFrame can be null in DOMWindowExtension::willDestroyGlobalObjectInCachedFrame()
https://bugs.webkit.org/show_bug.cgi?id=198943
Reviewed by Brady Eidson.
Apparently it's possible for m_disconnectedFrame to be null in this function even though this should never happen.
We've been trying to diagnose a class of issues in this area (e.g. r246187, r244971, r242797, r242677, r242676, r241848)
but at some point, we need to stop crashing for the sake of user.
Worked around the bug by adding a null pointer check here.
* page/DOMWindowExtension.cpp:
(WebCore::DOMWindowExtension::willDestroyGlobalObjectInCachedFrame):
2019-06-17 Alex Christensen <achristensen@webkit.org>
Fix iOS crash when starting loads with no active DocumentLoader
https://bugs.webkit.org/show_bug.cgi?id=187360
<rdar://problem/29389084>
Reviewed by Geoff Garen.
When FrameLoader::activeDocumentLoader returns null in the ResourceLoader constructor,
on iOS we will dereference it to ask if it has a frame in an early return in init.
Let's not. If we don't have a DocumentLoader, we don't have a frame and should fail.
Crash reports indicate this crash is related to Beacon and other uses of LoaderStrategy::startPingLoad,
but attempts to make a unit test to reproduce the crash were unsuccessful.
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::init):
2019-06-17 Robin Morisset <rmorisset@apple.com>
[WHLSL] The name resolver does not deal with nativeFunctionDeclaration
https://bugs.webkit.org/show_bug.cgi?id=198306
Reviewed by Saam Barati.
We currently have a crash in the nameResolver when trying to use the full standard library.
What is happening is that because we don't specify anything to do to nativeFunctionDeclarations, names in their parameters
are added to the global environment. And so as soon as we have two such parameters with the same name, the name resolver fails.
Tested by adding two native functions that share a parameter name to the standard library.
* Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::visit):
* Modules/webgpu/WHLSL/WHLSLNameResolver.h:
2019-06-17 Robin Morisset <rmorisset@apple.com>
[WHLSL] Remove backtracking from parseAttributeBlock
https://bugs.webkit.org/show_bug.cgi?id=198934
Reviewed by Myles C. Maxfield.
No functional change intended.
Tested by running LayoutTests/webgpu/whlsl-compute.html
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseAttributeBlock):
2019-06-17 Saam Barati <sbarati@apple.com>
[WHLSL] Make .length work
https://bugs.webkit.org/show_bug.cgi?id=198890
Reviewed by Myles Maxfield.
This patch makes accessing .length on buffers work. To make this work as
expected, I've fixed a handful of small bugs:
- The checker was not calling resolveByInstantiation for getters. This patch
modifies the checker to do that, so we can now resolve a getter to
"operator.length". I also refactored the checker to have a helper method
that both does overload resolution and resolveByInstantiation to make it
difficult to forget to call resolveByInstantiation.
- The property resolver had a bug where it would return a non-null value
in anderCallArgument for array references even when there was no ander and
no thread ander function. This patch makes it now return null if there is
neither an ander nor a thread ander.
- The metal codegen incorrectly unpacked the length of buffers. It swapped the
bottom four bytes and the top four bytes of the size_t value. This patch
corrects that. This was also a cause of flakiness in various tests since
we ended up with a length much larger than expected, leading to bounds
checks always passing in our tests.
- This patch also fixes our tests to specify the output buffer length
properly for various programs.
Test: webgpu/whlsl-buffer-length.html
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
(WebCore::WHLSL::Metal::EntryPointScaffolding::unpackResourcesAndNamedBuiltIns):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveFunction):
(WebCore::WHLSL::Checker::finishVisiting):
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::anderCallArgument):
2019-06-17 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r246501.
Breaks Apple internal builds.
Reverted changeset:
"Support using ANGLE as the backend for the WebGL
implementation"
https://bugs.webkit.org/show_bug.cgi?id=197755
https://trac.webkit.org/changeset/246501
2019-06-17 Kenneth Russell <kbr@chromium.org>
Support using ANGLE as the backend for the WebGL implementation
https://bugs.webkit.org/show_bug.cgi?id=197755
Reviewed by Dean Jackson.
Add new files supplying an ANGLE version of GraphicsContext3D and
Extensions3D, conditionalized under USE_ANGLE. Update Xcode project to
build these files. This option compiles and links successfully.
FIXMEs remain in several common files which will be addressed in
subsequent patches.
This work will be tested with the preexisting WebGL conformance
suite.
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/ANGLEWebKitBridge.h:
* platform/graphics/GraphicsContext3D.h:
* platform/graphics/GraphicsContext3DManager.cpp:
(WebCore::GraphicsContext3DManager::updateAllContexts):
(WebCore::GraphicsContext3DManager::updateHighPerformanceState):
(WebCore::GraphicsContext3DManager::disableHighPerformanceGPUTimerFired):
* platform/graphics/angle/Extensions3DANGLE.cpp: Copied from Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLCommon.cpp.
(WebCore::Extensions3DANGLE::Extensions3DANGLE):
(WebCore::Extensions3DANGLE::supports):
(WebCore::Extensions3DANGLE::ensureEnabled):
(WebCore::Extensions3DANGLE::isEnabled):
(WebCore::Extensions3DANGLE::getGraphicsResetStatusARB):
(WebCore::Extensions3DANGLE::getTranslatedShaderSourceANGLE):
(WebCore::Extensions3DANGLE::initializeAvailableExtensions):
(WebCore::Extensions3DANGLE::readnPixelsEXT):
(WebCore::Extensions3DANGLE::getnUniformfvEXT):
(WebCore::Extensions3DANGLE::getnUniformivEXT):
(WebCore::Extensions3DANGLE::blitFramebuffer):
(WebCore::Extensions3DANGLE::renderbufferStorageMultisample):
(WebCore::Extensions3DANGLE::createVertexArrayOES):
(WebCore::Extensions3DANGLE::deleteVertexArrayOES):
(WebCore::Extensions3DANGLE::isVertexArrayOES):
(WebCore::Extensions3DANGLE::bindVertexArrayOES):
(WebCore::Extensions3DANGLE::insertEventMarkerEXT):
(WebCore::Extensions3DANGLE::pushGroupMarkerEXT):
(WebCore::Extensions3DANGLE::popGroupMarkerEXT):
(WebCore::Extensions3DANGLE::supportsExtension):
(WebCore::Extensions3DANGLE::drawBuffersEXT):
(WebCore::Extensions3DANGLE::drawArraysInstanced):
(WebCore::Extensions3DANGLE::drawElementsInstanced):
(WebCore::Extensions3DANGLE::vertexAttribDivisor):
(WebCore::Extensions3DANGLE::getExtensions):
* platform/graphics/angle/Extensions3DANGLE.h: Added.
* platform/graphics/angle/GraphicsContext3DANGLE.cpp: Copied from Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp.
(WebCore::GraphicsContext3D::releaseShaderCompiler):
(WebCore::wipeAlphaChannelFromPixels):
(WebCore::GraphicsContext3D::readPixelsAndConvertToBGRAIfNecessary):
(WebCore::GraphicsContext3D::validateAttributes):
(WebCore::GraphicsContext3D::reshapeFBOs):
(WebCore::GraphicsContext3D::attachDepthAndStencilBufferIfNeeded):
(WebCore::GraphicsContext3D::resolveMultisamplingIfNecessary):
(WebCore::GraphicsContext3D::renderbufferStorage):
(WebCore::GraphicsContext3D::getIntegerv):
(WebCore::GraphicsContext3D::getShaderPrecisionFormat):
(WebCore::GraphicsContext3D::texImage2D):
(WebCore::GraphicsContext3D::depthRange):
(WebCore::GraphicsContext3D::clearDepth):
(WebCore::GraphicsContext3D::getExtensions):
(WebCore::GraphicsContext3D::readPixels):
(WebCore::setCurrentNameHashMapForShader):
(WebCore::nameHashForShader):
(WebCore::GraphicsContext3D::validateDepthStencil):
(WebCore::GraphicsContext3D::paintRenderingResultsToCanvas):
(WebCore::GraphicsContext3D::paintCompositedResultsToCanvas):
(WebCore::GraphicsContext3D::paintRenderingResultsToImageData):
(WebCore::GraphicsContext3D::prepareTexture):
(WebCore::GraphicsContext3D::readRenderingResults):
(WebCore::GraphicsContext3D::reshape):
(WebCore::GraphicsContext3D::checkVaryingsPacking const):
(WebCore::GraphicsContext3D::precisionsMatch const):
(WebCore::GraphicsContext3D::getInternalFramebufferSize const):
(WebCore::GraphicsContext3D::activeTexture):
(WebCore::GraphicsContext3D::attachShader):
(WebCore::GraphicsContext3D::bindAttribLocation):
(WebCore::GraphicsContext3D::bindBuffer):
(WebCore::GraphicsContext3D::bindFramebuffer):
(WebCore::GraphicsContext3D::bindRenderbuffer):
(WebCore::GraphicsContext3D::bindTexture):
(WebCore::GraphicsContext3D::blendColor):
(WebCore::GraphicsContext3D::blendEquation):
(WebCore::GraphicsContext3D::blendEquationSeparate):
(WebCore::GraphicsContext3D::blendFunc):
(WebCore::GraphicsContext3D::blendFuncSeparate):
(WebCore::GraphicsContext3D::bufferData):
(WebCore::GraphicsContext3D::bufferSubData):
(WebCore::GraphicsContext3D::mapBufferRange):
(WebCore::GraphicsContext3D::unmapBuffer):
(WebCore::GraphicsContext3D::copyBufferSubData):
(WebCore::GraphicsContext3D::getInternalformativ):
(WebCore::GraphicsContext3D::renderbufferStorageMultisample):
(WebCore::GraphicsContext3D::texStorage2D):
(WebCore::GraphicsContext3D::texStorage3D):
(WebCore::GraphicsContext3D::getActiveUniforms):
(WebCore::GraphicsContext3D::checkFramebufferStatus):
(WebCore::GraphicsContext3D::clearColor):
(WebCore::GraphicsContext3D::clear):
(WebCore::GraphicsContext3D::clearStencil):
(WebCore::GraphicsContext3D::colorMask):
(WebCore::GraphicsContext3D::compileShader):
(WebCore::GraphicsContext3D::compileShaderDirect):
(WebCore::GraphicsContext3D::copyTexImage2D):
(WebCore::GraphicsContext3D::copyTexSubImage2D):
(WebCore::GraphicsContext3D::cullFace):
(WebCore::GraphicsContext3D::depthFunc):
(WebCore::GraphicsContext3D::depthMask):
(WebCore::GraphicsContext3D::detachShader):
(WebCore::GraphicsContext3D::disable):
(WebCore::GraphicsContext3D::disableVertexAttribArray):
(WebCore::GraphicsContext3D::drawArrays):
(WebCore::GraphicsContext3D::drawElements):
(WebCore::GraphicsContext3D::enable):
(WebCore::GraphicsContext3D::enableVertexAttribArray):
(WebCore::GraphicsContext3D::finish):
(WebCore::GraphicsContext3D::flush):
(WebCore::GraphicsContext3D::framebufferRenderbuffer):
(WebCore::GraphicsContext3D::framebufferTexture2D):
(WebCore::GraphicsContext3D::frontFace):
(WebCore::GraphicsContext3D::generateMipmap):
(WebCore::GraphicsContext3D::getActiveAttribImpl):
(WebCore::GraphicsContext3D::getActiveAttrib):
(WebCore::GraphicsContext3D::getActiveUniformImpl):
(WebCore::GraphicsContext3D::getActiveUniform):
(WebCore::GraphicsContext3D::getAttachedShaders):
(WebCore::generateHashedName):
(WebCore::GraphicsContext3D::mappedSymbolInShaderSourceMap):
(WebCore::GraphicsContext3D::mappedSymbolName):
(WebCore::GraphicsContext3D::originalSymbolInShaderSourceMap):
(WebCore::GraphicsContext3D::originalSymbolName):
(WebCore::GraphicsContext3D::getAttribLocation):
(WebCore::GraphicsContext3D::getAttribLocationDirect):
(WebCore::GraphicsContext3D::getContextAttributes):
(WebCore::GraphicsContext3D::moveErrorsToSyntheticErrorList):
(WebCore::GraphicsContext3D::getError):
(WebCore::GraphicsContext3D::getString):
(WebCore::GraphicsContext3D::hint):
(WebCore::GraphicsContext3D::isBuffer):
(WebCore::GraphicsContext3D::isEnabled):
(WebCore::GraphicsContext3D::isFramebuffer):
(WebCore::GraphicsContext3D::isProgram):
(WebCore::GraphicsContext3D::isRenderbuffer):
(WebCore::GraphicsContext3D::isShader):
(WebCore::GraphicsContext3D::isTexture):
(WebCore::GraphicsContext3D::lineWidth):
(WebCore::GraphicsContext3D::linkProgram):
(WebCore::GraphicsContext3D::pixelStorei):
(WebCore::GraphicsContext3D::polygonOffset):
(WebCore::GraphicsContext3D::sampleCoverage):
(WebCore::GraphicsContext3D::scissor):
(WebCore::GraphicsContext3D::shaderSource):
(WebCore::GraphicsContext3D::stencilFunc):
(WebCore::GraphicsContext3D::stencilFuncSeparate):
(WebCore::GraphicsContext3D::stencilMask):
(WebCore::GraphicsContext3D::stencilMaskSeparate):
(WebCore::GraphicsContext3D::stencilOp):
(WebCore::GraphicsContext3D::stencilOpSeparate):
(WebCore::GraphicsContext3D::texParameterf):
(WebCore::GraphicsContext3D::texParameteri):
(WebCore::GraphicsContext3D::uniform1f):
(WebCore::GraphicsContext3D::uniform1fv):
(WebCore::GraphicsContext3D::uniform2f):
(WebCore::GraphicsContext3D::uniform2fv):
(WebCore::GraphicsContext3D::uniform3f):
(WebCore::GraphicsContext3D::uniform3fv):
(WebCore::GraphicsContext3D::uniform4f):
(WebCore::GraphicsContext3D::uniform4fv):
(WebCore::GraphicsContext3D::uniform1i):
(WebCore::GraphicsContext3D::uniform1iv):
(WebCore::GraphicsContext3D::uniform2i):
(WebCore::GraphicsContext3D::uniform2iv):
(WebCore::GraphicsContext3D::uniform3i):
(WebCore::GraphicsContext3D::uniform3iv):
(WebCore::GraphicsContext3D::uniform4i):
(WebCore::GraphicsContext3D::uniform4iv):
(WebCore::GraphicsContext3D::uniformMatrix2fv):
(WebCore::GraphicsContext3D::uniformMatrix3fv):
(WebCore::GraphicsContext3D::uniformMatrix4fv):
(WebCore::GraphicsContext3D::useProgram):
(WebCore::GraphicsContext3D::validateProgram):
(WebCore::GraphicsContext3D::vertexAttrib1f):
(WebCore::GraphicsContext3D::vertexAttrib1fv):
(WebCore::GraphicsContext3D::vertexAttrib2f):
(WebCore::GraphicsContext3D::vertexAttrib2fv):
(WebCore::GraphicsContext3D::vertexAttrib3f):
(WebCore::GraphicsContext3D::vertexAttrib3fv):
(WebCore::GraphicsContext3D::vertexAttrib4f):
(WebCore::GraphicsContext3D::vertexAttrib4fv):
(WebCore::GraphicsContext3D::vertexAttribPointer):
(WebCore::GraphicsContext3D::viewport):
(WebCore::GraphicsContext3D::createVertexArray):
(WebCore::GraphicsContext3D::deleteVertexArray):
(WebCore::GraphicsContext3D::isVertexArray):
(WebCore::GraphicsContext3D::bindVertexArray):
(WebCore::GraphicsContext3D::getBooleanv):
(WebCore::GraphicsContext3D::getBufferParameteriv):
(WebCore::GraphicsContext3D::getFloatv):
(WebCore::GraphicsContext3D::getInteger64v):
(WebCore::GraphicsContext3D::getFramebufferAttachmentParameteriv):
(WebCore::GraphicsContext3D::getProgramiv):
(WebCore::GraphicsContext3D::getNonBuiltInActiveSymbolCount):
(WebCore::GraphicsContext3D::getUnmangledInfoLog):
(WebCore::GraphicsContext3D::getProgramInfoLog):
(WebCore::GraphicsContext3D::getRenderbufferParameteriv):
(WebCore::GraphicsContext3D::getShaderiv):
(WebCore::GraphicsContext3D::getShaderInfoLog):
(WebCore::GraphicsContext3D::getShaderSource):
(WebCore::GraphicsContext3D::getTexParameterfv):
(WebCore::GraphicsContext3D::getTexParameteriv):
(WebCore::GraphicsContext3D::getUniformfv):
(WebCore::GraphicsContext3D::getUniformiv):
(WebCore::GraphicsContext3D::getUniformLocation):
(WebCore::GraphicsContext3D::getVertexAttribfv):
(WebCore::GraphicsContext3D::getVertexAttribiv):
(WebCore::GraphicsContext3D::getVertexAttribOffset):
(WebCore::GraphicsContext3D::texSubImage2D):
(WebCore::GraphicsContext3D::compressedTexImage2D):
(WebCore::GraphicsContext3D::compressedTexSubImage2D):
(WebCore::GraphicsContext3D::createBuffer):
(WebCore::GraphicsContext3D::createFramebuffer):
(WebCore::GraphicsContext3D::createProgram):
(WebCore::GraphicsContext3D::createRenderbuffer):
(WebCore::GraphicsContext3D::createShader):
(WebCore::GraphicsContext3D::createTexture):
(WebCore::GraphicsContext3D::deleteBuffer):
(WebCore::GraphicsContext3D::deleteFramebuffer):
(WebCore::GraphicsContext3D::deleteProgram):
(WebCore::GraphicsContext3D::deleteRenderbuffer):
(WebCore::GraphicsContext3D::deleteShader):
(WebCore::GraphicsContext3D::deleteTexture):
(WebCore::GraphicsContext3D::synthesizeGLError):
(WebCore::GraphicsContext3D::markContextChanged):
(WebCore::GraphicsContext3D::markLayerComposited):
(WebCore::GraphicsContext3D::layerComposited const):
(WebCore::GraphicsContext3D::forceContextLost):
(WebCore::GraphicsContext3D::recycleContext):
(WebCore::GraphicsContext3D::dispatchContextChangedNotification):
(WebCore::GraphicsContext3D::texImage2DDirect):
(WebCore::GraphicsContext3D::drawArraysInstanced):
(WebCore::GraphicsContext3D::drawElementsInstanced):
(WebCore::GraphicsContext3D::vertexAttribDivisor):
* platform/graphics/angle/TemporaryANGLESetting.cpp: Added.
(WebCore::TemporaryANGLESetting::TemporaryANGLESetting):
(WebCore::TemporaryANGLESetting::~TemporaryANGLESetting):
* platform/graphics/angle/TemporaryANGLESetting.h: Added.
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::~GraphicsContext3D):
(WebCore::GraphicsContext3D::makeContextCurrent):
(WebCore::GraphicsContext3D::checkGPUStatus):
(WebCore::GraphicsContext3D::screenDidChange):
* platform/graphics/cocoa/WebGLLayer.h:
* platform/graphics/cocoa/WebGLLayer.mm:
(-[WebGLLayer display]):
* platform/graphics/cv/TextureCacheCV.mm:
(WebCore::TextureCacheCV::create):
(WebCore::TextureCacheCV::textureFromImage):
* platform/graphics/cv/VideoTextureCopierCV.cpp:
(WebCore::enumToStringMap):
(WebCore::VideoTextureCopierCV::initializeContextObjects):
(WebCore::VideoTextureCopierCV::initializeUVContextObjects):
(WebCore::VideoTextureCopierCV::copyImageToPlatformTexture):
(WebCore::VideoTextureCopierCV::copyVideoTextureToPlatformTexture):
* platform/graphics/opengl/Extensions3DOpenGL.cpp:
* platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
* platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
* platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:
2019-06-17 Ludovico de Nittis <ludovico.denittis@collabora.com>
[GTK] Stop accessing GdkEvent fields when possible
https://bugs.webkit.org/show_bug.cgi?id=198829
Reviewed by Michael Catanzaro.
Direct access to GdkEvent structs is no longer possible in GTK 4.
No behaviour changes.
* platform/gtk/PlatformKeyboardEventGtk.cpp:
(WebCore::eventTypeForGdkKeyEvent):
(WebCore::modifiersForGdkKeyEvent):
(WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
* platform/gtk/PlatformMouseEventGtk.cpp:
(WebCore::PlatformMouseEvent::PlatformMouseEvent):
* platform/gtk/PlatformWheelEventGtk.cpp:
(WebCore::PlatformWheelEvent::PlatformWheelEvent):
2019-06-17 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed, rolling out r246467.
It broke scrolling with mouse wheel
Reverted changeset:
"[GTK] Stop accessing GdkEvent fields when possible"
https://bugs.webkit.org/show_bug.cgi?id=198829
https://trac.webkit.org/changeset/246467
2019-06-16 Darin Adler <darin@apple.com>
Convert some uses of fixed width and fixed precision floating point formatting to use shortest instead
https://bugs.webkit.org/show_bug.cgi?id=198896
Reviewed by Sam Weinig.
* Modules/indexeddb/IDBKeyData.cpp:
(WebCore::IDBKeyData::loggingString const): Removed unneeded use of
FormattedNumber::fixedWidth to override the default shortest-form formatting.
* page/History.cpp:
(WebCore::History::stateObjectAdded): Ditto.
* page/PrintContext.cpp:
(WebCore::PrintContext::pageProperty): Use String::number instead of
String::numberToStringFixedPrecision. Also removed some uses of
FormattedNumber::fixedPrecision.
* platform/graphics/FloatPolygon.cpp:
(WebCore::FloatPolygonEdge::debugString const): Ditto.
2019-06-16 Darin Adler <darin@apple.com>
Rename AtomicString to AtomString
https://bugs.webkit.org/show_bug.cgi?id=195276
Reviewed by Michael Catanzaro.
* many files: Let do-webcore-rename do the renaming.
2019-06-16 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Avoid roundoff error when setting AVCapture min/max frame rate
https://bugs.webkit.org/show_bug.cgi?id=198875
<rdar://problem/51768374>
Reviewed by Youenn Fablet.
* platform/graphics/MediaPlayer.h:
(WTF::LogArgument<MediaTime>::toString): Deleted, moved to MediaTime.h.
(WTF::LogArgument<MediaTimeRange>::toString): Deleted, moved to MediaTime.h.
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::setSessionSizeAndFrameRate): Avoid roundoff error.
2019-06-16 Simon Fraser <simon.fraser@apple.com>
Implement ScrollableArea::scrollOffset()
https://bugs.webkit.org/show_bug.cgi?id=198895
Reviewed by Antti Koivisto.
Remove from ScrollableArea the following:
virtual int scrollSize(ScrollbarOrientation) const = 0;
virtual int scrollOffset(ScrollbarOrientation) const = 0;
and instead implement ScrollOffset scrollOffset() const.
Also make scrollPosition() pure virtual, avoiding the reverse dependency where
this base class implementation got values from scrollbars.
scrollSize(ScrollbarOrientation) was only used by ScrollAnimatorIOS and we can
do the same computation via min/max scroll positions.
RenderListBox and PopupMenuWin need implementations of scrollPosition().
Remove some PLATFORM(IOS_FAMILY) #ifdefs from ScrollableArea for code that compiles
on all platforms.
* page/FrameView.h:
* platform/ScrollView.cpp:
(WebCore::ScrollView::overhangAmount const):
(WebCore::ScrollView::scrollSize const): Deleted.
(WebCore::ScrollView::scrollOffset const): Deleted.
* platform/ScrollView.h:
* platform/ScrollableArea.cpp:
(WebCore::ScrollableArea::isPinnedVerticallyInDirection const):
(WebCore::ScrollableArea::scrollOffset const):
(WebCore::ScrollableArea::scrollPosition const): Deleted.
* platform/ScrollableArea.h:
(WebCore::offsetForOrientation):
(WebCore::ScrollableArea::isHorizontalScrollerPinnedToMinimumPosition const):
(WebCore::ScrollableArea::isHorizontalScrollerPinnedToMaximumPosition const):
(WebCore::ScrollableArea::isVerticalScrollerPinnedToMinimumPosition const):
(WebCore::ScrollableArea::isVerticalScrollerPinnedToMaximumPosition const):
(WebCore::ScrollableArea::tiledBacking const): Deleted.
* platform/Scrollbar.cpp:
(WebCore::Scrollbar::Scrollbar):
(WebCore::Scrollbar::offsetDidChange):
* platform/ios/ScrollAnimatorIOS.mm:
(WebCore::ScrollAnimatorIOS::handleTouchEvent):
* platform/win/PopupMenuWin.cpp:
(WebCore::PopupMenuWin::scrollPosition const):
(WebCore::PopupMenuWin::wndProc):
(WebCore::PopupMenuWin::scrollSize const): Deleted.
(WebCore::PopupMenuWin::scrollOffset const): Deleted.
* platform/win/PopupMenuWin.h:
(WebCore::PopupMenuWin::scrollOffset const): Deleted.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollSize const): Deleted.
(WebCore::RenderLayer::scrollOffset const): Deleted.
* rendering/RenderLayer.h:
* rendering/RenderListBox.cpp:
(WebCore::RenderListBox::scrollPosition const):
(WebCore::RenderListBox::scrollSize const): Deleted.
(WebCore::RenderListBox::scrollOffset const): Deleted.
* rendering/RenderListBox.h:
2019-06-16 Zalan Bujtas <zalan@apple.com>
Address Sam's post-landing review of r246234.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const):
2019-06-16 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Decouple baseline ascent/descent and baseline offset.
https://bugs.webkit.org/show_bug.cgi?id=198901
<rdar://problem/51782393>
Reviewed by Antti Koivisto.
Baseline offset is the baseline's distance from the line's logical top -and it is not necessarily the same as the baseline's ascent.
It's easier to track the baseline and its top separately since certain properties only change one or the other.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
(WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
(WebCore::Layout::Line::halfLeadingMetrics):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Content::baselineOffset const):
(WebCore::Layout::Line::Content::setBaselineOffset):
(WebCore::Layout::Line::baselineOffset const):
* layout/inlineformatting/InlineLineBox.h:
(WebCore::Layout::LineBox::baselineOffset const):
(WebCore::Layout::LineBox::LineBox):
2019-06-16 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Intruding float may prevent adding any inline box
https://bugs.webkit.org/show_bug.cgi?id=198891
<rdar://problem/51779956>
Reviewed by Antti Koivisto.
Take the intruding left/right float pair and find the vertical position where the next line might go
if these floats prevent us from adding even one inline box to the current line.
* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::mapPointToAncestor):
(WebCore::Layout::FormattingContext::mapPointToDescendent):
* layout/FormattingContext.h:
* layout/LayoutUnits.h:
(WebCore::Layout::Point::max):
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
(WebCore::Layout::InlineFormattingContext::LineLayout::layout const):
2019-06-16 Zalan Bujtas <zalan@apple.com>
[LFC][Floats] Add bottom value to FloatingState::Constraints
https://bugs.webkit.org/show_bug.cgi?id=198889
<rdar://problem/51776730>
Reviewed by Antti Koivisto.
Constraints::left/right->y indicates where this particular constrain ends. This is going to be used by inline layout to figure where
the next line should go (vertical position).
* layout/floats/FloatingState.cpp:
(WebCore::Layout::FloatingState::constraints const):
* layout/floats/FloatingState.h:
2019-06-16 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Ignore descent when in limited/full quirks mode
https://bugs.webkit.org/show_bug.cgi?id=198893
<rdar://problem/51780634>
Reviewed by Antti Koivisto.
In limited/full quirks mode, line's descent should be ignored when computing the final line height when
1. the line has baseline aligned content only and
2. these baseline aligned boxes don't have descent.
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::close):
2019-06-16 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Line::isVisuallyEmpty should check inline-block boxes.
https://bugs.webkit.org/show_bug.cgi?id=198894
<rdar://problem/51780886>
Reviewed by Antti Koivisto.
Non-zero width/height inline-block boxes make the line visually non-empty.
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::isVisuallyEmpty const):
2019-06-16 Zalan Bujtas <zalan@apple.com>
[LFC] Add Layout::Box::isContainingBlockDescendantOf
https://bugs.webkit.org/show_bug.cgi?id=198888
<rdar://problem/51776466>
Reviewed by Antti Koivisto.
Box::isDescendantOf indicates simple ancestor - descendant relationship, while
isContainingBlockDescendantOf checks the containing block chain.
* layout/FormattingContext.cpp:
(WebCore::Layout::mapHorizontalPositionToAncestor):
(WebCore::Layout::FormattingContext::mapBoxToAncestor):
(WebCore::Layout::FormattingContext::mapTopToAncestor):
(WebCore::Layout::FormattingContext::mapPointToAncestor):
* layout/floats/FloatingState.h:
(WebCore::Layout::FloatingState::FloatItem::isDescendantOfFormattingRoot const):
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::isDescendantOf const):
(WebCore::Layout::Box::isContainingBlockDescendantOf const):
* layout/layouttree/LayoutBox.h:
2019-06-16 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Remove Line::Content::isVisuallyEmpty
https://bugs.webkit.org/show_bug.cgi?id=198892
<rdar://problem/51780345>
Reviewed by Antti Koivisto.
Instead of setting the isVisuallyEmpty flag, reset the line height to 0.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::close):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Content::isEmpty const):
(WebCore::Layout::Line::Content::setBaseline):
(WebCore::Layout::Line::Content::isVisuallyEmpty const): Deleted.
(WebCore::Layout::Line::Content::setIsVisuallyEmpty): Deleted.
2019-06-16 Zalan Bujtas <zalan@apple.com>
[LFC] Add limited quirks mode to LayoutState.
https://bugs.webkit.org/show_bug.cgi?id=198881
<rdar://problem/51773229>
Reviewed by Antti Koivisto.
This is in preparation for introducing limited quirks mode to inline layout.
* layout/LayoutState.h:
(WebCore::Layout::LayoutState::setQuirksMode):
(WebCore::Layout::LayoutState::inQuirksMode const):
(WebCore::Layout::LayoutState::inLimitedQuirksMode const):
(WebCore::Layout::LayoutState::inNoQuirksMode const):
(WebCore::Layout::LayoutState::setInQuirksMode): Deleted.
* page/FrameViewLayoutContext.cpp:
(WebCore::layoutUsingFormattingContext):
2019-06-16 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Completely collapsed runs should not go to the trimmable run list.
https://bugs.webkit.org/show_bug.cgi?id=198900
<rdar://problem/51782156>
Reviewed by Antti Koivisto.
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::trailingTrimmableWidth const):
(WebCore::Layout::Line::appendTextContent):
2019-06-16 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Use the borderBox rect consistently to size the inline box.
https://bugs.webkit.org/show_bug.cgi?id=198899
Reviewed by Antti Koivisto.
<rdar://problem/51781969>
Use the margin box height (when applicable) to adjust the line height and use the borderBox rect (or font size) height to size the inline box.
* layout/displaytree/DisplayBox.h:
(WebCore::Display::Box::borderBoxHeight const):
(WebCore::Display::Box::marginBoxHeight const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::appendInlineContainerStart):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::inlineItemContentHeight const):
(WebCore::Layout::Line::inlineItemHeight const): Deleted.
* layout/inlineformatting/InlineLine.h:
2019-06-15 Simon Fraser <simon.fraser@apple.com>
Make layerTreeAsText() output a bit less verbose
https://bugs.webkit.org/show_bug.cgi?id=198870
Reviewed by Tim Horton.
"accelerates drawing" was getting dumped twice for debug dumps.
Only dump the non-default state for "uses display-list drawing".
Use the new OptionSet<> dumping for GraphicsLayerPaintingPhases.
* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::dumpProperties const):
(WebCore::operator<<):
* platform/graphics/GraphicsLayer.h:
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
2019-06-15 Youenn Fablet <youenn@apple.com>
Make MediaStream constructor take a Document instead of a ScriptExecutionContext
https://bugs.webkit.org/show_bug.cgi?id=198873
Reviewed by Darin Adler.
Update MediaStream constructors and call site to take a Document&.
Make the same for creation of CanvasCaptureMediaStreamTrack.
No observable change of behavior.
* Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
(WebCore::CanvasCaptureMediaStreamTrack::create):
(WebCore::CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack):
(WebCore::loggerFromContext): Deleted.
* Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
* Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::create):
(WebCore::MediaStream::MediaStream):
(WebCore::MediaStream::clone):
(WebCore::loggerFromContext): Deleted.
* Modules/mediastream/MediaStream.h:
* Modules/mediastream/MediaStream.idl:
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::allow):
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::captureStream):
* html/HTMLCanvasElement.h:
* html/HTMLCanvasElement.idl:
2019-06-15 Zalan Bujtas <zalan@apple.com>
[LFC][BFC] Fix available width for non-floating positioned float avoiders.
https://bugs.webkit.org/show_bug.cgi?id=198886
<rdar://problem/51773643>
Reviewed by Antti Koivisto.
Normally the available width for an in-flow block level box is the width of the containing block's content box.
However a non-floating positioned float avoider box might be constrained by existing floats.
The idea here is that we pre-compute(estimate) the vertical position and check the current floating context for
left and right floats. These floats contrain the available width and this computed value should be used instead of the containing block's
content box's width whe calculating the used width for width: auto.
* layout/FormattingContext.cpp:
(WebCore::Layout::mapHorizontalPositionToAncestor):
(WebCore::Layout::FormattingContext::mapLeftToAncestor):
(WebCore::Layout::FormattingContext::mapRightToAncestor):
(WebCore::Layout::FormattingContext::mapPointToAncestor):
(WebCore::Layout::FormattingContext::mapCoordinateToAncestor): Deleted.
* layout/FormattingContext.h:
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider const):
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
(WebCore::Layout::BlockFormattingContext::computeStaticVerticalPosition const):
(WebCore::Layout::BlockFormattingContext::computeStaticHorizontalPosition const):
(WebCore::Layout::BlockFormattingContext::computeStaticPosition const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFormattingRoot const):
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
* layout/blockformatting/BlockFormattingContext.h:
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::staticVerticalPosition):
(WebCore::Layout::BlockFormattingContext::Geometry::staticHorizontalPosition):
(WebCore::Layout::BlockFormattingContext::Geometry::staticPosition):
* layout/floats/FloatingState.cpp:
(WebCore::Layout::FloatingState::constraints const):
* layout/layouttree/LayoutBlockContainer.cpp:
(WebCore::Layout::BlockContainer::establishesInlineFormattingContextOnly const):
* layout/layouttree/LayoutBlockContainer.h:
* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::isFloatAvoider const):
* layout/layouttree/LayoutBox.h:
(WebCore::Layout::Box::establishesInlineFormattingContextOnly const):
2019-06-15 Ludovico de Nittis <ludovico.denittis@collabora.com>
[GTK] Stop accessing GdkEvent fields when possible
https://bugs.webkit.org/show_bug.cgi?id=198829
Reviewed by Michael Catanzaro.
Direct access to GdkEvent structs is no longer possible in GTK 4.
No behaviour changes.
* platform/gtk/PlatformKeyboardEventGtk.cpp:
(WebCore::eventTypeForGdkKeyEvent):
(WebCore::modifiersForGdkKeyEvent):
(WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
* platform/gtk/PlatformMouseEventGtk.cpp:
(WebCore::PlatformMouseEvent::PlatformMouseEvent):
* platform/gtk/PlatformWheelEventGtk.cpp:
(WebCore::PlatformWheelEvent::PlatformWheelEvent):
2019-06-15 Rob Buis <rbuis@igalia.com>
Add tests for prefetch redirects
https://bugs.webkit.org/show_bug.cgi?id=197371
Reviewed by Youenn Fablet.
Test: http/wpt/prefetch/link-prefetch-main-resource-redirect.html
Allow clearing of the Purpose request header field.
* platform/network/ResourceRequestBase.cpp:
(WebCore::ResourceRequestBase::clearPurpose):
* platform/network/ResourceRequestBase.h:
2019-06-15 Zalan Bujtas <zalan@apple.com>
[LFC][MarginCollapsing] Remove redundant checks in MarginCollapse::marginBefore/AfterCollapsesWith*
https://bugs.webkit.org/show_bug.cgi?id=198882
<rdar://problem/51773334>
Reviewed by Antti Koivisto.
In-flow child can neither be floating nor out-of-flow positioned.
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithFirstInFlowChildMarginBefore):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithLastInFlowChildMarginAfter):
2019-06-15 Zalan Bujtas <zalan@apple.com>
[LFC][MarginCollapsing] Collapsed through margin values preserve quirk state.
https://bugs.webkit.org/show_bug.cgi?id=198885
<rdar://problem/51773568>
Reviewed by Antti Koivisto.
The collapsed through margin becomes a quirk margin if either of the vertical(before/after) margins have quirk value.
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::computedPositiveAndNegativeMargin):
2019-06-15 Zalan Bujtas <zalan@apple.com>
[LFC[MarginCollapsing] Anonymous boxes never collapse their margins with siblings.
https://bugs.webkit.org/show_bug.cgi?id=198884
<rdar://problem/51773509>
Reviewed by Antti Koivisto.
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithPreviousSiblingMarginAfter):
2019-06-15 Zalan Bujtas <zalan@apple.com>
[LFC][MarginCollapsing] Add check for computed height value in MarginCollapse::marginsCollapseThrough
https://bugs.webkit.org/show_bug.cgi?id=198883
<rdar://problem/51773395>
Reviewed by Antti Koivisto.
"A box's own margins collapse if... ...and it has a 'height' of either 0 or 'auto"
https://www.w3.org/TR/CSS22/box.html#collapsing-margins
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough):
2019-06-15 Zalan Bujtas <zalan@apple.com>
[LFC] Fix available width for shrink-to-fit (for out-of-flow non-replaced box)
https://bugs.webkit.org/show_bug.cgi?id=198880
<rdar://problem/51773118>
Reviewed by Antti Koivisto.
This patch fixes the cases when the available width for the out-of-flow positioned box is not the same as the containing block's (padding)width.
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
2019-06-15 Zalan Bujtas <zalan@apple.com>
[LFC] Fix over-constrained logic for out-of-flow non-replaced horizontal geometry.
https://bugs.webkit.org/show_bug.cgi?id=198879
<rdar://problem/51772995>
Reviewed by Antti Koivisto.
The over-constrained logic applies to the case when all the horizontal properties are set.
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
2019-06-15 Zalan Bujtas <zalan@apple.com>
[LFC] Convert both the absolutely and statically positioned out-of-flow block level boxes positions relative to the containing block's padding box
https://bugs.webkit.org/show_bug.cgi?id=198878
<rdar://problem/51772882>
Reviewed by Antti Koivisto.
This patch ensures that while we compute the vertical/horizontal geometry for an out-of-flow block level box,
the static and the absolute positioned values are in the same coordinate system (relative to the containing block's padding box).
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::staticVerticalPositionForOutOfFlowPositioned):
(WebCore::Layout::staticHorizontalPositionForOutOfFlowPositioned):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
2019-06-15 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Add support for vertical-align: top and bottom
https://bugs.webkit.org/show_bug.cgi?id=198697
<rdar://problem/51556188>
Reviewed by Antti Koivisto.
Use the layout box's vertical alignment to adjust line baseline and height and set the run's logical top when the line is being closed.
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::appendInlineContainerStart):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendHardLineBreak):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
(WebCore::Layout::Line::inlineItemHeight const):
(WebCore::Layout::Line::Content::isVisuallyEmpty const): Deleted.
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Content::isVisuallyEmpty const):
(WebCore::Layout::Line::Content::setIsVisuallyEmpty):
(WebCore::Layout::Line::hasContent const):
2019-06-14 Antoine Quint <graouts@apple.com>
[Pointer Events] button property is -1 for pointerdown and pointerup
https://bugs.webkit.org/show_bug.cgi?id=198868
<rdar://problem/51758109>
Reviewed by Dean Jackson.
A value of -1 for "button", which means there was no change of pressed button since the last event, should only ever be used for "pointermove" events.
Test: pointerevents/mouse/pointer-button-and-buttons.html
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::pointerEventForMouseEvent):
2019-06-14 Megan Gardner <megan_gardner@apple.com>
Move Synthetic Editing Commands to behind an experimental feature flag
https://bugs.webkit.org/show_bug.cgi?id=198842
<rdar://problem/50594700>
Reviewed by Simon Fraser.
Moving from a quirk to a feature flag.
* page/Quirks.cpp:
(WebCore::shouldEmulateEditingButtonsAndGesturesInHiddenEditableAreasForHost): Deleted.
(WebCore::Quirks::shouldEmulateEditingButtonsAndGesturesInHiddenEditableAreas const): Deleted.
* page/Quirks.h:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setSyntheticEditingCommandsEnabled):
(WebCore::RuntimeEnabledFeatures::syntheticEditingCommandsEnabled const):
2019-06-14 Jer Noble <jer.noble@apple.com>
REGRESSION(244439): platform/mac/media/encrypted-media/fps-* tests are crashing
https://bugs.webkit.org/show_bug.cgi?id=198612
<rdar://problem/51078978>
Reviewed by Eric Carlson.
There are two implementations of a 'cenc' initialiation data factory; an ASSERT fires when
the second one is added to the registry. Unify them.
* Modules/encryptedmedia/InitDataRegistry.cpp:
(WebCore::extractKeyIDsCenc):
* platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:
(WebCore::CDMPrivateFairPlayStreaming::validFairPlayStreamingSchemes):
(WebCore::CDMPrivateFairPlayStreaming::fairPlaySystemID):
(WebCore::validInitDataTypes):
(WebCore::CDMFactory::platformRegisterFactories):
(WebCore::validFairPlayStreamingSchemes): Deleted.
(WebCore::CDMPrivateFairPlayStreaming::cencName): Deleted.
(WebCore::fairPlaySystemID): Deleted.
(WebCore::extractSchemeAndKeyIdFromCenc): Deleted.
(WebCore::CDMPrivateFairPlayStreaming::extractKeyIDsCenc): Deleted.
(WebCore::CDMPrivateFairPlayStreaming::sanitizeCenc): Deleted.
* platform/graphics/avfoundation/CDMFairPlayStreaming.h:
2019-06-14 Saam Barati <sbarati@apple.com>
Unreviewed. Follow up to r246438. This removes a debug assert until
we do further compiler work in: https://bugs.webkit.org/show_bug.cgi?id=198861
* Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
(WebCore::WHLSL::checkDuplicateFunctions):
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
2019-06-14 Saam Barati <sbarati@apple.com>
[WHLSL] Implement out-of-bounds and nullptr behavior
https://bugs.webkit.org/show_bug.cgi?id=198600
<rdar://problem/51668853>
Reviewed by Robin Morisset.
The behavior we're implementing is:
- OOB writes are ignored.
- OOB reads return zero.
- Writes to null are ignored.
- Reads from null return zero.
- &*x == x, including &*null == null.
We implement this like so:
- The value stack in FunctionWriter turns into a stack of pairs: rvalues and lvalues.
rvalues are represented the same as before. Lvalues are always pointers.
- Anything that produces an lvalue must push a pointer to the stack. Not
all things produce lvalues, so that entry in the stack may be empty.
However, all things that produce lvalues also produce rvalues. So, "*x = 42" works,
and so does "foo(*x)". Nodes that produce lvalues are responsible for also producing
an rvalue, which should be the value as if the lvalue was dereferenced at that point
in program execution. So the "*x" in "thread int* x = null; *x" produces the int zero
for its rvalue, and null for its lvalue.
- Dereference just works, as dereference produces both an lvalue and rvalue. Dereference
node's child must also be an lvalue. So we just forward that value along on
the stack. For the rvalue, if we try to dereference nullptr, we just fill in
zero bytes instead. Otherwise, the rvalue is the result of dereferencing the
non-null pointer.
- Assignment expressions check if the incoming lvalue is null. If it is, it
skips the assignment.
- operator&[] returns nullptr on an OOB access. Then, based on the above
behavior, we get the desired OOB reads return zero, and OOB writes are
ignored.
- MakePointerExpression just takes the last lvalue off the stack (which must
be a pointer) and returns it as an rvalue.
- VariableReference will push both the variable value and a pointer to the variable
onto the stack.
This patch also fixes a few bugs where we weren't giving certain AST nodes the
proper address space values.
This patch also removes code to generate native functions for operators
"operator[]" and "operator[]=" as we should never be generating these
ourselves. We should only be generating the "operator&[]" ander.
Tests: webgpu/whlsl-null-dereference.html
webgpu/whlsl-oob-access.html
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::FunctionDefinitionWriter):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::appendRightValue):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::appendLeftValue):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::takeLastValue):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::takeLastLeftValue):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::emitLoop):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeFunction):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.h:
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):
* Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
(WebCore::WHLSL::PreserveLifetimes::assignVariableIntoStruct):
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::PropertyResolver::visit):
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm:
(WebCore::trySetFunctions):
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::trySetFunctions):
2019-06-14 Jer Noble <jer.noble@apple.com>
CRASH(nullptr) in WebCore::jsAudioContextCurrentTime()
https://bugs.webkit.org/show_bug.cgi?id=198859
<rdar://problem/27986991>
Reviewed by Eric Carlson.
AudioContext's m_destinationNode can become null during iframe teardown,
but can AudioContext methods can still be called by JavaScript. Add null-checks
to all (remaing) unprotected dereferences of m_destinationNode.
* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::uninitialize):
(WebCore::AudioContext::createBufferSource):
(WebCore::AudioContext::createScriptProcessor):
(WebCore::AudioContext::createBiquadFilter):
(WebCore::AudioContext::createPanner):
(WebCore::AudioContext::createConvolver):
(WebCore::AudioContext::createDynamicsCompressor):
(WebCore::AudioContext::createAnalyser):
(WebCore::AudioContext::createGain):
(WebCore::AudioContext::createDelay):
(WebCore::AudioContext::createChannelSplitter):
(WebCore::AudioContext::createChannelMerger):
(WebCore::AudioContext::createOscillator):
* Modules/webaudio/AudioContext.h:
(WebCore::AudioContext::currentSampleFrame const):
(WebCore::AudioContext::currentTime const):
(WebCore::AudioContext::sampleRate const):
2019-06-14 Youenn Fablet <youenn@apple.com>
Cloning a MediaStreamTrack does not clone the logger
https://bugs.webkit.org/show_bug.cgi?id=198844
Reviewed by Eric Carlson.
Make MediaStream and MediaStreamTrack rely on their private versions for logging.
Move from a RefPtr version to a Ref so as to forbid nullptr crashes.
Make sure that RealtimeIncomingAudioSource and RealtimeIncomingVideoSource check for their logger before logging.
Covered by existing tests and updated test.
* Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
(WebCore::loggerFromContext):
(WebCore::CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack):
* Modules/mediastream/MediaStream.cpp:
(WebCore::loggerFromContext):
(WebCore::MediaStream::create):
(WebCore::MediaStream::MediaStream):
* Modules/mediastream/MediaStream.h:
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::MediaStreamTrack):
* Modules/mediastream/MediaStreamTrack.h:
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::allow):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::mediaStreamFromRTCStream):
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::createReceiverForSource):
* Modules/webaudio/MediaStreamAudioDestinationNode.cpp:
(WebCore::MediaStreamAudioDestinationNode::MediaStreamAudioDestinationNode):
* platform/mediastream/MediaStreamPrivate.cpp:
(WebCore::MediaStreamPrivate::create):
(WebCore::MediaStreamPrivate::MediaStreamPrivate):
(WebCore::MediaStreamPrivate::setLogger): Deleted.
* platform/mediastream/MediaStreamPrivate.h:
* platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::create):
(WebCore::MediaStreamTrackPrivate::MediaStreamTrackPrivate):
(WebCore::MediaStreamTrackPrivate::clone):
(WebCore::MediaStreamTrackPrivate::setLogger): Deleted.
* platform/mediastream/MediaStreamTrackPrivate.h:
* platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::createMediaStream):
* platform/mediastream/RealtimeMediaSourceCenter.h:
* platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp:
(WebCore::RealtimeIncomingAudioSourceCocoa::OnData):
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
(WebCore::RealtimeIncomingVideoSourceCocoa::pixelBufferPool):
(WebCore::RealtimeIncomingVideoSourceCocoa::pixelBufferFromVideoFrame):
(WebCore::RealtimeIncomingVideoSourceCocoa::OnFrame):
2019-06-14 Ali Juma <ajuma@chromium.org>
IntersectionObserver rootMargin detection fails when `root` is an element
https://bugs.webkit.org/show_bug.cgi?id=198784
Reviewed by Simon Fraser.
When computing a target's bounds in root space, we were applying the root's
clip rect (if any), and then intersecting with the root rect expanded by the
root margin. This meant that if a target did not intersect the non-expanded root
rect, we would get an empty intersection even if the target did intersect the
expanded root rect. Fix this by not applying the root's clip rect when computing
a target's bounds in root space. Add a new VisibleRectContextOption::ApplyContainerClip
that determines whether RenderObject::computeVisibleRectInContainer should apply
the container's clip.
Test: imported/w3c/web-platform-tests/intersection-observer/root-margin-root-element.html
* rendering/RenderBox.cpp:
(WebCore::RenderBox::applyCachedClipAndScrollPosition const):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::visibleRectContextForRepaint):
* rendering/RenderObject.h:
2019-06-14 Carlos Garcia Campos <cgarcia@igalia.com>
[cairo] Entering text into forms on github.com creates a trapezoid artifact
https://bugs.webkit.org/show_bug.cgi?id=126124
Reviewed by Michael Catanzaro.
Mixing antialiasing modes in the same clip is not actually supported by cairo. In the case of rectangle clips we
are already ignoring the current antialiasing to not do any antialiasing. We could do the opposite for clips
receiving a path, we want to enforce antialiasing in that case since the paths might contain curves. Doing that
we ensure all calls to clip with a path use the same antialiasing, which is the case of the github bug.
* platform/graphics/cairo/CairoOperations.cpp:
(WebCore::Cairo::doClipWithAntialias): Helper to call cairo_clip() with the given antialising mode.
(WebCore::Cairo::clip): Use doClipWithAntialias().
(WebCore::Cairo::clipOut): Ditto.
(WebCore::Cairo::clipPath): Ditto.
2019-06-13 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Remove unnecessary ASSERT()s and clean up visitor lambdas
https://bugs.webkit.org/show_bug.cgi?id=198706
Reviewed by Dean Jackson, Saam Barati, and Robin Morisset.
Some minor refactoring.
If the code is going to unconditionally downcast<Foo>(bar), there's no need
to guard that with an ASSERT(is<Foo>(bar)) because the downcast() call will
do that automatically.
No new tests because there is no behavior change.
* Modules/webgpu/WHLSL/AST/WHLSLConstantExpression.h:
(WebCore::WHLSL::AST::ConstantExpression::visit):
(WebCore::WHLSL::AST::ConstantExpression::visit const):
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
(WebCore::WHLSL::Metal::EntryPointScaffolding::resourceHelperTypes):
(WebCore::WHLSL::Metal::EntryPointScaffolding::mangledOutputPath):
(WebCore::WHLSL::Metal::EntryPointScaffolding::unpackResourcesAndNamedBuiltIns):
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::constantExpressionString):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeFunction):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeTypeWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeType):
* Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::find):
(WebCore::WHLSL::Metal::TypeNamer::createNameNode):
(WebCore::WHLSL::Metal::TypeNamer::insert):
(WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):
(WebCore::WHLSL::Metal::TypeNamer::emitNamedTypeDefinition):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::Checker::visit):
(WebCore::WHLSL::argumentTypeForAndOverload):
* Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:
(WebCore::WHLSL::inferTypesForTypeArguments):
* Modules/webgpu/WHLSL/WHLSLIntrinsics.cpp:
(WebCore::WHLSL::Intrinsics::addFullTexture):
(WebCore::WHLSL::Intrinsics::addDepthTexture):
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::modify):
(WebCore::WHLSL::PropertyResolver::visit):
* Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
(WebCore::WHLSL::Visitor::visit):
2019-06-12 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Hook up compute
https://bugs.webkit.org/show_bug.cgi?id=198644
Reviewed by Saam Barati.
This patch hooks up compute shaders in exactly the same way that vertex and fragment shaders
are hooked up. I've modified the two patchs (compute and rendering) to be almost exactly the
same code.
This patch also adds support for the WHLSL compiler to determine what the numthreads()
attribute in the shader says so that it can be hooked up to Metal's threads-per-threadgroup
argument in the dispatch call. There is some logic to make sure that there aren't two
numthreads() attributes on the same compute shader.
It also adds a little bit of type renaming. For built-in variables, sometimes Metal's type
doesn't always match WHLSL's (and HLSL's type). For example, in WHLSL and HLSL, SV_DispatchThreadID variables have to be a float3, but in Metal, they are a uint3.
Therefore, I've added a little bit of code during each entry point's pack and unpack stages
to handle this type conversion.
Test: webgpu/whlsl-compute.html
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
(WebCore::WHLSL::Metal::internalTypeForSemantic): Determine which Metal type corresponds to
each built-in variable.
(WebCore::WHLSL::Metal::EntryPointScaffolding::builtInsSignature): Perform the type
conversion.
(WebCore::WHLSL::Metal::EntryPointScaffolding::unpackResourcesAndNamedBuiltIns): Ditto.
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::VertexEntryPointScaffolding): Ditto.
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::helperTypes): Ditto.
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::pack): Ditto.
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::FragmentEntryPointScaffolding): Ditto.
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::helperTypes): Ditto.
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::pack): Ditto.
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::signature): Ditto.
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h:
* Modules/webgpu/WHLSL/WHLSLComputeDimensions.cpp: Added. Add a pass to determine whether
or not any entry point has duplicate numthreads() attribute, and to determine what the
appropriate numthreads() values should be for the current entry point.
(WebCore::WHLSL::ComputeDimensionsVisitor::ComputeDimensionsVisitor):
(WebCore::WHLSL::ComputeDimensionsVisitor::computeDimensions const):
(WebCore::WHLSL::computeDimensions):
* Modules/webgpu/WHLSL/WHLSLComputeDimensions.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLPrepare.h.
* Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.cpp:
(WebCore::WHLSL::gatherEntryPointItems): Compute shaders don't need to have a semantic for their return type.
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepare): Run the computeDimensions() pass.
* Modules/webgpu/WHLSL/WHLSLPrepare.h:
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp: In a left-value propertyAccessExpression,
the index expression can be a right-value. Treat it as such.
(WebCore::WHLSL::LeftValueSimplifier::finishVisiting):
(WebCore::WHLSL::LeftValueSimplifier::visit):
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt: We need support for multiplication (for a
test) and float3 for SV_DispatchThreadID.
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/gpu/GPUComputePipeline.h: Associate a compute dimensions with a particular
compute pipeline. This is how Metal knows what values to use for a dispatch.
(WebCore::GPUComputePipeline::computeDimensions const):
* platform/graphics/gpu/cocoa/GPUComputePassEncoderMetal.mm: Use the saved compute dimensions.
(WebCore::GPUComputePassEncoder::dispatch):
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm: Make the code match GPURenderPipelineMetal.
(WebCore::trySetMetalFunctions):
(WebCore::trySetFunctions):
(WebCore::convertComputePipelineDescriptor):
(WebCore::tryCreateMTLComputePipelineState):
(WebCore::GPUComputePipeline::tryCreate):
(WebCore::GPUComputePipeline::GPUComputePipeline):
(WebCore::tryCreateMtlComputeFunction): Deleted.
* platform/graphics/gpu/cocoa/GPUPipelineMetalConvertLayout.cpp: Added. Moved shared helper
functions to a file where they can be accessed by multiple places.
(WebCore::convertShaderStageFlags):
(WebCore::convertBindingType):
(WebCore::convertLayout):
* platform/graphics/gpu/cocoa/GPUPipelineMetalConvertLayout.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLPrepare.h.
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm: Delete the functions that were moved to GPUPipelineMetalConvertLayout.
(WebCore::trySetFunctions):
(WebCore::tryCreateMtlRenderPipelineState):
(WebCore::convertShaderStageFlags): Deleted.
(WebCore::convertBindingType): Deleted.
(WebCore::convertLayout): Deleted.
2019-06-13 Jer Noble <jer.noble@apple.com>
AVKit play button bypasses MediaElementSession playbackPermitted() checks.
https://bugs.webkit.org/show_bug.cgi?id=198813
Reviewed by Eric Carlson.
HTMLMediaElement::togglePlayState() is an internal-only method that doesn't
run playbackPermitted() checks. For our imitation AVPlayerController, translate
requests to -togglePlayback: into calls to play() and pause() depending on
playback state.
* platform/ios/WebAVPlayerController.mm:
(-[WebAVPlayerController togglePlayback:]):
2019-06-13 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r246396 and r246397.
https://bugs.webkit.org/show_bug.cgi?id=198837
Breaks internal builds (Requested by ShawnRoberts on #webkit).
Reverted changesets:
"[WHLSL] Hook up compute"
https://bugs.webkit.org/show_bug.cgi?id=198644
https://trac.webkit.org/changeset/246396
"[WHLSL] Hook up compute"
https://bugs.webkit.org/show_bug.cgi?id=198644
https://trac.webkit.org/changeset/246397
2019-06-13 Antti Koivisto <antti@apple.com>
twitch.tv: embedded video hovers down the screen when scrolling on iPad
https://bugs.webkit.org/show_bug.cgi?id=198832
<rdar://problem/51541439>
Reviewed by Simon Fraser.
Test: compositing/scrolling/async-overflow-scrolling/overflow-scroll-paint-order-sibling.html
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollTo):
Overflow scroll layer may have composited descendants that are its paint order siblings. We need to invalidate
the tree of the paint order parent for compositing update (instead of just the tree of the overflow scroll layer).
This matches what RenderLayer::updateLayerPosition() does.
2019-06-13 Youenn Fablet <youenn@apple.com>
SocketStreamHandle should not be destroyed in a background thread
https://bugs.webkit.org/show_bug.cgi?id=198781
Reviewed by Geoffrey Garen.
Make sure to destroy SocketStreamHandle on the main thread since it owns an URL created on the main thread.
Covered by WPT websocket tests from https://bugs.webkit.org/show_bug.cgi?id=198774.
* platform/network/SocketStreamHandle.cpp:
(WebCore::SocketStreamHandle::SocketStreamHandle):
* platform/network/SocketStreamHandle.h:
2019-06-13 Antoine Quint <graouts@apple.com>
"display: contents" Content click does not trigger
https://bugs.webkit.org/show_bug.cgi?id=198559
<rdar://problem/51488524>
Reviewed by Antti Koivisto.
Test: fast/events/ios/click-event-and-display-contents.html
* dom/Element.h:
2019-06-13 Takashi Komori <Takashi.Komori@sony.com>
[curl] Remove member objects of CurlRequest not to share by different threads.
https://bugs.webkit.org/show_bug.cgi?id=198747
Reviewed by Fujii Hironori.
Removed m_certificateInfo and m_networkLoadMetrics.
Before patch those objects were updated by different threads.
No tests needed, no functionality changes.
* platform/network/curl/CurlDownload.cpp:
(WebCore::CurlDownload::curlDidReceiveResponse):
(WebCore::CurlDownload::curlDidReceiveBuffer):
(WebCore::CurlDownload::curlDidComplete):
(WebCore::CurlDownload::curlDidFailWithError):
* platform/network/curl/CurlDownload.h:
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::start):
(WebCore::CurlRequest::didReceiveHeader):
(WebCore::CurlRequest::didCompleteTransfer):
(WebCore::CurlRequest::invokeDidReceiveResponse):
(WebCore::CurlRequest::networkLoadMetrics):
(WebCore::CurlRequest::updateNetworkLoadMetrics): Deleted.
* platform/network/curl/CurlRequest.h:
(WebCore::CurlRequest::setStartTime):
(WebCore::CurlRequest::certificateInfo const): Deleted.
(WebCore::CurlRequest::networkLoadMetrics const): Deleted.
* platform/network/curl/CurlRequestClient.h:
* platform/network/curl/CurlResourceHandleDelegate.cpp:
(WebCore::CurlResourceHandleDelegate::curlDidSendData):
(WebCore::CurlResourceHandleDelegate::curlDidReceiveResponse):
(WebCore::CurlResourceHandleDelegate::curlDidReceiveBuffer):
(WebCore::CurlResourceHandleDelegate::curlDidComplete):
(WebCore::CurlResourceHandleDelegate::curlDidFailWithError):
* platform/network/curl/CurlResourceHandleDelegate.h:
* platform/network/curl/CurlResponse.h:
(WebCore::CurlResponse::isolatedCopy const):
* platform/network/curl/ResourceResponseCurl.cpp:
(WebCore::ResourceResponse::ResourceResponse):
2019-06-13 Zan Dobersek <zdobersek@igalia.com>
[Nicosia] Add SceneIntegration
https://bugs.webkit.org/show_bug.cgi?id=198791
Reviewed by Carlos Garcia Campos.
Add the SceneIntegration class to the Nicosia namespace, primarily for
the purpose of being able to conveniently trigger scene updates whenever
changes are done to the state of layers that are included in that scene.
Initially this would be used for layer changes done on a
scrolling-dedicated thread.
Each Nicosia::PlatformLayer can have a SceneIntegration object reference
associated. Helper createUpdateScope() method returns a
SceneIntegration::UpdateScope instance that triggers an update for the
scene when that instance is destroyed (normally when it goes out of the
scope).
* platform/TextureMapper.cmake:
* platform/graphics/nicosia/NicosiaPlatformLayer.h:
(Nicosia::PlatformLayer::setSceneIntegration):
(Nicosia::PlatformLayer::createUpdateScope):
* platform/graphics/nicosia/NicosiaSceneIntegration.cpp: Added.
(Nicosia::SceneIntegration::SceneIntegration):
(Nicosia::SceneIntegration::~SceneIntegration):
(Nicosia::SceneIntegration::setClient):
(Nicosia::SceneIntegration::invalidate):
(Nicosia::SceneIntegration::requestUpdate):
(Nicosia::SceneIntegration::createUpdateScope):
(Nicosia::SceneIntegration::UpdateScope::UpdateScope):
(Nicosia::SceneIntegration::UpdateScope::~UpdateScope):
* platform/graphics/nicosia/NicosiaSceneIntegration.h: Added.
2019-06-13 Philippe Normand <pnormand@igalia.com>
[GStreamer] HLS stream slow start
https://bugs.webkit.org/show_bug.cgi?id=198377
Reviewed by Xabier Rodriguez-Calvar.
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webKitWebSrcCreate): Cut down the adapter condition to 200 ms to
improve start-up times for HLS playback.
2019-06-13 Ludovico de Nittis <ludovico.denittis@collabora.com>
[GTK] gdk_display_get_device_manager and gdk_screen_get_width/height are deprecated
https://bugs.webkit.org/show_bug.cgi?id=198822
Reviewed by Carlos Garcia Campos.
GdkSeat and GdkRectangle should be used, respectively.
No behaviour changes.
* platform/gtk/GtkVersioning.c:
(getDefaultGDKPointerDevice):
(getScreenWorkArea):
2019-06-12 Antoine Quint <graouts@apple.com>
[WHLSL] Hook up compute
https://bugs.webkit.org/show_bug.cgi?id=198644
Unreviewed build fix. Release iOS build would complain that pipelineState was unused.
* platform/graphics/gpu/cocoa/GPUComputePassEncoderMetal.mm:
(WebCore::GPUComputePassEncoder::dispatch):
2019-06-12 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Hook up compute
https://bugs.webkit.org/show_bug.cgi?id=198644
Reviewed by Saam Barati.
This patch hooks up compute shaders in exactly the same way that vertex and fragment shaders
are hooked up. I've modified the two patchs (compute and rendering) to be almost exactly the
same code.
This patch also adds support for the WHLSL compiler to determine what the numthreads()
attribute in the shader says so that it can be hooked up to Metal's threads-per-threadgroup
argument in the dispatch call. There is some logic to make sure that there aren't two
numthreads() attributes on the same compute shader.
It also adds a little bit of type renaming. For built-in variables, sometimes Metal's type
doesn't always match WHLSL's (and HLSL's type). For example, in WHLSL and HLSL, SV_DispatchThreadID variables have to be a float3, but in Metal, they are a uint3.
Therefore, I've added a little bit of code during each entry point's pack and unpack stages
to handle this type conversion.
Test: webgpu/whlsl-compute.html
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
(WebCore::WHLSL::Metal::internalTypeForSemantic): Determine which Metal type corresponds to
each built-in variable.
(WebCore::WHLSL::Metal::EntryPointScaffolding::builtInsSignature): Perform the type
conversion.
(WebCore::WHLSL::Metal::EntryPointScaffolding::unpackResourcesAndNamedBuiltIns): Ditto.
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::VertexEntryPointScaffolding): Ditto.
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::helperTypes): Ditto.
(WebCore::WHLSL::Metal::VertexEntryPointScaffolding::pack): Ditto.
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::FragmentEntryPointScaffolding): Ditto.
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::helperTypes): Ditto.
(WebCore::WHLSL::Metal::FragmentEntryPointScaffolding::pack): Ditto.
(WebCore::WHLSL::Metal::ComputeEntryPointScaffolding::signature): Ditto.
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h:
* Modules/webgpu/WHLSL/WHLSLComputeDimensions.cpp: Added. Add a pass to determine whether
or not any entry point has duplicate numthreads() attribute, and to determine what the
appropriate numthreads() values should be for the current entry point.
(WebCore::WHLSL::ComputeDimensionsVisitor::ComputeDimensionsVisitor):
(WebCore::WHLSL::ComputeDimensionsVisitor::computeDimensions const):
(WebCore::WHLSL::computeDimensions):
* Modules/webgpu/WHLSL/WHLSLComputeDimensions.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLPrepare.h.
* Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.cpp:
(WebCore::WHLSL::gatherEntryPointItems): Compute shaders don't need to have a semantic for their return type.
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepare): Run the computeDimensions() pass.
* Modules/webgpu/WHLSL/WHLSLPrepare.h:
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp: In a left-value propertyAccessExpression,
the index expression can be a right-value. Treat it as such.
(WebCore::WHLSL::LeftValueSimplifier::finishVisiting):
(WebCore::WHLSL::LeftValueSimplifier::visit):
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt: We need support for multiplication (for a
test) and float3 for SV_DispatchThreadID.
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/gpu/GPUComputePipeline.h: Associate a compute dimensions with a particular
compute pipeline. This is how Metal knows what values to use for a dispatch.
(WebCore::GPUComputePipeline::computeDimensions const):
* platform/graphics/gpu/cocoa/GPUComputePassEncoderMetal.mm: Use the saved compute dimensions.
(WebCore::GPUComputePassEncoder::dispatch):
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm: Make the code match GPURenderPipelineMetal.
(WebCore::trySetMetalFunctions):
(WebCore::trySetFunctions):
(WebCore::convertComputePipelineDescriptor):
(WebCore::tryCreateMTLComputePipelineState):
(WebCore::GPUComputePipeline::tryCreate):
(WebCore::GPUComputePipeline::GPUComputePipeline):
(WebCore::tryCreateMtlComputeFunction): Deleted.
* platform/graphics/gpu/cocoa/GPUPipelineMetalConvertLayout.cpp: Added. Moved shared helper
functions to a file where they can be accessed by multiple places.
(WebCore::convertShaderStageFlags):
(WebCore::convertBindingType):
(WebCore::convertLayout):
* platform/graphics/gpu/cocoa/GPUPipelineMetalConvertLayout.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLPrepare.h.
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm: Delete the functions that were moved to GPUPipelineMetalConvertLayout.
(WebCore::trySetFunctions):
(WebCore::tryCreateMtlRenderPipelineState):
(WebCore::convertShaderStageFlags): Deleted.
(WebCore::convertBindingType): Deleted.
(WebCore::convertLayout): Deleted.
2019-06-12 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Implement array references
https://bugs.webkit.org/show_bug.cgi?id=198163
Reviewed by Saam Barati.
The compiler automatically generates anders for every array reference. Luckily, the infrastructure
to generate those anders and emit Metal code to represent them already exists in the compiler.
There are two pieces remaining (which this patch implements):
1. The JavaScript compiler has a behavior where anders that are called with an array reference
as an argument don't wrap the argument in a MakePointerExpression. This is because the array
reference is already a reference type, so it's silly to operate on a pointer to a reference.
This patch implements this by teaching the type checker about which types should be passed
to the ander call, and by actually constructing those types in the property resolver.
The property resolver does this by placing the logic to construct an ander argument in a
single function which also has logic to save the argument in a temporary if the thread ander
will be called. The semantics about which functions are called in which situations are not
changed; instead, we just simply don't wrap array references with MakePointerExpressions.
2. Creating a bind group from the WebGPU API has to retain information about buffer lengths for
each buffer so the shader can properly perform bounds checks. This can be broken down into a
few pieces:
- Creating a bind group layout has to assign extra id indexes for each buffer which will be
filled in to represent the buffer's length
- Creating the bind group itself needs to fill in the buffer length into the Metal argument
buffer
- The shader compiler needs to emit code at the beginning of entry point to find the buffer
lengths and pack them together into the array reference (array references correspond to
a Metal struct with two fields: a pointer and a length).
This patch doesn't actually implement bounds checks themselves; it just hooks up the buffer
lengths so https://bugs.webkit.org/show_bug.cgi?id=198600 can implement it.
The shader compiler's API is modified to allow for this extra buffer length information to be
passed in from the WebGPU implementation.
Unfortunately, I don't think I could split this patch up into two pieces because both are
required to test the compiler with buffers.
Tests: webgpu/whlsl-buffer-fragment.html
webgpu/whlsl-buffer-vertex.html
* Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:
(WebCore::WHLSL::AST::PropertyAccessExpression::baseReference):
* Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.cpp:
(WebCore::WHLSL::AST::ResourceSemantic::isAcceptableType const): Arrays can't be resources
because the compiler has no way of guaranteeing if the resource is long enough to hold the
array at compile time.
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
(WebCore::WHLSL::Metal::EntryPointScaffolding::EntryPointScaffolding): Generate an extra
variable name to represent the buffer length. Only do it for resources which have lengths.
(WebCore::WHLSL::Metal::EntryPointScaffolding::resourceHelperTypes):
(WebCore::WHLSL::Metal::EntryPointScaffolding::unpackResourcesAndNamedBuiltIns): Perform
the appropriate math to turn byte lengths into element counts and store the element count
in the array reference.
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h:
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveWithOperatorAnderIndexer): Refactor.
(WebCore::WHLSL::resolveWithOperatorLength): Ditto.
(WebCore::WHLSL::resolveWithReferenceComparator): Ditto.
(WebCore::WHLSL::resolveByInstantiation): Ditto.
(WebCore::WHLSL::argumentTypeForAndOverload): Given an ander, what should the type of the
argument be?
(WebCore::WHLSL::Checker::finishVisiting): Call argumentTypeForAndOverload(). Also, if
we couldn't find an ander, try automatically generating it, the same way that function
calls do. (This is how array references get their anders.)
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLPipelineDescriptor.h: New WHLSL API to provide the length
information.
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::PropertyResolver::visit): SimplifyRightValue() can't fail any more.
(WebCore::WHLSL::wrapAnderCallArgument): If the ander argument should be wrapped in a
MakePointer or a MakeArrayReference, do that. Also, if the ander is a thread ander, save
the argument in a local variable and use that.
(WebCore::WHLSL::anderCallArgument): The equivalent of argumentTypeForAndOverload().
(WebCore::WHLSL::setterCall): Call anderCallArgument().
(WebCore::WHLSL::getterCall): Ditto.
(WebCore::WHLSL::modify): We used to have special-case code for handling pointer-to-argument
values as distinct from just the argument values themselves. However, emitting
chains of &* operators is valid and won't even make it through the Metal code generator
after https://bugs.webkit.org/show_bug.cgi?id=198600 is fixed. So, in order to simplify
wrapAnderCallArgument(), don't special case these values and just create &* chains instead.
(WebCore::WHLSL::PropertyResolver::simplifyRightValue):
(WebCore::WHLSL::LeftValueSimplifier::finishVisiting): Call anderCallArgument().
* Modules/webgpu/WHLSL/WHLSLSemanticMatcher.cpp: Update to support the new compiler API.
(WebCore::WHLSL::matchMode):
(WebCore::WHLSL::matchResources):
* Modules/webgpu/WebGPUBindGroupDescriptor.cpp: Ditto.
(WebCore::WebGPUBindGroupDescriptor::tryCreateGPUBindGroupDescriptor const):
* platform/graphics/gpu/GPUBindGroupLayout.h: Add some internal implementation data inside
the bindings object. Use a Variant to differentiate between the various bindings types, and
put the extra length field on just those members of the variant that represent buffers.
* platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm: Update to support the new compiler API.
(WebCore::argumentDescriptor):
(WebCore::GPUBindGroupLayout::tryCreate):
* platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm: Ditto.
(WebCore::setBufferOnEncoder):
(WebCore::GPUBindGroup::tryCreate):
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm: Ditto.
(WebCore::convertBindingType):
(WebCore::convertLayout):
2019-06-12 Carlos Garcia Campos <cgarcia@igalia.com>
[cairo][SVG] If clipPath has multiple elements, clip-path doesn't work with transform
https://bugs.webkit.org/show_bug.cgi?id=198746
Reviewed by Don Olmstead.
We need to save the current transformation matrix at the moment the image mask is set and set it again on
restore right before applying the mask. This patch also creates a pattern for the image mask surface and set its
transformation matrix according to the mask position, so that we don't need to save the mask rectangle too.
Tests: svg/clip-path/clip-hidpi-expected.svg
svg/clip-path/clip-hidpi.svg
svg/clip-path/clip-opacity-translate-expected.svg
svg/clip-path/clip-opacity-translate.svg
* platform/graphics/cairo/PlatformContextCairo.cpp:
(WebCore::PlatformContextCairo::restore):
(WebCore::PlatformContextCairo::pushImageMask):
2019-06-12 Simon Fraser <simon.fraser@apple.com>
paddingBoxRect() is wrong with RTL scrollbars on the left
https://bugs.webkit.org/show_bug.cgi?id=198816
Reviewed by Jon Lee.
RenderBox::paddingBoxRect() needs to offset the left side of the box for the
vertical scrollbar, if it's placed on the left.
Test: compositing/geometry/rtl-overflow-scroll.html
* rendering/RenderBox.cpp:
(WebCore::RenderBox::paddingBoxRect const):
* rendering/RenderBox.h:
(WebCore::RenderBox::paddingBoxRect const): Deleted.
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGeometry):
* rendering/RenderListBox.cpp:
(WebCore::RenderListBox::controlClipRect const):
2019-06-12 Youenn Fablet <youenn@apple.com>
Use NSURLSession for WebSocket
https://bugs.webkit.org/show_bug.cgi?id=198568
Reviewed by Geoffrey Garen.
Add a runtime flag to either choose the new WebSocket code path or the previously existing one.
The switch is done at WebSocket channel API level which offers the necessary high level API to abstract the two code paths.
By default, we continue using the current WebSocket implementation.
Covered by manual testing on current WebSocket tests.
* Modules/websockets/ThreadableWebSocketChannel.cpp:
(WebCore::ThreadableWebSocketChannel::create):
* Modules/websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::document):
* Modules/websockets/WebSocketChannel.h:
* WebCore.xcodeproj/project.pbxproj:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::isNSURLSessionWebSocketEnabled const):
(WebCore::RuntimeEnabledFeatures::setIsNSURLSessionWebSocketEnabled):
* page/SocketProvider.cpp:
(WebCore::SocketProvider::createWebSocketChannel):
* page/SocketProvider.h:
2019-06-12 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Educate the property resolver about IndexExpressions
https://bugs.webkit.org/show_bug.cgi?id=198399
Reviewed by Saam Barati.
This is part one of two patches which will allow buffers to work. This patch
adds support in the property resolver for index expressions. Index expressions
get turned into calls to "getter indexers", "setter indexers", or "ander
indexers". They work almost identically to dot expressions, except there is an
extra "index" expression which gets turned into an extra argument to those
functions.
There's actually a bit of a trick here. Let's say we need to run a getter and
a setter separately (e.g. "foo[3]++;"). The index expression can't be duplicated
for both the getter and the setter (e.g. the functions are
int operator[](Foo, uint) and Foo operator[]=(Foo, uint, int), and we aren't
allowed to execute the index expression multiple times. Consider if that "3"
in the example is actually "bar()" with some side effect. So, we have to run
the index expression once at the correct time, and save its result to a temporary
variable, and then pass in the temporary variable into the getter and setter.
So, if the code says "foo[bar()][baz()] = quux();" the following sequence of
functions get run:
- bar()
- operator[](Foo, uint)
- baz()
- quux()
- operator[]=(OtherType, uint, OtherOtherType)
- operator[]=(Foo, uint, OtherType)
The next patch will modify the WebGPU JavaScript implementation to send buffer
lengths to the shader, and for the shader compiler to correctly unpack this
information and place it inside the array references. That should be everything
that's needed to get buffers to work. After that, hooking up compute should be
fairly trivial.
Tests: webgpu/propertyresolver/ander-abstract-lvalue.html
webgpu/propertyresolver/ander-lvalue-3-levels.html
webgpu/propertyresolver/ander-lvalue.html
webgpu/propertyresolver/ander.html
webgpu/propertyresolver/getter.html
webgpu/propertyresolver/indexer-ander-abstract-lvalue.html
webgpu/propertyresolver/indexer-ander-lvalue-3-levels.html
webgpu/propertyresolver/indexer-ander-lvalue.html
webgpu/propertyresolver/indexer-ander.html
webgpu/propertyresolver/indexer-getter.html
webgpu/propertyresolver/indexer-setter-abstract-lvalue-3-levels.html
webgpu/propertyresolver/indexer-setter-abstract-lvalue.html
webgpu/propertyresolver/indexer-setter-lvalue.html
webgpu/propertyresolver/indexer-setter.html
webgpu/propertyresolver/setter-abstract-lvalue-3-levels.html
webgpu/propertyresolver/setter-abstract-lvalue.html
webgpu/propertyresolver/setter-lvalue.html
* Modules/webgpu/WHLSL/AST/WHLSLAddressSpace.h:
(WebCore::WHLSL::AST::toString):
* Modules/webgpu/WHLSL/AST/WHLSLEntryPointType.h:
(WebCore::WHLSL::AST::toString):
* Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
(WebCore::WHLSL::AST::IndexExpression::takeIndex):
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeFunction):
(WebCore::WHLSL::Metal::convertAddressSpace): Deleted.
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::checkOperatorOverload):
(WebCore::WHLSL::Checker::finishVisiting):
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLInferTypes.h:
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::PropertyResolver::visit):
(WebCore::WHLSL::setterCall):
(WebCore::WHLSL::getterCall):
(WebCore::WHLSL::modify):
(WebCore::WHLSL::PropertyResolver::simplifyRightValue):
(WebCore::WHLSL::LeftValueSimplifier::finishVisiting):
(WebCore::WHLSL::LeftValueSimplifier::visit):
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
* Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
(WebCore::WHLSL::synthesizeStructureAccessors):
2019-06-12 Devin Rousso <drousso@apple.com>
Web Inspector: artificial context menus don't work when Web Inspector is zoomed
https://bugs.webkit.org/show_bug.cgi?id=198801
Reviewed by Joseph Pecoraro.
* inspector/InspectorFrontendHost.cpp:
(WebCore::InspectorFrontendHost::dispatchEventAsContextMenuEvent):
Use the `absoluteLocation` of the `MouseEvent`, which takes into account zoom and scale.
2019-06-12 Sam Weinig <weinig@apple.com>
Remove dead code in user agent construction
https://bugs.webkit.org/show_bug.cgi?id=198802
Reviewed by Anders Carlsson.
* page/NavigatorBase.cpp:
(WebCore::NavigatorBase::platform const):
Drop dead architures.
2019-06-12 Ludovico de Nittis <ludovico.denittis@collabora.com>
[GTK] GTK_STOCK_* types have been deprecated since GTK 3.10
https://bugs.webkit.org/show_bug.cgi?id=198787
Reviewed by Michael Catanzaro.
No behaviour changes.
* platform/graphics/gtk/IconGtk.cpp:
(WebCore::lookupIconName):
* platform/graphics/gtk/ImageGtk.cpp:
(WebCore::loadMissingImageIconFromTheme):
2019-06-12 Antti Koivisto <antti@apple.com>
(Async scrolling) Handle 'position:fixed' inside 'position:sticky' correctly.
https://bugs.webkit.org/show_bug.cgi?id=198788
<rdar://problem/51589759>
Reviewed by Simon Fraser.
Handle 'position:fixed' inside 'position:sticky' correctly.
Also fix nested 'position:fixed' in case where there is an overflow scroller between them.
Tests: scrollingcoordinator/ios/fixed-inside-overflow-inside-fixed.html
scrollingcoordinator/ios/fixed-inside-sticky-frame.html
scrollingcoordinator/ios/fixed-inside-sticky-no-stacking-context-2.html
scrollingcoordinator/ios/fixed-inside-sticky-no-stacking-context.html
scrollingcoordinator/ios/fixed-inside-sticky-stacking-context.html
* page/scrolling/cocoa/ScrollingTreeFixedNode.mm:
(WebCore::ScrollingTreeFixedNode::applyLayerPositions):
Take offsets from sticky nodes into account.
* page/scrolling/cocoa/ScrollingTreeStickyNode.h:
(WebCore::ScrollingTreeStickyNode::layer):
* page/scrolling/cocoa/ScrollingTreeStickyNode.mm:
(WebCore::ScrollingTreeStickyNode::computeLayerPosition const):
Factor into a function.
(WebCore::ScrollingTreeStickyNode::applyLayerPositions):
(WebCore::ScrollingTreeStickyNode::scrollDeltaSinceLastCommit const):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::isViewportConstrainedFixedOrStickyLayer const):
We need to generate a scrolling tree node for position:fixed in nested case if there is an overflow scroller
between the layers.
2019-06-12 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r246350.
r246350 Introduced a failing and timing out test svg/clip-path
/clip-hidpi.svg
Reverted changeset:
"[cairo][SVG] If clipPath has multiple elements, clip-path doesn't work with transform"
https://bugs.webkit.org/show_bug.cgi?id=198746
https://trac.webkit.org/changeset/246350
2019-06-12 Carlos Garcia Campos <cgarcia@igalia.com>
[cairo][SVG] If clipPath has multiple elements, clip-path doesn't work with transform
https://bugs.webkit.org/show_bug.cgi?id=198746
<rdar://problem/51665805>
Reviewed by Don Olmstead.
We need to save the current transformation matrix at the moment the image mask is set and set it again on
restore right before applying the mask. This patch also creates a pattern for the image mask surface and set its
transformation matrix according to the mask position, so that we don't need to save the mask rectangle too.
Tests: svg/clip-path/clip-hidpi-expected.svg
svg/clip-path/clip-hidpi.svg
svg/clip-path/clip-opacity-translate-expected.svg
svg/clip-path/clip-opacity-translate.svg
* platform/graphics/cairo/PlatformContextCairo.cpp:
(WebCore::PlatformContextCairo::restore):
(WebCore::PlatformContextCairo::pushImageMask):
2019-06-11 Wenson Hsieh <wenson_hsieh@apple.com>
[iOS] Idempotent text autosizing needs to react properly to viewport changes
https://bugs.webkit.org/show_bug.cgi?id=198736
<rdar://problem/50591911>
Reviewed by Zalan Bujtas.
Minor refactoring and some adjustments around StyleResolver::adjustRenderStyleForTextAutosizing. See below for
more details, as well as the WebKit ChangeLog.
Test: fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-after-changing-initial-scale.html
* css/StyleResolver.cpp:
(WebCore::StyleResolver::adjustRenderStyleForTextAutosizing):
Rewrite this using early return statements, to make it easier to debug why elements fall out of text autosizing.
Additionally, this function currently bails if the initial scale is exactly 1, whereas we can really avoid text
autosizing in the case where the initial scale is at least 1; handle this by making idempotentTextSize return
immediately with the specified size, in the case where the scale is at least 1.
Lastly, remove the null check for element by making this method take an Element&, and only call this from
adjustRenderStyle if the element is nonnull (which matches adjustRenderStyleForSiteSpecificQuirks).
(WebCore::StyleResolver::adjustRenderStyle):
* css/StyleResolver.h:
* rendering/style/TextSizeAdjustment.cpp:
(WebCore::AutosizeStatus::idempotentTextSize):
2019-06-11 Timothy Hatcher <timothy@apple.com>
Flash when tapping compose button after switching to/from dark mode without restarting Mail.
https://bugs.webkit.org/show_bug.cgi?id=198769
rdar://problem/51370037
Reviewed by Tim Horton.
* WebCore.xcodeproj/project.pbxproj: Make LocalCurrentTraitCollection.h a private header.
2019-06-11 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r246320.
https://bugs.webkit.org/show_bug.cgi?id=198773
New test is failing, and commit is causing another test to
fail. (Requested by ShawnRoberts on #webkit).
Reverted changeset:
"Web Inspector: AXI: Audit: image label test is throwing
spurious errors on elements with existing alt attr, but no
value: <img alt>"
https://bugs.webkit.org/show_bug.cgi?id=194754
https://trac.webkit.org/changeset/246320
2019-06-11 Devin Rousso <drousso@apple.com>
Sort the computed styles list
https://bugs.webkit.org/show_bug.cgi?id=198743
Reviewed by Simon Fraser
* css/CSSComputedStyleDeclaration.cpp:
2019-06-11 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed build warning fixes
Silence -Wunused-parameter warning
* testing/Internals.cpp:
(WebCore::Internals::storeRegistrationsOnDisk):
2019-06-10 Simon Fraser <simon.fraser@apple.com>
Add logging for UI-side compositing hit-testing
https://bugs.webkit.org/show_bug.cgi?id=198739
Reviewed by Antti Koivisto.
Export the TextStream output operator.
* platform/TouchAction.h:
2019-06-11 Greg Doolittle <gr3g@apple.com>
Web Inspector: AXI: Audit: image label test is throwing spurious errors on elements with existing alt attr, but no value: <img alt>
https://bugs.webkit.org/show_bug.cgi?id=194754
<rdar://problem/48144534>
Reviewed by Chris Fleizach.
Tests: accessibility/img-alt-attribute-empty-string.html
accessibility/img-alt-attribute-no-value.html
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::computedRoleString const):
2019-06-11 Sihui Liu <sihui_liu@apple.com>
Add a quirk for washingtonpost.com and nytimes.com
https://bugs.webkit.org/show_bug.cgi?id=198678
Reviewed by Geoffrey Garen.
Covered by manual test.
* page/Quirks.cpp:
(WebCore::Quirks::hasWebSQLSupportQuirk const):
2019-06-11 Devin Rousso <drousso@apple.com>
Include `touch-action` in the computed styles list
https://bugs.webkit.org/show_bug.cgi?id=198742
Reviewed by Antoine Quint.
* css/CSSComputedStyleDeclaration.cpp:
2019-06-11 Michael Catanzaro <mcatanzaro@igalia.com>
tu-berlin university email web interface (Outlook Web App) goes directly to the light version instead of the normal web app
https://bugs.webkit.org/show_bug.cgi?id=198749
Reviewed by Carlos Garcia Campos.
Add user agent quirk for exchange.tu-berlin.de, which has lost the right to receive an
accurate user agent from WebKit.
* platform/UserAgentQuirks.cpp:
(WebCore::urlRequiresMacintoshPlatform):
2019-06-11 Youenn Fablet <youenn@apple.com>
MediaStreamAudioSourceNode::setFormat should check for m_sourceSampleRate equality
https://bugs.webkit.org/show_bug.cgi?id=198740
<rdar://problem/47088939>
Reviewed by Eric Carlson.
Covered by tests that are now passing.
* Modules/webaudio/MediaStreamAudioSourceNode.cpp:
(WebCore::MediaStreamAudioSourceNode::setFormat):
2019-06-11 Ludovico de Nittis <ludovico.denittis@collabora.com>
[GTK] Replace gdk_screen_get_monitor_geometry and gdk_screen_get_monitor_workarea
https://bugs.webkit.org/show_bug.cgi?id=198750
Reviewed by Carlos Garcia Campos.
Since GTK 3.22 gdk_screen_get_monitor_geometry and
gdk_screen_get_monitor_workarea has been deprecated.
No behavior change.
* platform/gtk/PlatformScreenGtk.cpp:
(WebCore::screenRect):
(WebCore::screenAvailableRect):
2019-06-11 Fujii Hironori <Hironori.Fujii@sony.com>
[cairo][SVG] Putting multiple path elements in clippath causes rendering artifacts
https://bugs.webkit.org/show_bug.cgi?id=198701
PlatformContextCairo::pushImageMask blits wrong position of the
surface to the background of masking objects. And, I don't know
the reason why this blitting is needed. Removed the blitting.
Reviewed by Carlos Garcia Campos.
Tests: svg/clip-path/clip-opacity.html
svg/clip-path/svg-in-html.html
* platform/graphics/cairo/PlatformContextCairo.cpp:
(WebCore::PlatformContextCairo::pushImageMask): Don't blit the
surface to the background.
2019-06-10 Fujii Hironori <Hironori.Fujii@sony.com>
[WinCairo][MediaFoundation] Remove the unused video window
https://bugs.webkit.org/show_bug.cgi?id=198523
Reviewed by Don Olmstead.
Remove the video window which had been unused since Bug 150941.
No behavior change.
* platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
(WebCore::MediaPlayerPrivateMediaFoundation::MediaPlayerPrivateMediaFoundation):
(WebCore::MediaPlayerPrivateMediaFoundation::~MediaPlayerPrivateMediaFoundation):
(WebCore::MediaPlayerPrivateMediaFoundation::setSize):
(WebCore::MediaPlayerPrivateMediaFoundation::paint):
(WebCore::MediaPlayerPrivateMediaFoundation::hostWindow):
(WebCore::MediaPlayerPrivateMediaFoundation::createOutputNode):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::setVideoWindow):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::setDestinationRect):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::createVideoSamples):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::presentSample):
(WebCore::MediaPlayerPrivateMediaFoundation::VideoViewWndProc): Deleted.
(WebCore::MediaPlayerPrivateMediaFoundation::registerVideoWindowClass): Deleted.
(WebCore::MediaPlayerPrivateMediaFoundation::createVideoWindow): Deleted.
(WebCore::MediaPlayerPrivateMediaFoundation::destroyVideoWindow): Deleted.
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::presentSwapChain): Deleted.
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::updateDestRect): Deleted.
* platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:
2019-06-10 Simon Fraser <simon.fraser@apple.com>
Add visualization of touch action regions
https://bugs.webkit.org/show_bug.cgi?id=198718
Reviewed by Antoine Quint.
Add a way to show which elements of the page have touch-action set on them by
painting an overlay with small text that shows the type of action(s).
The event regions are painted into GraphicsLayers at paint time in
RenderLayerBacking by making a pattern image and filling the region rects
with the pattern.
* page/DebugPageOverlays.cpp:
(WebCore::touchEventRegionColors):
* rendering/EventRegion.cpp:
(WebCore::EventRegion::regionForTouchAction const):
* rendering/EventRegion.h:
(WebCore::EventRegion::region const):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateEventRegion):
(WebCore::patternForTouchAction):
(WebCore::RenderLayerBacking::paintContents):
2019-06-10 Basuke Suzuki <Basuke.Suzuki@sony.com>
Web Inspector: DNS names in SymmaryInfo was wrong.
https://bugs.webkit.org/show_bug.cgi?id=198732
Reviewed by Devin Rousso.
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::buildObjectForResourceResponse):
2019-06-10 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] 2.25.1 does not build on 32-bit ARM due to bit-packing assertion, requires -DENABLE_DARK_MODE_CSS=OFF
https://bugs.webkit.org/show_bug.cgi?id=198274
Reviewed by Timothy Hatcher.
Rather than reorder everything in StyleRareInheritedData, let's slightly increase the size
of GreaterThanOrSameSizeAsStyleRareInheritedData to allow the static assert to pass.
At the same time, remove an obsolote iOS-specific member that is probably no longer needed.
* rendering/style/StyleRareInheritedData.cpp:
2019-06-10 Sam Weinig <weinig@apple.com>
Remove Dashboard support
https://bugs.webkit.org/show_bug.cgi?id=198615
Reviewed by Ryosuke Niwa.
* Configurations/FeatureDefines.xcconfig:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSCalculationValue.cpp:
(WebCore::hasDoubleValue):
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
* css/CSSPrimitiveValue.cpp:
(WebCore::isValidCSSUnitTypeForDoubleConversion):
(WebCore::isStringType):
(WebCore::CSSPrimitiveValue::cleanup):
(WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText const):
(WebCore::CSSPrimitiveValue::equals const):
* css/CSSPrimitiveValue.h:
* css/CSSProperties.json:
* css/CSSValueKeywords.in:
* css/DashboardRegion.h: Removed.
* css/StyleBuilderCustom.h:
(WebCore::convertToIntLength): Deleted.
(WebCore::StyleBuilderCustom::applyValueWebkitDashboardRegion): Deleted.
* css/StyleResolver.cpp:
* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::consumeWebkitDashboardRegion): Deleted.
* dom/DataTransfer.cpp:
(WebCore::DataTransfer::createForUpdatingDropTarget):
* dom/Document.cpp:
(WebCore::Document::invalidateRenderingDependentRegions):
(WebCore::Document::annotatedRegions const): Deleted.
(WebCore::Document::setAnnotatedRegions): Deleted.
(WebCore::Document::updateAnnotatedRegions): Deleted.
(WebCore::Document::invalidateScrollbarDependentRegions): Deleted.
(WebCore::Document::updateZOrderDependentRegions): Deleted.
* dom/Document.h:
(WebCore::Document::setHasAnnotatedRegions): Deleted.
(WebCore::Document::setAnnotatedRegionsDirty): Deleted.
(WebCore::Document::annotatedRegionsDirty const): Deleted.
(WebCore::Document::hasAnnotatedRegions const): Deleted.
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::createContext2d):
* html/HTMLEmbedElement.cpp:
(WebCore::HTMLEmbedElement::rendererIsNeeded):
* html/HTMLImageLoader.cpp:
(WebCore::HTMLImageLoader::sourceURI const):
* html/canvas/CanvasGradient.cpp:
(WebCore::CanvasGradient::addColorStop):
* html/canvas/CanvasGradient.h:
(WebCore::CanvasGradient::setDashboardCompatibilityMode): Deleted.
(): Deleted.
* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::create):
(WebCore::CanvasRenderingContext2D::CanvasRenderingContext2D):
* html/canvas/CanvasRenderingContext2D.h:
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::CanvasRenderingContext2DBase):
(WebCore::CanvasRenderingContext2DBase::fill):
(WebCore::CanvasRenderingContext2DBase::stroke):
(WebCore::CanvasRenderingContext2DBase::clip):
(WebCore::CanvasRenderingContext2DBase::createLinearGradient):
(WebCore::CanvasRenderingContext2DBase::createRadialGradient):
(WebCore::CanvasRenderingContext2DBase::prepareGradientForDashboard const): Deleted.
(WebCore::CanvasRenderingContext2DBase::clearPathForDashboardBackwardCompatibilityMode): Deleted.
* html/canvas/CanvasRenderingContext2DBase.h:
* html/canvas/OffscreenCanvasRenderingContext2D.cpp:
(WebCore::OffscreenCanvasRenderingContext2D::OffscreenCanvasRenderingContext2D):
* html/canvas/PaintRenderingContext2D.cpp:
(WebCore::PaintRenderingContext2D::PaintRenderingContext2D):
* page/Chrome.cpp:
(WebCore::ChromeClient::annotatedRegionsChanged): Deleted.
* page/ChromeClient.h:
* page/FrameView.cpp:
(WebCore::FrameView::didLayout):
(WebCore::FrameView::didPaintContents):
* page/Settings.yaml:
* page/mac/EventHandlerMac.mm:
(WebCore::EventHandler::needsKeyboardEventDisambiguationQuirks const):
* rendering/RenderInline.cpp:
(WebCore::RenderInline::addAnnotatedRegions): Deleted.
* rendering/RenderInline.h:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollTo):
(WebCore::RenderLayer::setHasHorizontalScrollbar):
(WebCore::RenderLayer::setHasVerticalScrollbar):
(WebCore::RenderLayer::updateScrollbarsAfterLayout):
* rendering/RenderListBox.cpp:
(WebCore::RenderListBox::setHasVerticalScrollbar):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::addAnnotatedRegions): Deleted.
(WebCore::RenderObject::collectAnnotatedRegions): Deleted.
* rendering/RenderObject.h:
(WebCore::AnnotatedRegionValue::operator== const): Deleted.
(WebCore::AnnotatedRegionValue::operator!= const): Deleted.
* rendering/style/RenderStyle.cpp:
(WebCore::rareNonInheritedDataChangeRequiresLayout):
(WebCore::RenderStyle::initialDashboardRegions): Deleted.
(WebCore::RenderStyle::noneDashboardRegions): Deleted.
(WebCore::RenderStyle::setDashboardRegion): Deleted.
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::dashboardRegions const): Deleted.
(WebCore::RenderStyle::setDashboardRegions): Deleted.
* rendering/style/StyleDashboardRegion.h: Removed.
* rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::operator== const):
* rendering/style/StyleRareNonInheritedData.h:
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::send):
(WebCore::XMLHttpRequest::setRequestHeader):
(WebCore::XMLHttpRequest::usesDashboardBackwardCompatibilityMode const): Deleted.
* xml/XMLHttpRequest.h:
2019-06-10 Antti Koivisto <antti@apple.com>
Event region should be set on scrolledContentsLayer if it exists
https://bugs.webkit.org/show_bug.cgi?id=198717
<rdar://problem/51572169>
Reviewed by Simon Fraser.
Test: pointerevents/ios/touch-action-region-overflow.html
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateConfiguration):
Move to updateBackingAndHierarchy.
(WebCore::RenderLayerBacking::updateEventRegion):
- Set event region on scrolledContentsLayer if it exists
- Translate away the scroll offset
- Get the offset from renderer from the GraphicsLayer so scrolling and non-scrolling case can be handled uniformly.
* rendering/RenderLayerBacking.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateBackingAndHierarchy):
Invoke updateEventRegion after geometry update so offsets are already available on GraphicsLayer.
2019-06-10 Daniel Bates <dabates@apple.com>
[CSP] Blob URLs should inherit their CSP policy
https://bugs.webkit.org/show_bug.cgi?id=198579
<rdar://problem/51366878>
Reviewed by Brent Fulgham.
As per <https://w3c.github.io/webappsec-csp/#security-inherit-csp> (Editor's Draft, 28 February 2019) blob
URLs should inherit their CSP policy from their parent (if they have one).
Test: http/tests/security/contentSecurityPolicy/navigate-self-to-blob.html
http/tests/security/contentSecurityPolicy/navigate-self-to-data-url.html
* dom/Document.cpp:
(WebCore::Document::shouldInheritContentSecurityPolicyFromOwner const): Return true if the document's URL
is a Blob URL.
(WebCore::Document::initContentSecurityPolicy): Take a pointer to a ContentSecurityPolicy object that
represents the previous document's CSP. We only make us of this if the current URL is a Blob URL or a data
URL. Otherwise, do what we do now and take the policy from the owner frame.
* dom/Document.h:
* loader/DocumentWriter.cpp:
(WebCore::DocumentWriter::begin): Extend the lifetime of the previous document temporarily so that we can
pass its CSP to FrameLoader::didBeginDocument(). We need to do this extension because this function calls
FrameLoader::clear(), which can destroy the previous document and its ContentSecurityPolicy object. This
extension is also no different than if this function was called with a non-null ownerDocument except that
in that case it is the caller that extends the previous document's lifetime. Although it is tempting to
make use of ownerDocument to fix this bug by having the caller of begin() pass the previous document as
the ownerDocument when the new document's url (the one we are begin()ing) is a Blob URL. The ownerDocument
concept would privilege the Blob URL more than necessary; we only need to inherit the CSP policy from the
previous document for a Blob URL, not inherit the cookie URL or strict mixed content checking bit, etc.
We could make ContentSecurityPolicy ref-counted or even steal the ContentSecurityPolicy object from the
previous document. The latter is not of the question as a future enhancement, but the former seemed excessive
as a way to avoid extending the lifetime of the previous document because this would be the *only* call site
that actaully takes out a second ref of a ContentSecurityPolicy object. In general, shared ownership of
a ContentSecurityPolicy object does not make sense.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::didBeginDocument): Pass the specified content security policy through to
Document::initContentSecurityPolicy().
* loader/FrameLoader.h:
2019-06-10 Saam Barati <sbarati@apple.com>
[WHLSL] Auto initialize local variables
https://bugs.webkit.org/show_bug.cgi?id=198426
Reviewed by Myles Maxfield.
This patch implements zero-filling for local variables in two parts:
1. We add a new pass, autoInitializeVariables, which makes any variable declaration
without an initializer call the default constructor for the variable's type.
Since we auto generate the default constructor, it's a native function whose
implementation we control.
2. Each native constructor is implemented as a memset(&value, sizeof(value), 0).
This memset is an inlined loop in each constructor. The reason this turns
everything into zero is that for every primitive type, the "zero" value is
represented as all zeroes in memory: float, int, pointers, etc.
Since our ability to test some of this is limited, I opened a follow-up bug to
test this more:
https://bugs.webkit.org/show_bug.cgi?id=198413
Tests: webgpu/whlsl-zero-initialize-values-2.html
webgpu/whlsl-zero-initialize-values.html
* Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
(WebCore::WHLSL::AST::VariableDeclaration::setInitializer):
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeFunction):
* Modules/webgpu/WHLSL/WHLSLASTDumper.h:
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.cpp: Added.
(WebCore::WHLSL::AutoInitialize::AutoInitialize):
(WebCore::WHLSL::AutoInitialize::visit):
(WebCore::WHLSL::autoInitializeVariables):
* Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.h: Added.
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::checkOperatorOverload):
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:
(WebCore::WHLSL::inferTypesForCallImpl):
(WebCore::WHLSL::inferTypesForCall):
* Modules/webgpu/WHLSL/WHLSLInferTypes.h:
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
* Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.cpp:
(WebCore::WHLSL::resolveFunctionOverloadImpl):
(WebCore::WHLSL::resolveFunctionOverload):
* Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.h:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2019-06-10 Timothy Hatcher <timothy@apple.com>
Integrate dark mode support for iOS.
https://bugs.webkit.org/show_bug.cgi?id=198687
rdar://problem/51545643
Reviewed by Tim Horton.
Tests: css-dark-mode
* Configurations/FeatureDefines.xcconfig:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/cocoa/FontCascadeCocoa.mm:
(WebCore::showLetterpressedGlyphsWithAdvances):
* platform/ios/LocalCurrentTraitCollection.h: Added.
* platform/ios/LocalCurrentTraitCollection.mm: Added.
* platform/ios/PasteboardIOS.mm:
* rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::systemColor const):
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::systemColor const):
2019-06-10 Ali Juma <ajuma@chromium.org>
REGRESSION (r245396): Page load time performance regression
https://bugs.webkit.org/show_bug.cgi?id=198382
Reviewed by Per Arne Vollan.
Use a delay of 2000ms instead of 500ms when scheduling rendering updates
for IntersectionObserver targets added during page load. This is a
speculative fix for a page load time regression caused by r245396 and
still not fixed after r245958.
* dom/Document.cpp:
(WebCore::Document::scheduleTimedRenderingUpdate):
2019-06-10 Sihui Liu <sihui_liu@apple.com>
[WKHTTPCookieStore getAllCookies:] may return duplicate cookies
https://bugs.webkit.org/show_bug.cgi?id=198635
<rdar://problem/46010232>
Reviewed by Ryosuke Niwa.
Test: WebKit.WKHTTPCookieStoreWithoutProcessPoolDuplicates
* platform/Cookie.h:
(WebCore::Cookie::isKeyEqual const):
(WTF::HashTraits<WebCore::Cookie>::isEmptyValue):
2019-06-09 Rob Buis <rbuis@igalia.com>
Add wildcard to Access-Control-Allow-Methods and Access-Control-Allow-Headers
https://bugs.webkit.org/show_bug.cgi?id=165508
Reviewed by Frédéric Wang.
According to the spec [1] step 6.5, a wildcard for method
and request's credentials mode should be taken into account, so
add this to the check. Same for Access-Control-Allow-Headers (step 6.7).
[1] https://fetch.spec.whatwg.org/#cors-preflight-fetch
Tests: web-platform-tests/fetch/api/cors/cors-preflight-star.any.html
web-platform-tests/fetch/api/cors/cors-preflight-star.any.worker.html
* loader/CrossOriginAccessControl.cpp:
(WebCore::validatePreflightResponse):
* loader/CrossOriginPreflightResultCache.cpp:
(WebCore::CrossOriginPreflightResultCacheItem::allowsCrossOriginMethod const):
(WebCore::CrossOriginPreflightResultCacheItem::allowsCrossOriginHeaders const):
(WebCore::CrossOriginPreflightResultCacheItem::allowsRequest const):
* loader/CrossOriginPreflightResultCache.h:
2019-06-08 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Introduce Baseline to LineBox
https://bugs.webkit.org/show_bug.cgi?id=198686
<rdar://problem/51545175>
Reviewed by Antti Koivisto.
Make baselines alignment explicit in Line.
This is in preparation for adding non-baseline vertical alignment support.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
(WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
(WebCore::Layout::Line::halfLeadingMetrics):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Content::baseline const):
(WebCore::Layout::Line::Content::setBaseline):
(WebCore::Layout::Line::logicalHeight const):
(WebCore::Layout::Line::baselineAlignedContentHeight const):
(WebCore::Layout::Line::baselineOffset const):
* layout/inlineformatting/InlineLineBox.h:
(WebCore::Layout::LineBox::baseline const):
(WebCore::Layout::LineBox::LineBox):
2019-06-07 Said Abou-Hallawa <sabouhallawa@apple.com>
REGRESSION (r244182) [WK1]: Page updates should always scheduleCompositingLayerFlush() immediately
https://bugs.webkit.org/show_bug.cgi?id=198664
Reviewed by Simon Fraser.
Because WK1 is a single process, scheduleCompositingLayerFlush() has to
be called immediately when layers' update is needed. Otherwise no content
will be drawn for the current frame. Doing this will get smooth scrolling
back to WK1.
RenderingUpdateScheduler now has three different scheduling methods:
1. scheduleTimedRenderingUpdate(): This is a two-steps scheduling method.
DisplayRefreshMonitor has to fire before scheduleCompositingLayerFlush()
is called. This is used by rAF, WebAnimations and intersection and
resize observers.
2. scheduleImmediateRenderingUpdate(): This is a one-step scheduling method.
layerTreeAsText() calls this method because it has to process the rendering
update within the current frame.
3. scheduleRenderingUpdate(): RenderLayerCompositor::scheduleLayerFlush()
calls this function to decide either immediately flush layers or wait
for the next timed frame. scheduleImmediateRenderingUpdate() will be
called for WK1. scheduleTimedRenderingUpdate() will be called for WK2.
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::scheduleAnimationResolution):
* dom/Document.cpp:
(WebCore::Document::scheduleTimedRenderingUpdate):
(WebCore::Document::scheduleInitialIntersectionObservationUpdate):
(WebCore::Document::updateResizeObservations):
(WebCore::Document::scheduleRenderingUpdate): Deleted.
* dom/Document.h:
* dom/ScriptedAnimationController.cpp:
(WebCore::ScriptedAnimationController::scheduleAnimation):
* page/ChromeClient.h:
* page/PageOverlayController.cpp:
(WebCore::PageOverlayController::didChangeViewExposedRect):
(WebCore::PageOverlayController::notifyFlushRequired):
* page/RenderingUpdateScheduler.cpp:
(WebCore::RenderingUpdateScheduler::scheduleTimedRenderingUpdate):
(WebCore::RenderingUpdateScheduler::displayRefreshFired):
(WebCore::RenderingUpdateScheduler::scheduleImmediateRenderingUpdate):
(WebCore::RenderingUpdateScheduler::scheduleRenderingUpdate):
(WebCore::RenderingUpdateScheduler::scheduleCompositingLayerFlush): Deleted.
* page/RenderingUpdateScheduler.h:
* page/ResizeObserver.cpp:
(WebCore::ResizeObserver::observe):
* page/mac/ServicesOverlayController.mm:
(WebCore::ServicesOverlayController::Highlight::notifyFlushRequired):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::layerTreeAsText):
2019-06-07 Megan Gardner <megan_gardner@apple.com>
Extend quirks to emulate bold/italic/underline in hidden editable areas
https://bugs.webkit.org/show_bug.cgi?id=198681
Reviewed by Wenson Hsieh.
Rename only.
Rename quirks to be more accurate for new extended use.
* page/Quirks.cpp:
(WebCore::shouldEmulateEditingButtonsAndGesturesInHiddenEditableAreasForHost):
(WebCore::Quirks::shouldEmulateEditingButtonsAndGesturesInHiddenEditableAreas const):
(WebCore::shouldEmulateUndoRedoInHiddenEditableAreasForHost): Deleted.
(WebCore::Quirks::shouldEmulateUndoRedoInHiddenEditableAreas const): Deleted.
* page/Quirks.h:
2019-06-07 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r246138.
Broke internal builds
Reverted changeset:
"[WHLSL] Educate the property resolver about IndexExpressions"
https://bugs.webkit.org/show_bug.cgi?id=198399
https://trac.webkit.org/changeset/246138
2019-06-07 Justin Fan <justin_fan@apple.com>
[WebGPU] Remove GPUBuffer.setSubData and implement GPUDevice.createBufferMapped
https://bugs.webkit.org/show_bug.cgi?id=198591
Reviewed by Myles C. Maxfield.
Remove GPUBuffer.setSubData from the WebGPU API.
Add GPUDevice.createBufferMapped to the WebGPU API.
Existing tests have been updated.
* Modules/webgpu/WebGPUBuffer.cpp:
(WebCore::WebGPUBuffer::setSubData): Deleted.
* Modules/webgpu/WebGPUBuffer.h:
* Modules/webgpu/WebGPUBuffer.idl:
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createBufferMapped const):
* Modules/webgpu/WebGPUDevice.h:
* Modules/webgpu/WebGPUDevice.idl:
* platform/graphics/gpu/GPUBuffer.h:
* platform/graphics/gpu/GPUCommandBuffer.h:
* platform/graphics/gpu/GPUDevice.cpp:
(WebCore::GPUDevice::tryCreateBuffer):
* platform/graphics/gpu/GPUDevice.h:
* platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
(WebCore::GPUBuffer::tryCreate):
(WebCore::GPUBuffer::GPUBuffer):
(WebCore::GPUBuffer::state const):
(WebCore::GPUBuffer::mapOnCreation):
(WebCore::GPUBuffer::commandBufferCompleted):
(WebCore::GPUBuffer::copyStagingBufferToGPU):
Required to unmap GPUBuffers created with GPU-private storage.
(WebCore::GPUBuffer::unmap):
(WebCore::GPUBuffer::setSubData): Deleted.
(WebCore::GPUBuffer::reuseSubDataBuffer): Deleted.
2019-06-07 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, fix non-iOS build after r246205
https://bugs.webkit.org/show_bug.cgi?id=198657
<rdar://problem/51345064>
* page/Quirks.cpp:
* page/Quirks.h:
2019-06-07 Youenn Fablet <youenn@apple.com>
mediaDevices.enumerateDevices() doesn't list the system default audio devices with deviceId as "default"
https://bugs.webkit.org/show_bug.cgi?id=198577
<rdar://problem/51454067>
Reviewed by Eric Carlson.
Make the system default microphone/camera be the first in the list.
This ensures that getUserMedia without constraints will pick these devices.
This also ensures enumerateDevices will show these default devices as first in the list.
Make sure that a default device change will refresh the list.
For CoreAudioCaptureSource, we always add the default system input device in the list of capture devices.
Covered by manual testing.
* platform/mediastream/mac/AVCaptureDeviceManager.h:
* platform/mediastream/mac/AVCaptureDeviceManager.mm:
(WebCore::toCaptureDevice):
(WebCore::AVCaptureDeviceManager::isMatchingExistingCaptureDevice):
(WebCore::AVCaptureDeviceManager::refreshCaptureDevices):
* platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:
(WebCore::getDefaultDeviceID):
(WebCore::CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices):
2019-06-07 Youenn Fablet <youenn@apple.com>
A MediaStreamTrack cannot modify whether being a capture track or not
https://bugs.webkit.org/show_bug.cgi?id=198669
Reviewed by Eric Carlson.
Add a boolean in MediaStreamTrack to store whether a track is a capture one or not.
This removes the need to always go through the private and its source.
As a track might change of source (for non capture track cases), this
also removes the possibility for a track to be capture and then no
longer capture.
No change of behavior.
See also rdar://problem/49444622.
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::MediaStreamTrack):
* Modules/mediastream/MediaStreamTrack.h:
(WebCore::MediaStreamTrack::isCaptureTrack const):
2019-06-07 Youenn Fablet <youenn@apple.com>
Add a RELEASE_ASSERT that removeAudioProducer should always be done in the main thread
https://bugs.webkit.org/show_bug.cgi?id=198668
Reviewed by Eric Carlson.
See rdar://problem/49444622 for background information.
No change of behavior.
* dom/Document.cpp:
(WebCore::Document::removeAudioProducer):
2019-06-07 Zalan Bujtas <zalan@apple.com>
Images are not resizing correctly when dragged to a message in 1/3 view
https://bugs.webkit.org/show_bug.cgi?id=198623
<rdar://problem/51185518>
Reviewed by Wenson Hsieh.
Mail's max-width: 100%; default style is in conflict with the preferred presentation size. This patch preserves the existing behaviour for Mail by
not setting the height (and rely on the width + aspect ratio).
* editing/WebContentReader.h:
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::createFragmentForImageAttachment):
(WebCore::WebContentReader::readImage):
(WebCore::attachmentForFilePath):
(WebCore::attachmentForData):
(WebCore::WebContentReader::readFilePath):
(WebCore::WebContentReader::readDataBuffer):
* editing/gtk/EditorGtk.cpp:
(WebCore::createFragmentFromPasteboardData):
* editing/markup.cpp:
(WebCore::createFragmentForImageAndURL):
* editing/markup.h:
* platform/Pasteboard.h:
(WebCore::PasteboardWebContentReader::readFilePath):
(WebCore::PasteboardWebContentReader::readImage):
(WebCore::PasteboardWebContentReader::readDataBuffer):
* platform/PasteboardItemInfo.h:
(WebCore::PasteboardItemInfo::encode const):
(WebCore::PasteboardItemInfo::decode):
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::readPasteboardWebContentDataForType):
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::readRespectingUTIFidelities):
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::informationForItemAtIndex):
2019-06-07 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Line should skip all vertical adjustment when running preferred width computation
https://bugs.webkit.org/show_bug.cgi?id=198642
<rdar://problem/51511043>
Reviewed by Antti Koivisto.
While layout triggers both horizontal and vertical aligment, preferred width computation should only do (logical)horizontal.
Make all vertical alignment computation optional in Line.
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::UncommittedContent::add):
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
(WebCore::Layout::InlineFormattingContext::LineLayout::computedIntrinsicWidth const):
(WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const):
(WebCore::Layout::inlineItemHeight): Deleted.
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Content::Run::Run):
(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::removeTrailingTrimmableContent):
(WebCore::Layout::Line::moveLogicalLeft):
(WebCore::Layout::Line::trailingTrimmableWidth const):
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendInlineContainerStart):
(WebCore::Layout::Line::appendInlineContainerEnd):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendReplacedInlineBox):
(WebCore::Layout::Line::appendHardLineBreak):
(WebCore::Layout::Line::inlineItemHeight const):
* layout/inlineformatting/InlineLine.h:
2019-06-07 Antoine Quint <graouts@apple.com>
Limit simulated mouse events on Google Maps to entering Street View
https://bugs.webkit.org/show_bug.cgi?id=198657
<rdar://problem/51345064>
Reviewed by Brent Fulgham.
* page/Quirks.cpp:
(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
(WebCore::Quirks::shouldDispatchSimulatedMouseEventsOnTarget const):
* page/Quirks.h:
2019-06-07 Joonghun Park <jh718.park@samsung.com>
Unreviewed. Use const TabSize& instead of TabSize to avoid unnecessary copy.
Using const reference is a c++ feature to extend the life time of
a temporary object to the life time of the const reference which refers to it.
No behavioral changes.
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::setTabSize):
2019-06-07 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] GLContextEGL.h must be built with @no-unify
https://bugs.webkit.org/show_bug.cgi?id=198659
Unreviewed ARM build fix.
* SourcesGTK.txt:
2019-06-07 Antti Koivisto <antti@apple.com>
position:fixed inside overflow positioning nodes is jumpy
https://bugs.webkit.org/show_bug.cgi?id=198647
<rdar://problem/51514437>
Reviewed by Frédéric Wang.
Tests: scrollingcoordinator/ios/fixed-overflow-no-stacking-context-1.html
scrollingcoordinator/ios/fixed-overflow-no-stacking-context-2.html
scrollingcoordinator/ios/fixed-overflow-stacking-context-stationary.html
* page/scrolling/ScrollingTreeScrollingNode.h:
* page/scrolling/cocoa/ScrollingTreeFixedNode.mm:
(WebCore::ScrollingTreeFixedNode::applyLayerPositions):
Take deltas from positioning nodes into account.
* page/scrolling/cocoa/ScrollingTreePositionedNode.h:
* page/scrolling/cocoa/ScrollingTreePositionedNode.mm:
(WebCore::ScrollingTreePositionedNode::scrollDeltaSinceLastCommit const):
Rename since 'scrollOffset' has other meaning.
(WebCore::ScrollingTreePositionedNode::applyLayerPositions):
(WebCore::ScrollingTreePositionedNode::scrollOffsetSinceLastCommit const): Deleted.
* page/scrolling/cocoa/ScrollingTreeStickyNode.mm:
(WebCore::ScrollingTreeStickyNode::applyLayerPositions):
2019-06-07 Enrique Ocaña González <eocanha@igalia.com>
[MSE][GStreamer] Avoid QUOTA_EXCEEDED_ERR when seeking to a buffered range just before the buffered one
https://bugs.webkit.org/show_bug.cgi?id=166620
Reviewed by Xabier Rodriguez-Calvar.
This patch is fixing a seek to unbuffered range just before the buffered one.
For example, supposing a [120, 176) append has filled all the memory and then
a seek to 115.0 is done, a subsequent [115, 120) append would fail without
this fix. EvictCodedFrames() would return without actually evicting anything,
and appendBufferInternal will print "buffer full, failing with
QUOTA_EXCEEDED_ERR error" on GStreamer platforms instead of letting the new
[115, 120) append succeed.
This patch is based on an original patch by iivlev <iivlev@productengine.com>
Test: media/media-source/media-source-append-before-last-range-no-quota-exceeded.html
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::evictCodedFrames):
Removed the "only if there are buffered ranges *containing* the currentTime" condition
to enter into the second part of the eviction algorithm, which removes frames
starting from the duration of the media and going backwards down to currentPosition + 30.
The loop break condition has also been changed to deal with notFound currentTimeRange.
2019-06-07 Philippe Normand <philn@igalia.com>
[GStreamer] AVC1 decoding capabilities probing support
https://bugs.webkit.org/show_bug.cgi?id=198569
Reviewed by Xabier Rodriguez-Calvar.
When capabilities for an avc1 codec are requested, the registry scanner looks
for a compatible decoder for the given H.264 profile and level.
This new approach can be avoided by using the WEBKIT_GST_MAX_AVC1_RESOLUTION
environment variable. If supplied, the decoder capabilities won't be probed and
the codec will be advertised as supported if it complies with the contents of
the environment variable. The resolutions currently handled are specifically:
1080P, 720P and 480P. We don't handle framerate checking yet, so the implied
H.264 levels are assumed to be for 30FPS.
* platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:
(WebCore::GStreamerRegistryScanner::isCodecSupported const):
(WebCore::GStreamerRegistryScanner::areInputCapsAccepted const):
(WebCore::GStreamerRegistryScanner::isAVC1CodecSupported const):
* platform/graphics/gstreamer/GStreamerRegistryScanner.h:
2019-06-07 Joonghun Park <jh718.park@samsung.com>
Implement tab-size with units
https://bugs.webkit.org/show_bug.cgi?id=179022
Reviewed by Simon Fraser.
This change is ported from Blink.
The committed revision is https://src.chromium.org/viewvc/blink?revision=189430&view=revision.
Additionally, this patch lets css "number" value be allowed as tab-size's property value,
not css "integer" value,
according to https://drafts.csswg.org/css-text-3/#tab-size-property.
Tests: css3/tab-size.html
imported/w3c/web-platform-tests/css/css-values/calc-numbers.html
* Headers.cmake:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
* css/CSSProperties.json:
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertTabSize):
* css/parser/CSSPropertyParser.cpp:
(WebCore::consumeTabSize):
* layout/inlineformatting/text/TextUtil.cpp:
(WebCore::Layout::TextUtil::width):
* platform/graphics/FontCascade.h:
(WebCore::FontCascade::tabWidth const):
* platform/graphics/TabSize.h: Added.
(WebCore::TabSize::TabSize):
(WebCore::TabSize::isSpaces const):
(WebCore::TabSize::widthInPixels const):
(WebCore::TabSize::operator bool const):
(WebCore::operator==):
(WebCore::operator!=):
* platform/graphics/TextRun.cpp:
* platform/graphics/TextRun.h:
(WebCore::TextRun::tabSize const):
(WebCore::TextRun::setTabSize):
* rendering/SimpleLineLayoutTextFragmentIterator.cpp:
(WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style):
* rendering/SimpleLineLayoutTextFragmentIterator.h:
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::tabSize const):
(WebCore::RenderStyle::setTabSize):
(WebCore::RenderStyle::initialTabSize):
* rendering/style/StyleRareInheritedData.cpp:
* rendering/style/StyleRareInheritedData.h:
2019-06-07 Philippe Normand <pnormand@igalia.com>
[GStreamer] videorate issues with v4l2src
https://bugs.webkit.org/show_bug.cgi?id=198614
Reviewed by Xabier Rodriguez-Calvar.
Configure videorate to cope with the live stream provided by the
source element. Not doing so might lead to errors in the v4l2
buffer allocator.
* platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:
(WebCore::GStreamerVideoCapturer::createConverter):
2019-06-06 Andy Estes <aestes@apple.com>
process-swap-on-navigation error when loading blocked website on iOS 12.2 only.
https://bugs.webkit.org/show_bug.cgi?id=196930
<rdar://problem/47819301>
Reviewed by Chris Dumez.
When the content filter blocks a navigation, it will continue to load the content filter
error page in the provisional web process. When dispatching didFailProvisionalLoad, we need
to specify WillContinueLoading::Yes so that WebKit presents the error page rather than
switching back to the committed web process.
Testing blocked by <https://webkit.org/b/198626>.
* loader/ContentFilter.cpp:
(WebCore::ContentFilter::willHandleProvisionalLoadFailure):
(WebCore::ContentFilter::handleProvisionalLoadFailure):
* loader/ContentFilter.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::dispatchDidFailProvisionalLoad):
(WebCore::FrameLoader::checkLoadCompleteForThisFrame):
* loader/FrameLoader.h:
2019-06-06 Chris Dumez <cdumez@apple.com>
RELEASE_ASSERT hit in CachedFrame constructor
https://bugs.webkit.org/show_bug.cgi?id=198625
<rdar://problem/49877867>
Reviewed by Geoffrey Garen.
This is a speculative fix, it appears the document is already detached from its
frame by the time we construct a CachedFrame for it when entering PageCache.
No new tests, because we do not know yet how this can be reproduced.
* history/PageCache.cpp:
(WebCore::canCacheFrame):
Make a frame as ineligible for PageCache if:
1. It does not have a document
or
2. Its document is already detached from the frame
(WebCore::PageCache::addIfCacheable):
Destroy the render tree *before* we check if the page can enter page cache, in case
destroying the render tree has any side effects that could make the page ineligible
for Page Cache.
2019-06-06 Devin Rousso <drousso@apple.com>
Web Inspector: Timelines: only complete Composite records if the m_startedComposite (followup to r246142)
https://bugs.webkit.org/show_bug.cgi?id=198639
Reviewed by Matt Baker.
In r246142, an `ASSERT` was removed because it is possible for Web Inspector to be opened in
between `willComposite` and `didComposite`, meaning that previously the `ASSERT` would fire.
In order to properly handle this, we should replace the `ASSERT` with an `if` so that Web
Inspector doesn't even try to complete a `Composite` record if it was opened in that case.
* inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::didComposite):
2019-06-06 Youenn Fablet <youenn@apple.com>
Allow WebKitTestRunner to terminate network process after it finishes service worker file operations
https://bugs.webkit.org/show_bug.cgi?id=198584
Reviewed by Geoffrey Garen.
Add a promise-based internal API to store service worker registrations on disk.
Covered by updated test.
* testing/Internals.cpp:
(WebCore::Internals::storeRegistrationsOnDisk):
* testing/Internals.h:
* testing/Internals.idl:
* workers/service/SWClientConnection.h:
(WebCore::SWClientConnection::storeRegistrationsOnDiskForTesting):
* workers/service/server/RegistrationStore.cpp:
(WebCore::RegistrationStore::startSuspension):
(WebCore::RegistrationStore::closeDatabase):
* workers/service/server/RegistrationStore.h:
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::Connection::storeRegistrationsOnDisk):
* workers/service/server/SWServer.h:
2019-06-06 Brent Fulgham <bfulgham@apple.com>
Avoid generating new XSLT-based document when already changing the document.
https://bugs.webkit.org/show_bug.cgi?id=198525
<rdar://problem/51393787>
Reviewed by Ryosuke Niwa.
We should not allow a pending XSLT transform to change the current document when
that current document is int he process of being replaced.
* dom/Document.cpp:
(WebCore::Document::applyPendingXSLTransformsTimerFired):
2019-06-06 Devin Rousso <drousso@apple.com>
Web Inspector: create CommandLineAPIHost lazily like the other agents
https://bugs.webkit.org/show_bug.cgi?id=196047
<rdar://problem/49087835>
Reviewed by Timothy Hatcher.
No change in functionality.
* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
(WebCore::InspectorController::createLazyAgents):
* inspector/WorkerInspectorController.cpp:
(WebCore::WorkerInspectorController::WorkerInspectorController):
(WebCore::WorkerInspectorController::createLazyAgents):
* inspector/WebInjectedScriptManager.h:
* inspector/WebInjectedScriptManager.cpp:
(WebCore::WebInjectedScriptManager::WebInjectedScriptManager):
(WebCore::WebInjectedScriptManager::connect): Added.
(WebCore::WebInjectedScriptManager::disconnect):
(WebCore::WebInjectedScriptManager::discardInjectedScripts):
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::setInspectedNode):
2019-06-05 Said Abou-Hallawa <sabouhallawa@apple.com>
REGRESSION (r243121): Load event should not be fired while animating the 'externalResourcesRequired' attribute
https://bugs.webkit.org/show_bug.cgi?id=198576
Reviewed by Simon Fraser.
Firing the load event should only happen when dynamic update changes the
attribute 'externalResourcesRequired'. Animating this attribute should
not fire the load event.
When stopping the animations, applyAnimatedPropertyChange() should be
called first then stopAnimation() is called second. The target element
should know that its svgAttributeChanged() is called because of animating
the attribute. So it can differentiate this case from the dynamic update.
Test: svg/animations/animate-externalResourcesRequired-no-load-event.html
* svg/SVGExternalResourcesRequired.cpp:
(WebCore::SVGExternalResourcesRequired::svgAttributeChanged):
* svg/properties/SVGAnimatedPropertyAnimator.h:
2019-06-05 Saam Barati <sbarati@apple.com>
2019-06-06 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Move baseline and line height computation to a dedicated function
https://bugs.webkit.org/show_bug.cgi?id=198611
<rdar://problem/51482708>
Reviewed by Antti Koivisto.
This is in preparation for adding vertical aligment.
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::appendInlineContainerStart):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
* layout/inlineformatting/InlineLine.h:
2019-06-06 Antti Koivisto <antti@apple.com>
Position fixed is buggy with overflow:auto scrolling inside iframes
https://bugs.webkit.org/show_bug.cgi?id=154399
<rdar://problem/24742251>
Reviewed by Frederic Wang and Simon Fraser.
Test: scrollingcoordinator/ios/fixed-frame-overflow-swipe.html
After layer tree commit we were calling mainFrameViewportChangedViaDelegatedScrolling (even if viewport did not change)
and expecting it to apply UI side scrolling deltas. However optimization prevents it from descending into subframes
and we fail to update those properly.
In reality we only need to to apply scrolling tree positiong after commit if there has been delegated scrolling after the last
one. Track this and do full update when needed.
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::applyLayerPositionsAfterCommit):
Add specific function for this. Don't do anything unless needed.
* page/scrolling/ScrollingTree.h:
(WebCore::ScrollingTree::didScrollByDelegatedScrolling):
Track if there has been any delegated scrolling.
* page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::wasScrolledByDelegatedScrolling):
We can now bail out if nothing changes since we no longer rely on this for post-commit updates.
2019-06-06 Zalan Bujtas <zalan@apple.com>
[LFC][IFC] Layout and preferred width computation should both call placeInlineItems().
https://bugs.webkit.org/show_bug.cgi?id=198587
<rdar://problem/51460340>
Reviewed by Antti Koivisto.
This patch enables inline placement logic sharing between layout and preferred width computation.
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::LineInput::LineInput):
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
(WebCore::Layout::InlineFormattingContext::LineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::LineLayout::computedIntrinsicWidth const):
2019-06-05 Takashi Komori <Takashi.Komori@sony.com>
[Curl] Report all request headers to web inspector.
https://bugs.webkit.org/show_bug.cgi?id=191653
Reviewed by Fujii Hironori.
Test: http/tests/inspector/network/resource-request-headers.html
* platform/network/curl/CurlContext.cpp:
(WebCore::CurlHandle::setDebugCallbackFunction):
* platform/network/curl/CurlContext.h:
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::setupTransfer):
(WebCore::CurlRequest::didReceiveDebugInfo):
(WebCore::CurlRequest::updateNetworkLoadMetrics):
(WebCore::CurlRequest::didReceiveDebugInfoCallback):
* platform/network/curl/CurlRequest.h:
2019-06-05 Said Abou-Hallawa <sabouhallawa@apple.com>
[Cocoa] REGRESSION(r244182): Inspector thinks CA commits can be nested
https://bugs.webkit.org/show_bug.cgi?id=198497
Reviewed by Simon Fraser.
WebInspecter should coalesce nested composites as one recorded composite.
This can be done by ensuring that we only process CA preCommit and postCommit
once per nested commits.
* inspector/InspectorController.cpp:
(WebCore::InspectorController::willComposite):
* inspector/InspectorController.h:
Export willComposite(). We want to call willComposite()/ didComposite()
from CA preCommit and postCommit handlers in flushLayers().
* inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::didComposite):
Unrelated change: didComposite() should not assert that we're in the middle
of a composite. Web Inspector may connect in the middle of a composite.
* page/FrameView.cpp:
(WebCore::FrameView::flushCompositingStateIncludingSubframes):
InspectorController::willComposite() will be called form CA preCommit
handler of flushLayers().
2019-06-05 Myles C. Maxfield <mmaxfield@apple.com>
[WHLSL] Educate the property resolver about IndexExpressions
https://bugs.webkit.org/show_bug.cgi?id=198399
Reviewed by Saam Barati.
This is part one of two patches which will allow buffers to work. This patch
adds support in the property resolver for index expressions. Index expressions
get turned into calls to "getter indexers", "setter indexers", or "ander
indexers". They work almost identically to dot expressions, except there is an
extra "index" expression which gets turned into an extra argument to those
functions.
There's actually a bit of a trick here. Let's say we need to run a getter and
a setter separately (e.g. "foo[3]++;"). The index expression can't be duplicated
for both the getter and the setter (e.g. the functions are
int operator[](Foo, uint) and Foo operator[]=(Foo, uint, int), and we aren't
allowed to execute the index expression multiple times. Consider if that "3"
in the example is actually "bar()" with some side effect. So, we have to run
the index expression once at the correct time, and save its result to a temporary
variable, and then pass in the temporary variable into the getter and setter.
So, if the code says "foo[bar()][baz()] = quux();" the following sequence of
functions get run:
- bar()
- operator[](Foo, uint)
- baz()
- quux()
- operator[]=(OtherType, uint, OtherOtherType)
- operator[]=(Foo, uint, OtherType)
The next patch will modify the WebGPU JavaScript implementation to send buffer
lengths to the shader, and for the shader compiler to correctly unpack this
information and place it inside the array references. That should be everything
that's needed to get buffers to work. After that, hooking up compute should be
fairly trivial.
Tests: webgpu/propertyresolver/ander-abstract-lvalue.html
webgpu/propertyresolver/ander-lvalue-3-levels.html
webgpu/propertyresolver/ander-lvalue.html
webgpu/propertyresolver/ander.html
webgpu/propertyresolver/getter.html
webgpu/propertyresolver/indexer-ander-abstract-lvalue.html
webgpu/propertyresolver/indexer-ander-lvalue-3-levels.html
webgpu/propertyresolver/indexer-ander-lvalue.html
webgpu/propertyresolver/indexer-ander.html
webgpu/propertyresolver/indexer-getter.html
webgpu/propertyresolver/indexer-setter-abstract-lvalue-3-levels.html
webgpu/propertyresolver/indexer-setter-abstract-lvalue.html
webgpu/propertyresolver/indexer-setter-lvalue.html
webgpu/propertyresolver/indexer-setter.html
webgpu/propertyresolver/setter-abstract-lvalue-3-levels.html
webgpu/propertyresolver/setter-abstract-lvalue.html
webgpu/propertyresolver/setter-lvalue.html
* Modules/webgpu/WHLSL/AST/WHLSLAddressSpace.h:
(WebCore::WHLSL::AST::toString):
* Modules/webgpu/WHLSL/AST/WHLSLEntryPointType.h:
(WebCore::WHLSL::AST::toString):
* Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
(WebCore::WHLSL::AST::IndexExpression::takeIndex):
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
* Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeFunction):
(WebCore::WHLSL::Metal::convertAddressSpace): Deleted.
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::checkOperatorOverload):
(WebCore::WHLSL::Checker::finishVisiting):
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLInferTypes.h:
* Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::PropertyResolver::visit):
(WebCore::WHLSL::setterCall):
(WebCore::WHLSL::getterCall):
(WebCore::WHLSL::modify):
(WebCore::WHLSL::PropertyResolver::simplifyRightValue):
(WebCore::WHLSL::LeftValueSimplifier::finishVisiting):
(WebCore::WHLSL::LeftValueSimplifier::visit):
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
* Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
(WebCore::WHLSL::synthesizeStructureAccessors):
2019-06-05 Robin Morisset <rmorisset@apple.com>
[WHLSL] Parsing and lexing the standard library is slow
https://bugs.webkit.org/show_bug.cgi?id=192890
<rdar://problem/50746335>
Reviewed by Myles Maxfield.
The main idea is to avoid backtracking by instead peeking at the next token (and occasionally at the one after that).
This implies a few things:
- We can replace the stack of tokens by a trivial ring buffer of size 2 (holding the next token and the one after, or WTF::nullopt if we are at the end of the file).
- We now have "completeFooExpression" functions, to avoid having to reparse the prefix of some expression, if we find half-way through what it is.
I also fixed the following parser bug:
- https://bugs.webkit.org/show_bug.cgi?id=198305 [WHLSL] Multiple variables with initializers in a declaration statement crashes the compiler
which was due to a mistake I made in the grammar
Finally I added two new macros: CONSUME_TYPE and PARSE to eliminate about 500 lines of error propagation boilerplate.
There are still lots of ways of improving the parser and lexer, such as:
- finishing the conversion of tokens in the lexer, not bothering with allocating string views
- make two special tokens Invalid and EOF, to remove the overhead of Optional
- make peekTypes and consumeTypes use templates to avoid constructing a Vector and calling find on it.
- Turn the entire lexer into a proper automata, not going through the same characters again and again (this is certainly the largest win by far)
- Remove the last few pieces of backtracking from the parser.
The current patch is already enough to make parsing the full standard library (something like 85k lines) approximately 260ms.
This is still longer than I would like, but nowhere near the bottleneck any longer because of some other parts of the compiler.
* Modules/webgpu/WHLSL/WHLSLLexer.h:
(WebCore::WHLSL::Lexer::Lexer):
(WebCore::WHLSL::Lexer::consumeToken):
(WebCore::WHLSL::Lexer::peek):
(WebCore::WHLSL::Lexer::peekFurther):
(WebCore::WHLSL::Lexer::state const):
(WebCore::WHLSL::Lexer::setState):
(WebCore::WHLSL::Lexer::unconsumeToken): Deleted.
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parse):
(WebCore::WHLSL::Parser::peek):
(WebCore::WHLSL::Parser::peekTypes):
(WebCore::WHLSL::Parser::tryType):
(WebCore::WHLSL::Parser::tryTypes):
(WebCore::WHLSL::Parser::consumeTypes):
(WebCore::WHLSL::Parser::parseConstantExpression):
(WebCore::WHLSL::Parser::parseTypeArgument):
(WebCore::WHLSL::Parser::parseTypeArguments):
(WebCore::WHLSL::Parser::parseTypeSuffixAbbreviated):
(WebCore::WHLSL::Parser::parseTypeSuffixNonAbbreviated):
(WebCore::WHLSL::Parser::parseType):
(WebCore::WHLSL::Parser::parseTypeDefinition):
(WebCore::WHLSL::Parser::parseResourceSemantic):
(WebCore::WHLSL::Parser::parseSpecializationConstantSemantic):
(WebCore::WHLSL::Parser::parseStageInOutSemantic):
(WebCore::WHLSL::Parser::parseSemantic):
(WebCore::WHLSL::Parser::parseQualifiers):
(WebCore::WHLSL::Parser::parseStructureElement):
(WebCore::WHLSL::Parser::parseStructureDefinition):
(WebCore::WHLSL::Parser::parseEnumerationDefinition):
(WebCore::WHLSL::Parser::parseEnumerationMember):
(WebCore::WHLSL::Parser::parseNativeTypeDeclaration):
(WebCore::WHLSL::Parser::parseNumThreadsFunctionAttribute):
(WebCore::WHLSL::Parser::parseAttributeBlock):
(WebCore::WHLSL::Parser::parseParameter):
(WebCore::WHLSL::Parser::parseParameters):
(WebCore::WHLSL::Parser::parseFunctionDefinition):
(WebCore::WHLSL::Parser::parseComputeFunctionDeclaration):
(WebCore::WHLSL::Parser::parseVertexFragmentFunctionDeclaration):
(WebCore::WHLSL::Parser::parseRegularFunctionDeclaration):
(WebCore::WHLSL::Parser::parseOperatorFunctionDeclaration):
(WebCore::WHLSL::Parser::parseFunctionDeclaration):
(WebCore::WHLSL::Parser::parseNativeFunctionDeclaration):
(WebCore::WHLSL::Parser::parseBlock):
(WebCore::WHLSL::Parser::parseBlockBody):
(WebCore::WHLSL::Parser::parseIfStatement):
(WebCore::WHLSL::Parser::parseSwitchStatement):
(WebCore::WHLSL::Parser::parseSwitchCase):
(WebCore::WHLSL::Parser::parseForLoop):
(WebCore::WHLSL::Parser::parseWhileLoop):
(WebCore::WHLSL::Parser::parseDoWhileLoop):
(WebCore::WHLSL::Parser::parseVariableDeclaration):
(WebCore::WHLSL::Parser::parseVariableDeclarations):
(WebCore::WHLSL::Parser::parseStatement):
(WebCore::WHLSL::Parser::parseEffectfulExpression):
(WebCore::WHLSL::Parser::parseEffectfulAssignment):
(WebCore::WHLSL::Parser::parseExpression):
(WebCore::WHLSL::Parser::parseTernaryConditional): Deleted.
(WebCore::WHLSL::Parser::completeTernaryConditional):
(WebCore::WHLSL::Parser::parseAssignment): Deleted.
(WebCore::WHLSL::Parser::completeAssignment):
(WebCore::WHLSL::Parser::parsePossibleTernaryConditional):
(WebCore::WHLSL::Parser::parsePossibleLogicalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleLogicalBinaryOperation):
(WebCore::WHLSL::Parser::parsePossibleRelationalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleRelationalBinaryOperation):
(WebCore::WHLSL::Parser::parsePossibleShift):
(WebCore::WHLSL::Parser::completePossibleShift):
(WebCore::WHLSL::Parser::parsePossibleAdd):
(WebCore::WHLSL::Parser::completePossibleAdd):
(WebCore::WHLSL::Parser::parsePossibleMultiply):
(WebCore::WHLSL::Parser::completePossibleMultiply):
(WebCore::WHLSL::Parser::parsePossiblePrefix):
(WebCore::WHLSL::Parser::parsePossibleSuffix):
(WebCore::WHLSL::Parser::parseCallExpression):
(WebCore::WHLSL::Parser::parseTerm):
(WebCore::WHLSL::Parser::parseAddressSpaceType): Deleted.
(WebCore::WHLSL::Parser::parseNonAddressSpaceType): Deleted.
(WebCore::WHLSL::Parser::parseEntryPointFunctionDeclaration): Deleted.
(WebCore::WHLSL::Parser::parseEffectfulPrefix): Deleted.
(WebCore::WHLSL::Parser::parseEffectfulSuffix): Deleted.
* Modules/webgpu/WHLSL/WHLSLParser.h:
(WebCore::WHLSL::Parser::Error::dump const):
2019-06-05 Alex Christensen <achristensen@webkit.org>
Revert part of r246126
https://bugs.webkit.org/show_bug.cgi?id=197132
* platform/ios/WebItemProviderPasteboard.h:
This change broke an internal build, so I'm reverting it.
2019-06-05 Daniel Bates <dabates@apple.com>
[CSP] Data URLs should inherit their CSP policy
https://bugs.webkit.org/show_bug.cgi?id=198572
<rdar://problem/50660927>
Reviewed by Brent Fulgham.
As per <https://w3c.github.io/webappsec-csp/#security-inherit-csp> (Editor's Draft, 28 February 2019) data
URLs should inherit their CSP policy from their parent (if they have one).
Test: http/tests/security/contentSecurityPolicy/subframe-with-data-url-inheritance.html
* dom/Document.cpp:
(WebCore::Document::shouldInheritContentSecurityPolicyFromOwner const):
2019-06-05 Saam Barati <sbarati@apple.com>
Unreviewed. Follow up fix after r246115.
I changed the code to assert that we don't have duplicate native
functions. It turns out we do. I will fix that here, then add
back the assert. https://bugs.webkit.org/show_bug.cgi?id=198580
* Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
(WebCore::WHLSL::checkDuplicateFunctions):
2019-06-05 Alex Christensen <achristensen@webkit.org>
Progress towards resurrecting Mac CMake build
https://bugs.webkit.org/show_bug.cgi?id=197132
Reviewed by Don Olmstead.
* CMakeLists.txt:
* PlatformMac.cmake:
* platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:
== Rolled over to ChangeLog-2019-06-05 ==