blob: 0c17bcfb8629961556c24d37d529d5dfb81009e9 [file] [log] [blame]
2018-10-15 Keith Miller <keith_miller@apple.com>
Support arm64 CPUs with a 32-bit address space
https://bugs.webkit.org/show_bug.cgi?id=190273
Reviewed by Michael Saboff.
Fix missing namespace annotation.
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateAddStyleRelation):
2018-10-15 Justin Fan <justin_fan@apple.com>
Add WebGPU 2018 feature flag and experimental feature flag
https://bugs.webkit.org/show_bug.cgi?id=190509
Reviewed by Dean Jackson.
Re-add ENABLE_WEBGPU, an experimental feature flag, and a RuntimeEnabledFeature
for the 2018 WebGPU prototype.
* Configurations/FeatureDefines.xcconfig:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setWebGPUEnabled):
(WebCore::RuntimeEnabledFeatures::webGPUEnabled const):
2018-10-15 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r237162.
https://bugs.webkit.org/show_bug.cgi?id=190612
Broke Windows build (Requested by dolmstead on #webkit).
Reverted changeset:
"Add stub implementation for accessibility objects"
https://bugs.webkit.org/show_bug.cgi?id=190608
https://trac.webkit.org/changeset/237162
2018-10-15 Said Abou-Hallawa <sabouhallawa@apple.com>
[CG] Adopt CG SPI for non-even cornered rounded rects
https://bugs.webkit.org/show_bug.cgi?id=190155
Reviewed by Simon Fraser.
Instead of creating bezier curves for the non-even corners of the rounded
rects, we should use the optimized SPI provided by CG.
* platform/graphics/cg/PathCG.cpp:
(WebCore::Path::platformAddPathForRoundedRect):
2018-10-15 Don Olmstead <don.olmstead@sony.com>
Add stub implementation for accessibility objects
https://bugs.webkit.org/show_bug.cgi?id=190608
Reviewed by Michael Catanzaro.
No new tests. No change in behavior.
Add default implementation to associated cpp file. Removes the WPE
specific stubs.
* SourcesWPE.txt:
* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::detachWrapper):
(WebCore::AXObjectCache::attachWrapper):
(WebCore::AXObjectCache::postPlatformNotification):
(WebCore::AXObjectCache::nodeTextChangePlatformNotification):
(WebCore::AXObjectCache::frameLoadingEventPlatformNotification):
(WebCore::AXObjectCache::platformHandleFocusedUIElementChanged):
(WebCore::AXObjectCache::handleScrolledToAnchor):
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::accessibilityIgnoreAttachment const):
(WebCore::AccessibilityObject::accessibilityPlatformIncludesObject const):
* accessibility/AccessibilityObject.h:
* accessibility/wpe/AXObjectCacheWPE.cpp: Removed.
* accessibility/wpe/AccessibilityObjectWPE.cpp: Removed.
2018-10-15 Alex Christensen <achristensen@webkit.org>
Modernize BackForwardClient.h
https://bugs.webkit.org/show_bug.cgi?id=190610
Reviewed by Chris Dumez.
* editing/markup.cpp:
(WebCore::createPageForSanitizingWebContent):
* history/BackForwardClient.h:
* history/BackForwardController.h:
(WebCore::BackForwardController::client):
(WebCore::BackForwardController::client const):
* inspector/InspectorOverlay.cpp:
(WebCore::InspectorOverlay::overlayPage):
* loader/EmptyClients.cpp:
(WebCore::pageConfigurationWithEmptyClients):
(WebCore::createEmptyFrameNetworkingContext): Deleted.
(WebCore::fillWithEmptyClients): Deleted.
(WebCore::createEmptyEditorClient): Deleted.
* loader/EmptyClients.h:
* page/Page.cpp:
(WebCore::Page::Page):
* page/PageConfiguration.cpp:
(WebCore::PageConfiguration::PageConfiguration):
* page/PageConfiguration.h:
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::dataChanged):
2018-10-15 Timothy Hatcher <timothy@apple.com>
Add support for prefers-color-scheme media query
https://bugs.webkit.org/show_bug.cgi?id=190499
rdar://problem/45212025
Reviewed by Dean Jackson.
Test: css-dark-mode/prefers-color-scheme.html
* Configurations/FeatureDefines.xcconfig: Added ENABLE_DARK_MODE_CSS.
* css/CSSValueKeywords.in: Added light and dark.
* css/MediaFeatureNames.h: Added prefers-color-scheme.
* css/MediaQueryEvaluator.cpp:
(WebCore::prefersColorSchemeEvaluate): Added.
* css/MediaQueryExpression.cpp:
(WebCore::featureWithValidIdent): Added prefers-color-scheme.
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setDarkModeCSSEnabled): Added.
(WebCore::RuntimeEnabledFeatures::darkModeCSSEnabled const): Added.
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::resetToConsistentState): Reset setUseDarkAppearance.
(WebCore::InternalSettings::setUseDarkAppearance): Added.
* testing/InternalSettings.h: Added setUseDarkAppearance.
* testing/InternalSettings.idl: Ditto.
2018-10-15 Alex Christensen <achristensen@webkit.org>
Remove unused WebView._globalHistoryItem
https://bugs.webkit.org/show_bug.cgi?id=190601
Reviewed by Chris Dumez.
This was a hack to give the client a more reliable current back/forward item, but it hasn't been used for years
and it's adding unnecessary complexity to the history code.
* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::checkLoadCompleteForThisFrame):
(WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
* loader/FrameLoaderClient.h:
* loader/HistoryController.cpp:
(WebCore::HistoryController::goToItem):
(WebCore::HistoryController::updateForStandardLoad):
(WebCore::HistoryController::updateForRedirectWithLockedBackForwardList):
2018-10-15 Chris Dumez <cdumez@apple.com>
Experiment: target=_blank on anchors should imply rel=noopener
https://bugs.webkit.org/show_bug.cgi?id=190481
Reviewed by Alex Christensen.
As an experiment, try and make it so that target=_blank on anchors implies `rel=noopener` for improved security.
WebContent can then request an opener relationship by using `rel=opener` instead.
This change was discussed at:
- https://github.com/whatwg/html/issues/4078
We want to attempt this change is STP to see if it is Web-compatible. Preliminary testing seems to indicate
that OAuth workflows still work.
* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::parseAttribute):
(WebCore::HTMLAnchorElement::handleClick):
(WebCore::HTMLAnchorElement::effectiveTarget const):
* html/HTMLAnchorElement.h:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setBlankAnchorTargetImpliesNoOpenerEnabled):
(WebCore::RuntimeEnabledFeatures::blankAnchorTargetImpliesNoOpenerEnabled const):
2018-10-15 Andy Estes <aestes@apple.com>
[Apple Pay] New shipping methods are ignored when updating after the shippingaddresschange event
https://bugs.webkit.org/show_bug.cgi?id=190560
<rdar://problem/44559075>
Reviewed by Youenn Fablet.
When a PaymentDetailsUpdate with shipping options was specified to updateWith() after the
shippingaddresschange event fires, ApplePayPaymentHandler needs to convert the shipping
options to ShippingMethods and add them to the ShippingContactUpdate so that the Apple Pay
UI renders the new options.
Added test cases to http/tests/ssl/applepay/ApplePayShippingAddressChangeEventErrors.https.html.
* Modules/applepay/ApplePayShippingMethod.idl:
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
(WebCore::ApplePayPaymentHandler::computeShippingMethods):
(WebCore::ApplePayPaymentHandler::shippingAddressUpdated):
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
* testing/MockPaymentCoordinator.cpp:
(WebCore::convert):
(WebCore::MockPaymentCoordinator::showPaymentUI):
(WebCore::MockPaymentCoordinator::completeShippingContactSelection):
* testing/MockPaymentCoordinator.h:
* testing/MockPaymentCoordinator.idl:
2018-10-15 Youenn Fablet <youenn@apple.com>
RTCPeerConnection.generateCertificate is not a function
https://bugs.webkit.org/show_bug.cgi?id=173541
<rdar://problem/32638029>
Reviewed by Eric Carlson.
Add support for RTCCertificate generation through libwebrtc certificate generator.
Make generation in the webrtc network thread.
Support is as per spec (ECDSA and RSASSA_PKCS).
Partially covered by WPT tests.
* css/StyleBuilder.h: Fixing build.
* CMakeLists.txt:
* DerivedSources.make:
* Modules/webauthn/PublicKeyCredential.cpp: Fixing build.
* Modules/mediastream/PeerConnectionBackend.cpp:
(WebCore::PeerConnectionBackend::generateCertificate):
* Modules/mediastream/PeerConnectionBackend.h:
(WebCore::PeerConnectionBackend::CertificateInformation::RSASSA_PKCS1_v1_5):
(WebCore::PeerConnectionBackend::CertificateInformation::ECDSA_P256):
(WebCore::PeerConnectionBackend::CertificateInformation::CertificateInformation):
* Modules/mediastream/RTCCertificate.cpp: Added.
(WebCore::RTCCertificate::create):
(WebCore::RTCCertificate::RTCCertificate):
* Modules/mediastream/RTCCertificate.h: Added.
(WebCore::RTCCertificate::expires const):
(WebCore::RTCCertificate::getFingerprints const):
* Modules/mediastream/RTCCertificate.idl: Added.
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::certificateTypeFromAlgorithmIdentifier):
(WebCore::RTCPeerConnection::generateCertificate):
* Modules/mediastream/RTCPeerConnection.h:
* Modules/mediastream/RTCPeerConnection.idl:
* Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.cpp: Added.
(WebCore::LibWebRTCCertificateGenerator::RTCCertificateGeneratorCallback::RTCCertificateGeneratorCallback):
(WebCore::LibWebRTCCertificateGenerator::RTCCertificateGeneratorCallback::~RTCCertificateGeneratorCallback):
(WebCore::LibWebRTCCertificateGenerator::keyParamsFromCertificateType):
(WebCore::LibWebRTCCertificateGenerator::generateCertificate):
* Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.h: Added.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::LibWebRTCProvider::certificateGenerator):
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
2018-10-15 Simon Fraser <simon.fraser@apple.com>
Add compact logging for the paint-order RenderLayer tree
https://bugs.webkit.org/show_bug.cgi?id=190592
Reviewed by Zalan Bujtas.
Add a way to dump the RenderLayer tree in paint order, which will be extended in future
to show more dirty bit state.
* rendering/RenderLayer.cpp:
(WebCore::outputPaintOrderTreeLegend):
(WebCore::outputIdent):
(WebCore::outputPaintOrderTreeRecursive):
(WebCore::showPaintOrderTree):
* rendering/RenderLayer.h:
2018-10-15 Alex Christensen <achristensen@webkit.org>
Remove unused parameters from FrameLoaderClient::createFrame
https://bugs.webkit.org/show_bug.cgi?id=190587
Reviewed by Chris Dumez.
* loader/EmptyClients.cpp:
(WebCore::EmptyFrameLoaderClient::createFrame):
* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoaderClient.h:
* loader/SubframeLoader.cpp:
(WebCore::SubframeLoader::loadSubframe):
2018-10-15 Andy Estes <aestes@apple.com>
[Apple Pay] Payment authorization results with ApplePayErrors should never be considered final
https://bugs.webkit.org/show_bug.cgi?id=190559
<rdar://problem/37250908>
Reviewed by Anders Carlsson.
When PaymentCoordinator thinks a payment authorization result is final it releases the
active ApplePaySession. The Apple Pay UI is dismissed after a receiving a final result.
However, WebCore::isFinalStateResult had the wrong idea about what was a final state,
in some cases causing PaymentCoordinator to release the active session even when the UI is
still presented. If the user authorizes payment again, the website will not receive another
paymentauthorized event, and the Apple Pay UI will eventually time out waiting for a result.
Specifically, isFinalStateResult thought that:
(1) results with STATUS_SUCCESS were always final, even if they had errors
(2) errors with code "unknown" were final
Both of these assumptions are wrong. PassKit considers any result with errors to be
non-final, even if an error has code "unknown."
Fixed WebCore::isFinalStateResult to agree with what PassKit considers to be final results.
Test: http/tests/ssl/applepay/ApplePaySessionFinalState.https.html
* Modules/applepay/ApplePaySessionPaymentRequest.cpp:
(WebCore::isFinalStateResult):
* testing/MockPaymentCoordinator.cpp:
(WebCore::MockPaymentCoordinator::completePaymentSession):
2018-10-15 Andy Estes <aestes@apple.com>
[Payment Request] PaymentResponse should be a ContextDestructionObserver
https://bugs.webkit.org/show_bug.cgi?id=190558
Reviewed by Alex Christensen.
Make PaymentResponse a ContextDestructionObserver so it has a ScriptExecutionContext to
return for its override of EventTarget::scriptExecutionContext(). Do this instead of
downcasting m_request to an ActiveDOMObject to ask for its context.
* Modules/paymentrequest/PaymentRequest.cpp:
(WebCore::PaymentRequest::accept):
* Modules/paymentrequest/PaymentResponse.cpp:
(WebCore::PaymentResponse::PaymentResponse):
(WebCore::PaymentResponse::scriptExecutionContext const): Deleted.
* Modules/paymentrequest/PaymentResponse.h:
2018-10-15 Andy Estes <aestes@apple.com>
[Payment Request] Use a PendingActivity token rather than calling (un)setPendingActivity
https://bugs.webkit.org/show_bug.cgi?id=190557
Reviewed by Alex Christensen.
PaymentRequest has pending activity whenever there is an active payment handler, since
user-initiated events can occur whenever the payment UI is displayed.
Rather than manually track the pending activity with setPendingActivity() and
unsetPendingActivity(), use a PendingActivity token tied to the lifetime of the active
payment handler. Also, rewrite canSuspendForDocumentSuspension() in terms of
hasPendingActivity().
* Modules/paymentrequest/PaymentRequest.cpp:
(WebCore::PaymentRequest::show):
(WebCore::PaymentRequest::abortWithException):
(WebCore::PaymentRequest::canSuspendForDocumentSuspension const):
(WebCore::PaymentRequest::paymentMethodChanged):
(WebCore::PaymentRequest::completeMerchantValidation):
(WebCore::PaymentRequest::settleDetailsPromise):
(WebCore::PaymentRequest::complete):
(WebCore::PaymentRequest::cancel):
* Modules/paymentrequest/PaymentRequest.h:
2018-10-15 Wenson Hsieh <wenson_hsieh@apple.com>
Changing view scale should zoom to initial scale if the page is already at initial scale
https://bugs.webkit.org/show_bug.cgi?id=190570
<rdar://problem/45261877>
Reviewed by Tim Horton.
Add a getter for ViewportConfiguration's layout size scale factor.
See Source/WebKit/ChangeLog for more details.
* page/ViewportConfiguration.h:
(WebCore::ViewportConfiguration::layoutSizeScaleFactor const):
2018-10-15 Charlie Turner <cturner@igalia.com>
Fix build error with !LOG_DISABLED in Release mode
https://bugs.webkit.org/show_bug.cgi?id=190465
Reviewed by Michael Catanzaro.
No tests due to no new functionality.
* workers/service/ServiceWorkerRegistrationKey.cpp:
* workers/service/ServiceWorkerRegistrationKey.h:
2018-10-15 Simon Fraser <simon.fraser@apple.com>
LayerListMutationDetector should take a reference
https://bugs.webkit.org/show_bug.cgi?id=190586
Reviewed by Zalan Bujtas.
Change LayerListMutationDetector to take a RenderLayer&.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintList):
(WebCore::RenderLayer::hitTestLayer):
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayer.h:
(WebCore::LayerListMutationDetector::LayerListMutationDetector):
(WebCore::LayerListMutationDetector::~LayerListMutationDetector):
* rendering/RenderLayerBacking.cpp:
(WebCore::traverseVisibleNonCompositedDescendantLayers):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::addToOverlapMapRecursive):
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
(WebCore::RenderLayerCompositor::updateLayerTreeGeometry):
(WebCore::RenderLayerCompositor::updateCompositingDescendantGeometry):
(WebCore::RenderLayerCompositor::recursiveRepaintLayer):
(WebCore::RenderLayerCompositor::layerHas3DContent const):
2018-10-15 Simon Fraser <simon.fraser@apple.com>
Share some code to dirty z-order and normal flow lists when child layers are added or removed
https://bugs.webkit.org/show_bug.cgi?id=190585
Reviewed by Zalan Bujtas.
Factor code which dirties the normal flow list and child stacking context z-order lists
when a layer is added or removed.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::addChild):
(WebCore::RenderLayer::removeChild):
(WebCore::RenderLayer::dirtyPaintOrderListsOnChildChange):
* rendering/RenderLayer.h:
2018-10-15 Simon Fraser <simon.fraser@apple.com>
Make a helper function to check for reflection layers
https://bugs.webkit.org/show_bug.cgi?id=190584
Reviewed by Zalan Bujtas.
Add RenderLayer::isReflectionLayer() which returns true if the passed layer
is the layer of this layer's reflection. It's used in z-order list building.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateNormalFlowList):
(WebCore::RenderLayer::rebuildZOrderLists):
(WebCore::RenderLayer::collectLayers):
(WebCore::expandClipRectForDescendantsAndReflection):
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayer.h:
2018-10-15 Simon Fraser <simon.fraser@apple.com>
RenderLayer::addChild() and removeChild() should take references
https://bugs.webkit.org/show_bug.cgi?id=190582
Reviewed by Zalan Bujtas.
Pass the layer to be added or removed as a reference; it's never null.
* rendering/RenderElement.cpp:
(WebCore::addLayers):
(WebCore::RenderElement::removeLayers):
(WebCore::RenderElement::moveLayers):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::addChild):
(WebCore::RenderLayer::removeChild):
(WebCore::RenderLayer::insertOnlyThisLayer):
(WebCore::RenderLayer::removeOnlyThisLayer):
* rendering/RenderLayer.h:
2018-10-15 Yoshiaki Jitsukawa <yoshiaki.jitsukawa@sony.com>
[Cairo] Incorrect rendering for 135-deg skews
https://bugs.webkit.org/show_bug.cgi?id=190513
Compensation value to zero the the translation components
of the transformation matrix is incorrect if the matrix
has a shear factor.
Reviewed by Žan Doberšek.
Tests: fast/transforms/skew-x-135deg-with-gradient.html
fast/transforms/skew-y-135deg-with-gradient.html
* platform/graphics/cairo/CairoUtilities.cpp:
(WebCore::drawPatternToCairoContext):
2018-10-15 Christopher Reid <chris.reid@sony.com>
[Curl][WinCairo] Add Public Suffix support to WinCairo
https://bugs.webkit.org/show_bug.cgi?id=183060
Reviewed by Alex Christensen.
Add Public Suffix support to WinCairo using LibPSL.
LibPSL has been added to WinCairoRequirements in v2018.10.09.
* platform/Curl.cmake:
* platform/network/curl/CookieJarDB.cpp:
(WebCore::CookieJarDB::searchCookies): Search for cookies using the topPrivatelyControlledDomain
(WebCore::CookieJarDB::setCookie): Prevent cookies from being added under TLDs
* platform/network/curl/PublicSuffixCurl.cpp: Added.
(WebCore::isPublicSuffix):
(WebCore::topPrivatelyControlledDomainInternal):
(WebCore::topPrivatelyControlledDomain):
2018-10-15 Simon Fraser <simon.fraser@apple.com>
RenderLayer tree-related cleanup
https://bugs.webkit.org/show_bug.cgi?id=190572
Reviewed by Zalan Bujtas.
Move code around so that functions related to parent/child and z-order tree structure
are near the top of RenderLayer.cpp, since this is one of the primary functions of layers.
Attempts to use inheritance or composition to separate out tree structure resulted in
unwieldy code and/or performance regressions.
The only behavior change is to store a bit for m_isStackingContext so that we don't have
to consult the old style to know if it changed.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::addChild):
(WebCore::RenderLayer::removeChild):
(WebCore::RenderLayer::insertOnlyThisLayer):
(WebCore::RenderLayer::removeOnlyThisLayer):
(WebCore::canCreateStackingContext):
(WebCore::RenderLayer::shouldBeNormalFlowOnly const):
(WebCore::RenderLayer::shouldBeStackingContext const):
(WebCore::RenderLayer::setIsNormalFlowOnly):
(WebCore::RenderLayer::setIsStackingContext):
(WebCore::RenderLayer::setParent):
(WebCore::RenderLayer::dirtyZOrderLists):
(WebCore::RenderLayer::dirtyStackingContextZOrderLists):
(WebCore::RenderLayer::dirtyNormalFlowList):
(WebCore::RenderLayer::updateNormalFlowList):
(WebCore::RenderLayer::rebuildZOrderLists):
(WebCore::RenderLayer::collectLayers):
(WebCore::RenderLayer::updateLayerListsIfNeeded):
(WebCore::RenderLayer::beginTransparencyLayers):
(WebCore::RenderLayer::willBeDestroyed):
(WebCore::RenderLayer::isDescendantOf const):
(WebCore::RenderLayer::calculateClipRects const):
(WebCore::compareZIndex): Deleted.
* rendering/RenderLayer.h:
2018-10-15 Antti Koivisto <antti@apple.com>
[PSON] Prewarm system fallback fonts
https://bugs.webkit.org/show_bug.cgi?id=190517
Reviewed by Ryosuke Niwa.
This seems to be ~2% progression in PSON PLT4 with large (40ms+) improvements on some pages
after process swaps.
* page/PrewarmInformation.h:
(WebCore::PrewarmInformation::encode const):
(WebCore::PrewarmInformation::decode):
* page/ProcessWarming.cpp:
(WebCore::ProcessWarming::collectPrewarmInformation):
(WebCore::ProcessWarming::prewarmWithInformation):
* platform/graphics/FontCache.cpp:
(WebCore::FontCache::collectPrewarmInformation const):
(WebCore::FontCache::prewarm):
* platform/graphics/FontCache.h:
(WebCore::FontCache::PrewarmInformation::isolatedCopy const):
(WebCore::FontCache::PrewarmInformation::encode const):
(WebCore::FontCache::PrewarmInformation::decode):
Make font cache prewarm information a struct with encode/decode support and move it into FontCache scope.
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontDatabase::collectionForFamily):
(WebCore::FontCache::systemFallbackForCharacters):
Collect the names of fonts that end up needing character specific system fallbacks.
(WebCore::FontCache::collectPrewarmInformation const):
Include them into prewarm information.
(WebCore::FontCache::prewarm):
Invoking CTFontCreateForCharactersWithLanguage for the correct named font seems sufficient to fully
prewarm it for fallbacks (independent of size, locale or other characteristics).
Any future calls to systemFallbackForCharacters are fast.
2018-10-15 Chris Dumez <cdumez@apple.com>
Restrict browsing context lookup by name to frames that are related to one another
https://bugs.webkit.org/show_bug.cgi?id=190475
Reviewed by Alex Christensen.
Update our frame lookup by name logic to take in the active / requesting frame and
only a return a frame that is related to it. By related to it, I mean:
- Ancestor <-> Descendant relationship
- Opener <-> Openee relationship
Being able to look up unrelated frames makes process swapping difficult so we need
to be stricter.
This change is being discussed at:
- https://github.com/whatwg/html/issues/313
Tests: http/tests/dom/new-window-can-target-opener.html
http/tests/dom/noopener-window-cannot-target-opener.html
http/tests/dom/noopener-window-not-targetable.html
http/tests/dom/noopener-window-not-targetable2.html
http/tests/dom/noreferrer-window-not-targetable.html
http/tests/dom/opened-window-not-targetable-after-disowning-opener.html
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::findFrameForNavigation):
* page/FrameTree.cpp:
(WebCore::isFrameFamiliarWith):
(WebCore::FrameTree::find const):
* page/FrameTree.h:
* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::targetFrame const):
2018-10-15 Alex Christensen <achristensen@webkit.org>
Shrink more enum classes
https://bugs.webkit.org/show_bug.cgi?id=190540
Reviewed by Chris Dumez.
* Modules/notifications/NotificationDirection.h:
* dom/Document.h:
* loader/FrameLoader.h:
* loader/FrameLoaderClient.h:
* loader/HistoryController.h:
* loader/ShouldSkipSafeBrowsingCheck.h:
* loader/ShouldTreatAsContinuingLoad.h:
* page/AutoplayEvent.h:
* page/ChromeClient.h:
* page/DiagnosticLoggingClient.h:
* page/Page.h:
* platform/CookiesStrategy.h:
* platform/audio/AudioSession.h:
* platform/network/NetworkStorageSession.h:
* platform/network/StoredCredentialsPolicy.h:
* workers/service/SWClientConnection.h:
* workers/service/ServiceWorkerContainer.h:
* workers/service/ServiceWorkerRegistrationData.h:
* workers/service/ServiceWorkerRegistrationOptions.h:
* workers/service/ServiceWorkerTypes.h:
* workers/service/ServiceWorkerUpdateViaCache.h:
* workers/service/server/SWServer.h:
* workers/service/server/SWServerRegistration.h:
2018-10-15 Patrick Griffis <pgriffis@igalia.com>
[GTK][WPE] Implement subprocess sandboxing
https://bugs.webkit.org/show_bug.cgi?id=188568
Reviewed by Michael Catanzaro.
Link against libseccomp.
* PlatformGTK.cmake:
2018-10-15 YUHAN WU <yuhan_wu@apple.com>
Implement error handler of MediaRecorder
https://bugs.webkit.org/show_bug.cgi?id=190438
Reviewed by Youenn Fablet.
Test: imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-error.html
Implement error event handler (onerror) for MediaRecorder and basic architecture of start() function.
* CMakeLists.txt:
* DerivedSources.make:
* Modules/mediarecorder/MediaRecorder.cpp:
(WebCore::MediaRecorder::MediaRecorder):
(WebCore::MediaRecorder::~MediaRecorder):
(WebCore::MediaRecorder::stop):
(WebCore::MediaRecorder::start):
(WebCore::MediaRecorder::setNewRecordingState):
(WebCore::MediaRecorder::scheduleDeferredTask):
(WebCore::MediaRecorder::didAddOrRemoveTrack):
* Modules/mediarecorder/MediaRecorder.h:
* Modules/mediarecorder/MediaRecorder.idl:
* Modules/mediarecorder/MediaRecorderErrorEvent.cpp: Added.
(WebCore::MediaRecorderErrorEvent::create):
(WebCore::MediaRecorderErrorEvent::MediaRecorderErrorEvent):
(WebCore::MediaRecorderErrorEvent::eventInterface const):
* Modules/mediarecorder/MediaRecorderErrorEvent.h: Added.
* Modules/mediarecorder/MediaRecorderErrorEvent.idl: Added.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* dom/EventNames.in:
* dom/EventTargetFactory.in:
2018-10-15 Chris Dumez <cdumez@apple.com>
Window's properties such as 'location' should not become null when it loses its browsing context
https://bugs.webkit.org/show_bug.cgi?id=190539
Reviewed by Alex Christensen.
Window's properties such as 'location' should not become null when it loses its browsing context.
This Webkit behavior is not standard and does not match other browsers so this patch makes it so
that those properties persist.
Tests: http/tests/dom/cross-origin-detached-window-properties.html
http/tests/dom/same-origin-detached-window-properties.html
* bindings/js/JSDOMBindingSecurity.cpp:
(WebCore::BindingSecurity::shouldAllowAccessToDOMWindow):
* bindings/js/JSDOMBindingSecurity.h:
* bindings/js/JSDOMWindowProperties.cpp:
(WebCore::jsDOMWindowPropertiesGetOwnPropertySlotNamedItemGetter):
(WebCore::JSDOMWindowProperties::getOwnPropertySlot):
* bindings/js/JSLocationCustom.cpp:
(WebCore::getOwnPropertySlotCommon):
(WebCore::putCommon):
(WebCore::JSLocation::deleteProperty):
(WebCore::JSLocation::deletePropertyByIndex):
(WebCore::JSLocation::getOwnPropertyNames):
(WebCore::JSLocation::defineOwnProperty):
(WebCore::JSLocation::getPrototype):
(WebCore::JSLocation::toStringName):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateAttributeGetterBodyDefinition):
(GenerateAttributeSetterBodyDefinition):
(GenerateOperationBodyDefinition):
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
(WebCore::jsTestActiveDOMObjectExcitingAttrGetter):
(WebCore::jsTestActiveDOMObjectPrototypeFunctionExcitingFunctionBody):
* crypto/SubtleCrypto.cpp:
(WebCore::SubtleCrypto::SubtleCrypto):
* crypto/SubtleCrypto.h:
(WebCore::SubtleCrypto::create):
* dom/Document.cpp:
(WebCore::Document::~Document):
* page/Crypto.cpp:
(WebCore::Crypto::Crypto):
* page/Crypto.h:
(WebCore::Crypto::create):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::~DOMWindow):
(WebCore::DOMWindow::frameDestroyed):
(WebCore::DOMWindow::screen):
(WebCore::DOMWindow::history):
(WebCore::DOMWindow::crypto):
(WebCore::DOMWindow::locationbar):
(WebCore::DOMWindow::menubar):
(WebCore::DOMWindow::personalbar):
(WebCore::DOMWindow::scrollbars):
(WebCore::DOMWindow::statusbar):
(WebCore::DOMWindow::toolbar):
(WebCore::DOMWindow::console const):
(WebCore::DOMWindow::applicationCache):
(WebCore::DOMWindow::navigator):
(WebCore::DOMWindow::performance const):
(WebCore::DOMWindow::location):
(WebCore::DOMWindow::visualViewport):
(WebCore::DOMWindow::styleMedia):
* page/DOMWindow.h:
* page/DOMWindow.idl:
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::crypto):
2018-10-15 Alex Christensen <achristensen@webkit.org>
Include EnumTraits.h less
https://bugs.webkit.org/show_bug.cgi?id=190535
Reviewed by Chris Dumez.
* Modules/applepay/ApplePaySessionPaymentRequest.h:
* Modules/applepay/PaymentAuthorizationStatus.h:
* Modules/applicationmanifest/ApplicationManifest.h:
* Modules/fetch/FetchHeaders.h:
* Modules/webauthn/AuthenticatorTransport.h:
* Modules/webauthn/PublicKeyCredentialType.h:
* loader/ShouldSkipSafeBrowsingCheck.h:
* loader/ShouldTreatAsContinuingLoad.h:
* platform/Cookie.h:
* platform/audio/AudioSession.h:
* platform/mediastream/CaptureDevice.h:
* platform/mediastream/MediaStreamRequest.h:
* platform/mediastream/RealtimeMediaSourceSettings.h:
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
* platform/network/NetworkLoadInformation.h:
* workers/service/ServiceWorkerClientType.h:
* workers/service/ServiceWorkerTypes.h:
* workers/service/ServiceWorkerUpdateViaCache.h:
2018-10-15 Alex Christensen <achristensen@webkit.org>
Remove InjectedBundle processing of back/forward lists
https://bugs.webkit.org/show_bug.cgi?id=190459
Reviewed by Chris Dumez.
The uses of these functions are dead code I removed in rdar://problem/45180545
Removing these functions is a step towards fixing the PSON history bugs.
* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoaderClient.h:
* loader/HistoryController.cpp:
(WebCore::HistoryController::goToItem):
2018-10-14 Yusuke Suzuki <yusukesuzuki@slowstart.org>
[JSC] Remove Option::useAsyncIterator
https://bugs.webkit.org/show_bug.cgi?id=190567
Reviewed by Saam Barati.
* Configurations/FeatureDefines.xcconfig:
2018-10-15 Philippe Normand <pnormand@igalia.com>
[GStreamer] Fix EME build for GStreamer 1.14.x
https://bugs.webkit.org/show_bug.cgi?id=190471
Reviewed by Xabier Rodriguez-Calvar.
* platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
(webkitMediaCommonEncryptionDecryptTransformCaps): The
GST_PROTECTION_UNSPECIFIED_SYSTEM_ID #define won't be shipped
until the GStreamer 1.16.0 release, so its use needs to be wrapped
between a version check.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::initializationDataEncountered): Ditto.
2018-10-12 Wenson Hsieh <wenson_hsieh@apple.com>
[iOS] Allow SPI clients to lay out at arbitrarily scaled sizes and scale to fit the view
https://bugs.webkit.org/show_bug.cgi?id=190504
<rdar://problem/45117760>
Reviewed by Tim Horton.
Add support in ViewportConfiguration for applying a layout size scale factor to the viewport. See below for
more details.
Tests: fast/viewport/ios/constant-width-viewport-after-changing-view-scale.html
fast/viewport/ios/device-width-viewport-after-changing-view-scale.html
* page/ViewportConfiguration.cpp:
(WebCore::ViewportConfiguration::setViewLayoutSize):
The viewport's layout size may now be changed alongside the layout size scale factor. If either of these two
variables change, we recompute our minimum layout size and viewport configuration parameters.
(WebCore::ViewportConfiguration::shouldIgnoreHorizontalScalingConstraints const):
(WebCore::ViewportConfiguration::nativeWebpageParameters):
(WebCore::ViewportConfiguration::testingParameters):
(WebCore::ViewportConfiguration::updateConfiguration):
Multiply the minimum scale, initial scale, and maximum scale by the layout size scale factor. This allows us to
keep the document well-proportioned within the viewport, while still laying out at a different layout size.
(WebCore::ViewportConfiguration::updateMinimumLayoutSize):
Compute the minimum layout size by scaling the default layout size derived from our view's size.
(WebCore::ViewportConfiguration::layoutWidth const):
(WebCore::ViewportConfiguration::layoutHeight const):
* page/ViewportConfiguration.h:
Maintain the original initial scale, unaffected by the layout size scale factor. This is used when computing
layout width and height to prevent scaling by the layout size scale factor twice when computing layout sizes.
(WebCore::ViewportConfiguration::description const):
Include the layout size scale factor in ViewportConfiguration's description string.
(WebCore::ViewportConfiguration::Parameters::operator== const):
(WebCore::operator<<):
2018-10-12 Youenn Fablet <youenn@apple.com>
Use downcast for use of RealtimeMediaSource in LibWebRTCMediaEndpoint
https://bugs.webkit.org/show_bug.cgi?id=190533
Reviewed by Chris Dumez.
Clean-up work.
No change of behavior.
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::setExistingReceiverSourceTrack):
* platform/mediastream/RealtimeIncomingAudioSource.h:
(isType):
* platform/mediastream/RealtimeIncomingVideoSource.h:
(isType):
* platform/mediastream/RealtimeMediaSource.h:
2018-10-12 Jer Noble <jer.noble@apple.com>
WebAVSampleBufferErrorListener's parent should be a WeakPtr.
https://bugs.webkit.org/show_bug.cgi?id=190524
<rdar://problem/44359307>
Reviewed by Eric Carlson.
Once WebAVSampleBufferErrorListener's parent is a WeakPtr, we no longer need to pass
protectedSelf into the callOnMainThread lambdas; we can pass in the parent itself.
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(-[WebAVSampleBufferErrorListener initWithParent:]):
(-[WebAVSampleBufferErrorListener observeValueForKeyPath:ofObject:change:context:]):
(-[WebAVSampleBufferErrorListener layerFailedToDecode:]):
(WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::destroyRenderers):
2018-10-12 Ryosuke Niwa <rniwa@webkit.org>
Address the review comment which was meant to be addressed in r237025.
* editing/MarkupAccumulator.cpp:
(WebCore::elementCannotHaveEndTag):
2018-10-12 Youenn Fablet <youenn@apple.com> and Alejandro G. Castro <alex@igalia.com>
Refresh libwebrtc up to 343f4144be
https://bugs.webkit.org/show_bug.cgi?id=190361
Reviewed by Chris Dumez.
This refresh should not change behavior but will allow us to implement better
mdns candidate support and simulcast activation surfacing through addTransceiver.
Covered by existing tests.
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::doCreateAnswer):
* testing/MockLibWebRTCPeerConnection.cpp:
(WebCore::MockLibWebRTCPeerConnection::CreateAnswer):
* testing/MockLibWebRTCPeerConnection.h:
(WebCore::MockRtpSender::GetParameters): Deleted.
(WebCore::MockRtpSender::SetParameters): Deleted.
(WebCore::MockRtpSender::GetDtmfSender const): Deleted.
2018-10-12 Alex Christensen <achristensen@webkit.org>
Allow encoding of small enum classes
https://bugs.webkit.org/show_bug.cgi?id=190531
Reviewed by Tim Horton.
* Modules/webauthn/PublicKeyCredentialCreationOptions.h:
* dom/Document.h:
* editing/FontAttributeChanges.h:
* history/CachedFrame.h:
* loader/FrameLoaderTypes.h:
* platform/CookiesStrategy.h:
* platform/PasteboardItemInfo.h:
* platform/ReferrerPolicy.h:
2018-10-12 Rob Buis <rbuis@igalia.com>
Solve the confusion around blankURL() and isBlankURL() in URL
https://bugs.webkit.org/show_bug.cgi?id=158988
Reviewed by Alex Christensen.
The name isBlankURL is not accurate as the function tests the
protocol, not the full URL. Choose protocolIsAbout to align with
exisiting protocolIsData, protocolIsBlob etc.
No tests as no change in functionality.
* WebCore.order:
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::loadApplicationManifest):
(WebCore::DocumentLoader::startIconLoading):
* loader/NavigationAction.cpp:
(WebCore::shouldTreatAsSameOriginNavigation):
* loader/PolicyChecker.cpp:
(WebCore::PolicyChecker::checkNavigationPolicy):
* loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
* page/PageSerializer.cpp:
(WebCore::PageSerializer::SerializerMarkupAccumulator::appendCustomAttributes):
(WebCore::PageSerializer::serializeFrame):
* page/csp/ContentSecurityPolicyDirectiveList.cpp:
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForFrame const):
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForObjectSource const):
* platform/URL.cpp:
(WebCore::URL::protocolIsAbout const):
(WebCore::URL::isBlankURL const): Deleted.
* platform/URL.h:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::loadFull):
2018-10-12 Youenn Fablet <youenn@apple.com>
DOMCache should dereference itself as soon as stopped
https://bugs.webkit.org/show_bug.cgi?id=190441
Reviewed by Chris Dumez.
Dereference the DOMCache as soon as its context is stopped instead of waiting for garbage collection.
This allows freeing resources sooner in the network process.
No observable change of behavior since the DOMCache becomes no-op when its context is stopped.
* Modules/cache/DOMCache.cpp:
(WebCore::DOMCache::~DOMCache):
(WebCore::DOMCache::stop):
2018-10-12 Jer Noble <jer.noble@apple.com>
CRASH in WebCore::MediaPlayerPrivateAVFoundation::setPreload
https://bugs.webkit.org/show_bug.cgi?id=190485
<rdar://problem/34613350>
Reviewed by Eric Carlson.
Crash analytics show that a pure-virtual function is called by MediaPlayerPrivateAVFoundation::setPreload(), and
the likely cause of that pure-virtual function call is that the MediaPlayerPrivateAVFoundation object itself has
been destroyed, likely as a side effect of calling MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL().
The usual suspect for this kind of crash is due to calling into JS (e.g., from a callback passed up to
HTMLMediaElement). Code inspection hasn't yielded any good hints about why this might be occurring, so we will
add a ScriptDisallowedScope assertion inside HTMLMediaElement::prepareToPlay(), to generate a good crashlog
showing exactly what callback is resulting in a JS call. But just in case the deallocation is not due to JS,
also add an explicit strong-ref inside MediaPlayer::prepareToPlay.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::prepareToPlay):
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::prepareToPlay):
2018-10-12 Jer Noble <jer.noble@apple.com>
Null-dereference in SourceBufferPrivateAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged
https://bugs.webkit.org/show_bug.cgi?id=190490
<rdar://problem/42213807>
Reviewed by Eric Carlson.
Crash analytics show a null dereference occurring, likely because m_mediaSource is null.
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged):
2018-10-11 Don Olmstead <don.olmstead@sony.com>
Add Houdini specs to features.json
https://bugs.webkit.org/show_bug.cgi?id=190494
<rdar://problem/45211879>
Unreviewed fix.
Specifications should not reference other specifications. Also
move Worklet into the specifications section.
* features.json:
2018-10-11 Youenn Fablet <youenn@apple.com>
IOS 12 - Service worker cache not shared when added to homescreen
https://bugs.webkit.org/show_bug.cgi?id=190269
<rdar://problem/45009961>
Reviewed by Alex Christensen.
Expose Cache Storage API when Service Worker API is exposed.
This is used for API tests.
* dom/ScriptExecutionContext.h: Make hasServiceWorkerScheme
available outside SERVICE_WORKER compilation flag since used by DOMWindowCaches.
* dom/ScriptExecutionContext.cpp: Ditto.
* Modules/cache/DOMWindowCaches.idl:
2018-10-10 Simon Fraser <simon.fraser@apple.com>
Hide RenderLayer z-order and normal flow lists behind iterators
https://bugs.webkit.org/show_bug.cgi?id=190457
Reviewed by Zalan Bujtas.
Expose the positive z-order, negative z-order and normal flow lists
from RenderLayer as iterators rather than vectors of raw pointers.
This hides the fact that the vectors can be null, and allows for easier casting in future.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::update3DTransformedDescendantStatus):
(WebCore::RenderLayer::paintLayerContents):
(WebCore::RenderLayer::paintList):
(WebCore::RenderLayer::hitTestLayer):
(WebCore::RenderLayer::hitTestList):
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayer.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::traverseVisibleNonCompositedDescendantLayers):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::addToOverlapMapRecursive):
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
(WebCore::RenderLayerCompositor::updateLayerTreeGeometry):
(WebCore::RenderLayerCompositor::updateCompositingDescendantGeometry):
(WebCore::RenderLayerCompositor::recursiveRepaintLayer):
(WebCore::RenderLayerCompositor::needsContentsCompositingLayer const):
(WebCore::RenderLayerCompositor::layerHas3DContent const):
* rendering/RenderTreeAsText.cpp:
(WebCore::writeLayers):
2018-10-11 Don Olmstead <don.olmstead@sony.com>
Add Houdini specs to features.json
https://bugs.webkit.org/show_bug.cgi?id=190494
Reviewed by Simon Fraser.
Add CSS Typed OM Level 1, CSS Layout API Level 1, CSS Animation
Worklet, and group them under a Houdini feature set.
* features.json:
2018-10-11 Ross Kirsling <ross.kirsling@sony.com>
[WTF] Semaphore.h conflicts with POSIX header
https://bugs.webkit.org/show_bug.cgi?id=190486
Reviewed by Yusuke Suzuki.
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
2018-10-11 Thibault Saunier <tsaunier@igalia.com>
[GStreamer] Support arbitrary video resolution in getUserMedia API
https://bugs.webkit.org/show_bug.cgi?id=189734
Reviewed by Xabier Rodriguez-Calvar.
Implement arbitrary video resolution for the getUserMedia API in GStreamer.
Fix the MockRealtimeMediaSource device list to make devices properties match
test expectations.
Reactivate tests that were failling because of that.
* platform/mediastream/RealtimeVideoSource.cpp:
(WebCore::RealtimeVideoSource::standardVideoSizes):
(WebCore::standardVideoSizes): Deleted.
* platform/mediastream/RealtimeVideoSource.h:
* platform/mediastream/VideoPreset.h:
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
(WebCore::GStreamerVideoPreset::create):
(WebCore::GStreamerVideoPreset::GStreamerVideoPreset):
(WebCore::GStreamerVideoCaptureSource::GStreamerVideoCaptureSource):
(WebCore::GStreamerVideoCaptureSource::capabilities):
(WebCore::GStreamerVideoCaptureSource::generatePresets):
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
* platform/mock/MockRealtimeMediaSourceCenter.cpp:
(WebCore::defaultDevices):
2018-10-11 Keith Rollin <krollin@apple.com>
CURRENT_ARCH should not be used in Run Script phase.
https://bugs.webkit.org/show_bug.cgi?id=190407
<rdar://problem/45133556>
Reviewed by Alexey Proskuryakov.
CURRENT_ARCH is used in a number of Xcode Run Script phases. However,
CURRENT_ARCH is not well-defined during this phase (and may even have
the value "undefined") since this phase is run just once per build
rather than once per supported architecture. Migrate away from
CURRENT_ARCH in favor of ARCHS, either by iterating over ARCHS and
performing an operation for each value, or by picking the first entry
in ARCHS and using that as a representative value.
No new tests -- no functional changes.
* DerivedSources.make: When forming TARGET_TRIPLE_FLAGS, grab the
first entry in ARCHS rather than use CURRENT_ARCH.
2018-10-11 Daniel Bates <dabates@apple.com>
Support building WebKit for macOS Mojave using a newer SDK
https://bugs.webkit.org/show_bug.cgi?id=190431
Reviewed by Andy Estes.
* platform/network/cocoa/CookieCocoa.mm:
(WebCore::coreSameSitePolicy):
(WebCore::nsSameSitePolicy):
2018-10-11 Daniel Bates <dabates@apple.com>
[iOS] Add typedef for WebEvent keyboard flags
https://bugs.webkit.org/show_bug.cgi?id=190435
Reviewed by Wenson Hsieh.
Currently WebEvent and UIKit SPI are intertwined when it comes to keyboard flags. It seems sufficient
to have WebEvent defined its own keyboard flags so that callers do not need to be aware of UIKit SPI.
No functionality changed. So, no new tests.
* platform/ios/WebEvent.h:
* platform/ios/WebEvent.mm:
(-[WebEvent keyboardFlags]):
2018-10-11 Antti Koivisto <antti@apple.com>
Use finer grained locking in FontDatabase
https://bugs.webkit.org/show_bug.cgi?id=190467
Reviewed by Alex Christensen.
* platform/graphics/FontCache.h:
Also use ListHashSet for prewarming info so we can prewarm in the same order the fonts were
seen last time.
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontDatabase::collectionForFamily):
Only hold the lock when accessing the hashmap. There is no need to hold it during font construction
which can take a long time.
(WebCore::FontDatabase::fontForPostScriptName):
This is currently not prewarmed from a thread so no need for locking.
(WebCore::FontDatabase::clear):
2018-10-11 Thibault Saunier <tsaunier@igalia.com>
[GStreamer] Fix race condition in GStreamerVideoDecoder
https://bugs.webkit.org/show_bug.cgi?id=190470
The GStreamerVideoDecoder.m_dtsPtsMap filed is accessed from
the main thread and some GStreamer streaming thread, make sure
to protect its access.
And use WTF::StdMap instead of std::map.
Reviewed by Philippe Normand.
Manually tested and a random crash is gone.
* platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
(WebCore::GStreamerVideoDecoder::newSampleCallback):
2018-10-11 Enrique Ocaña González <eocanha@igalia.com>
[GStreamer][MSE] Fix height calculation for streams with source aspect ratio
https://bugs.webkit.org/show_bug.cgi?id=190464
Reviewed by Xabier Rodriguez-Calvar.
This patch is authored by Nikola Veljkovic <Nikola.Veljkovic@zenterio.com>
* platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::getVideoResolutionFromCaps): Reverse the SAR adjustment to "undo" it
instead of applying it twice.
2018-10-11 Alejandro G. Castro <alex@igalia.com>
[GTK][WPE] Add mediaDevices.enumerateDevices support
https://bugs.webkit.org/show_bug.cgi?id=185761
Reviewed by Youenn Fablet.
We are adopting the same policy COCOA is using when returning the
list of media devices if the user does not have persistent
access. Namely, we just return the first media device for audio
and video capture.
* Modules/mediastream/MediaDevicesRequest.cpp:
(WebCore::MediaDevicesRequest::filterDeviceList): Add support for
other platforms when filtering devices if there is no persistent
access to the origin.
2018-10-10 Chris Dumez <cdumez@apple.com>
Rename a couple of DOMWindowProperty virtual functions
https://bugs.webkit.org/show_bug.cgi?id=190458
Reviewed by Geoffrey Garen.
Rename a couple of DOMWindowProperty virtual functions as the current naming no longer makes
sense after recent refactoring.
disconnectFrameForDocumentSuspension() was renamed to suspendForPageCache(), and
reconnectFrameFromDocumentSuspension(Frame*) was renamed to resumeFromPageCache().
DOMWindowProperty objects no longer need to disconnect / reconnect from their
frame since they now get their frame from their associated Window. However, some
DOMWindowProperty subclasses do have some page cache suspension / resuming logic
implemented of overrides of these functions.
Also drop the disconnectDOMWindowProperties() / reconnectDOMWindowProperties()
methods in DOMWindow. The naming made little sense as it does not really
disconnect those properties in any way. Instead, inline them in
DOMWindow's suspendForPageCache() / resumeFromPageCache() since these are
the only callers.
* Modules/indexeddb/DOMWindowIndexedDatabase.cpp:
(WebCore::DOMWindowIndexedDatabase::suspendForPageCache):
(WebCore::DOMWindowIndexedDatabase::resumeFromPageCache):
(WebCore::DOMWindowIndexedDatabase::disconnectFrameForDocumentSuspension): Deleted.
(WebCore::DOMWindowIndexedDatabase::reconnectFrameFromDocumentSuspension): Deleted.
* Modules/indexeddb/DOMWindowIndexedDatabase.h:
* history/CachedFrame.cpp:
(WebCore::CachedFrame::CachedFrame):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::open):
* loader/appcache/DOMApplicationCache.cpp:
(WebCore::DOMApplicationCache::suspendForPageCache):
(WebCore::DOMApplicationCache::resumeFromPageCache):
(WebCore::DOMApplicationCache::disconnectFrameForDocumentSuspension): Deleted.
(WebCore::DOMApplicationCache::reconnectFrameFromDocumentSuspension): Deleted.
* loader/appcache/DOMApplicationCache.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::suspendForPageCache):
(WebCore::DOMWindow::resumeFromPageCache):
(WebCore::DOMWindow::suspendForDocumentSuspension): Deleted.
(WebCore::DOMWindow::resumeFromDocumentSuspension): Deleted.
(WebCore::DOMWindow::disconnectDOMWindowProperties): Deleted.
(WebCore::DOMWindow::reconnectDOMWindowProperties): Deleted.
* page/DOMWindow.h:
* page/DOMWindowExtension.cpp:
(WebCore::DOMWindowExtension::suspendForPageCache):
(WebCore::DOMWindowExtension::resumeFromPageCache):
(WebCore::DOMWindowExtension::disconnectFrameForDocumentSuspension): Deleted.
(WebCore::DOMWindowExtension::reconnectFrameFromDocumentSuspension): Deleted.
* page/DOMWindowExtension.h:
* page/DOMWindowProperty.cpp:
(WebCore::DOMWindowProperty::suspendForPageCache):
(WebCore::DOMWindowProperty::resumeFromPageCache):
(WebCore::DOMWindowProperty::disconnectFrameForDocumentSuspension): Deleted.
(WebCore::DOMWindowProperty::reconnectFrameFromDocumentSuspension): Deleted.
* page/DOMWindowProperty.h:
2018-10-10 Devin Rousso <drousso@apple.com>
Web Inspector: create special Network waterfall for media events
https://bugs.webkit.org/show_bug.cgi?id=189773
<rdar://problem/44626605>
Reviewed by Joseph Pecoraro.
Test: http/tests/inspector/dom/didFireEvent.html
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::HTMLMediaElement):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::addEventListenersToNode): Added.
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::addEventListenersToNodeImpl): Added.
* inspector/agents/InspectorDOMAgent.h:
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::EventFiredCallback): Added.
(WebCore::EventFiredCallback::create): Added.
(WebCore::EventFiredCallback::operator==): Added.
(WebCore::EventFiredCallback::handleEvent): Added.
(WebCore::EventFiredCallback::EventFiredCallback): Added.
(WebCore::InspectorDOMAgent::didCreateFrontendAndBackend):
(WebCore::InspectorDOMAgent::addEventListenersToNode): Added.
2018-10-10 Daniel Bates <dabates@apple.com>
[iOS] Cleanup -[WAKView _selfHandleEvent:] and -[WAKWindow sendEventSynchronously:]
https://bugs.webkit.org/show_bug.cgi?id=190402
Reviewed by Anders Carlsson.
Unindent case statements. Remove use of default case statements with body ASSERT_NOT_REACHED()
to catch the cases of a missing enumerator. By omitting the default case statement we turn
such a scenario into a compile-time error instead of handling it as a runtime error.
* platform/ios/wak/WAKView.mm:
(-[WAKView _selfHandleEvent:]):
* platform/ios/wak/WAKWindow.mm:
(-[WAKWindow sendEventSynchronously:]):
2018-10-05 Ryosuke Niwa <rniwa@webkit.org>
Rename MarkupAccumulator::appendStartTag, appendElement, etc... for clarity
https://bugs.webkit.org/show_bug.cgi?id=190308
Reviewed by Darin Adler.
Renamed appendStartTag and appendEndTag to startAppendingNode and endAppendingNode since serialize any node,
not just elements which produce start and end tags.
Renamed appendElement and appendEndElement to appendStartTag and appendEndTag since that's what they do.
* editing/MarkupAccumulator.cpp:
(WebCore::elementCannotHaveEndTag): Made this a static local function.
(WebCore::shouldSelfClose): Ditto.
(WebCore::MarkupAccumulator::serializeNodesWithNamespaces):
(WebCore::MarkupAccumulator::startAppendingNode): Renamed from appendStartTag.
(WebCore::MarkupAccumulator::endAppendingNode): Renamed from appendEndElement and merged appendEndMarkup here.
(WebCore::MarkupAccumulator::appendTextSubstring): Deleted. This was only used by StyledMarkupAccumulator.
(WebCore::MarkupAccumulator::appendStringView): Added.
(WebCore::MarkupAccumulator::appendStartTag): Renamed from appendElement.
(WebCore::MarkupAccumulator::appendCloseTag):
(WebCore::MarkupAccumulator::appendNonElementNode): Renamed from appendStartMarkup. No longer serializes
an element. StyledMarkupAccumulator had a check before calling this function already so this clarifies
the purpose of this function.
(WebCore::MarkupAccumulator::appendElement): Deleted.
(WebCore::MarkupAccumulator::appendEndMarkup): Deleted. Merged into appendEndTag.
* editing/MarkupAccumulator.h:
(WebCore::MarkupAccumulator::appendNodeEnd): Renamed from appendEndTag.
* editing/markup.cpp:
(WebCore::StyledMarkupAccumulator::wrapWithNode):
(WebCore::StyledMarkupAccumulator::appendStartTag): Renamed from appendElement.
(WebCore::StyledMarkupAccumulator::appendEndTag): Renamed from appendEndElement.
(WebCore::StyledMarkupAccumulator::traverseNodesForSerialization):
(WebCore::StyledMarkupAccumulator::appendNodeToPreserveMSOList): Use String::substring directly instead of
going through appendTextSubstring which has been deleted.
* page/PageSerializer.cpp:
(WebCore::PageSerializer::SerializerMarkupAccumulator::appendStartTag): Renamed from appendElement.
(WebCore::PageSerializer::SerializerMarkupAccumulator::appendEndTag): Renamed from appendEndElement.
2018-10-10 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, attempt to fix the build with current SDKs.
* crypto/mac/CryptoKeyRSAMac.cpp:
(WebCore::getPublicKeyComponents):
2018-10-10 Brent Fulgham <bfulgham@apple.com>
Only report the supported WebGL version
https://bugs.webkit.org/show_bug.cgi?id=190434
<rdar://problem/45024677>
Reviewed by Dean Jackson.
Tested by fast/canvas/webgl/gl-getstring.html
Revise getParameter(gl.VERSION) to only return the WebGL version without the hardware and
driver-specific details available through the low-level OpenGL driver interface. These details
are not needed for WebGL use and expose information about the user's system that we do not
need to share.
* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::getParameter):
* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::getParameter):
2018-10-10 Yusuke Suzuki <yusukesuzuki@slowstart.org>
Unreviewed, add missing headers for inline functions
https://bugs.webkit.org/show_bug.cgi?id=190429
* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
2018-10-10 Tim Horton <timothy_horton@apple.com>
Share more WKShareSheet code between macOS and iOS, and fix a few bugs
https://bugs.webkit.org/show_bug.cgi?id=190420
Reviewed by Simon Fraser.
Test: fast/web-share/share-with-no-url.html
* page/Navigator.cpp:
(WebCore::Navigator::share):
* page/ShareData.h:
Make 'url' an optional field on ShareDataWithParsedURL, and don't
reject the share() promise if the URL is totally empty (as opposed to invalid).
2018-10-10 Devin Rousso <drousso@apple.com>
Web Inspector: notify the frontend when a canvas has started recording via console.record
https://bugs.webkit.org/show_bug.cgi?id=190306
Reviewed by Brian Burg.
Updated existing tests: LayoutTests/inspector/canvas/recording-2d.html
LayoutTests/inspector/canvas/recording-bitmaprenderer.html
LayoutTests/inspector/canvas/recording-webgl-snapshots.html
LayoutTests/inspector/canvas/recording-webgl.html
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::startRecording):
(WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas):
* inspector/InspectorCanvas.h:
Default `singleFrame` to false to better match the default behaviour of other `console`
functions (`profile` doesn't stop until `profileEnd` is called, so the same should be true
of `record` and `recordEnd`).
2018-10-10 Yusuke Suzuki <yusukesuzuki@slowstart.org>
[JSC] Rename createXXX to tryCreateXXX if it can return RefPtr
https://bugs.webkit.org/show_bug.cgi?id=190429
Reviewed by Saam Barati.
Use `tryCreate` or new `create`. If we use new `create`, we can use Ref<> and remove null check.
* Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp:
(WebCore::CDMSessionClearKey::cachedKeyForKeyID const):
* Modules/plugins/QuickTimePluginReplacement.mm:
(WebCore::jsValueWithDictionaryInContext):
* Modules/webaudio/AudioBuffer.cpp:
(WebCore::AudioBuffer::AudioBuffer):
(WebCore::AudioBuffer::getChannelData):
* Modules/webvr/VREyeParameters.cpp:
(WebCore::VREyeParameters::offset const):
* Modules/webvr/VRFrameData.cpp:
(WebCore::matrixToArray):
* Modules/webvr/VRPose.cpp:
(WebCore::optionalFloat3ToJSCArray):
(WebCore::VRPose::position const):
(WebCore::VRPose::orientation const):
* Modules/webvr/VRStageParameters.cpp:
(WebCore::VRStageParameters::sittingToStandingTransform const):
* bindings/js/ReadableStreamDefaultController.h:
(WebCore::ReadableStreamDefaultController::enqueue):
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneDeserializer::readArrayBufferView):
* crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:
(WebCore::CryptoKeyRSA::algorithm const):
* crypto/mac/CryptoKeyRSAMac.cpp:
(WebCore::CryptoKeyRSA::algorithm const):
* css/DOMMatrixReadOnly.cpp:
(WebCore::DOMMatrixReadOnly::toFloat32Array const):
(WebCore::DOMMatrixReadOnly::toFloat64Array const):
* css/FontFace.cpp:
(WebCore::FontFace::create):
* dom/TextEncoder.cpp:
(WebCore::TextEncoder::encode const):
* html/ImageData.cpp:
(WebCore::ImageData::ImageData):
* html/ImageData.h:
(WebCore::ImageData::data const):
(): Deleted.
* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::bufferData):
(WebCore::WebGL2RenderingContext::bufferSubData):
(WebCore::WebGL2RenderingContext::getInternalformatParameter):
(WebCore::WebGL2RenderingContext::getParameter):
* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::getParameter):
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::getUniform):
(WebCore::WebGLRenderingContextBase::getVertexAttrib):
(WebCore::WebGLRenderingContextBase::getWebGLFloatArrayParameter):
(WebCore::WebGLRenderingContextBase::getWebGLIntArrayParameter):
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::extractKeyURIKeyIDAndCertificateFromInitData):
* platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp:
(WebCore::CDMSessionAVFoundationCF::generateKeyRequest):
* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
(WebCore::AVFWrapper::shouldWaitForLoadingOfResource):
* platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:
(WebCore::CDMSessionAVContentKeySession::generateKeyRequest):
(WebCore::CDMSessionAVContentKeySession::releaseKeys):
(WebCore::CDMSessionAVContentKeySession::update):
(WebCore::CDMSessionAVContentKeySession::generateKeyReleaseMessage):
* platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:
(WebCore::CDMSessionAVFoundationObjC::generateKeyRequest):
* platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
(WebCore::CDMSessionAVStreamSession::generateKeyRequest):
(WebCore::CDMSessionAVStreamSession::releaseKeys):
(WebCore::CDMSessionAVStreamSession::generateKeyReleaseMessage):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
* platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
(WebCore::MediaSampleAVFObjC::getRGBAImageData const):
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):
* platform/graphics/cairo/ImageBufferCairo.cpp:
(WebCore::getImageData):
* platform/graphics/cg/ImageBufferDataCG.cpp:
(WebCore::ImageBufferData::getData const):
* platform/graphics/filters/FEGaussianBlur.cpp:
(WebCore::FEGaussianBlur::platformApplySoftware):
* platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::unmultipliedResult):
(WebCore::FilterEffect::premultipliedResult):
(WebCore::FilterEffect::copyUnmultipliedResult):
(WebCore::FilterEffect::copyPremultipliedResult):
(WebCore::FilterEffect::createUnmultipliedImageResult):
(WebCore::FilterEffect::createPremultipliedImageResult):
* platform/graphics/win/ImageBufferDataDirect2D.cpp:
(WebCore::ImageBufferData::getData const):
* platform/mac/SerializedPlatformRepresentationMac.mm:
(WebCore::jsValueWithDictionaryInContext):
* platform/mock/mediasource/MockBox.cpp:
(WebCore::MockBox::peekType):
(WebCore::MockBox::peekLength):
(WebCore::MockTrackBox::MockTrackBox):
(WebCore::MockInitializationBox::MockInitializationBox):
(WebCore::MockSampleBox::MockSampleBox):
* rendering/shapes/Shape.cpp:
(WebCore::Shape::createRasterShape):
* testing/LegacyMockCDM.cpp:
(WebCore::initDataPrefix):
(WebCore::keyPrefix):
(WebCore::keyRequest):
2018-10-10 Daniel Bates <dabates@apple.com>
[iOS] Compare input string to UIKeyInput constants using string comparison instead of pointer comparison
https://bugs.webkit.org/show_bug.cgi?id=190432
Reviewed by Tim Horton.
Pointer comparision is brittle. We should be more forgiving and perform string comparision
of an input string to a UIKeyInput constant.
* platform/ios/WebEvent.mm:
(normalizedStringWithAppKitCompatibilityMapping):
2018-10-10 Chris Dumez <cdumez@apple.com>
Unreviewed, rolling out r236802.
Working on getting the HTML spec updated instead
(https://github.com/whatwg/html/pull/4079)
Reverted changeset:
"Passing noopener=NOOPENER to window.open() should cause the
new window to not have an opener"
https://bugs.webkit.org/show_bug.cgi?id=190251
https://trac.webkit.org/changeset/236802
2018-10-10 Yusuke Suzuki <yusukesuzuki@slowstart.org>
XMLHttpRequest should use reportExtraMemoryAllocated/reportExtraMemoryVisited instead of deprecatedReportExtraMemory
https://bugs.webkit.org/show_bug.cgi?id=190279
Reviewed by Ryosuke Niwa.
This patch switches deprecatedReportExtraMemory to reportExtraMemoryAllocated/reportExtraMemoryVisited
in XMLHttpRequest. We report extra memory allocation when the readyState becomes DONE. And memoryCost
function returns the memory cost which is based on the readyState and m_responseBuilder.
We annotate XMLHttpRequest with ReportExtraMemoryCost to use reportExtraMemoryVisited automatically with
memoryCost() function.
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::changeState):
(WebCore::XMLHttpRequest::abort):
(WebCore::XMLHttpRequest::internalAbort):
(WebCore::XMLHttpRequest::networkErrorTimerFired):
(WebCore::XMLHttpRequest::memoryCost const):
(WebCore::XMLHttpRequest::didFinishLoading):
(WebCore::XMLHttpRequest::didReachTimeout):
(WebCore::XMLHttpRequest::dropProtection): Deleted.
* xml/XMLHttpRequest.h:
* xml/XMLHttpRequest.idl:
2018-10-09 Antoine Quint <graouts@apple.com>
Remove the frames() timing function
https://bugs.webkit.org/show_bug.cgi?id=190034
<rdar://problem/44827544>
Reviewed by Dean Jackson.
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::createTimingFunctionValue):
* css/CSSTimingFunctionValue.cpp:
(WebCore::CSSFramesTimingFunctionValue::customCSSText const): Deleted.
(WebCore::CSSFramesTimingFunctionValue::equals const): Deleted.
* css/CSSTimingFunctionValue.h:
* css/CSSToStyleMap.cpp:
(WebCore::CSSToStyleMap::mapAnimationTimingFunction):
* css/CSSValue.cpp:
(WebCore::CSSValue::equals const):
(WebCore::CSSValue::cssText const):
(WebCore::CSSValue::destroy):
* css/CSSValue.h:
(WebCore::CSSValue::isStepsTimingFunctionValue const):
(WebCore::CSSValue::isFramesTimingFunctionValue const): Deleted.
* css/CSSValueKeywords.in:
* css/parser/CSSPropertyParser.cpp:
(WebCore::consumeAnimationTimingFunction):
(WebCore::consumeFrames): Deleted.
* platform/animation/TimingFunction.cpp:
(WebCore::operator<<):
(WebCore::TimingFunction::transformTime const):
(WebCore::TimingFunction::createFromCSSValue):
* platform/animation/TimingFunction.h:
(WebCore::TimingFunction::isStepsTimingFunction const):
(WebCore::TimingFunction::isFramesTimingFunction const): Deleted.
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::animationCanBeAccelerated const):
(WebCore::animationHasFramesTimingFunction): Deleted.
2018-10-09 Devin Rousso <drousso@apple.com>
Web Inspector: show redirect requests in Network and Timelines tabs
https://bugs.webkit.org/show_bug.cgi?id=150005
<rdar://problem/5378164>
Reviewed by Joseph Pecoraro.
Updated existing test http/tests/inspector/network/resource-timing.html.
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::buildObjectForTiming):
(WebCore::InspectorNetworkAgent::didFinishLoading):
Add missing fields for `Network.types.ResourceTiming`.
2018-10-09 Said Abou-Hallawa <sabouhallawa@apple.com>
REGRESSION(r234620): SVGLangSpace::svgAttributeChanged() should invalidate the renderer of the SVGGeometryElement descendant only
https://bugs.webkit.org/show_bug.cgi?id=190411
Reviewed by Simon Fraser.
Test: svg/dynamic-updates/SVGStopElement-dom-xml-lang-attrr.html
When changing the attributes of the SVGLangSpace, we should invalidate
the renderer of the SVGGeometryElement descendant only. Renderer of other
elements, like SVGStopElement, should not be invalidated because they do
not have geometry and they can be used as resources for drawing another
SVGGeometryElement.
* svg/SVGElement.h:
(WebCore::SVGElement::isSVGGeometryElement const):
* svg/SVGGeometryElement.h:
(isType):
* svg/SVGLangSpace.cpp:
(WebCore::SVGLangSpace::svgAttributeChanged):
2018-10-09 Chris Dumez <cdumez@apple.com>
Anchor target should be ignored on activation when the download attribute is set
https://bugs.webkit.org/show_bug.cgi?id=190408
Reviewed by Geoffrey Garen.
Anchor target should be ignored on activation when the download attribute is set:
- https://html.spec.whatwg.org/#the-a-element:downloading-hyperlinks-2
When the download attribute is set, we should use the "download the hyperlink" algorithm [1]
instead of the "follow the hyperlink" [2] algorithm.
Note that the "download the hyperlink" triggers a download and ignores the target attribute
entirely.
This is important as an anchor element with target=_blank and the download attribute set may
fail because of Safari's popup blocker if we do not disregard the anchor target.
[1] https://html.spec.whatwg.org/#downloading-hyperlinks
[2] https://html.spec.whatwg.org/#following-hyperlinks-2
Tests: fast/dom/HTMLAnchorElement/anchor-file-blob-download-blank-base-target-popup-not-allowed.html
fast/dom/HTMLAnchorElement/anchor-file-blob-download-blank-target-popup-not-allowed.html
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadURL):
2018-10-09 Michael Catanzaro <mcatanzaro@igalia.com>
[WPE][GTK] Complex text crashes with harfbuzz 1.8.8
https://bugs.webkit.org/show_bug.cgi?id=190409
Reviewed by Žan Doberšek.
We discovered that harfbuzz 1.8.8 breaks WebKit by changing the ownership semantics of
hb_icu_get_unicode_funcs() from (transfer full) to (transfer none). Our code was actually
expecting (transfer none), so it's not immediately clear to me why it's crashing now, but
doesn't matter as Behdad recommends removing this line of code because it hasn't been
been needed for many years.
This should be covered by all our complex text tests if the bots were upgraded to the newer
harfbuzz.
* platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:
(WebCore::ComplexTextController::collectComplexTextRunsForCharacters):
2018-10-09 Daniel Bates <dabates@apple.com>
[iOS] Cleanup EventHandler::passSubframeEventToSubframe()
https://bugs.webkit.org/show_bug.cgi?id=190390
Reviewed by Wenson Hsieh.
Unindent case statements in switch block and use more auto.
* page/ios/EventHandlerIOS.mm:
(WebCore::EventHandler::passSubframeEventToSubframe):
2018-10-09 Daniel Bates <dabates@apple.com>
Cleanup WebEvent.mm
https://bugs.webkit.org/show_bug.cgi?id=190391
Reviewed by Wenson Hsieh.
Unindent case statements in switch blocks.
* platform/ios/WebEvent.mm:
(-[WebEvent _typeDescription]):
(-[WebEvent _modiferFlagsDescription]):
(-[WebEvent _touchPhaseDescription:]):
(-[WebEvent _eventDescription]):
2018-10-09 Oriol Brufau <obrufau@igalia.com>
Resolve inset properties to computed style when there is overconstraintment
https://bugs.webkit.org/show_bug.cgi?id=188711
Reviewed by Manuel Rego Casasnovas.
This patch makes WebKit behave closer to Blink. Specifically,
- In overconstrained relative or absolute positioning, inset properties resolve
to the computed value (absolutizing percentages) instead of to the used value.
- In fixed positioning, the resolved value of non-'auto' values is no longer
increased by the border of the containg block.
This patch can slighlty alter the resolved value if it's a long decimal number.
Tests: imported/w3c/web-platform-tests/css/cssom/getComputedStyle-insets-absolute.html
imported/w3c/web-platform-tests/css/cssom/getComputedStyle-insets-fixed.html
imported/w3c/web-platform-tests/css/cssom/getComputedStyle-insets-nobox.html
imported/w3c/web-platform-tests/css/cssom/getComputedStyle-insets-relative.html
imported/w3c/web-platform-tests/css/cssom/getComputedStyle-insets-static.html
imported/w3c/web-platform-tests/css/cssom/getComputedStyle-insets-sticky.html
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::positionOffsetValue):
* rendering/RenderBox.h:
2018-10-09 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthN] Import CTAP HID message and packet structure from Chromium
https://bugs.webkit.org/show_bug.cgi?id=189289
<rdar://problem/44120310>
Reviewed by Brent Fulgham.
This patch imports CTAP HID message and packet structure:
https://fidoalliance.org/specs/fido-v2.0-ps-20170927/fido-client-to-authenticator-protocol-v2.0-ps-20170927.html#message-and-packet-structure
from Chromium. With this library, WebKit can now turn binaries into messages that CTAP devices could understand.
This patch contains the following Chromium files and modifies them to fit into WebKit:
https://cs.chromium.org/chromium/src/device/fido/fido_constants.cc?l=1&rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
https://cs.chromium.org/chromium/src/device/fido/fido_constants.h?l=1&rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_message.cc?l=1&rcl=387f3725de2842e0e6b7175a9b2ed472b0cf781a
https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_message.h?rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_packet.cc?rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_packet.h?rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_message_unittest.cc?rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
Covered by API tests.
* Modules/webauthn/fido/FidoConstants.cpp: Added.
(fido::isFidoHidDeviceCommand):
* Modules/webauthn/fido/FidoConstants.h: Added.
* Modules/webauthn/fido/FidoHidMessage.cpp: Added.
(fido::FidoHidMessage::create):
(fido::FidoHidMessage::createFromSerializedData):
(fido::FidoHidMessage::messageComplete const):
(fido::FidoHidMessage::getMessagePayload const):
(fido::FidoHidMessage::popNextPacket):
(fido::FidoHidMessage::addContinuationPacket):
(fido::FidoHidMessage::numPackets const):
(fido::FidoHidMessage::FidoHidMessage):
* Modules/webauthn/fido/FidoHidMessage.h: Added.
* Modules/webauthn/fido/FidoHidPacket.cpp: Added.
(fido::FidoHidPacket::FidoHidPacket):
(fido::FidoHidInitPacket::createFromSerializedData):
(fido::FidoHidInitPacket::FidoHidInitPacket):
(fido::FidoHidInitPacket::getSerializedData const):
(fido::FidoHidContinuationPacket::createFromSerializedData):
(fido::FidoHidContinuationPacket::FidoHidContinuationPacket):
(fido::FidoHidContinuationPacket::getSerializedData const):
* Modules/webauthn/fido/FidoHidPacket.h: Added.
* Modules/webauthn/fido/FidoParsingUtils.cpp: Added.
(fido::getInitPacketData):
(fido::getContinuationPacketData):
* Modules/webauthn/fido/FidoParsingUtils.h: Added.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2018-10-09 Carlos Eduardo Ramalho <cadubentzen@gmail.com>
[CoordGraphics] Remove the 'previous backing store' logic
https://bugs.webkit.org/show_bug.cgi?id=188838
Reviewed by Žan Doberšek.
Remove previousBackingStore from LayerState, since it's not needed anymore.
When there is scale adjustment, we now simply discard mainBackingStore and
recreate a new one.
No new tests required.
* platform/graphics/nicosia/texmap/NicosiaBackingStoreTextureMapperImpl.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):
(WebCore::CoordinatedGraphicsLayer::updateContentBuffers):
(WebCore::CoordinatedGraphicsLayer::purgeBackingStores):
2018-10-09 Antti Koivisto <antti@apple.com>
[PSON] Prewarm system UI font
https://bugs.webkit.org/show_bug.cgi?id=190397
Reviewed by Geoffrey Garen.
Cache system UI font fallbacks. Almost every web process needs these.
* page/ProcessWarming.cpp:
(WebCore::ProcessWarming::prewarmGlobally):
2018-10-09 Chris Dumez <cdumez@apple.com>
REGRESSION (Safari 12): Download of Blob URL fails
https://bugs.webkit.org/show_bug.cgi?id=190351
<rdar://problem/45091181>
Reviewed by Geoffrey Garen.
When using both the download attribute and target="_blank" on an anchor element, we would
mistakenly drop the download attribute after the "new window" policy decision has been made.
As a result, we would try to load the blob instead of downloading it.
Test: fast/dom/HTMLAnchorElement/anchor-file-blob-download-blank-target.html
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::continueLoadAfterNewWindowPolicy):
2018-10-09 Alicia Boya García <aboya@igalia.com>
[MSE][GStreamer] r236735 has some dead ASSERTs that need to be moved
https://bugs.webkit.org/show_bug.cgi?id=190394
Reviewed by Xabier Rodriguez-Calvar.
* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::createOptionalParserForFormat):
2018-10-09 Chris Dumez <cdumez@apple.com>
Have DOMWindow get its frame from its document
https://bugs.webkit.org/show_bug.cgi?id=190389
Reviewed by Geoff Garen.
Have DOMWindow get its frame from its document instead of having its own m_frame which can potentially
be out-of-sync.
* dom/Document.cpp:
(WebCore::Document::frameDestroyed):
(WebCore::Document::willDetachPage):
(WebCore::Document::attachToCachedFrame):
* dom/Document.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::allowPopUp):
(WebCore::ContextDestructionObserver):
(WebCore::DOMWindow::didSecureTransitionTo):
(WebCore::DOMWindow::frameDestroyed):
(WebCore::DOMWindow::willDetachDocumentFromFrame):
(WebCore::DOMWindow::reconnectDOMWindowProperties):
(WebCore::DOMWindow::isCurrentlyDisplayedInFrame const):
(WebCore::DOMWindow::collectMatchingElementsInFlatTree):
(WebCore::DOMWindow::matchingElementInFlatTree):
(WebCore::DOMWindow::orientation const):
(WebCore::DOMWindow::console const):
(WebCore::DOMWindow::shouldHaveWebKitNamespaceForWorld):
(WebCore::DOMWindow::webkitNamespace):
(WebCore::DOMWindow::postMessage):
(WebCore::DOMWindow::postMessageTimerFired):
(WebCore::DOMWindow::frameElement const):
(WebCore::DOMWindow::focus):
(WebCore::DOMWindow::blur):
(WebCore::DOMWindow::close):
(WebCore::DOMWindow::print):
(WebCore::DOMWindow::stop):
(WebCore::DOMWindow::alert):
(WebCore::DOMWindow::confirm):
(WebCore::DOMWindow::prompt):
(WebCore::DOMWindow::find const):
(WebCore::DOMWindow::outerHeight const):
(WebCore::DOMWindow::outerWidth const):
(WebCore::DOMWindow::innerHeight const):
(WebCore::DOMWindow::innerWidth const):
(WebCore::DOMWindow::screenX const):
(WebCore::DOMWindow::screenY const):
(WebCore::DOMWindow::scrollX const):
(WebCore::DOMWindow::scrollY const):
(WebCore::DOMWindow::closed const):
(WebCore::DOMWindow::length const):
(WebCore::DOMWindow::name const):
(WebCore::DOMWindow::setName):
(WebCore::DOMWindow::setStatus):
(WebCore::DOMWindow::setDefaultStatus):
(WebCore::DOMWindow::self const):
(WebCore::DOMWindow::opener const):
(WebCore::DOMWindow::disownOpener):
(WebCore::DOMWindow::parent const):
(WebCore::DOMWindow::top const):
(WebCore::DOMWindow::getMatchedCSSRules const):
(WebCore::DOMWindow::devicePixelRatio const):
(WebCore::DOMWindow::scrollBy const):
(WebCore::DOMWindow::scrollTo const):
(WebCore::DOMWindow::allowedToChangeWindowGeometry const):
(WebCore::DOMWindow::moveBy const):
(WebCore::DOMWindow::moveTo const):
(WebCore::DOMWindow::resizeBy const):
(WebCore::DOMWindow::resizeTo const):
(WebCore::DOMWindow::clearTimeout):
(WebCore::DOMWindow::isSameSecurityOriginAsMainFrame const):
(WebCore::DOMWindow::finishedLoading):
(WebCore::DOMWindow::setLocation):
(WebCore::DOMWindow::open):
(WebCore::DOMWindow::showModalDialog):
(WebCore::DOMWindow::frame const):
(WebCore::FrameDestructionObserver): Deleted.
(WebCore::DOMWindow::willDetachPage): Deleted.
(WebCore::DOMWindow::detachFromFrame): Deleted.
(WebCore::DOMWindow::attachToFrame): Deleted.
* page/DOMWindow.h:
2018-10-09 Jer Noble <jer.noble@apple.com>
ISOTrackEncryptionBox returns incorrect defaultKeyID
https://bugs.webkit.org/show_bug.cgi?id=190368
Reviewed by Eric Carlson.
Test: TestWebKitAPI.ISOBox.ISOProtectionSchemeInfoBox
ISOTrackEncryptionBox::parse() increments the data offset by an incorrect amount.
Drive-by fix: add EXPORT macros to all the ISO box classes so that tests can be written in TestWebKitAPI.
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/iso/ISOBox.h:
* platform/graphics/iso/ISOOriginalFormatBox.h:
* platform/graphics/iso/ISOProtectionSchemeInfoBox.h:
* platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.h:
* platform/graphics/iso/ISOSchemeInformationBox.h:
* platform/graphics/iso/ISOSchemeTypeBox.h:
* platform/graphics/iso/ISOTrackEncryptionBox.cpp:
(WebCore::ISOTrackEncryptionBox::parse):
* platform/graphics/iso/ISOTrackEncryptionBox.h:
2018-10-09 Youenn Fablet <youenn@apple.com>
Add support for IceCandidate stats
https://bugs.webkit.org/show_bug.cgi?id=190329
Reviewed by Eric Carlson.
Convert IceCandidate stats gathered by libwebrtc.
Since networkType might be sensitive information, we currently do not expose it.
We do not expose address either if it is a host or prflx candidate.
Test: webrtc/candidate-stats.html
* Modules/mediastream/RTCStatsReport.h:
* Modules/mediastream/RTCStatsReport.idl:
* Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.cpp:
(WebCore::iceCandidateState):
(WebCore::fillRTCIceCandidateStats):
(WebCore::LibWebRTCStatsCollector::OnStatsDelivered):
2018-10-09 Philippe Normand <pnormand@igalia.com>
[GStreamer] Stealing cross-origin video pixel with HLS
https://bugs.webkit.org/show_bug.cgi?id=190003
Reviewed by Xabier Rodriguez-Calvar.
Report the SecurityOrigin of downloaded adaptivedemux (HLS, DASH,
SmoothStreaming) fragments as tainted if their origin differs from
the manifest SecurityOrigin. SecurityOrigins are stored in the
CachedResourceStreamingClient implemented in the internal
GStreamer HTTP(S) source element.
The implementation is not ideal yet because the fragments download
is performed by the WebProcess, until bug 189967 is fixed. When
this bug is fixed, the m_hasTaintedOrigin member variable should
be removed and all checks be done unconditionally to the
webkithttpsrc element which will manage the download of the
manifests and fragments.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::loadFull): Reset the m_hasTaintedOrigin value.
(WebCore::MediaPlayerPrivateGStreamer::handleMessage): Get the
fragment URL from the adaptivedemux stats message and check if its
origin is tainted.
(WebCore::MediaPlayerPrivateGStreamer::wouldTaintOrigin const):
Initial implementation by checking the m_hasTaintedOrigin member
variable value.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(CachedResourceStreamingClient::responseReceived): Store the
resource origin internally so it can be checked later on by
webKitSrtcWouldTaintOrigin().
(webKitSrcWouldTaintOrigin): Check given origin against cached
origins. This implementation is similar to Cocoa's
WebCoreNSURLSession implementation.
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.h:
2018-10-09 Antti Koivisto <antti@apple.com>
Prewarm FontDatabase on process swap
https://bugs.webkit.org/show_bug.cgi?id=190312
Reviewed by Chris Dumez.
Implement basic prewarming of FontDatabase. When the domain of the first page load on
a new process is known we pass the list of font families previous used by that domain to the
process. This is used to prewarm CoreText font database. Initialization (which involves lots of
blocking IPC) happens outside the main thread so the fonts are ready to use when needed.
* WebCore.xcodeproj/project.pbxproj:
* page/PrewarmInformation.h: Added.
(WebCore::PrewarmInformation::encode const):
(WebCore::PrewarmInformation::decode):
Add data structure for prewarm information with encode/decode support.
* page/ProcessWarming.cpp:
(WebCore::ProcessWarming::collectPrewarmInformation):
(WebCore::ProcessWarming::prewarmWithInformation):
Prewarming interface to be used from WebKit.
* page/ProcessWarming.h:
* platform/graphics/FontCache.cpp:
(WebCore::FontCache::collectPrewarmInformation const):
(WebCore::FontCache::prewarm):
* platform/graphics/FontCache.h:
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontDatabase::collectionForFamily):
(WebCore::FontDatabase::fontForPostScriptName):
(WebCore::FontDatabase::clear):
Add mutex for thread safe access.
(WebCore::FontCache::createFontPlatformData):
(WebCore::FontCache::collectPrewarmInformation const):
Collect font families seen by this process.
(WebCore::FontCache::prewarm):
Prewarm FontDatabase in a dispatch queue.
2018-10-08 Wenson Hsieh <wenson_hsieh@apple.com>
[Cocoa] [WK2] Add support for text alignment and text lists in font attributes
https://bugs.webkit.org/show_bug.cgi?id=190342
<rdar://problem/44767118>
Reviewed by Tim Horton.
Adds support for computing and encoding information about text alignment and enclosing list elements in the font
attributes dictionary, exposed to the UI delegate on Cocoa platforms. This is exposed through NSParagraphStyle,
which contains properties for both `NSTextAlignment` and an array of enclosing `NSTextList` objects.
Test: FontAttributes.NestedTextListsWithHorizontalAlignment
FontAttributes.FontAttributesAfterChangingSelection
* editing/Editor.cpp:
(WebCore::editableTextListsAtPositionInDescendingOrder):
Add a helper function to ascend the DOM, starting at the given position, in search of enclosing list elements.
For each enclosing list element we find within the scope of the editable root, we create a `TextList`
representing the list element.
(WebCore::Editor::fontAttributesAtSelectionStart const):
Compute and set enclosing text lists and text alignment. For text alignment, we convert the initial text-align
value, `start`, to NSTextAlignmentNatural (the default text alignment type on Cocoa platforms); other values
then map to Left, Right, Center, and Justified as expected (taking direction into account).
* editing/FontAttributes.h:
(WebCore::TextList::encode const):
(WebCore::TextList::decode):
Introduce TextList, a platform-agnostic representation of an unordered or ordered list. On Cocoa, this can be
used to construct a corresponding NSTextList.
* editing/cocoa/FontAttributesCocoa.mm:
(WebCore::cocoaTextListMarkerName):
Attempt to map a WebCore list style type to a `NSTextListMarker*` constant. While most of the Cocoa marker
formats have a corresponding web-exposed list style type, many web-exposed types have no Cocoa equivalent; as
such, fall back to default marker formats: "{disc}" for unordered lists and "{decimal}" for ordered lists.
(WebCore::TextList::createTextList const):
(WebCore::FontAttributes::createDictionary const):
Include an NSParagraphStyle in the dictionary of font attributes that includes information about text alignment
and enclosing text lists (per Cocoa convention, in order from outermost list to innermost list).
2018-10-08 Justin Fan <justin_fan@apple.com>
WebGPU: Rename old WebGPU prototype to WebMetal
https://bugs.webkit.org/show_bug.cgi?id=190325
<rdar://problem/44990443>
Reviewed by Dean Jackson.
Existing WebGPU tests also renamed to reflect WebGPU -> WebMetal change.
Rename WebGPU prototype files to WebMetal in preparation for implementing the new (Oct 2018) WebGPU interface.
* CMakeLists.txt:
* Configurations/FeatureDefines.xcconfig:
* DerivedSources.make:
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSWebMetalRenderPassAttachmentDescriptorCustom.cpp: Renamed from Source/WebCore/bindings/js/JSWebGPURenderPassAttachmentDescriptorCustom.cpp.
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSWebMetalRenderingContextCustom.cpp: Renamed from Source/WebCore/bindings/js/JSWebGPURenderingContextCustom.cpp.
(WebCore::JSWebMetalRenderingContext::visitAdditionalChildren):
* bindings/js/WebCoreBuiltinNames.h:
* dom/Document.cpp:
(WebCore::Document::getCSSCanvasContext):
* dom/Document.h:
* dom/Document.idl:
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::getContext):
(WebCore::HTMLCanvasElement::isWebMetalType):
(WebCore::HTMLCanvasElement::createContextWebMetal):
(WebCore::HTMLCanvasElement::getContextWebMetal):
(WebCore::HTMLCanvasElement::isWebGPUType): Deleted.
(WebCore::HTMLCanvasElement::createContextWebGPU): Deleted.
(WebCore::HTMLCanvasElement::getContextWebGPU): Deleted.
* html/HTMLCanvasElement.h:
* html/HTMLCanvasElement.idl:
* html/canvas/CanvasRenderingContext.h:
(WebCore::CanvasRenderingContext::isWebMetal const):
(WebCore::CanvasRenderingContext::isWebGPU const): Deleted.
* html/canvas/WebGPURenderingContext.cpp: Removed.
* html/canvas/WebMetalBuffer.cpp: Renamed from Source/WebCore/html/canvas/WebGPUBuffer.cpp.
(WebCore::WebMetalBuffer::create):
(WebCore::WebMetalBuffer::WebMetalBuffer):
* html/canvas/WebMetalBuffer.h: Renamed from Source/WebCore/html/canvas/WebGPUBuffer.h.
* html/canvas/WebMetalBuffer.idl: Renamed from Source/WebCore/html/canvas/WebGPUBuffer.idl.
* html/canvas/WebMetalCommandBuffer.cpp: Renamed from Source/WebCore/html/canvas/WebGPUCommandBuffer.cpp.
(WebCore::WebMetalCommandBuffer::create):
(WebCore::WebMetalCommandBuffer::WebMetalCommandBuffer):
(WebCore::WebMetalCommandBuffer::~WebMetalCommandBuffer):
(WebCore::WebMetalCommandBuffer::commit):
(WebCore::WebMetalCommandBuffer::presentDrawable):
(WebCore::WebMetalCommandBuffer::createRenderCommandEncoderWithDescriptor):
(WebCore::WebMetalCommandBuffer::createComputeCommandEncoder):
(WebCore::WebMetalCommandBuffer::completed):
* html/canvas/WebMetalCommandBuffer.h: Renamed from Source/WebCore/html/canvas/WebGPUCommandBuffer.h.
* html/canvas/WebMetalCommandBuffer.idl: Renamed from Source/WebCore/html/canvas/WebGPUCommandBuffer.idl.
* html/canvas/WebMetalCommandQueue.cpp: Renamed from Source/WebCore/html/canvas/WebGPUCommandQueue.cpp.
(WebCore::WebMetalCommandQueue::create):
(WebCore::WebMetalCommandQueue::WebMetalCommandQueue):
(WebCore::WebMetalCommandQueue::createCommandBuffer):
* html/canvas/WebMetalCommandQueue.h: Renamed from Source/WebCore/html/canvas/WebGPUCommandQueue.h.
* html/canvas/WebMetalCommandQueue.idl: Renamed from Source/WebCore/html/canvas/WebGPUCommandQueue.idl.
* html/canvas/WebMetalComputeCommandEncoder.cpp: Renamed from Source/WebCore/html/canvas/WebGPUComputeCommandEncoder.cpp.
(WebCore::GPUSizeMake):
(WebCore::WebMetalComputeCommandEncoder::create):
(WebCore::WebMetalComputeCommandEncoder::WebMetalComputeCommandEncoder):
(WebCore::WebMetalComputeCommandEncoder::setComputePipelineState):
(WebCore::WebMetalComputeCommandEncoder::setBuffer):
(WebCore::WebMetalComputeCommandEncoder::dispatch):
(WebCore::WebMetalComputeCommandEncoder::endEncoding):
* html/canvas/WebMetalComputeCommandEncoder.h: Renamed from Source/WebCore/html/canvas/WebGPUComputeCommandEncoder.h.
* html/canvas/WebMetalComputeCommandEncoder.idl: Renamed from Source/WebCore/html/canvas/WebGPUComputeCommandEncoder.idl.
* html/canvas/WebMetalComputePipelineState.cpp: Renamed from Source/WebCore/html/canvas/WebGPUComputePipelineState.cpp.
(WebCore::WebMetalComputePipelineState::create):
(WebCore::WebMetalComputePipelineState::WebMetalComputePipelineState):
* html/canvas/WebMetalComputePipelineState.h: Renamed from Source/WebCore/html/canvas/WebGPUComputePipelineState.h.
* html/canvas/WebMetalComputePipelineState.idl: Renamed from Source/WebCore/html/canvas/WebGPUComputePipelineState.idl.
* html/canvas/WebMetalDepthStencilDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilDescriptor.cpp.
(WebCore::WebMetalDepthStencilDescriptor::create):
(WebCore::WebMetalDepthStencilDescriptor::depthWriteEnabled const):
(WebCore::WebMetalDepthStencilDescriptor::setDepthWriteEnabled):
(WebCore::WebMetalDepthStencilDescriptor::depthCompareFunction const):
(WebCore::WebMetalDepthStencilDescriptor::setDepthCompareFunction):
* html/canvas/WebMetalDepthStencilDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilDescriptor.h.
* html/canvas/WebMetalDepthStencilDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilDescriptor.idl.
* html/canvas/WebMetalDepthStencilState.cpp: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilState.cpp.
(WebCore::WebMetalDepthStencilState::create):
(WebCore::WebMetalDepthStencilState::WebMetalDepthStencilState):
(WebCore::WebMetalDepthStencilState::label const):
(WebCore::WebMetalDepthStencilState::setLabel):
* html/canvas/WebMetalDepthStencilState.h: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilState.h.
* html/canvas/WebMetalDepthStencilState.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineState.idl.
* html/canvas/WebMetalDrawable.cpp: Renamed from Source/WebCore/html/canvas/WebGPUDrawable.cpp.
(WebCore::WebMetalDrawable::create):
(WebCore::WebMetalDrawable::WebMetalDrawable):
* html/canvas/WebMetalDrawable.h: Renamed from Source/WebCore/html/canvas/WebGPUDrawable.h.
(WebCore::WebMetalDrawable::texture):
* html/canvas/WebMetalDrawable.idl: Renamed from Source/WebCore/html/canvas/WebGPUDrawable.idl.
* html/canvas/WebMetalEnums.cpp: Renamed from Source/WebCore/html/canvas/WebGPUEnums.cpp.
(WebCore::toWebMetalCompareFunction):
(WebCore::web3DCompareFunctionName):
(WebCore::toGPUCompareFunction):
* html/canvas/WebMetalEnums.h: Renamed from Source/WebCore/html/canvas/WebGPUEnums.h.
* html/canvas/WebMetalEnums.idl: Renamed from Source/WebCore/html/canvas/WebGPUEnums.idl.
* html/canvas/WebMetalFunction.cpp: Renamed from Source/WebCore/html/canvas/WebGPUFunction.cpp.
(WebCore::WebMetalFunction::create):
(WebCore::WebMetalFunction::WebMetalFunction):
* html/canvas/WebMetalFunction.h: Renamed from Source/WebCore/html/canvas/WebGPUFunction.h.
* html/canvas/WebMetalFunction.idl: Renamed from Source/WebCore/html/canvas/WebGPUFunction.idl.
* html/canvas/WebMetalLibrary.cpp: Renamed from Source/WebCore/html/canvas/WebGPULibrary.cpp.
(WebCore::WebMetalLibrary::create):
(WebCore::WebMetalLibrary::WebMetalLibrary):
(WebCore::WebMetalLibrary::functionNames const):
(WebCore::WebMetalLibrary::functionWithName const):
* html/canvas/WebMetalLibrary.h: Renamed from Source/WebCore/html/canvas/WebGPULibrary.h.
* html/canvas/WebMetalLibrary.idl: Renamed from Source/WebCore/html/canvas/WebGPULibrary.idl.
* html/canvas/WebMetalRenderCommandEncoder.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderCommandEncoder.cpp.
(WebCore::WebMetalRenderCommandEncoder::create):
(WebCore::WebMetalRenderCommandEncoder::WebMetalRenderCommandEncoder):
(WebCore::WebMetalRenderCommandEncoder::setRenderPipelineState):
(WebCore::WebMetalRenderCommandEncoder::setDepthStencilState):
(WebCore::WebMetalRenderCommandEncoder::setVertexBuffer):
(WebCore::WebMetalRenderCommandEncoder::setFragmentBuffer):
(WebCore::WebMetalRenderCommandEncoder::drawPrimitives):
(WebCore::WebMetalRenderCommandEncoder::endEncoding):
* html/canvas/WebMetalRenderCommandEncoder.h: Renamed from Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h.
* html/canvas/WebMetalRenderCommandEncoder.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderCommandEncoder.idl.
* html/canvas/WebMetalRenderPassAttachmentDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPassAttachmentDescriptor.cpp.
(WebCore::WebMetalRenderPassAttachmentDescriptor::WebMetalRenderPassAttachmentDescriptor):
(WebCore::WebMetalRenderPassAttachmentDescriptor::loadAction const):
(WebCore::WebMetalRenderPassAttachmentDescriptor::setLoadAction):
(WebCore::WebMetalRenderPassAttachmentDescriptor::storeAction const):
(WebCore::WebMetalRenderPassAttachmentDescriptor::setStoreAction):
(WebCore::WebMetalRenderPassAttachmentDescriptor::texture const):
(WebCore::WebMetalRenderPassAttachmentDescriptor::setTexture):
* html/canvas/WebMetalRenderPassAttachmentDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPassAttachmentDescriptor.h.
* html/canvas/WebMetalRenderPassAttachmentDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPassAttachmentDescriptor.idl.
* html/canvas/WebMetalRenderPassColorAttachmentDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPassColorAttachmentDescriptor.cpp.
(WebCore::WebMetalRenderPassColorAttachmentDescriptor::create):
(WebCore::WebMetalRenderPassColorAttachmentDescriptor::WebMetalRenderPassColorAttachmentDescriptor):
(WebCore::WebMetalRenderPassColorAttachmentDescriptor::descriptor const):
(WebCore::WebMetalRenderPassColorAttachmentDescriptor::clearColor const):
(WebCore::WebMetalRenderPassColorAttachmentDescriptor::setClearColor):
* html/canvas/WebMetalRenderPassColorAttachmentDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPassColorAttachmentDescriptor.h.
* html/canvas/WebMetalRenderPassColorAttachmentDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPassColorAttachmentDescriptor.idl.
* html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDepthAttachmentDescriptor.cpp.
(WebCore::WebMetalRenderPassDepthAttachmentDescriptor::create):
(WebCore::WebMetalRenderPassDepthAttachmentDescriptor::WebMetalRenderPassDepthAttachmentDescriptor):
(WebCore::WebMetalRenderPassDepthAttachmentDescriptor::clearDepth const):
(WebCore::WebMetalRenderPassDepthAttachmentDescriptor::setClearDepth):
(WebCore::WebMetalRenderPassDepthAttachmentDescriptor::descriptor const):
* html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDepthAttachmentDescriptor.h.
* html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDepthAttachmentDescriptor.idl.
* html/canvas/WebMetalRenderPassDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDescriptor.cpp.
(WebCore::WebMetalRenderPassDescriptor::create):
(WebCore::WebMetalRenderPassDescriptor::depthAttachment):
(WebCore::WebMetalRenderPassDescriptor::colorAttachments):
* html/canvas/WebMetalRenderPassDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDescriptor.h.
* html/canvas/WebMetalRenderPassDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDescriptor.idl.
* html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineColorAttachmentDescriptor.cpp.
(WebCore::WebMetalRenderPipelineColorAttachmentDescriptor::create):
(WebCore::WebMetalRenderPipelineColorAttachmentDescriptor::WebMetalRenderPipelineColorAttachmentDescriptor):
(WebCore::WebMetalRenderPipelineColorAttachmentDescriptor::pixelFormat const):
(WebCore::WebMetalRenderPipelineColorAttachmentDescriptor::setPixelFormat):
* html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineColorAttachmentDescriptor.h.
* html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineColorAttachmentDescriptor.idl.
* html/canvas/WebMetalRenderPipelineDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineDescriptor.cpp.
(WebCore::WebMetalRenderPipelineDescriptor::create):
(WebCore::WebMetalRenderPipelineDescriptor::vertexFunction const):
(WebCore::WebMetalRenderPipelineDescriptor::setVertexFunction):
(WebCore::WebMetalRenderPipelineDescriptor::fragmentFunction const):
(WebCore::WebMetalRenderPipelineDescriptor::setFragmentFunction):
(WebCore::WebMetalRenderPipelineDescriptor::colorAttachments):
(WebCore::WebMetalRenderPipelineDescriptor::depthAttachmentPixelFormat const):
(WebCore::WebMetalRenderPipelineDescriptor::setDepthAttachmentPixelFormat):
(WebCore::WebMetalRenderPipelineDescriptor::reset):
* html/canvas/WebMetalRenderPipelineDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineDescriptor.h.
* html/canvas/WebMetalRenderPipelineDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineDescriptor.idl.
* html/canvas/WebMetalRenderPipelineState.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineState.cpp.
(WebCore::WebMetalRenderPipelineState::create):
(WebCore::WebMetalRenderPipelineState::WebMetalRenderPipelineState):
(WebCore::WebMetalRenderPipelineState::label const):
(WebCore::WebMetalRenderPipelineState::setLabel):
* html/canvas/WebMetalRenderPipelineState.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineState.h.
* html/canvas/WebMetalRenderPipelineState.idl: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilState.idl.
* html/canvas/WebMetalRenderingContext.cpp: Added.
(WebCore::WebMetalRenderingContext::create):
(WebCore::WebMetalRenderingContext::WebMetalRenderingContext):
(WebCore::WebMetalRenderingContext::canvas const):
(WebCore::WebMetalRenderingContext::initializeNewContext):
(WebCore::WebMetalRenderingContext::clampedCanvasSize const):
(WebCore::WebMetalRenderingContext::hasPendingActivity const):
(WebCore::WebMetalRenderingContext::stop):
(WebCore::WebMetalRenderingContext::activeDOMObjectName const):
(WebCore::WebMetalRenderingContext::canSuspendForDocumentSuspension const):
(WebCore::WebMetalRenderingContext::platformLayer const):
(WebCore::WebMetalRenderingContext::markLayerComposited):
(WebCore::WebMetalRenderingContext::reshape):
(WebCore::WebMetalRenderingContext::createLibrary):
(WebCore::WebMetalRenderingContext::createRenderPipelineState):
(WebCore::WebMetalRenderingContext::createDepthStencilState):
(WebCore::WebMetalRenderingContext::createComputePipelineState):
(WebCore::WebMetalRenderingContext::createCommandQueue):
(WebCore::WebMetalRenderingContext::nextDrawable):
(WebCore::WebMetalRenderingContext::createBuffer):
(WebCore::WebMetalRenderingContext::createTexture):
* html/canvas/WebMetalRenderingContext.h: Renamed from Source/WebCore/html/canvas/WebGPURenderingContext.h.
* html/canvas/WebMetalRenderingContext.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderingContext.idl.
* html/canvas/WebMetalSize.h: Renamed from Source/WebCore/html/canvas/WebGPUSize.h.
* html/canvas/WebMetalSize.idl: Renamed from Source/WebCore/html/canvas/WebGPUSize.idl.
* html/canvas/WebMetalTexture.cpp: Renamed from Source/WebCore/html/canvas/WebGPUTexture.cpp.
(WebCore::WebMetalTexture::create):
(WebCore::WebMetalTexture::WebMetalTexture):
* html/canvas/WebMetalTexture.h: Renamed from Source/WebCore/html/canvas/WebGPUTexture.h.
* html/canvas/WebMetalTexture.idl: Renamed from Source/WebCore/html/canvas/WebGPUTexture.idl.
* html/canvas/WebMetalTextureDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPUTextureDescriptor.cpp.
(WebCore::WebMetalTextureDescriptor::create):
(WebCore::WebMetalTextureDescriptor::WebMetalTextureDescriptor):
(WebCore::WebMetalTextureDescriptor::width const):
(WebCore::WebMetalTextureDescriptor::setWidth):
(WebCore::WebMetalTextureDescriptor::height const):
(WebCore::WebMetalTextureDescriptor::setHeight):
(WebCore::WebMetalTextureDescriptor::sampleCount const):
(WebCore::WebMetalTextureDescriptor::setSampleCount):
(WebCore::WebMetalTextureDescriptor::textureType const):
(WebCore::WebMetalTextureDescriptor::setTextureType):
(WebCore::WebMetalTextureDescriptor::storageMode const):
(WebCore::WebMetalTextureDescriptor::setStorageMode):
(WebCore::WebMetalTextureDescriptor::usage const):
(WebCore::WebMetalTextureDescriptor::setUsage):
* html/canvas/WebMetalTextureDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPUTextureDescriptor.h.
* html/canvas/WebMetalTextureDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPUTextureDescriptor.idl.
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::buildObjectForCanvas):
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::requestContent):
(WebCore::contextAsScriptValue):
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setWebMetalEnabled):
(WebCore::RuntimeEnabledFeatures::webMetalEnabled const):
(WebCore::RuntimeEnabledFeatures::setWebGPUEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::webGPUEnabled const): Deleted.
* platform/Logging.h:
* platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(WebCore::PlatformCALayerCocoa::layerTypeForPlatformLayer):
(WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):
* platform/graphics/cocoa/WebMetalLayer.h: Renamed from Source/WebCore/platform/graphics/cocoa/WebGPULayer.h.
* platform/graphics/cocoa/WebMetalLayer.mm: Renamed from Source/WebCore/platform/graphics/cocoa/WebGPULayer.mm.
(-[WebMetalLayer initWithGPUDevice:]):
* platform/graphics/gpu/GPUBuffer.cpp:
(WebCore::GPUBuffer::~GPUBuffer):
* platform/graphics/gpu/GPUBuffer.h:
* platform/graphics/gpu/GPUCommandBuffer.cpp:
(WebCore::GPUCommandBuffer::~GPUCommandBuffer):
* platform/graphics/gpu/GPUCommandBuffer.h:
* platform/graphics/gpu/GPUCommandQueue.cpp:
(WebCore::GPUCommandQueue::~GPUCommandQueue):
* platform/graphics/gpu/GPUCommandQueue.h:
* platform/graphics/gpu/GPUComputeCommandEncoder.cpp:
(WebCore::GPUComputeCommandEncoder::~GPUComputeCommandEncoder):
* platform/graphics/gpu/GPUComputeCommandEncoder.h:
* platform/graphics/gpu/GPUComputePipelineState.cpp:
(WebCore::GPUComputePipelineState::~GPUComputePipelineState):
* platform/graphics/gpu/GPUComputePipelineState.h:
* platform/graphics/gpu/GPUDepthStencilDescriptor.cpp:
(WebCore::GPUDepthStencilDescriptor::~GPUDepthStencilDescriptor):
* platform/graphics/gpu/GPUDepthStencilDescriptor.h:
* platform/graphics/gpu/GPUDepthStencilState.cpp:
(WebCore::GPUDepthStencilState::~GPUDepthStencilState):
* platform/graphics/gpu/GPUDepthStencilState.h:
* platform/graphics/gpu/GPUDevice.cpp:
(WebCore::GPUDevice::~GPUDevice):
* platform/graphics/gpu/GPUDevice.h:
(WebCore::GPUDevice::layer const):
* platform/graphics/gpu/GPUDrawable.cpp:
(WebCore::GPUDrawable::~GPUDrawable):
* platform/graphics/gpu/GPUDrawable.h:
* platform/graphics/gpu/GPUEnums.h:
* platform/graphics/gpu/GPUFunction.cpp:
(WebCore::GPUFunction::~GPUFunction):
* platform/graphics/gpu/GPUFunction.h:
* platform/graphics/gpu/GPULibrary.cpp:
(WebCore::GPULibrary::~GPULibrary):
* platform/graphics/gpu/GPULibrary.h:
* platform/graphics/gpu/GPURenderCommandEncoder.cpp:
(WebCore::GPURenderCommandEncoder::~GPURenderCommandEncoder):
* platform/graphics/gpu/GPURenderCommandEncoder.h:
* platform/graphics/gpu/GPURenderPassAttachmentDescriptor.cpp:
(WebCore::GPURenderPassAttachmentDescriptor::~GPURenderPassAttachmentDescriptor):
* platform/graphics/gpu/GPURenderPassAttachmentDescriptor.h:
* platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.cpp:
(WebCore::GPURenderPassColorAttachmentDescriptor::~GPURenderPassColorAttachmentDescriptor):
* platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.h:
* platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.cpp:
(WebCore::GPURenderPassDepthAttachmentDescriptor::~GPURenderPassDepthAttachmentDescriptor):
* platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.h:
* platform/graphics/gpu/GPURenderPassDescriptor.cpp:
(WebCore::GPURenderPassDescriptor::~GPURenderPassDescriptor):
* platform/graphics/gpu/GPURenderPassDescriptor.h:
* platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.cpp:
(WebCore::GPURenderPipelineColorAttachmentDescriptor::~GPURenderPipelineColorAttachmentDescriptor):
* platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.h:
* platform/graphics/gpu/GPURenderPipelineDescriptor.cpp:
(WebCore::GPURenderPipelineDescriptor::~GPURenderPipelineDescriptor):
* platform/graphics/gpu/GPURenderPipelineDescriptor.h:
* platform/graphics/gpu/GPURenderPipelineState.cpp:
(WebCore::GPURenderPipelineState::~GPURenderPipelineState):
* platform/graphics/gpu/GPURenderPipelineState.h:
* platform/graphics/gpu/GPUSize.h:
* platform/graphics/gpu/GPUTexture.cpp:
(WebCore::GPUTexture::~GPUTexture):
* platform/graphics/gpu/GPUTexture.h:
* platform/graphics/gpu/GPUTextureDescriptor.cpp:
(WebCore::GPUTextureDescriptor::~GPUTextureDescriptor):
* platform/graphics/gpu/GPUTextureDescriptor.h:
* platform/graphics/metal/GPUBufferMetal.mm:
(WebCore::GPUBuffer::GPUBuffer):
* platform/graphics/metal/GPUCommandBufferMetal.mm:
* platform/graphics/metal/GPUCommandQueueMetal.mm:
* platform/graphics/metal/GPUComputeCommandEncoderMetal.mm:
* platform/graphics/metal/GPUComputePipelineStateMetal.mm:
(WebCore::GPUComputePipelineState::GPUComputePipelineState):
* platform/graphics/metal/GPUDepthStencilDescriptorMetal.mm:
* platform/graphics/metal/GPUDepthStencilStateMetal.mm:
(WebCore::GPUDepthStencilState::setLabel const):
* platform/graphics/metal/GPUDeviceMetal.mm:
(WebCore::GPUDevice::reshape const):
* platform/graphics/metal/GPUDrawableMetal.mm:
(WebCore::GPUDrawable::release):
* platform/graphics/metal/GPUFunctionMetal.mm:
* platform/graphics/metal/GPULibraryMetal.mm:
(WebCore::GPULibrary::GPULibrary):
* platform/graphics/metal/GPURenderCommandEncoderMetal.mm:
(WebCore::GPURenderCommandEncoder::GPURenderCommandEncoder):
* platform/graphics/metal/GPURenderPassAttachmentDescriptorMetal.mm:
* platform/graphics/metal/GPURenderPassColorAttachmentDescriptorMetal.mm:
* platform/graphics/metal/GPURenderPassDepthAttachmentDescriptorMetal.mm:
* platform/graphics/metal/GPURenderPassDescriptorMetal.mm:
* platform/graphics/metal/GPURenderPipelineColorAttachmentDescriptorMetal.mm:
* platform/graphics/metal/GPURenderPipelineDescriptorMetal.mm:
* platform/graphics/metal/GPURenderPipelineStateMetal.mm:
(WebCore::GPURenderPipelineState::setLabel const):
* platform/graphics/metal/GPUTextureDescriptorMetal.mm:
* platform/graphics/metal/GPUTextureMetal.mm:
(WebCore::GPUTexture::GPUTexture):
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setWebMetalEnabled):
(WebCore::InternalSettings::setWebGPUEnabled): Deleted.
* testing/InternalSettings.h:
* testing/InternalSettings.idl:
2018-10-08 Dean Jackson <dino@apple.com>
CrashTracer: backboardd at Recursion :: QuartzCore: CA::Render::Updater::prepare_sublayer0
https://bugs.webkit.org/show_bug.cgi?id=190376
<rdar://problem/44986520>
Reviewed by Tim Horton.
Very deep CoreAnimation layer trees can cause problems. Reduce our maximum
depth from 256 to 128.
Modified existing test: compositing/layer-creation/deep-tree.html
* platform/graphics/ca/GraphicsLayerCA.cpp: Cap the depth at 128.
2018-10-08 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r236941.
https://bugs.webkit.org/show_bug.cgi?id=190374
Causing API test failures in new test (Requested by jernoble
on #webkit).
Reverted changeset:
"ISOTrackEncryptionBox returns incorrect defaultKeyID"
https://bugs.webkit.org/show_bug.cgi?id=190368
https://trac.webkit.org/changeset/236941
2018-10-08 Aditya Keerthi <akeerthi@apple.com>
Make <input type=color> a runtime enabled (on-by-default) feature
https://bugs.webkit.org/show_bug.cgi?id=189162
Reviewed by Wenson Hsieh and Tim Horton.
Enable the build-time flag INPUT_TYPE_COLOR by default and introduce a runtime-enabled feature for input type
color, also on by default.
Covered by rebaselining existing layout tests.
* Configurations/FeatureDefines.xcconfig:
* html/InputType.cpp:
(WebCore::createInputTypeFactoryMap):
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::inputTypeColorEnabled const):
(WebCore::RuntimeEnabledFeatures::setInputTypeColorEnabled):
2018-10-08 Jer Noble <jer.noble@apple.com>
ISOTrackEncryptionBox returns incorrect defaultKeyID
https://bugs.webkit.org/show_bug.cgi?id=190368
Reviewed by Eric Carlson.
Test: TestWebKitAPI.ISOBox.ISOProtectionSchemeInfoBox
ISOTrackEncryptionBox::parse() increments the data offset by an incorrect amount.
Drive-by fix: add EXPORT macros to all the ISO box classes so that tests can be written in TestWebKitAPI.
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/iso/ISOBox.h:
* platform/graphics/iso/ISOOriginalFormatBox.h:
* platform/graphics/iso/ISOProtectionSchemeInfoBox.h:
* platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.h:
* platform/graphics/iso/ISOSchemeInformationBox.h:
* platform/graphics/iso/ISOSchemeTypeBox.h:
* platform/graphics/iso/ISOTrackEncryptionBox.cpp:
(WebCore::ISOTrackEncryptionBox::parse):
* platform/graphics/iso/ISOTrackEncryptionBox.h:
2018-10-08 Antti Koivisto <antti@apple.com>
Move SystemFontDatabase to a file of its own
https://bugs.webkit.org/show_bug.cgi?id=190347
Reviewed by Chris Dumez.
Also rename it to SystemFontDatabaseCoreText as it is CoreText specific.
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* page/MemoryRelease.cpp:
(WebCore::releaseNoncriticalMemory):
* page/cocoa/MemoryReleaseCocoa.mm:
Release SystemFontDatabaseCoreText directly from platform specific cleanup code.
(WebCore::platformReleaseMemory):
* platform/graphics/cocoa/FontDescriptionCocoa.cpp:
(WebCore::FontDescription::invalidateCaches):
(WebCore::systemFontCascadeList):
(WebCore::FontCascadeDescription::effectiveFamilyCount const):
(WebCore::FontCascadeDescription::effectiveFamilyAt const):
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::CoreTextCascadeListParameters): Deleted.
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::isHashTableDeletedValue const): Deleted.
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::operator== const): Deleted.
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::hash const): Deleted.
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::CoreTextCascadeListParametersHash::hash): Deleted.
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::CoreTextCascadeListParametersHash::equal): Deleted.
(): Deleted.
(WebCore::SystemFontDatabase::singleton): Deleted.
(WebCore::SystemFontDatabase::systemFontCascadeList): Deleted.
(WebCore::SystemFontDatabase::clear): Deleted.
(WebCore::SystemFontDatabase::SystemFontDatabase): Deleted.
(WebCore::SystemFontDatabase::applyWeightItalicsAndFallbackBehavior): Deleted.
(WebCore::SystemFontDatabase::removeCascadeList): Deleted.
(WebCore::SystemFontDatabase::computeCascadeList): Deleted.
(WebCore::systemFontParameters): Deleted.
* platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp: Added.
(WebCore::SystemFontDatabaseCoreText::singleton):
(WebCore::SystemFontDatabaseCoreText::SystemFontDatabaseCoreText):
(WebCore::SystemFontDatabaseCoreText::systemFontCascadeList):
(WebCore::SystemFontDatabaseCoreText::clear):
(WebCore::SystemFontDatabaseCoreText::applyWeightItalicsAndFallbackBehavior):
(WebCore::SystemFontDatabaseCoreText::removeCascadeList):
(WebCore::SystemFontDatabaseCoreText::computeCascadeList):
(WebCore::SystemFontDatabaseCoreText::systemFontParameters):
* platform/graphics/cocoa/SystemFontDatabaseCoreText.h: Added.
(WebCore::SystemFontDatabaseCoreText::CascadeListParameters::CascadeListParameters):
(WebCore::SystemFontDatabaseCoreText::CascadeListParameters::isHashTableDeletedValue const):
(WebCore::SystemFontDatabaseCoreText::CascadeListParameters::operator== const):
(WebCore::SystemFontDatabaseCoreText::CascadeListParameters::hash const):
(WebCore::SystemFontDatabaseCoreText::CascadeListParameters::CascadeListParametersHash::hash):
(WebCore::SystemFontDatabaseCoreText::CascadeListParameters::CascadeListParametersHash::equal):
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
2018-10-08 Jeremy Jones <jeremyj@apple.com>
Remove dead code: VideoFullscreenModel::isVisible()
https://bugs.webkit.org/show_bug.cgi?id=190356
Reviewed by Jon Lee.
No new tests because there is no behavior change.
Remove isVisible() since it is no longer used.
* platform/cocoa/VideoFullscreenModel.h:
* platform/cocoa/VideoFullscreenModelVideoElement.h:
* platform/cocoa/VideoFullscreenModelVideoElement.mm:
(WebCore::VideoFullscreenModelVideoElement::isVisible const): Deleted.
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::isVisible const): Deleted.
2018-10-08 Jeremy Jones <jeremyj@apple.com>
Remove dead code: resetMediaState.
https://bugs.webkit.org/show_bug.cgi?id=190355
Reviewed by Jon Lee.
No new tests because no behavior change.
Remove resetMediaState since it is no longer used.
* platform/cocoa/PlaybackSessionInterface.h:
(WebCore::PlaybackSessionInterface::~PlaybackSessionInterface):
* platform/ios/PlaybackSessionInterfaceAVKit.h:
* platform/ios/PlaybackSessionInterfaceAVKit.mm:
(WebCore::PlaybackSessionInterfaceAVKit::resetMediaState): Deleted.
* platform/ios/WebAVPlayerController.h:
* platform/ios/WebAVPlayerController.mm:
(-[WebAVPlayerController resetMediaState]): Deleted.
* platform/mac/PlaybackSessionInterfaceMac.h:
* platform/mac/PlaybackSessionInterfaceMac.mm:
(WebCore::PlaybackSessionInterfaceMac::resetMediaState): Deleted.
2018-10-08 Jeremy Jones <jeremyj@apple.com>
Use MediaPlayerEnums::VideoGravity in VideoFullscreenModel.
https://bugs.webkit.org/show_bug.cgi?id=190357
Reviewed by Jon Lee.
No new tests because no behavior change.
Use MediaPlayerEnums::VideoGravity instead of creating another identical enum in VideoFullscreenModel.
* platform/cocoa/VideoFullscreenModel.h:
(): Deleted.
* platform/cocoa/VideoFullscreenModelVideoElement.h:
* platform/cocoa/VideoFullscreenModelVideoElement.mm:
(WebCore::VideoFullscreenModelVideoElement::setVideoLayerGravity):
* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerLayer setVideoGravity:]):
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::setVideoLayerGravity):
* platform/mac/VideoFullscreenInterfaceMac.mm:
(-[WebVideoFullscreenInterfaceMacObjC setUpPIPForVideoView:withFrame:inWindow:]):
(-[WebVideoFullscreenInterfaceMacObjC pipDidClose:]):
2018-10-08 Devin Rousso <drousso@apple.com>
Web Inspector: group media network entries by the node that triggered the request
https://bugs.webkit.org/show_bug.cgi?id=189606
<rdar://problem/44438527>
Reviewed by Brian Burg.
Test: http/tests/inspector/network/resource-initiatorNode.html
Add extra arguments to functions that create `ResourceRequest` objects for media resources so
that `initiatorNodeIdentifier` can be set for WebInspector frontend to use for grouping.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::loadResource):
* html/HTMLVideoElement.cpp:
(WebCore::HTMLVideoElement::setDisplayMode):
* loader/FrameLoader.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::willLoadMediaElementURL):
Handles initial (e.g. DNT) resource requests.
* loader/ImageLoader.cpp:
(ImageLoader::updateFromElement):
Handles "poster" requests.
* loader/MediaResourceLoader.cpp:
(MediaResourceLoader::requestResource):
Handles byte-range requests.
* html/track/LoadableTextTrack.cpp:
(WebCore::LoadableTextTrack::loadTimerFired):
* loader/TextTrackLoader.h:
* loader/TextTrackLoader.cpp:
(WebCore::TextTrackLoader::load):
* html/HTMLTrackElement.h:
Handles <track> (e.g. subtitle) requests.
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::identifierForNode):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::identifierForNode):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::identifierForNodeImpl):
Allows callers to get a `DOM.nodeId` for the given `Node`, which is (in this patch) attached
to the `ResourceRequest` and later used by `InspectorNetworkAgent`.
* inspector/agents/InspectorNetworkAgent.h:
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::willSendRequest):
(WebCore::InspectorNetworkAgent::didLoadResourceFromMemoryCache):
(WebCore::InspectorNetworkAgent::buildInitiatorObject):
* platform/network/ResourceRequestBase.h:
(WebCore::ResourceRequestBase::initiatorNodeIdentifier const):
(WebCore::ResourceRequestBase::setInitiatorNodeIdentifier):
* platform/network/ResourceRequestBase.cpp:
(WebCore::ResourceRequestBase::setAsIsolatedCopy):
* platform/network/cf/ResourceRequestCFNet.cpp:
(WebCore::ResourceRequest::updateFromDelegatePreservingOldProperties):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::shouldContinueAfterNotifyingLoadedFromMemoryCache):
* inspector/InspectorCanvas.h:
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::buildObjectForCanvas):
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::enable):
(WebCore::InspectorCanvasAgent::didCreateCanvasRenderingContext):
Don't try to push the canvas' node to the frontend, as this will create a dangling node in
`InspectorDOMAgent` if the canvas' node is detached from the DOM.
2018-10-08 Andy Estes <aestes@apple.com>
[Payment Request] Requests should be aborted after details settle when the user cancels
https://bugs.webkit.org/show_bug.cgi?id=190333
Reviewed by Alex Christensen.
In Payment Request's "update a PaymentRequest's details" algorithm, user agents are expected
to disable the payment UI when PaymentRequest details are being updated by the merchant.
This is to prevent the user from accepting a payment before updated details are displayed.
Further, Payment Request's "user aborts the payment request" algorithm says that the
algorithm should be terminated prior to throwing an AbortError if the request is currently
being updated, and also that user agents SHOULD ensure this never occurs. This is based on
the assumption that payment UIs are disabled during details updates.
For Apple Pay, while it is true that a payment cannot be accepted by the user while details
are being updated by the merchant, the payment UI is not completely disabled. In particular,
the user is allowed to abort the payment while details are being updated. We need to honor
the user's request to abort without doing so in the middle of a details update.
This patch defers a user-initiated abort until after details are settled, at which point the
promise returned by show() is rejected with an AbortError. This behaves as if the details
update promise were rejected by the merchant.
Added a test case to http/tests/paymentrequest/payment-request-show-method.https.html.
* Modules/paymentrequest/PaymentRequest.cpp:
(WebCore::PaymentRequest::settleDetailsPromise):
(WebCore::PaymentRequest::whenDetailsSettled):
(WebCore::PaymentRequest::cancel):
* Modules/paymentrequest/PaymentRequest.h:
2018-10-08 Chris Dumez <cdumez@apple.com>
Have DOMWindowProperty get is frame from its associated DOMWindow
https://bugs.webkit.org/show_bug.cgi?id=190341
Reviewed by Alex Christensen.
Have DOMWindowProperty get is frame from its associated DOMWindow, instead of having its own
m_frame that can potentially get out-of-sync.
* Modules/cache/DOMWindowCaches.cpp:
(WebCore::DOMWindowCaches::DOMWindowCaches):
* Modules/geolocation/NavigatorGeolocation.cpp:
(WebCore::NavigatorGeolocation::NavigatorGeolocation):
(WebCore::NavigatorGeolocation::from):
* Modules/geolocation/NavigatorGeolocation.h:
* Modules/indexeddb/DOMWindowIndexedDatabase.cpp:
(WebCore::DOMWindowIndexedDatabase::DOMWindowIndexedDatabase):
* Modules/mediastream/NavigatorMediaDevices.cpp:
(WebCore::NavigatorMediaDevices::NavigatorMediaDevices):
(WebCore::NavigatorMediaDevices::from):
* Modules/mediastream/NavigatorMediaDevices.h:
* Modules/quota/DOMWindowQuota.cpp:
(WebCore::DOMWindowQuota::DOMWindowQuota):
* Modules/quota/NavigatorStorageQuota.cpp:
(WebCore::NavigatorStorageQuota::NavigatorStorageQuota):
* Modules/quota/NavigatorStorageQuota.h:
* Modules/speech/DOMWindowSpeechSynthesis.cpp:
(WebCore::DOMWindowSpeechSynthesis::DOMWindowSpeechSynthesis):
* css/StyleMedia.cpp:
(WebCore::StyleMedia::StyleMedia):
(WebCore::StyleMedia::type const):
(WebCore::StyleMedia::matchMedium const):
* css/StyleMedia.h:
* loader/appcache/DOMApplicationCache.cpp:
(WebCore::DOMApplicationCache::DOMApplicationCache):
(WebCore::DOMApplicationCache::applicationCacheHost const):
(WebCore::DOMApplicationCache::scriptExecutionContext const):
* loader/appcache/DOMApplicationCache.h:
* page/BarProp.cpp:
(WebCore::BarProp::BarProp):
(WebCore::BarProp::visible const):
* page/BarProp.h:
(WebCore::BarProp::create):
* page/DOMSelection.cpp:
(WebCore::DOMSelection::DOMSelection):
(WebCore::DOMSelection::visibleSelection const):
(WebCore::DOMSelection::anchorNode const):
(WebCore::DOMSelection::anchorOffset const):
(WebCore::DOMSelection::focusNode const):
(WebCore::DOMSelection::focusOffset const):
(WebCore::DOMSelection::baseNode const):
(WebCore::DOMSelection::baseOffset const):
(WebCore::DOMSelection::extentNode const):
(WebCore::DOMSelection::extentOffset const):
(WebCore::DOMSelection::isCollapsed const):
(WebCore::DOMSelection::type const):
(WebCore::DOMSelection::rangeCount const):
(WebCore::DOMSelection::collapse):
(WebCore::DOMSelection::collapseToEnd):
(WebCore::DOMSelection::collapseToStart):
(WebCore::DOMSelection::empty):
(WebCore::DOMSelection::setBaseAndExtent):
(WebCore::DOMSelection::setPosition):
(WebCore::DOMSelection::modify):
(WebCore::DOMSelection::extend):
(WebCore::DOMSelection::getRangeAt):
(WebCore::DOMSelection::removeAllRanges):
(WebCore::DOMSelection::addRange):
(WebCore::DOMSelection::deleteFromDocument):
(WebCore::DOMSelection::containsNode const):
(WebCore::DOMSelection::toString):
(WebCore::DOMSelection::shadowAdjustedNode const):
(WebCore::DOMSelection::shadowAdjustedOffset const):
(WebCore::DOMSelection::isValidForPosition const):
* page/DOMSelection.h:
(WebCore::DOMSelection::create):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::screen):
(WebCore::DOMWindow::history):
(WebCore::DOMWindow::locationbar):
(WebCore::DOMWindow::menubar):
(WebCore::DOMWindow::personalbar):
(WebCore::DOMWindow::scrollbars):
(WebCore::DOMWindow::statusbar):
(WebCore::DOMWindow::toolbar):
(WebCore::DOMWindow::applicationCache):
(WebCore::DOMWindow::navigator):
(WebCore::DOMWindow::location):
(WebCore::DOMWindow::visualViewport):
(WebCore::DOMWindow::webkitNamespace):
(WebCore::DOMWindow::getSelection):
(WebCore::DOMWindow::styleMedia):
* page/DOMWindow.h:
* page/DOMWindowExtension.cpp:
(WebCore::DOMWindowExtension::DOMWindowExtension):
* page/DOMWindowExtension.h:
(WebCore::DOMWindowExtension::create):
* page/DOMWindowProperty.cpp:
(WebCore::DOMWindowProperty::DOMWindowProperty):
(WebCore::DOMWindowProperty::~DOMWindowProperty):
(WebCore::DOMWindowProperty::disconnectFrameForDocumentSuspension):
(WebCore::DOMWindowProperty::reconnectFrameFromDocumentSuspension):
(WebCore::DOMWindowProperty::willDestroyGlobalObjectInCachedFrame):
(WebCore::DOMWindowProperty::willDestroyGlobalObjectInFrame):
(WebCore::DOMWindowProperty::willDetachGlobalObjectFromFrame):
(WebCore::DOMWindowProperty::frame const):
* page/DOMWindowProperty.h:
(WebCore::DOMWindowProperty::window const):
* page/History.cpp:
(WebCore::History::History):
(WebCore::History::length const):
(WebCore::History::scrollRestoration const):
(WebCore::History::setScrollRestoration):
(WebCore::History::stateInternal const):
(WebCore::History::go):
(WebCore::History::urlForState):
(WebCore::History::stateObjectAdded):
* page/History.h:
* page/Location.cpp:
(WebCore::Location::Location):
(WebCore::Location::url const):
(WebCore::Location::href const):
(WebCore::Location::protocol const):
(WebCore::Location::host const):
(WebCore::Location::hostname const):
(WebCore::Location::port const):
(WebCore::Location::pathname const):
(WebCore::Location::search const):
(WebCore::Location::origin const):
(WebCore::Location::ancestorOrigins const):
(WebCore::Location::hash const):
(WebCore::Location::setHref):
(WebCore::Location::setProtocol):
(WebCore::Location::setHost):
(WebCore::Location::setHostname):
(WebCore::Location::setPort):
(WebCore::Location::setPathname):
(WebCore::Location::setSearch):
(WebCore::Location::setHash):
(WebCore::Location::assign):
(WebCore::Location::replace):
(WebCore::Location::reload):
(WebCore::Location::setLocation):
* page/Location.h:
(WebCore::Location::create):
* page/Navigator.cpp:
(WebCore::Navigator::Navigator):
(WebCore::Navigator::appVersion const):
(WebCore::Navigator::userAgent const):
(WebCore::Navigator::share):
(WebCore::Navigator::plugins):
(WebCore::Navigator::mimeTypes):
(WebCore::Navigator::cookieEnabled const):
(WebCore::Navigator::javaEnabled const):
(WebCore::Navigator::standalone const):
* page/Navigator.h:
* page/Performance.cpp:
(WebCore::Performance::navigation):
(WebCore::Performance::timing):
* page/PerformanceNavigation.cpp:
(WebCore::PerformanceNavigation::PerformanceNavigation):
(WebCore::PerformanceNavigation::type const):
(WebCore::PerformanceNavigation::redirectCount const):
* page/PerformanceNavigation.h:
(WebCore::PerformanceNavigation::create):
* page/PerformanceTiming.cpp:
(WebCore::PerformanceTiming::PerformanceTiming):
(WebCore::PerformanceTiming::documentLoader const):
(WebCore::PerformanceTiming::documentTiming const):
* page/PerformanceTiming.h:
(WebCore::PerformanceTiming::create):
* page/Screen.cpp:
(WebCore::Screen::Screen):
(WebCore::Screen::height const):
(WebCore::Screen::width const):
(WebCore::Screen::colorDepth const):
(WebCore::Screen::pixelDepth const):
(WebCore::Screen::availLeft const):
(WebCore::Screen::availTop const):
(WebCore::Screen::availHeight const):
(WebCore::Screen::availWidth const):
* page/Screen.h:
* page/VisualViewport.cpp:
(WebCore::VisualViewport::VisualViewport):
(WebCore::VisualViewport::scriptExecutionContext const):
(WebCore::VisualViewport::addEventListener):
(WebCore::VisualViewport::updateFrameLayout const):
(WebCore::VisualViewport::offsetLeft const):
(WebCore::VisualViewport::offsetTop const):
(WebCore::VisualViewport::pageLeft const):
(WebCore::VisualViewport::pageTop const):
(WebCore::VisualViewport::width const):
(WebCore::VisualViewport::height const):
(WebCore::VisualViewport::scale const):
(WebCore::VisualViewport::update):
(WebCore::VisualViewport::enqueueResizeEvent):
(WebCore::VisualViewport::enqueueScrollEvent):
* page/VisualViewport.h:
* page/WebKitNamespace.cpp:
(WebCore::WebKitNamespace::WebKitNamespace):
* page/WebKitNamespace.h:
(WebCore::WebKitNamespace::create):
* plugins/DOMMimeTypeArray.cpp:
(WebCore::DOMMimeTypeArray::DOMMimeTypeArray):
(WebCore::DOMMimeTypeArray::item):
(WebCore::DOMMimeTypeArray::namedItem):
(WebCore::DOMMimeTypeArray::getPluginData const):
* plugins/DOMMimeTypeArray.h:
(WebCore::DOMMimeTypeArray::create):
* plugins/DOMPluginArray.cpp:
(WebCore::DOMPluginArray::DOMPluginArray):
(WebCore::DOMPluginArray::item):
(WebCore::DOMPluginArray::namedItem):
(WebCore::DOMPluginArray::refresh):
(WebCore::DOMPluginArray::pluginData const):
* plugins/DOMPluginArray.h:
(WebCore::DOMPluginArray::create):
* storage/Storage.cpp:
(WebCore::Storage::create):
(WebCore::Storage::Storage):
(WebCore::Storage::setItem):
(WebCore::Storage::removeItem):
(WebCore::Storage::clear):
* storage/Storage.h:
2018-10-08 Antti Koivisto <antti@apple.com>
Move FontCascadeDescription to a file of its own
https://bugs.webkit.org/show_bug.cgi?id=190348
Reviewed by Chris Dumez.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/FontCascade.h:
* platform/graphics/FontCascadeDescription.cpp: Copied from Source/WebCore/platform/graphics/FontDescription.cpp.
(WebCore::FontDescription::FontDescription): Deleted.
(WebCore::m_shouldAllowUserInstalledFonts): Deleted.
(WebCore::FontDescription::setLocale): Deleted.
(WebCore::FontDescription::invalidateCaches): Deleted.
* platform/graphics/FontCascadeDescription.h: Copied from Source/WebCore/platform/graphics/FontDescription.h.
(WebCore::FontDescription::operator!= const): Deleted.
(WebCore::FontDescription::computedSize const): Deleted.
(WebCore::FontDescription::computedPixelSize const): Deleted.
(WebCore::FontDescription::italic const): Deleted.
(WebCore::FontDescription::stretch const): Deleted.
(WebCore::FontDescription::weight const): Deleted.
(WebCore::FontDescription::fontSelectionRequest const): Deleted.
(WebCore::FontDescription::renderingMode const): Deleted.
(WebCore::FontDescription::textRenderingMode const): Deleted.
(WebCore::FontDescription::script const): Deleted.
(WebCore::FontDescription::locale const): Deleted.
(WebCore::FontDescription::orientation const): Deleted.
(WebCore::FontDescription::nonCJKGlyphOrientation const): Deleted.
(WebCore::FontDescription::widthVariant const): Deleted.
(WebCore::FontDescription::featureSettings const): Deleted.
(WebCore::FontDescription::variationSettings const): Deleted.
(WebCore::FontDescription::fontSynthesis const): Deleted.
(WebCore::FontDescription::variantCommonLigatures const): Deleted.
(WebCore::FontDescription::variantDiscretionaryLigatures const): Deleted.
(WebCore::FontDescription::variantHistoricalLigatures const): Deleted.
(WebCore::FontDescription::variantContextualAlternates const): Deleted.
(WebCore::FontDescription::variantPosition const): Deleted.
(WebCore::FontDescription::variantCaps const): Deleted.
(WebCore::FontDescription::variantNumericFigure const): Deleted.
(WebCore::FontDescription::variantNumericSpacing const): Deleted.
(WebCore::FontDescription::variantNumericFraction const): Deleted.
(WebCore::FontDescription::variantNumericOrdinal const): Deleted.
(WebCore::FontDescription::variantNumericSlashedZero const): Deleted.
(WebCore::FontDescription::variantAlternates const): Deleted.
(WebCore::FontDescription::variantEastAsianVariant const): Deleted.
(WebCore::FontDescription::variantEastAsianWidth const): Deleted.
(WebCore::FontDescription::variantEastAsianRuby const): Deleted.
(WebCore::FontDescription::variantSettings const): Deleted.
(WebCore::FontDescription::opticalSizing const): Deleted.
(WebCore::FontDescription::fontStyleAxis const): Deleted.
(WebCore::FontDescription::shouldAllowUserInstalledFonts const): Deleted.
(WebCore::FontDescription::setComputedSize): Deleted.
(WebCore::FontDescription::setItalic): Deleted.
(WebCore::FontDescription::setStretch): Deleted.
(WebCore::FontDescription::setIsItalic): Deleted.
(WebCore::FontDescription::setWeight): Deleted.
(WebCore::FontDescription::setRenderingMode): Deleted.
(WebCore::FontDescription::setTextRenderingMode): Deleted.
(WebCore::FontDescription::setOrientation): Deleted.
(WebCore::FontDescription::setNonCJKGlyphOrientation): Deleted.
(WebCore::FontDescription::setWidthVariant): Deleted.
(WebCore::FontDescription::setFeatureSettings): Deleted.
(WebCore::FontDescription::setVariationSettings): Deleted.
(WebCore::FontDescription::setFontSynthesis): Deleted.
(WebCore::FontDescription::setVariantCommonLigatures): Deleted.
(WebCore::FontDescription::setVariantDiscretionaryLigatures): Deleted.
(WebCore::FontDescription::setVariantHistoricalLigatures): Deleted.
(WebCore::FontDescription::setVariantContextualAlternates): Deleted.
(WebCore::FontDescription::setVariantPosition): Deleted.
(WebCore::FontDescription::setVariantCaps): Deleted.
(WebCore::FontDescription::setVariantNumericFigure): Deleted.
(WebCore::FontDescription::setVariantNumericSpacing): Deleted.
(WebCore::FontDescription::setVariantNumericFraction): Deleted.
(WebCore::FontDescription::setVariantNumericOrdinal): Deleted.
(WebCore::FontDescription::setVariantNumericSlashedZero): Deleted.
(WebCore::FontDescription::setVariantAlternates): Deleted.
(WebCore::FontDescription::setVariantEastAsianVariant): Deleted.
(WebCore::FontDescription::setVariantEastAsianWidth): Deleted.
(WebCore::FontDescription::setVariantEastAsianRuby): Deleted.
(WebCore::FontDescription::setOpticalSizing): Deleted.
(WebCore::FontDescription::setFontStyleAxis): Deleted.
(WebCore::FontDescription::setShouldAllowUserInstalledFonts): Deleted.
(WebCore::FontDescription::operator== const): Deleted.
* platform/graphics/FontDescription.cpp:
(WebCore::FontDescription::invalidateCaches):
(WebCore::FontCascadeDescription::FontCascadeDescription): Deleted.
(WebCore::FontCascadeDescription::effectiveFamilyCount const): Deleted.
(WebCore::FontCascadeDescription::effectiveFamilyAt const): Deleted.
(WebCore::FontCascadeDescription::lighterWeight): Deleted.
(WebCore::FontCascadeDescription::bolderWeight): Deleted.
(WebCore::FontCascadeDescription::familiesEqualForTextAutoSizing const): Deleted.
(WebCore::FontCascadeDescription::familyNamesAreEqual): Deleted.
(WebCore::FontCascadeDescription::familyNameHash): Deleted.
(WebCore::FontCascadeDescription::foldedFamilyName): Deleted.
* platform/graphics/FontDescription.h:
(WebCore::FontCascadeDescription::operator!= const): Deleted.
(WebCore::FontCascadeDescription::familyCount const): Deleted.
(WebCore::FontCascadeDescription::firstFamily const): Deleted.
(WebCore::FontCascadeDescription::familyAt const): Deleted.
(WebCore::FontCascadeDescription::families const): Deleted.
(WebCore::FontCascadeDescription::specifiedSize const): Deleted.
(WebCore::FontCascadeDescription::isAbsoluteSize const): Deleted.
(WebCore::FontCascadeDescription::lighterWeight const): Deleted.
(WebCore::FontCascadeDescription::bolderWeight const): Deleted.
(WebCore::FontCascadeDescription::useFixedDefaultSize const): Deleted.
(WebCore::FontCascadeDescription::kerning const): Deleted.
(WebCore::FontCascadeDescription::keywordSize const): Deleted.
(WebCore::FontCascadeDescription::keywordSizeAsIdentifier const): Deleted.
(WebCore::FontCascadeDescription::fontSmoothing const): Deleted.
(WebCore::FontCascadeDescription::isSpecifiedFont const): Deleted.
(WebCore::FontCascadeDescription::setOneFamily): Deleted.
(WebCore::FontCascadeDescription::setFamilies): Deleted.
(WebCore::FontCascadeDescription::setSpecifiedSize): Deleted.
(WebCore::FontCascadeDescription::setIsAbsoluteSize): Deleted.
(WebCore::FontCascadeDescription::setKerning): Deleted.
(WebCore::FontCascadeDescription::setKeywordSize): Deleted.
(WebCore::FontCascadeDescription::setKeywordSizeFromIdentifier): Deleted.
(WebCore::FontCascadeDescription::setFontSmoothing): Deleted.
(WebCore::FontCascadeDescription::setIsSpecifiedFont): Deleted.
(WebCore::FontCascadeDescription::equalForTextAutoSizing const): Deleted.
(WebCore::FontCascadeDescription::initialItalic): Deleted.
(WebCore::FontCascadeDescription::initialFontStyleAxis): Deleted.
(WebCore::FontCascadeDescription::initialWeight): Deleted.
(WebCore::FontCascadeDescription::initialStretch): Deleted.
(WebCore::FontCascadeDescription::initialSmallCaps): Deleted.
(WebCore::FontCascadeDescription::initialKerning): Deleted.
(WebCore::FontCascadeDescription::initialFontSmoothing): Deleted.
(WebCore::FontCascadeDescription::initialTextRenderingMode): Deleted.
(WebCore::FontCascadeDescription::initialFontSynthesis): Deleted.
(WebCore::FontCascadeDescription::initialVariantPosition): Deleted.
(WebCore::FontCascadeDescription::initialVariantCaps): Deleted.
(WebCore::FontCascadeDescription::initialVariantAlternates): Deleted.
(WebCore::FontCascadeDescription::initialOpticalSizing): Deleted.
(WebCore::FontCascadeDescription::initialLocale): Deleted.
(WebCore::FontCascadeDescription::operator== const): Deleted.
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
* rendering/style/RenderStyle.h:
2018-10-08 Yacine Bandou <yacine.bandou_ext@softathome.com>
[EME][GStreamer] Add support for WebM encrypted caps "application/x-webm-enc"
https://bugs.webkit.org/show_bug.cgi?id=189239
Reviewed by Xabier Rodriguez-Calvar.
Add the support of GStreamer caps "application/x-webm-enc" in GStreamerCommon.
The DRM system id field in the encrypted event is set to GST_PROTECTION_UNSPECIFIED_SYSTEM_ID
in case of WebM, for details, see https://bugzilla.gnome.org/attachment.cgi?id=365211.
Tests: media/encrypted-media/clearKey/clearKey-encrypted-webm-eventmse.html
media/encrypted-media/clearKey/clearKey-webm-video-playback-mse.html
* platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::capsMediaType):
(WebCore::areEncryptedCaps):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::initializationDataEncountered):
* platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:
* platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
(webkitMediaCommonEncryptionDecryptTransformCaps):
2018-10-07 Dan Bernstein <mitz@apple.com>
Fixed building with the latest macOS SDK
* platform/graphics/cocoa/IOSurface.mm:
(WebCore::IOSurface::ensurePlatformContext): Suppressed deprecation warnings around use of
CGIOSurfaceContextSetDisplayMask.
2018-10-06 Justin Michaud <justin_michaud@apple.com>
Properly determine if css custom property values are computationally independent
https://bugs.webkit.org/show_bug.cgi?id=190303
Reviewed by Antti Koivisto.
Add getDirectComputationalDependencies method to determine if a value is computationally
dependent. Use this method in CSS.registerProperty to replace existing substring checks.
No new tests are needed because the existing tests cover this behaviour.
* css/CSSCalculationValue.cpp:
(WebCore::determineCategory):
* css/CSSCalculationValue.h:
(WebCore::CSSCalcValue::getDirectComputationalDependencies const):
(WebCore::CSSCalcValue::getDirectRootComputationalDependencies const):
* css/CSSCustomPropertyValue.cpp:
(WebCore::CSSCustomPropertyValue::customCSSText const):
(WebCore::CSSCustomPropertyValue::tokens const):
(WebCore::CSSCustomPropertyValue::setResolvedTypedValue):
* css/CSSCustomPropertyValue.h:
* css/CSSPrimitiveValue.cpp:
(WebCore::CSSPrimitiveValue::getDirectComputationalDependencies const):
(WebCore::CSSPrimitiveValue::getDirectRootComputationalDependencies const):
* css/CSSPrimitiveValue.h:
* css/CSSValue.cpp:
(WebCore::CSSValue::getDirectComputationalDependencies const):
(WebCore::CSSValue::getDirectRootComputationalDependencies const):
* css/CSSValue.h:
* css/CSSVariableData.cpp:
(WebCore::CSSVariableData::CSSVariableData):
(WebCore::CSSVariableData::resolveVariableReference const):
* css/DOMCSSRegisterCustomProperty.cpp:
(WebCore::DOMCSSRegisterCustomProperty::registerProperty):
2018-10-05 Chris Dumez <cdumez@apple.com>
Regression(r236862): Crash under DOMWindowExtension::willDetachGlobalObjectFromFrame()
https://bugs.webkit.org/show_bug.cgi?id=190320
<rdar://problem/45044814>
Reviewed by Geoffrey Garen.
r236862 caused DOMWindowProperty::willDetachGlobalObjectFromFrame() to get called several
times. There was no effect for most DOMWindowProperty objects. However, it would cause
crashes for DOMWindowExtension objects, which subclass DOMWindowProperty and override
DOMWindowProperty::willDetachGlobalObjectFromFrame() because they dereference the frame
without null checking it.
To address the issue, we now make sure DOMWindowProperty::willDetachGlobalObjectFromFrame()
is not called several times.
* dom/Document.cpp:
(WebCore::Document::detachFromFrame):
Stop calling DOMWindow::willDetachDocumentFromFrame() here as most call sites already
take care of calling DOMWindow::willDetachDocumentFromFrame() beforehand (e.g.
Document::prepareForDestruction()).
Also, return early if the Document is already detached from its frame.
(WebCore::Document::frameWasDisconnectedFromOwner):
Add new utility function called when a Frame is disconnected from its owner which
calls both Document::detachFromFrame() and DOMWindow::willDetachDocumentFromFrame().
* dom/Document.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::willDetachDocumentFromFrame):
Return early if the Window is already detached from its frame.
* page/Frame.cpp:
(WebCore::Frame::disconnectOwnerElement):
2018-10-05 Jer Noble <jer.noble@apple.com>
Further unreviewed watchOS build fix: videoPerformanceMetrics unavailable on watchOS.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::videoPlaybackQualityMetrics):
2018-10-05 Jer Noble <jer.noble@apple.com>
Unreviewed watchOS build fix: videoPerformanceMetrics unavailable on watchOS.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::videoPlaybackQualityMetrics):
2018-10-05 Eric Carlson <eric.carlson@apple.com>
[MediaStream] RealtimeMediaSource should be able to vend hashed IDs
https://bugs.webkit.org/show_bug.cgi?id=190142
<rdar://problem/44911109>
Reviewed by Youenn Fablet.
No new tests, covered by existing tests.
* Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
(WebCore::CanvasCaptureMediaStreamTrack::Source::Source): Update order of parameters passed
to base class.
* Modules/mediastream/MediaDevicesRequest.cpp:
(WebCore::MediaDevicesRequest::start): ASSERT if document.deviceIDHashSalt is not the same
as passed salt.
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::getSettings const): Don't need to hash ID.
(WebCore::MediaStreamTrack::getCapabilities const): Ditto.
* Modules/mediastream/MediaStreamTrack.h:
* Modules/mediastream/MediaStreamTrack.idl:
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::allow): Pass hash salt to createMediaStream.
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::createReceiverForSource): Update order of parameters passed
to base class.
* Modules/webaudio/MediaStreamAudioSource.cpp:
(WebCore::MediaStreamAudioSource::MediaStreamAudioSource): Ditto.
* platform/mediastream/MediaConstraints.h:
* platform/mediastream/RealtimeIncomingAudioSource.cpp:
(WebCore::RealtimeIncomingAudioSource::RealtimeIncomingAudioSource): Ditto.
* platform/mediastream/RealtimeIncomingVideoSource.cpp:
(WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource): Ditto.
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::RealtimeMediaSource): Calculate hashed ID.
(WebCore::RealtimeMediaSource::selectSettings): Use m_hashedID.
(WebCore::RealtimeMediaSource::hashedId const): New.
(WebCore::RealtimeMediaSource::deviceIDHashSalt const): New.
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::createMediaStream): Take hash salt, pass it when creating
a source.
(WebCore::RealtimeMediaSourceCenter::getUserMediaDevices): Ditto.
(WebCore::RealtimeMediaSourceCenter::validateRequestConstraints): Ditto.
* platform/mediastream/RealtimeMediaSourceCenter.h:
* platform/mediastream/RealtimeMediaSourceFactory.h:
* platform/mediastream/RealtimeVideoSource.cpp:
(WebCore::RealtimeVideoSource::RealtimeVideoSource): Update parameters.
* platform/mediastream/RealtimeVideoSource.h:
* platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
(WebCore::GStreamerAudioCaptureSource::create): Ditto.
(WebCore::GStreamerAudioCaptureSource::GStreamerAudioCaptureSource): Ditto.
* platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
(WebCore::GStreamerVideoCaptureSource::create): Ditto.
(WebCore::GStreamerVideoCaptureSource::GStreamerVideoCaptureSource): Ditto.
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
* platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:
(WebCore::WrappedMockRealtimeAudioSource::WrappedMockRealtimeAudioSource): Ditto.
(WebCore::MockRealtimeAudioSource::create): Ditto.
(WebCore::MockGStreamerAudioCaptureSource::MockGStreamerAudioCaptureSource): Ditto.
* platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h:
* platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp:
(WebCore::MockRealtimeVideoSource::create): Ditto.
(WebCore::MockGStreamerVideoCaptureSource::MockGStreamerVideoCaptureSource): Ditto.
* platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::create): Ditto.
(WebCore::AVVideoCaptureSource::AVVideoCaptureSource): Ditto.
(WebCore::AVVideoCaptureSource::settings): Use hashedId to set device ID.
(WebCore::AVVideoCaptureSource::capabilities): Ditto.
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioCaptureSource::create): Update parameters.
(WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource): Ditto.
(WebCore::CoreAudioCaptureSource::capabilities): Use hashedId to set device ID.
(WebCore::CoreAudioCaptureSource::settings): Ditto.
* platform/mediastream/mac/CoreAudioCaptureSource.h:
* platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
(WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa): Update parameters.
* platform/mediastream/mac/DisplayCaptureSourceCocoa.h:
* platform/mediastream/mac/MockRealtimeAudioSourceMac.h:
* platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
(WebCore::MockRealtimeAudioSource::create): Ditto.
(WebCore::MockRealtimeAudioSourceMac::MockRealtimeAudioSourceMac): Ditto.
* platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
* platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
(WebCore::MockRealtimeVideoSource::create): Ditto.
(WebCore::MockRealtimeVideoSourceMac::MockRealtimeVideoSourceMac): Ditto.
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h:
* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
(WebCore::ScreenDisplayCaptureSourceMac::create): Ditto.
(WebCore::ScreenDisplayCaptureSourceMac::ScreenDisplayCaptureSourceMac): Ditto.
(WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream): Update logging.
(WebCore::ScreenDisplayCaptureSourceMac::startDisplayStream): Ditto.
(WebCore::ScreenDisplayCaptureSourceMac::frameAvailable): Ditto.
* platform/mediastream/mac/WindowDisplayCaptureSourceMac.h:
* platform/mediastream/mac/WindowDisplayCaptureSourceMac.mm:
(WebCore::WindowDisplayCaptureSourceMac::create): Update parameters.
* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::create): Ditto.
(WebCore::MockRealtimeAudioSource::MockRealtimeAudioSource): Ditto.
(WebCore::MockRealtimeAudioSource::settings): Use hashedId to set device ID.
(WebCore::MockRealtimeAudioSource::capabilities): Ditto.
* platform/mock/MockRealtimeAudioSource.h:
* platform/mock/MockRealtimeMediaSourceCenter.cpp:
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::create): Update parameters.
(WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource): Ditto.
(WebCore::MockRealtimeVideoSource::capabilities): Use hashedId to set device ID.
(WebCore::MockRealtimeVideoSource::settings): Ditto.
* platform/mock/MockRealtimeVideoSource.h:
2018-10-03 Jer Noble <jer.noble@apple.com>
Add support for reporting "display composited video frames" through the VideoPlaybackQuality object.
https://bugs.webkit.org/show_bug.cgi?id=190266
Reviewed by Eric Carlson.
Test: TestWebKitAPI.VideoQualityDisplayCompositing
Modify VideoPlaybackQuality to take a VideoPlaybackQualityMetrics object in its
constructor (rather than individual fields). Add a new setting to control visibility
of the displayCompositedVideoFrames attribute on VideoPlaybackQuality. Add support
for VideoPlaybackQualityMetrics to MediaPlayerPrivateAVFoundationObjC.
* Modules/mediasource/VideoPlaybackQuality.cpp:
(WebCore::VideoPlaybackQuality::create):
(WebCore::VideoPlaybackQuality::VideoPlaybackQuality):
* Modules/mediasource/VideoPlaybackQuality.h:
(WebCore::VideoPlaybackQuality::displayCompositedVideoFrames const):
* Modules/mediasource/VideoPlaybackQuality.idl:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::getVideoPlaybackQuality):
* html/HTMLMediaElement.h:
* html/HTMLMediaElement.idl:
* page/Settings.yaml:
* platform/graphics/MediaPlayer.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::videoPlaybackQualityMetrics):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::videoPlaybackQualityMetrics):
* platform/mock/mediasource/MockMediaSourcePrivate.cpp:
(WebCore::MockMediaSourcePrivate::videoPlaybackQualityMetrics):
2018-10-05 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r236866.
Breaks internal builds.
Reverted changeset:
"Add support for reporting "display composited video frames"
through the VideoPlaybackQuality object."
https://bugs.webkit.org/show_bug.cgi?id=190266
https://trac.webkit.org/changeset/236866
2018-10-05 Antoine Quint <graouts@apple.com>
[Web Animations] REGRESSION (r236809): crash under AnimationTimeline::updateCSSAnimationsForElement()
https://bugs.webkit.org/show_bug.cgi?id=190307
<rdar://problem/45009901>
Reviewed by Dean Jackson.
We could crash with an invalid access to cssAnimationsByName since cancelOrRemoveDeclarativeAnimation() already
does the job of clearing the m_elementToCSSAnimationByName entry for this particular element if there are no
animations targeting it anymore. This started happening in r236809 when we switched from a simple call to to cancel()
to a call to cancelOrRemoveDeclarativeAnimation(). We can safely remove the removal here since cancelOrRemoveDeclarativeAnimation()
will already have performed this task safely if needed.
* animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::updateCSSAnimationsForElement):
2018-10-04 Jer Noble <jer.noble@apple.com>
Add support for reporting "display composited video frames" through the VideoPlaybackQuality object.
https://bugs.webkit.org/show_bug.cgi?id=190266
Reviewed by Eric Carlson.
Test: TestWebKitAPI.VideoQualityDisplayCompositing
Modify VideoPlaybackQuality to take a VideoPlaybackQualityMetrics object in its
constructor (rather than individual fields). Add a new setting to control visibility
of the displayCompositedVideoFrames attribute on VideoPlaybackQuality. Add support
for VideoPlaybackQualityMetrics to MediaPlayerPrivateAVFoundationObjC.
* Modules/mediasource/VideoPlaybackQuality.cpp:
(WebCore::VideoPlaybackQuality::create):
(WebCore::VideoPlaybackQuality::VideoPlaybackQuality):
* Modules/mediasource/VideoPlaybackQuality.h:
(WebCore::VideoPlaybackQuality::displayCompositedVideoFrames const):
* Modules/mediasource/VideoPlaybackQuality.idl:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::getVideoPlaybackQuality):
* html/HTMLMediaElement.h:
* html/HTMLMediaElement.idl:
* page/Settings.yaml:
* platform/graphics/MediaPlayer.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::videoPlaybackQualityMetrics):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::videoPlaybackQualityMetrics):
* platform/mock/mediasource/MockMediaSourcePrivate.cpp:
(WebCore::MockMediaSourcePrivate::videoPlaybackQualityMetrics):
2018-10-04 Chris Dumez <cdumez@apple.com>
A Document / Window should lose its browsing context as soon as its iframe is removed from the document
https://bugs.webkit.org/show_bug.cgi?id=190282
Reviewed by Ryosuke Niwa.
A Document / Window should lose its browsing context (aka Frame) as soon as its iframe is removed from
the document. In WebKit, a Document / Window's Frame was only getting nulled out when the frame gets
destroyed, which happens later usually after a GC happens.
Specification:
- https://html.spec.whatwg.org/#the-iframe-element
"""
When an iframe element is removed from a document, the user agent must discard the element's nested browsing
context, if it is not null, and then set the element's nested browsing context to null.
"""
This was not consistent with the specification or other browsers (tested Chrome and Firefox) so this
patch is aligning our behavior.
In a follow-up, I am planning to look into making the Window not be a FrameDestructionObserver, and instead
get its frame from the Document. This should make the code simpler.
No new tests, rebaselined existing tests.
* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::getUserMedia const):
* Modules/mediastream/MediaDevices.h:
Update getUserMedia() to reject a the Promise with an InvalidStateError when calling after the
document has been detached, instead of throwing an InvalidStateError. This behavior is as per
specification:
- https://w3c.github.io/mediacapture-main/#dom-mediadevices-getusermedia (Step 4)
I needed to make this change to keep one of our layout tests passing.
* dom/Document.cpp:
(WebCore::Document::attachToCachedFrame):
(WebCore::Document::detachFromFrame):
* dom/Document.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::didSecureTransitionTo):
(WebCore::DOMWindow::willDetachDocumentFromFrame):
(WebCore::DOMWindow::setStatus):
(WebCore::DOMWindow::detachFromFrame):
(WebCore::DOMWindow::attachToFrame):
* page/DOMWindow.h:
* page/DOMWindowProperty.cpp:
(WebCore::DOMWindowProperty::disconnectFrameForDocumentSuspension):
(WebCore::DOMWindowProperty::willDestroyGlobalObjectInCachedFrame):
(WebCore::DOMWindowProperty::willDestroyGlobalObjectInFrame):
* page/Frame.cpp:
(WebCore::Frame::disconnectOwnerElement):
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::drawText):
Calling drawText() with a null String hits an assertion in debug. This was triggered by one of
our layout tests so I made sure we only call drawText when the String is not null.
2018-10-04 Jeremy Jones <jeremyj@apple.com>
Unify implementation in VideoFullscreenInterfaceAVKit
https://bugs.webkit.org/show_bug.cgi?id=190091
rdar://problem/44734523
Reviewed by Jer Noble.
No new tests because no behavior change.
Unified code in VideoFullscreenInterfaceAVKit now that new code path is proven and include
any changes that had been made in the old path.
* platform/ios/VideoFullscreenInterfaceAVKit.h:
* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerViewControllerDelegate playerViewControllerShouldStartPictureInPictureFromInlineWhenEnteringBackground:]):
(VideoFullscreenInterfaceAVKit::preparedToExitFullscreen):
(VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason):
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::requestUpdateInlineRect):
(VideoFullscreenControllerContext::requestVideoContentLayer):
(VideoFullscreenControllerContext::returnVideoContentLayer):
(VideoFullscreenControllerContext::didSetupFullscreen):
(VideoFullscreenControllerContext::didExitFullscreen):
2018-10-04 Justin Michaud <justin_michaud@apple.com>
Bindings generator should support static attributes that are interfaces with CallWith
https://bugs.webkit.org/show_bug.cgi?id=190292
Reviewed by Chris Dumez.
Add support for static attributes that support callWith to the bindings generator. This
is needed for CSS.paintWorklet.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateAttributeGetterBodyDefinition):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::jsTestObjConstructorTestStaticReadonlyObjGetter):
(WebCore::jsTestObjConstructorTestStaticReadonlyObj):
* bindings/scripts/test/TestObj.idl:
2018-10-04 Matt Lewis <jlewis3@apple.com>
Unreviewed, rolling out r236730.
This caused a consistent crash in test http/tests/media/media-stream/get-display-media-prompt.html.
Reverted changeset:
"[MediaStream] RealtimeMediaSource should be able to vend
hashed IDs"
https://bugs.webkit.org/show_bug.cgi?id=190142
https://trac.webkit.org/changeset/236730
2018-10-04 Wenson Hsieh <wenson_hsieh@apple.com>
[macOS] Fix some font attribute conversion bugs in preparation for "Font > Styles…" support in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=190289
<rdar://problem/45020806>
Reviewed by Ryosuke Niwa.
Makes some small adjustments to fix two bugs in font attribute conversion logic. See below for more detail.
Tests: FontManagerTests.AddFontShadowUsingFontOptions
FontManagerTests.AddAndRemoveColorsUsingFontOptions
* editing/FontAttributeChanges.cpp:
(WebCore::cssValueListForShadow):
* editing/cocoa/FontAttributesCocoa.mm:
Currently, we bail from adding a font shadow if the shadow's offset is empty. However, valid shadow offsets may
have negative dimensions, so a check for `isZero()` should be used instead.
(WebCore::FontAttributes::createDictionary const):
* platform/mac/WebCoreNSFontManagerExtras.mm:
Fall back to a transparent background color; this allows senders to remove the current background color by just
removing NSBackgroundColorAttributeName from the attribute dictionary, rather than explicitly setting it to the
transparent color (this scenario is exercised when using "Font > Styles…" to specify a font style without a
background color).
(WebCore::computedFontAttributeChanges):
2018-10-03 Ryosuke Niwa <rniwa@webkit.org>
MutationRecord doesn't keep JS wrappers of target, addedNodes, and removedNodes alive
https://bugs.webkit.org/show_bug.cgi?id=190277
Reviewed by Antti Koivisto.
The bug was caused by JSMutationRecord not visiting any of the nodes referenced by mutation records.
Fixed the bug by adding JSMutationRecord::visitAdditionalChildren, which adds the root nodes of
the root nodes of the target, addedNodes, and removedNodes in each mutation record.
Test: fast/dom/MutationObserver/mutation-record-keeps-js-wrappers-of-nodes-alive.html
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSMutationRecordCustom.cpp: Added.
(WebCore::JSMutationRecord::visitAdditionalChildren): Added.
* bindings/js/JSPerformanceObserverCustom.cpp: This file got dumped out of a unified build file
where using namespace JSC was defined. Use the fully qualified names to refer to JSC types.
(WebCore::JSPerformanceObserverOwner::isReachableFromOpaqueRoots):
* dom/MutationRecord.cpp:
(WebCore::ChildListRecord::visitNodesConcurrently): Added.
(WebCore::RecordWithEmptyNodeLists::visitNodesConcurrently): Added.
(WebCore::MutationRecordWithNullOldValue::visitNodesConcurrently): Added.
* dom/MutationRecord.h:
* dom/MutationRecord.idl:
2018-10-04 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthN] Move time out control from WebProcess to UIProcess
https://bugs.webkit.org/show_bug.cgi?id=189642
<rdar://problem/44476765>
Reviewed by Chris Dumez.
Since now the control unit of WebAuthN has been moved to UI Process, i.e. AuthenticatorManager,
the time out timer should move to UI Process as well.
Tests: http/wpt/webauthn/public-key-credential-create-failure-local-silent.https.html
http/wpt/webauthn/public-key-credential-get-failure-local-silent.https.html
* Modules/webauthn/AuthenticatorCoordinator.cpp:
(WebCore::AuthenticatorCoordinator::create const):
(WebCore::AuthenticatorCoordinator::discoverFromExternalSource const):
(WebCore::AuthenticatorCoordinatorInternal::initTimeoutTimer): Deleted.
(WebCore::AuthenticatorCoordinatorInternal::didTimeoutTimerFire): Deleted.
* Modules/webauthn/PublicKeyCredentialCreationOptions.h:
(WebCore::PublicKeyCredentialCreationOptions::encode const):
(WebCore::PublicKeyCredentialCreationOptions::decode):
* Modules/webauthn/PublicKeyCredentialRequestOptions.h:
(WebCore::PublicKeyCredentialRequestOptions::encode const):
(WebCore::PublicKeyCredentialRequestOptions::decode):
2018-10-04 Chris Dumez <cdumez@apple.com>
Regression(r236779): Crash when changing the input element type from inside an 'input' event listener
https://bugs.webkit.org/show_bug.cgi?id=190252
Reviewed by Alex Christensen.
Add a null check for element() after firing the 'input' event and before firing the 'change' event
in case the input event listener changes the input type.
Tests: fast/dom/HTMLInputElement/change-type-in-click-event-listener.html
fast/dom/HTMLInputElement/change-type-in-input-event-listener.html
* html/BaseCheckableInputType.cpp:
(WebCore::BaseCheckableInputType::fireInputAndChangeEvents):
2018-10-04 Yuhan Wu <yuhan_wu@apple.com>
runtime flag and IDL for MediaRecorder
https://bugs.webkit.org/show_bug.cgi?id=190018
Reviewed by Youenn Fablet and Chris Dumez.
Covered by tests:
imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-constructor.html
imported/w3c/web-platform-tests/mediacapture-record/BlobEvent-constructor.html
Add an architecture of the IDL and the class for MediaRecorder and BlobEvent.
* CMakeLists.txt:
* DerivedSources.make:
* Modules/mediarecorder/BlobEvent.h:
(WebCore::BlobEvent::create):
(WebCore::BlobEvent:::Event):
* Modules/mediarecorder/BlobEvent.idl:
* Modules/mediarecorder/MediaRecorder.cpp:
(WebCore::MediaRecorder::create):
(WebCore::MediaRecorder::MediaRecorder):
(WebCore::MediaRecorder::activeDOMObjectName const):
(WebCore::MediaRecorder::canSuspendForDocumentSuspension const):
* Modules/mediarecorder/MediaRecorder.h: Added.
(WebCore::MediaRecorder::state const):
(WebCore::MediaRecorder::~MediaRecorder):
* Modules/mediarecorder/MediaRecorder.idl:
* Modules/mediastream/RTCRtpReceiver.cpp:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::mediaRecorderEnabled const):
(WebCore::RuntimeEnabledFeatures::setMediaRecorderEnabled):
2018-10-04 Chris Dumez <cdumez@apple.com>
Unreviewed, rolling out r236803.
Caused crashes on some bots
Reverted changeset:
"Regression(r236779): Crash when changing the input element
type from inside an 'input' event listener"
https://bugs.webkit.org/show_bug.cgi?id=190252
https://trac.webkit.org/changeset/236803
2018-10-04 Dan Bernstein <mitz@apple.com>
Tried to fix the Mojave build after r236832.
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(-[WebAVStreamDataParserListener streamDataParserWillProvideContentKeyRequestInitializationData:forTrackID:]):
(-[WebAVStreamDataParserListener streamDataParser:didProvideContentKeyRequestInitializationData:forTrackID:]):
2018-10-04 Michael Catanzaro <mcatanzaro@igalia.com>
ENABLE(ASSERT) used in grid code when !ASSERT_DISABLED is desired
https://bugs.webkit.org/show_bug.cgi?id=190145
Reviewed by Javier Fernandez.
Replace ENABLE(ASSERT), which doesn't exist, with !ASSERT_DISABLED.
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::placeItemsOnGrid const):
(WebCore::RenderGrid::baselinePosition const):
* rendering/style/GridArea.h:
(WebCore::GridSpan::GridSpan):
2018-10-04 Dan Bernstein <mitz@apple.com>
WebCore part of [Xcode] Update some build settings as recommended by Xcode 10
https://bugs.webkit.org/show_bug.cgi?id=190250
Reviewed by Andy Estes.
* Configurations/Base.xcconfig: Enabled CLANG_WARN_COMMA, CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF,
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED, and CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS.
* WebCore.xcodeproj/project.pbxproj: Let Xcode update LastUpgradeCheck and remove a
duplicate reference in a Compile Sources build phase.
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm: Suppress -Wdeprecated-implementations
around implementations of deprecated accessibility methods.
* loader/TextResourceDecoder.cpp:
(WebCore::TextResourceDecoder::checkForBOM): Addressed CLANG_WARN_COMMA.
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveAuthenticationChallenge:]):
Suppress -Wdeprecated-implementations around implementations of this deprecated delegate method.
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:canAuthenticateAgainstProtectionSpace:]): Ditto.
2018-10-02 Darin Adler <darin@apple.com>
AudioNode.connect should use [ReturnValue]
https://bugs.webkit.org/show_bug.cgi?id=190231
Reviewed by Eric Carlson.
This is a slightly more efficient way to return a value that is always
identical to one of the arguments, so use it here.
* Modules/webaudio/AudioBasicInspectorNode.cpp:
(WebCore::AudioBasicInspectorNode::connect): Return ExceptionOr<void>.
* Modules/webaudio/AudioBasicInspectorNode.h: Ditto.
* Modules/webaudio/AudioNode.cpp:
(WebCore::AudioNode::connect): Ditto.
* Modules/webaudio/AudioNode.h: Ditto.
* Modules/webaudio/AudioNode.idl: Use [ReturnValue].
2018-10-03 Justin Michaud <justin_michaud@apple.com>
Registered custom properties should allow inheritance to be controlled
https://bugs.webkit.org/show_bug.cgi?id=190038
Reviewed by Antti Koivisto.
Tests: css-custom-properties-api/inherits.html
css-custom-properties-api/length.html
css-custom-properties-api/length2.html
Add support for inherits property on registered css custom properties, as well
as a starting point for evaluating registered custom properties with types. Registered
custom properties are evaluated as length values before being substituted. Currently,
relative unit cycles are not detected.
A proper solution is still needed to resolve relative unit cycles, and to apply properties like font
and line-height before they are needed by custom properties. In this patch, the font-size property is
applied twice, once before and once after resolving custom property values.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::customPropertyValue):
(WebCore::CSSComputedStyleDeclaration::length const):
(WebCore::CSSComputedStyleDeclaration::item const):
Allow JS to get custom properties that have been resolved to a length. Also add properties from
m_rareNonInheritedData.
* css/CSSCustomPropertyValue.cpp:
(WebCore::CSSCustomPropertyValue::checkVariablesForCycles const):
(WebCore::CSSCustomPropertyValue::resolveVariableReferences const):
* css/CSSCustomPropertyValue.h:
* css/CSSRegisteredCustomProperty.cpp: Copied from Source/WebCore/css/CSSRegisteredCustomProperty.h.
(WebCore::CSSRegisteredCustomProperty::CSSRegisteredCustomProperty):
(WebCore::CSSRegisteredCustomProperty::initialValueCopy const):
* css/CSSRegisteredCustomProperty.h:
(WebCore::CSSRegisteredCustomProperty::initialValue const):
* css/CSSVariableData.cpp:
(WebCore::CSSVariableData::checkVariablesForCycles const):
(WebCore::CSSVariableData::checkVariablesForCyclesWithRange const):
(WebCore::CSSVariableData::resolveVariableFallback const):
(WebCore::CSSVariableData::resolveVariableReference const):
(WebCore::CSSVariableData::resolveVariableReferences const):
(WebCore::CSSVariableData::resolveTokenRange const):
* css/CSSVariableData.h:
* css/CSSVariableReferenceValue.cpp:
(WebCore::CSSVariableReferenceValue::checkVariablesForCycles const):
* css/CSSVariableReferenceValue.h:
* css/DOMCSSRegisterCustomProperty.cpp:
(WebCore::DOMCSSRegisterCustomProperty::registerProperty):
Use RenderStyle over passing in a customProperties map.
* css/StyleBuilder.h:
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertLength):
(WebCore::StyleBuilderConverter::convertLengthOrAuto):
(WebCore::StyleBuilderConverter::convertLengthSizing):
(WebCore::StyleBuilderConverter::convertLengthMaxSizing):
* css/StyleBuilderCustom.h:
(WebCore::StyleBuilderCustom::applyInitialCustomProperty):
(WebCore::StyleBuilderCustom::applyInheritCustomProperty):
(WebCore::StyleBuilderCustom::applyValueCustomProperty):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::useSVGZoomRules const):
(WebCore::StyleResolver::useSVGZoomRulesForLength const):
(WebCore::StyleResolver::applyProperty):
(WebCore::StyleResolver::resolvedVariableValue const):
(WebCore::StyleResolver::applyCascadedProperties):
(WebCore::StyleResolver::useSVGZoomRules): Deleted.
(WebCore::StyleResolver::useSVGZoomRulesForLength): Deleted.
(WebCore::StyleResolver::resolvedVariableValue): Deleted.
* css/StyleResolver.h:
* css/makeprop.pl:
Move custom property initial values to StyleBuilerCustom. Hook them up to correctly deal with
inheritance, unset and revert values.
* css/parser/CSSParser.cpp:
(WebCore::CSSParser::parseValueWithVariableReferences):
* css/parser/CSSParser.h:
* css/parser/CSSParserContext.cpp:
(WebCore::CSSParserContext::CSSParserContext):
* css/parser/CSSParserContext.h:
* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::parseSingleValue):
Allow parsing custom property values as lengths.
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::checkVariablesInCustomProperties):
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::inheritedCustomProperties const):
(WebCore::RenderStyle::nonInheritedCustomProperties const):
(WebCore::RenderStyle::setInheritedCustomPropertyValue):
(WebCore::RenderStyle::setNonInheritedCustomPropertyValue):
(WebCore::RenderStyle::getCustomProperty const):
(WebCore::RenderStyle::customProperties const): Deleted.
(WebCore::RenderStyle::setCustomPropertyValue): Deleted.
* rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator== const):
* rendering/style/StyleRareNonInheritedData.h:
* style/StyleResolveForDocument.cpp:
(WebCore::Style::resolveForDocument):
Add support for RenderStyle to deal with both inherited and non-inherited properties, and to find
cycles between them.
2018-10-03 Ryosuke Niwa <rniwa@webkit.org>
Clear m_pendingTargets in MutationObserver::takeRecords
https://bugs.webkit.org/show_bug.cgi?id=190240
Reviewed by Geoffrey Garen.
In r236781, we delayed the clearing of m_pendingTargets until the end of microtask to avoid a race between
mutation record's JS wrappers getting created and GC marking JS wrappers of elements in mutation records.
This patch shortens this delay to until mutation record's JS wrappers are created. Specifically, we make
MutationObserver::takeRecords() return a struct which has both pending targets hash set and the vector of
mutation records so that the hash set survives through the creation of JS wrappers for mutation records.
To do this, a new IDL extended attribute "ResultField" is introduced to specify the member variable in
which the result is stored.
No new tests. Unfortunately, this race condition appears to be impossible to capture in a regression test.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateOperationBodyDefinition):
* bindings/scripts/IDLAttributes.json:
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::jsTestInterfacePrototypeFunctionTakeNodesBody):
(WebCore::jsTestInterfacePrototypeFunctionTakeNodes):
* bindings/scripts/test/TestImplements.idl: Added a test case.
* dom/MutationObserver.cpp:
(WebCore::MutationObserver::takeRecords):
(WebCore::MutationObserver::deliver):
* dom/MutationObserver.h:
* dom/MutationObserver.idl:
2018-10-03 Youenn Fablet <youenn@apple.com>
Add VP8 support to WebRTC
https://bugs.webkit.org/show_bug.cgi?id=189976
Reviewed by Eric Carlson.
Add a runtime flag to control activation of VP8 codec.
Bind this runtime flag to the video codec factories.
Test: webrtc/video-mute-vp8.html
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::createLibWebRTCPeerConnectionBackend):
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::webRTCVP8CodecEnabled const):
(WebCore::RuntimeEnabledFeatures::setWebRTCVP8CodecEnabled):
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
* platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:
(WebCore::LibWebRTCProviderCocoa::createDecoderFactory):
(WebCore::LibWebRTCProviderCocoa::createEncoderFactory):
* testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
Enable VP8 codec for tests.
2018-09-28 Jiewen Tan <jiewen_tan@apple.com>
[WebCrypto] ECDSA could not deal with invalid signature inputs
https://bugs.webkit.org/show_bug.cgi?id=189879
<rdar://problem/44701276>
Reviewed by Brent Fulgham.
Add some guards over detections of the start positions of r/s.
Covered by improved existing tests.
* crypto/mac/CryptoAlgorithmECDSAMac.cpp:
(WebCore::verifyECDSA):
2018-10-03 Jer Noble <jer.noble@apple.com>
Add a quirk to disable Modern EME for sites which are broken with it enabled
https://bugs.webkit.org/show_bug.cgi?id=190051
Reviewed by Daniel Bates.
Add a new class, parallel to Settings, to track quirk behavior. Extend the bindings
generator to support a DisabledByQuirk attribute, and set this attribute for all
the Modern EME types. Check whether the quirk is set inside HTMLMediaElement in
addition to the existing Setting.
* Modules/encryptedmedia/MediaKeyMessageEvent.idl:
* Modules/encryptedmedia/MediaKeySession.idl:
* Modules/encryptedmedia/MediaKeyStatusMap.idl:
* Modules/encryptedmedia/MediaKeySystemAccess.idl:
* Modules/encryptedmedia/MediaKeys.idl:
* Modules/encryptedmedia/NavigatorEME.idl:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/scripts/CodeGenerator.pm:
(WK_ucfirst):
* bindings/scripts/CodeGeneratorJS.pm:
(NeedsRuntimeCheck):
(GenerateRuntimeEnableConditionalString):
* bindings/scripts/IDLAttributes.json:
* bindings/scripts/preprocess-idls.pl:
(GenerateConstructorAttributes):
* dom/Document.cpp:
(WebCore::Document::Document):
* dom/Document.h:
(WebCore::Document::quirks const):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaPlayerKeyNeeded):
(WebCore::HTMLMediaElement::mediaPlayerInitializationDataEncountered):
* html/HTMLMediaElement.idl:
* page/Quirks.cpp: Added.
(Quirks::Quirks):
(Quirks::disableEncryptedMediaAPIQuirk const):
* page/Quirks.h: Added.
2018-10-03 Antoine Quint <graouts@apple.com>
[Web Animations] REGRESSION: setting 'animation-name: none' after a 'fill: forwards' animation has completed does not revert to the unanimated style
https://bugs.webkit.org/show_bug.cgi?id=190257
<rdar://problem/41341473>
Reviewed by Dean Jackson.
Test: animations/animation-fill-forwards-removal.html
While we removed a declarative animation that was no longer targetting its element, we were not removing it from the declarative animation maps
on the timeline, which means that the animation would still be picked up when resolving styles. We now notify the timeline that the animation
was detached from the element. This preserves the DeclarativeAnimation relationship returning the element as its effect's target and the document
timeline as its timeline, but the document timeline will no longer see this animation as targeting this element.
* animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::cancelOrRemoveDeclarativeAnimation):
* animation/DeclarativeAnimation.h:
(WebCore::DeclarativeAnimation::target const):
2018-10-03 Jer Noble <jer.noble@apple.com>
CRASH in CVPixelBufferGetBytePointerCallback()
https://bugs.webkit.org/show_bug.cgi?id=190092
Reviewed by Eric Carlson.
Speculative fix for crash that occurs when callers of CVPixelBufferGetBytePointerCallback() attempt
to read the last byte of a CVPixelBuffer (as a pre-flight check) and crash due to a memory access
error. It's speculated that mismatching CVPixelBufferLockBytePointer / CVPixelBufferUnlockBytePointer
calls could result in an incorrect state inside the CVPixelBuffer. Add log count checks, locking, and
release logging to try to pinpoint if mismatch lock counts are occurring in this code path.
* platform/graphics/cv/PixelBufferConformerCV.cpp:
(WebCore::CVPixelBufferGetBytePointerCallback):
(WebCore::CVPixelBufferReleaseBytePointerCallback):
(WebCore::CVPixelBufferReleaseInfoCallback):
(WebCore::PixelBufferConformerCV::createImageFromPixelBuffer):
2018-10-03 Chris Dumez <cdumez@apple.com>
Regression(r236779): Crash when changing the input element type from inside an 'input' event listener
https://bugs.webkit.org/show_bug.cgi?id=190252
Reviewed by Alex Christensen.
Add a null check for element() after firing the 'input' event and before firing the 'change' event
in case the input event listener changes the input type.
Tests: fast/dom/HTMLInputElement/change-type-in-click-event-listener.html
fast/dom/HTMLInputElement/change-type-in-input-event-listener.html
* html/BaseCheckableInputType.cpp:
(WebCore::BaseCheckableInputType::fireInputAndChangeEvents):
2018-10-03 Chris Dumez <cdumez@apple.com>
Passing noopener=NOOPENER to window.open() should cause the new window to not have an opener
https://bugs.webkit.org/show_bug.cgi?id=190251
Reviewed by Alex Christensen.
Passing noopener=NOOPENER to window.open() should cause the new window to not have an opener,
similarly to noopener=1:
- https://html.spec.whatwg.org/#window-open-steps (step 5)
It does not matter what the value is, if there is a key named "noopener", then the new window
should not have an opener.
No new tests, rebaselined existing test.
* page/WindowFeatures.cpp:
(WebCore::setWindowFeature):
2018-10-03 Ryosuke Niwa <rniwa@webkit.org>
GC can collect JS wrappers of nodes in the mutation records waiting to be delivered
https://bugs.webkit.org/show_bug.cgi?id=190115
Reviewed by Geoffrey Garen.
Fixed the bug by retaining JS wrappers of elements in mutation records using GCReachableRef.
This patch deploys GCReachableRef in two places: MutationObserver where each mutation record's
target is kept alive and MutationObserverRegistration where each node which had been removed
from an observed tree is kept alive for a subtree observation.
No new test since the test which can reproduce this problem is too slow.
* dom/GCReachableRef.h:
(WebCore::GCReachableRef): Made it work with hash table.
(WebCore::GCReachableRef::operator T& const):
(WebCore::GCReachableRef::GCReachableRef):
(WebCore::GCReachableRef::isHashTableDeletedValue const):
(WebCore::GCReachableRef::isHashTableEmptyValue const):
(WebCore::GCReachableRef::ptrAllowingHashTableEmptyValue const):
(WebCore::GCReachableRef::ptrAllowingHashTableEmptyValue):
(WebCore::GCReachableRef::assignToHashTableEmptyValue):
(WTF::HashTraits<WebCore::GCReachableRef<P>>::emptyValue):
(WTF::HashTraits<WebCore::GCReachableRef<P>>::constructEmptyValue):
(WTF::HashTraits<WebCore::GCReachableRef<P>>::isEmptyValue):
(WTF::HashTraits<WebCore::GCReachableRef<P>>::assignToEmpty):
(WTF::HashTraits<WebCore::GCReachableRef<P>>::peek):
(WTF::HashTraits<WebCore::GCReachableRef<P>>::take):
* dom/MutationObserver.cpp:
(WebCore::MutationObserver::takeRecords): Don't clear m_pendingTargets because that would allow wrappers
to be collected before elements in mutation records are accessed. We delay until the end of the current
microtask at which point deliver() function is called.
(WebCore::MutationObserver::disconnect):
(WebCore::MutationObserver::enqueueMutationRecord): Add the target to the list of elements to keep alive.
This is needed for a newly inserted node, a node with attribute change, etc...
(WebCore::MutationObserver::deliver): Keep the set of transient registration targets alive until mutation
records are delivered to each observer. These are nodes which had been removed from a tree and whose
subtree had still been obsreved up until this point.
* dom/MutationObserver.h:
* dom/MutationObserverRegistration.cpp:
(WebCore::MutationObserverRegistration::observedSubtreeNodeWillDetach):
(WebCore::MutationObserverRegistration::takeTransientRegistrations): Return the hash set of elemenets
that need to be kept alive so that MutationObserver::deliver can keep them alive until the deliver
function had been called.
(WebCore::MutationObserverRegistration::addRegistrationNodesToSet const):
* dom/MutationObserverRegistration.h:
2018-10-03 Dean Jackson <dino@apple.com>
Make the Pointer Events feature description valid
https://bugs.webkit.org/show_bug.cgi?id=190254
Reviewed by Simon Fraser.
* features.json:
2018-10-03 Matt Lewis <jlewis3@apple.com>
Unreviewed, rolling out r236781.
The test added with this commit is timing out consistently.
Reverted changeset:
"GC can collect JS wrappers of nodes in the mutation records
waiting to be delivered"
https://bugs.webkit.org/show_bug.cgi?id=190115
https://trac.webkit.org/changeset/236781
2018-10-03 Dean Jackson <dino@apple.com>
[macOS] Switching to discrete GPU should be done in the UI process
https://bugs.webkit.org/show_bug.cgi?id=189361
<rdar://problem/43949622>
Try to fix the IOSMAC build.
* platform/graphics/GraphicsContext3D.h:
2018-10-03 Chris Dumez <cdumez@apple.com>
input.checked is incorrect while we're parsing its children
https://bugs.webkit.org/show_bug.cgi?id=190227
Reviewed by Ryosuke Niwa.
input.checked was incorrect while we're parsing its children because we were delaying updating the
checked state until HTMLInputElement::finishParsingChildren() is called, to avoid a bad interaction
with form state restoration.
In this patch, we update the checked state as soon as the 'checked' attribute is set, when we know
that no form state to restore.
fast/forms/radio/state-restore-radio-group.html covers the form restoration case and is still
passing.
No new tests, rebaselined existing test.
* html/FormController.cpp:
(WebCore::FormController::hasFormStateToRestore const):
* html/FormController.h:
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::parseAttribute):
2018-10-03 Miguel Gomez <magomez@igalia.com>
[GTK][WPE] Incorrect rendering of layers whose backingStore hasn't changed
https://bugs.webkit.org/show_bug.cgi?id=190249
Reviewed by Žan Doberšek.
Do not overwrite m_nicosia.performLayerSync when updating the content buffers or we lose
the value calculated during the layer flush. Use an OR instead to keep the old value.
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::updateContentBuffers):
2018-10-03 Youenn Fablet <youenn@apple.com>
Enable H264 simulcast
https://bugs.webkit.org/show_bug.cgi?id=190167
Reviewed by Eric Carlson.
Activate H264 simulcast trial field.
Make track.getSettings() expose width and height for incoming tracks.
Test: webrtc/simulcast-h264.html
* Configurations/WebCore.xcconfig:
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::LibWebRTCMediaEndpoint):
* platform/mediastream/RealtimeIncomingVideoSource.cpp:
(WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource):
2018-10-03 Michael Catanzaro <mcatanzaro@igalia.com>
-Wunused-variable in RenderLayer::updateScrollableAreaSet
https://bugs.webkit.org/show_bug.cgi?id=190200
Reviewed by Yusuke Suzuki.
Pass it through UNUSED_VARIABLE().
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
2018-10-03 Zan Dobersek <zdobersek@igalia.com>
Ref<FetchResponse> use-after-move in DOMCache::put()
https://bugs.webkit.org/show_bug.cgi?id=190239
Reviewed by Youenn Fablet.
Retrieve reference from the Ref<FetchResponse> object before it's
move-captured in the lambda that's passed to the
FetchResponse::consumeBodyReceivedByChunk() method that is invoked on
that very same object. This is a classic use-after-move bug that pops
up on compilers with different C++ calling convention.
* Modules/cache/DOMCache.cpp:
(WebCore::DOMCache::put):
2018-10-03 Ryosuke Niwa <rniwa@webkit.org>
Enable selectionAcrossShadowBoundariesEnabled by default in WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=190238
Reviewed by Antti Koivisto.
Enable the feature by default.
* page/Settings.yaml:
2018-10-02 Ryosuke Niwa <rniwa@webkit.org>
Copying content with shadow DOM doesn't copy any contents
https://bugs.webkit.org/show_bug.cgi?id=157443
Reviewed by Wenson Hsieh.
This patch adds the support for copying and pasting content across shadow boundaries in HTML and plain text,
which is enabled whenever selection across shadow boundaries is enabled.
To do this, TextIterator now has a constructor which takes two Positions, and the node traversal code in
StyledMarkupAccumulator has been abstracted via helper functions as done for TextIterator.
When serializing a HTMl slot element, serialize it as a span with "display: contents" to make sure when
the content is pasted into a shadow tree, it wouldn't affect the slot assignment of the shadow tree.
Tests: editing/pasteboard/copy-paste-across-shadow-boundaries-1.html
editing/pasteboard/copy-paste-across-shadow-boundaries-2.html
editing/pasteboard/copy-paste-across-shadow-boundaries-3.html
editing/pasteboard/copy-paste-across-shadow-boundaries-4.html
editing/pasteboard/copy-paste-across-shadow-boundaries-with-style-1.html
editing/pasteboard/copy-paste-across-shadow-boundaries-with-style-2.html
editing/pasteboard/copy-paste-with-shadow-content.html
* dom/ComposedTreeIterator.h:
(WebCore::assignedSlotIgnoringUserAgentShadow): Moved from TextIterator.cpp.
(WebCore::shadowRootIgnoringUserAgentShadow): Ditto.
(WebCore::firstChildInComposedTreeIgnoringUserAgentShadow): Ditto.
(WebCore::nextSiblingInComposedTreeIgnoringUserAgentShadow): Ditto.
* dom/Position.h:
(WebCore::Position::treeScope const): Added.
* editing/EditingStyle.cpp:
(WebCore::EditingStyle::addDisplayContents): Added.
* editing/EditingStyle.h:
* editing/Editor.cpp:
(WebCore::Editor::selectedText const): Use the new behavior when selectionAcrossShadowBoundariesEnabled is set.
(WebCore::Editor::selectedTextForDataTransfer const): Ditto.
* editing/MarkupAccumulator.cpp:
(WebCore::MarkupAccumulator::appendEndElement): Renamed from appendEndTag. Now takes StringBuilder.
* editing/MarkupAccumulator.h:
(WebCore::MarkupAccumulator::appendEndTag):
* editing/TextIterator.cpp:
(WebCore::TextIterator::TextIterator): Added a new variant which takes two positions.
(WebCore::TextIterator::init):
(WebCore::firstChild):
(WebCore::nextSibling):
(WebCore::plainText): Ditto.
* editing/TextIterator.h:
* editing/cocoa/EditorCocoa.mm:
(WebCore::Editor::selectionInHTMLFormat): Use the new behavior if selectionAcrossShadowBoundariesEnabled is set.
* editing/gtk/EditorGtk.cpp:
(WebCore::Editor::writeSelectionToPasteboard): Ditto.
* editing/markup.cpp:
(WebCore::StyledMarkupAccumulator::parentNode): Added.
(WebCore::StyledMarkupAccumulator::firstChild): Added.
(WebCore::StyledMarkupAccumulator::nextSibling): Added.
(WebCore::StyledMarkupAccumulator::nextSkippingChildren): Added.
(WebCore::StyledMarkupAccumulator::hasChildNodes): Added.
(WebCore::StyledMarkupAccumulator::isDescendantOf): Added.
(WebCore::StyledMarkupAccumulator::StyledMarkupAccumulator):
(WebCore::StyledMarkupAccumulator::appendElement): Serialize a slot element as a span with display: contents.
(WebCore::StyledMarkupAccumulator::appendEndElement): Added. Ditto.
(WebCore::StyledMarkupAccumulator::serializeNodes):
(WebCore::StyledMarkupAccumulator::traverseNodesForSerialization): Use the newly added helper functions to
traverse the composed tree when m_useComposedTree is set.
(WebCore::commonShadowIncludingAncestor): Added.
(WebCore::serializePreservingVisualAppearanceInternal): Added SerializeComposedTree as an argument. Also use
StyledMarkupAccumulator::parentNode to serialize special common ancestors; e.g. to preserve b, i, etc...
(WebCore::serializePreservingVisualAppearance): Ditto to the variant which takes VisibleSelection.
(WebCore::sanitizedMarkupForFragmentInDocument):
* editing/markup.h:
* editing/wpe/EditorWPE.cpp:
(WebCore::Editor::writeSelectionToPasteboard):
* loader/archive/cf/LegacyWebArchive.cpp:
(WebCore::LegacyWebArchive::createFromSelection):
* page/PageSerializer.cpp:
(WebCore::PageSerializer::SerializerMarkupAccumulator::appendEndElement):
* testing/Internals.cpp:
(WebCore::Internals::setSelectionWithoutValidation): Added. A helper function to create a selection across
shadow boundaries for testing purposes.
* testing/Internals.h:
* testing/Internals.idl:
2018-10-02 Chris Dumez <cdumez@apple.com>
MessageEvent.ports should return the same object
https://bugs.webkit.org/show_bug.cgi?id=190151
Reviewed by Darin Adler.
MessageEvent.ports should return the same object it was initialized to instead of
constructing a new JSValue every time.
No new tests, rebaselined existing test.
* bindings/js/JSMessageEventCustom.cpp:
(WebCore::JSMessageEvent::ports const):
(WebCore::JSMessageEvent::visitAdditionalChildren):
* dom/MessageEvent.cpp:
(WebCore::MessageEvent::initMessageEvent):
* dom/MessageEvent.h:
* dom/MessageEvent.idl:
2018-10-01 Ryosuke Niwa <rniwa@webkit.org>
GC can collect JS wrappers of nodes in the mutation records waiting to be delivered
https://bugs.webkit.org/show_bug.cgi?id=190115
Reviewed by Geoffrey Garen.
Fixed the bug by retaining JS wrappers of elements in mutation records using GCReachableRef.
This patch deploys GCReachableRef in two places: MutationObserver where each mutation record's
target is kept alive and MutationObserverRegistration where each node which had been removed
from an observed tree is kept alive for a subtree observation.
Test: fast/dom/MutationObserver/mutation-observer-retains-js-wrappers-of-targets-alive.html
* dom/GCReachableRef.h:
(WebCore::GCReachableRef): Made it work with hash table.
(WebCore::GCReachableRef::operator T& const):
(WebCore::GCReachableRef::GCReachableRef):
(WebCore::GCReachableRef::isHashTableDeletedValue const):
(WebCore::GCReachableRef::isHashTableEmptyValue const):
(WebCore::GCReachableRef::ptrAllowingHashTableEmptyValue const):
(WebCore::GCReachableRef::ptrAllowingHashTableEmptyValue):
(WebCore::GCReachableRef::assignToHashTableEmptyValue):
(WTF::HashTraits<WebCore::GCReachableRef<P>>::emptyValue):
(WTF::HashTraits<WebCore::GCReachableRef<P>>::constructEmptyValue):
(WTF::HashTraits<WebCore::GCReachableRef<P>>::isEmptyValue):
(WTF::HashTraits<WebCore::GCReachableRef<P>>::assignToEmpty):
(WTF::HashTraits<WebCore::GCReachableRef<P>>::peek):
(WTF::HashTraits<WebCore::GCReachableRef<P>>::take):
* dom/MutationObserver.cpp:
(WebCore::MutationObserver::takeRecords): Don't clear m_pendingTargets because that would allow wrappers
to be collected before elements in mutation records are accessed. We delay until the end of the current
microtask at which point deliver() function is called.
(WebCore::MutationObserver::disconnect):
(WebCore::MutationObserver::enqueueMutationRecord): Add the target to the list of elements to keep alive.
This is needed for a newly inserted node, a node with attribute change, etc...
(WebCore::MutationObserver::deliver): Keep the set of transient registration targets alive until mutation
records are delivered to each observer. These are nodes which had been removed from a tree and whose
subtree had still been obsreved up until this point.
* dom/MutationObserver.h:
* dom/MutationObserverRegistration.cpp:
(WebCore::MutationObserverRegistration::observedSubtreeNodeWillDetach):
(WebCore::MutationObserverRegistration::takeTransientRegistrations): Return the hash set of elemenets
that need to be kept alive so that MutationObserver::deliver can keep them alive until the deliver
function had been called.
(WebCore::MutationObserverRegistration::addRegistrationNodesToSet const):
* dom/MutationObserverRegistration.h:
2018-10-02 Chris Dumez <cdumez@apple.com>
radio / checkbox inputs should fire "click, input, change" events in order when clicked
https://bugs.webkit.org/show_bug.cgi?id=190223
Reviewed by Ryosuke Niwa.
radio / checkbox inputs should fire "click, input, change" events in order when clicked:
- https://html.spec.whatwg.org/#radio-button-state-(type=radio)
- https://html.spec.whatwg.org/#checkbox-state-(type=checkbox)
- https://dom.spec.whatwg.org/#ref-for-eventtarget-activation-behaviorâ‘¢ (step 11)
Gecko and Blink already behave this way. However, WebKit has the following issues:
- the input event is not fired
- the click event is fired after the change event
No new tests, updated / rebaselined existing tests.
* html/BaseCheckableInputType.cpp:
(WebCore::BaseCheckableInputType::fireInputAndChangeEvents):
* html/BaseCheckableInputType.h:
* html/CheckboxInputType.cpp:
(WebCore::CheckboxInputType::willDispatchClick):
(WebCore::CheckboxInputType::didDispatchClick):
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::setChecked):
* html/HTMLInputElement.h:
* html/RadioInputType.cpp:
(WebCore::RadioInputType::willDispatchClick):
(WebCore::RadioInputType::didDispatchClick):
2018-10-02 Chris Dumez <cdumez@apple.com>
fieldset.elements should return an HTMLCollection instead of an HTMLFormControlsCollection
https://bugs.webkit.org/show_bug.cgi?id=190218
Reviewed by Alex Christensen.
fieldset.elements should return an HTMLCollection instead of an HTMLFormControlsCollection:
- https://github.com/whatwg/html/commit/8beedf0c2ffd38853caddec67490288f47afc8eb
Gecko has always behaved this way. Blink aligned with Gecko and the HTML specification in December 2016:
- https://bugs.chromium.org/p/chromium/issues/detail?id=665291
This simplifies our HTMLFieldSetElement code a lot.
Test: fast/forms/fieldset/fieldset-elements-htmlcollection.html
* html/CollectionType.h:
* html/GenericCachedHTMLCollection.cpp:
(WebCore::GenericCachedHTMLCollection<traversalType>::elementMatches const):
* html/HTMLCollection.cpp:
(WebCore::HTMLCollection::rootTypeFromCollectionType):
(WebCore::invalidationTypeExcludingIdAndNameAttributes):
* html/HTMLFieldSetElement.cpp:
(WebCore::HTMLFieldSetElement::elements):
* html/HTMLFieldSetElement.h:
* html/HTMLFieldSetElement.idl:
* html/HTMLFormControlsCollection.cpp:
(WebCore::HTMLFormControlsCollection::HTMLFormControlsCollection):
(WebCore:: const):
(WebCore::HTMLFormControlsCollection::copyFormControlElementsVector const):
(WebCore::HTMLFormControlsCollection::ownerNode const):
(WebCore::HTMLFormControlsCollection::updateNamedElementCache const):
* html/HTMLFormControlsCollection.h:
2018-10-02 Devin Rousso <drousso@apple.com>
Web Inspector: prevent layer events from firing until the layer information is re-requested
https://bugs.webkit.org/show_bug.cgi?id=190159
Reviewed by Joseph Pecoraro.
Test: inspector/layers/layerTreeDidChange.html
* inspector/agents/InspectorLayerTreeAgent.h:
* inspector/agents/InspectorLayerTreeAgent.cpp:
(WebCore::InspectorLayerTreeAgent::reset):
(WebCore::InspectorLayerTreeAgent::layerTreeDidChange):
(WebCore::InspectorLayerTreeAgent::layersForNode):
2018-10-02 Brian Burg <bburg@apple.com>
Web Automation: tab default key handler should always cycle focus when page is controlled by automation
https://bugs.webkit.org/show_bug.cgi?id=190221
<rdar://problem/44914534>
Reviewed by Joseph Pecoraro.
This change progresses WPT WebDriver test special_keys.py::test_webdriver_special_key_sends_keydown[TAB-expected24].
* page/FocusController.cpp:
(WebCore::FocusController::advanceFocusInDocumentOrder):
Always cycle focus if the page is controlled by automation. If the chrome takes
focus, then the first responder will be something other than the WebView, which
causes subsequent WebDriver commands to hang.
2018-10-01 Dean Jackson <dino@apple.com>
[macOS] Switching to discrete GPU should be done in the UI process
https://bugs.webkit.org/show_bug.cgi?id=189361
<rdar://problem/43949622>
Reviewed by Simon Fraser.
Based on an earlier patch by Per Arne Vollan.
Due to the fact we can't talk to the Window Server, the Web Process can
no longer muxing to the discrete GPU directly. Instead we have to get the
UI Process to process the change. Do this by adding a new Chrome client
called GPUClient, that will have implementations provided by both WebKit
and legacy WebKit.
Unfortunately this can't be tested by a regular WKTR since:
- it requires specific hardware
- swapping to/from the discrete GPU takes about 20 seconds
- running concurrent tests could confuse the tests into thinking
the wrong GPU is active
Instead we'll write a specific test for this functionality and
run it on a separate bot.
* WebCore.xcodeproj/project.pbxproj: Add GPUClient files.
* page/Chrome.cpp: Drive by clean-up.
(WebCore::Chrome::windowScreenDidChange):
* platform/graphics/GraphicsContext3D.h: We need to keep track of
whether we've muxed for this context, in order to not respond to
the screen change notifications (they are misleading in the case
of muxing).
* platform/graphics/GraphicsContext3DManager.cpp: Rather than try
to mux directly, call into GPUClient.
(WebCore::GraphicsContext3DManager::displayWasReconfigured):
(WebCore::GraphicsContext3DManager::updateHighPerformanceState):
(WebCore::GraphicsContext3DManager::disableHighPerformanceGPUTimerFired):
(WebCore::GraphicsContext3DManager::recycleContextIfNecessary):
* platform/graphics/GraphicsContext3DManager.h:
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm: Only reconfigure
the virtual display if it didn't happen from muxing.
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::updateCGLContext):
(WebCore::GraphicsContext3D::screenDidChange):
* platform/graphics/mac/SwitchingGPUClient.cpp: Added.
(WebCore::SwitchingGPUClient::singleton):
(WebCore::SwitchingGPUClient::setSingleton):
* platform/graphics/mac/SwitchingGPUClient.h: Added.
* testing/Internals.cpp: Testing helper.
(WebCore::Internals::hasMuxableGPU):
* testing/Internals.h:
* testing/Internals.idl:
2018-10-02 Chris Dumez <cdumez@apple.com>
Image.__proto__ should be Function.prototype, not HTMLElement.prototype
https://bugs.webkit.org/show_bug.cgi?id=190216
Reviewed by Alex Christensen.
Properties created for named constructors should always use Function.prototype as prototype, as per:
- https://heycam.github.io/webidl/#named-constructors
Gecko and Blink agree with the Web IDL specification. However, WebKit was using the parent interface's
prototype if such a parent existing. So Image.__proto__ would end up being HTMLElement.prototype
instead of Function.prototype.
No new tests, rebaselined existing test.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateConstructorHelperMethods):
2018-10-02 Alex Christensen <achristensen@webkit.org>
Prepare WebCoreNSURLExtras for ARC
https://bugs.webkit.org/show_bug.cgi?id=190219
Reviewed by Tim Horton.
ARC doesn't like the explicit sending of -release.
Use RetainPtr instead.
* platform/mac/WebCoreNSURLExtras.mm:
(WebCore::collectRangesThatNeedMapping):
(WebCore::collectRangesThatNeedEncoding):
(WebCore::collectRangesThatNeedDecoding):
(WebCore::applyHostNameFunctionToMailToURLString):
(WebCore::applyHostNameFunctionToURLString):
(WebCore::mapHostNames):
(WebCore::stringByTrimmingWhitespace):
(WebCore::URLWithUserTypedString):
(WebCore::userVisibleString):
(WebCore::rangeOfURLScheme):
(WebCore::looksLikeAbsoluteURL):
(WebCore::retain): Deleted.
2018-10-02 Basuke Suzuki <Basuke.Suzuki@sony.com>
[Curl] Fix missing values of resource timing API.
https://bugs.webkit.org/show_bug.cgi?id=190193
Reviewed by Alex Christensen.
The property nextHopProtocol was not returned correctly. It was
returned only when remote inspector is opened.
Tests: http/wpt/resource-timing/rt-nextHopProtocol.html
http/wpt/resource-timing/rt-nextHopProtocol.worker.html
* platform/network/curl/CurlContext.cpp:
(WebCore::CurlHandle::getNetworkLoadMetrics):
(WebCore::CurlHandle::addExtraNetworkLoadMetrics):
2018-10-02 Alex Christensen <achristensen@webkit.org>
Remove unused linked-on-or-before-iOS5 check
https://bugs.webkit.org/show_bug.cgi?id=190164
Reviewed by Michael Saboff.
If an app hasn't been updated since iOS5, it can't run supported iOS.
This value is also only checked in an uninstantiated template function.
* platform/URL.cpp:
(WebCore::enableURLSchemeCanonicalization): Deleted.
(WebCore::equal): Deleted.
* platform/URL.h:
2018-10-02 Alex Christensen <achristensen@webkit.org>
Remove ParsedURLString
https://bugs.webkit.org/show_bug.cgi?id=190154
Reviewed by Chris Dumez.
Before the introduction of URLParser, it would indicate that we should assume the String
is from a valid URL so we can skip canonicalization and just find the offsets inside the String
to quickly create a URL. It was a performance optimization that caused security issues when
misused. Since the introduction of URLParser, we have a fast path for all URL parsing, so
right now it actually doesn't change any behavior. It's just a relic of the past that complicates
the URL class, making it harder to express which constructor to use and making it harder to move
the class.
* Modules/navigatorcontentutils/NavigatorContentUtils.cpp:
(WebCore::NavigatorContentUtils::registerProtocolHandler):
(WebCore::NavigatorContentUtils::isProtocolHandlerRegistered):
(WebCore::NavigatorContentUtils::unregisterProtocolHandler):
* dom/Document.cpp:
(WebCore::Document::updateBaseURL):
(WebCore::Document::initSecurityContext):
* dom/ExtensionStyleSheets.cpp:
(WebCore::ExtensionStyleSheets::updateInjectedStyleSheetCache const):
* dom/ProcessingInstruction.cpp:
(WebCore::ProcessingInstruction::checkStyleSheet):
* editing/markup.cpp:
(WebCore::completeURLs):
* fileapi/BlobURL.cpp:
(WebCore::BlobURL::createBlobURL):
* history/HistoryItem.cpp:
(WebCore::HistoryItem::url const):
(WebCore::HistoryItem::originalURL const):
* html/HTMLFrameElementBase.cpp:
(WebCore::HTMLFrameElementBase::location const):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript):
* html/PublicURLManager.cpp:
(WebCore::PublicURLManager::stop):
* inspector/InspectorStyleSheet.cpp:
(WebCore::InspectorStyleSheet::resourceStyleSheetText const):
* inspector/agents/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::getCookies):
(WebCore::InspectorPageAgent::deleteCookie):
(WebCore::InspectorPageAgent::getResourceContent):
(WebCore::InspectorPageAgent::searchInResource):
* inspector/agents/page/PageDebuggerAgent.cpp:
(WebCore::PageDebuggerAgent::sourceMapURLForScript):
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::subresources const):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::init):
(WebCore::FrameLoader::initForSynthesizedDocument):
* loader/HistoryController.cpp:
(WebCore::HistoryController::pushState):
(WebCore::HistoryController::replaceState):
* loader/appcache/ApplicationCache.cpp:
(WebCore::ApplicationCache::addResource):
(WebCore::ApplicationCache::resourceForURL):
* loader/appcache/ApplicationCacheGroup.cpp:
(WebCore::ApplicationCacheGroup::startLoadingEntry):
(WebCore::ApplicationCacheGroup::addEntry):
* loader/appcache/ApplicationCacheStorage.cpp:
(WebCore::ApplicationCacheStorage::cacheGroupForURL):
(WebCore::ApplicationCacheStorage::fallbackCacheGroupForURL):
(WebCore::ApplicationCacheStorage::loadCache):
(WebCore::ApplicationCacheStorage::manifestURLs):
* loader/archive/cf/LegacyWebArchive.cpp:
(WebCore::LegacyWebArchive::create):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
* page/PageSerializer.cpp:
(WebCore::PageSerializer::urlForBlankFrame):
* platform/URL.cpp:
(WebCore::blankURL):
* platform/URL.h:
(): Deleted.
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::load):
* platform/network/BlobRegistryImpl.cpp:
(WebCore::BlobRegistryImpl::populateBlobsForFileWriting):
* platform/network/ResourceRequestBase.h:
(WebCore::ResourceRequestBase::decodeBase):
* platform/network/ResourceResponseBase.cpp:
(WebCore::ResourceResponseBase::sanitizeSuggestedFilename):
* platform/network/cf/DNSResolveQueueCFNet.cpp:
(WebCore::DNSResolveQueueCFNet::updateIsUsingProxy):
* platform/network/cf/ResourceRequest.h:
(WebCore::ResourceRequest::ResourceRequest):
* platform/network/curl/CookieJarDB.cpp:
(WebCore::CookieJarDB::searchCookies):
(WebCore::CookieJarDB::setCookie):
(WebCore::CookieJarDB::deleteCookie):
* platform/network/curl/ResourceRequest.h:
(WebCore::ResourceRequest::ResourceRequest):
* platform/network/soup/ResourceRequest.h:
(WebCore::ResourceRequest::ResourceRequest):
* xml/XSLTProcessorLibxslt.cpp:
(WebCore::docLoaderFunc):
2018-10-02 Per Arne Vollan <pvollan@apple.com>
[WebVTT] Cue with line setting is not rendered correctly
https://bugs.webkit.org/show_bug.cgi?id=190168
Reviewed by Eric Carlson.
When the line setting contains an optional alignment value, the cue is not rendered at the correct position,
see https://w3c.github.io/webvtt/#webvtt-line-cue-setting. This patch does not implement correct handling of
the line setting alignment values, it only makes sure parsing does not fail when the cue has line alignment
settings.
Test: media/track/track-cue-line-position.html
* html/track/VTTCue.cpp:
(WebCore::VTTCueBox::applyCSSProperties):
(WebCore::VTTCue::getPositionCoordinates const):
(WebCore::VTTCue::setCueSettings):
2018-10-02 Antti Koivisto <antti@apple.com>
User installed fonts are not always disabled when they should be
https://bugs.webkit.org/show_bug.cgi?id=190195
Reviewed by Geoffrey Garen.
SVG images and some theme cases fail to respect the setting. Besides the obvious problem this
is also a performance issue as various font caches include this setting in the key.
* platform/graphics/FontDescription.cpp:
(WebCore::m_shouldAllowUserInstalledFonts):
Initialize to 'No' by default. All paths where user fonts make sense already set the bit from
settings. This fixes some cases in system themes that construct FontDescriptions from scratch.
* rendering/RenderElement.cpp:
(WebCore::RenderElement::styleWillChange):
Add assertion. This verified the change with the existing tests.
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::dataChanged):
Always disallow user fonts in SVG used as images.
2018-10-01 Dean Jackson <dino@apple.com>
Remove CSS Animation Triggers
https://bugs.webkit.org/show_bug.cgi?id=190175
<rdar://problem/44925626>
Reviewed by Simon Fraser.
Remove the never-properly specified CSS Animation Triggers.
* Configurations/FeatureDefines.xcconfig:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSAnimationTriggerScrollValue.cpp: Removed.
* css/CSSAnimationTriggerScrollValue.h: Removed.
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
(WebCore::createAnimationTriggerValue): Deleted.
(WebCore::animationTriggerValue): Deleted.
* css/CSSProperties.json:
* css/CSSToStyleMap.cpp:
(WebCore::CSSToStyleMap::mapAnimationTrigger): Deleted.
* css/CSSToStyleMap.h:
* css/CSSValue.cpp:
(WebCore::CSSValue::equals const):
(WebCore::CSSValue::cssText const):
(WebCore::CSSValue::destroy):
* css/CSSValue.h:
(WebCore::CSSValue::isAnimationTriggerScrollValue const): Deleted.
* css/parser/CSSPropertyParser.cpp:
(WebCore::consumeAnimationValue):
(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::consumeWebkitAnimationTrigger): Deleted.
* page/FrameView.cpp:
(WebCore::FrameView::sendScrollEvent):
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setAnimationTriggersEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::animationTriggersEnabled const): Deleted.
* page/animation/AnimationBase.cpp:
(WebCore::AnimationBase::updateStateMachine):
(WebCore::AnimationBase::fireAnimationEventsIfNeeded):
(WebCore::AnimationBase::timeToNextService):
(WebCore::AnimationBase::getElapsedTime const):
* page/animation/CSSAnimationController.cpp:
(WebCore::CSSAnimationControllerPrivate::animationWillBeRemoved):
(WebCore::CSSAnimationControllerPrivate::addToAnimationsDependentOnScroll): Deleted.
(WebCore::CSSAnimationControllerPrivate::removeFromAnimationsDependentOnScroll): Deleted.
(WebCore::CSSAnimationControllerPrivate::scrollWasUpdated): Deleted.
(WebCore::CSSAnimationController::wantsScrollUpdates const): Deleted.
(WebCore::CSSAnimationController::scrollWasUpdated): Deleted.
* page/animation/CSSAnimationController.h:
* page/animation/CSSAnimationControllerPrivate.h:
(WebCore::CSSAnimationControllerPrivate::wantsScrollUpdates const): Deleted.
(WebCore::CSSAnimationControllerPrivate::scrollPosition const): Deleted.
* page/animation/CompositeAnimation.cpp:
(WebCore::CompositeAnimation::updateKeyframeAnimations):
* page/animation/CompositeAnimation.h:
(WebCore::CompositeAnimation::hasScrollTriggeredAnimation const): Deleted.
* platform/animation/Animation.cpp:
(WebCore::Animation::Animation):
(WebCore::Animation::operator=):
(WebCore::Animation::animationsMatch const):
* platform/animation/Animation.h:
(WebCore::Animation::isTimingFunctionSet const):
(WebCore::Animation::isEmpty const):
(WebCore::Animation::clearTimingFunction):
(WebCore::Animation::clearAll):
(WebCore::Animation::animationMode const):
(WebCore::Animation::setAnimationMode):
(WebCore::Animation::initialTimingFunction):
(WebCore::Animation::isTriggerSet const): Deleted.
(WebCore::Animation::clearTrigger): Deleted.
(WebCore::Animation::trigger const): Deleted.
(WebCore::Animation::setTrigger): Deleted.
(WebCore::Animation::initialTrigger): Deleted.
* platform/animation/AnimationTrigger.h: Removed.
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::animationCanBeAccelerated const):
2018-10-02 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r236624 and r236671.
https://bugs.webkit.org/show_bug.cgi?id=190207
The change in r236624 introduced crashes on the bots
(Requested by ryanhaddad on #webkit).
Reverted changesets:
"Refactoring: eliminate raw pointer usage in Fullscreen code"
https://bugs.webkit.org/show_bug.cgi?id=188747
https://trac.webkit.org/changeset/236624
"Unify implementation in VideoFullscreenInterfaceAVKit"
https://bugs.webkit.org/show_bug.cgi?id=190091
https://trac.webkit.org/changeset/236671
2018-10-02 Sihui Liu <sihui_liu@apple.com>
Add release assertion to ensure m_owningPointerForClose is null in UniqueIDBDatabase::invokeOperationAndTransactionTimer()
https://bugs.webkit.org/show_bug.cgi?id=190178
Reviewed by Chris Dumez.
This would help debug rdar://problem/44902833.
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::invokeOperationAndTransactionTimer):
2018-10-02 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r236719.
https://bugs.webkit.org/show_bug.cgi?id=190197
this revision caused 39 layout test failures that tested for
scrolling, a bug was also not present in the commit or change
log. (Requested by Truitt on #webkit).
Reverted changeset:
"Unreviewed, fix unused variable in
RenderLayer::updateScrollableAreaSet"
https://trac.webkit.org/changeset/236719
2018-10-02 Alicia Boya García <aboya@igalia.com>
[MSE][GStreamer] Add h264parse to accept MP4 without stss
https://bugs.webkit.org/show_bug.cgi?id=190143
Reviewed by Xabier Rodriguez-Calvar.
The MP4 file used in this URL does not contain a stss (Sync Sample
Box). In consequence, in acordance with the ISO BMFF spec, all samples
are assumed to be sync frames... But in this case that is not true,
it's just that the file is wrong (e.g. created with a buggy muxer).
http://orange-opensource.github.io/hasplayer.js/1.2.0/player.html?url=http://playready.directtaps.net/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/Manifest
The way it works in other browsers is because instead of trusting the
MP4 stss table, they rely on parsing the h264 frames. We can do that
too.
This patch also changes RELEASE_ASSERT() when creating the parsers
to GLib criticals.
* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::createOptionalParserForFormat):
2018-10-02 Eric Carlson <eric.carlson@apple.com>
[MediaStream] RealtimeMediaSource should be able to vend hashed IDs
https://bugs.webkit.org/show_bug.cgi?id=190142
<rdar://problem/44911109>
Reviewed by Youenn Fablet.
No new tests, covered by existing tests.
* Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
(WebCore::CanvasCaptureMediaStreamTrack::Source::Source): Update order of parameters passed
to base class.
* Modules/mediastream/MediaDevicesRequest.cpp:
(WebCore::MediaDevicesRequest::start): ASSERT if document.deviceIDHashSalt is not the same
as passed salt.
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::getSettings const): Don't need to hash ID.
(WebCore::MediaStreamTrack::getCapabilities const): Ditto.
* Modules/mediastream/MediaStreamTrack.h:
* Modules/mediastream/MediaStreamTrack.idl:
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::allow): Pass hash salt to createMediaStream.
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::createReceiverForSource): Update order of parameters passed
to base class.
* Modules/webaudio/MediaStreamAudioSource.cpp:
(WebCore::MediaStreamAudioSource::MediaStreamAudioSource): Ditto.
* platform/mediastream/MediaConstraints.h:
* platform/mediastream/RealtimeIncomingAudioSource.cpp:
(WebCore::RealtimeIncomingAudioSource::RealtimeIncomingAudioSource): Ditto.
* platform/mediastream/RealtimeIncomingVideoSource.cpp:
(WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource): Ditto.
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::RealtimeMediaSource): Calculate hashed ID.
(WebCore::RealtimeMediaSource::selectSettings): Use m_hashedID.
(WebCore::RealtimeMediaSource::hashedId const): New.
(WebCore::RealtimeMediaSource::deviceIDHashSalt const): New.
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::createMediaStream): Take hash salt, pass it when creating
a source.
(WebCore::RealtimeMediaSourceCenter::getUserMediaDevices): Ditto.
(WebCore::RealtimeMediaSourceCenter::validateRequestConstraints): Ditto.
* platform/mediastream/RealtimeMediaSourceCenter.h:
* platform/mediastream/RealtimeMediaSourceFactory.h:
* platform/mediastream/RealtimeVideoSource.cpp:
(WebCore::RealtimeVideoSource::RealtimeVideoSource): Update parameters.
* platform/mediastream/RealtimeVideoSource.h:
* platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
(WebCore::GStreamerAudioCaptureSource::create): Ditto.
(WebCore::GStreamerAudioCaptureSource::GStreamerAudioCaptureSource): Ditto.
* platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
(WebCore::GStreamerVideoCaptureSource::create): Ditto.
(WebCore::GStreamerVideoCaptureSource::GStreamerVideoCaptureSource): Ditto.
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
* platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:
(WebCore::WrappedMockRealtimeAudioSource::WrappedMockRealtimeAudioSource): Ditto.
(WebCore::MockRealtimeAudioSource::create): Ditto.
(WebCore::MockGStreamerAudioCaptureSource::MockGStreamerAudioCaptureSource): Ditto.
* platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h:
* platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp:
(WebCore::MockRealtimeVideoSource::create): Ditto.
(WebCore::MockGStreamerVideoCaptureSource::MockGStreamerVideoCaptureSource): Ditto.
* platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::create): Ditto.
(WebCore::AVVideoCaptureSource::AVVideoCaptureSource): Ditto.
(WebCore::AVVideoCaptureSource::settings): Use hashedId to set device ID.
(WebCore::AVVideoCaptureSource::capabilities): Ditto.
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioCaptureSource::create): Update parameters.
(WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource): Ditto.
(WebCore::CoreAudioCaptureSource::capabilities): Use hashedId to set device ID.
(WebCore::CoreAudioCaptureSource::settings): Ditto.
* platform/mediastream/mac/CoreAudioCaptureSource.h:
* platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
(WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa): Update parameters.
* platform/mediastream/mac/DisplayCaptureSourceCocoa.h:
* platform/mediastream/mac/MockRealtimeAudioSourceMac.h:
* platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
(WebCore::MockRealtimeAudioSource::create): Ditto.
(WebCore::MockRealtimeAudioSourceMac::MockRealtimeAudioSourceMac): Ditto.
* platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
* platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
(WebCore::MockRealtimeVideoSource::create): Ditto.
(WebCore::MockRealtimeVideoSourceMac::MockRealtimeVideoSourceMac): Ditto.
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h:
* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
(WebCore::ScreenDisplayCaptureSourceMac::create): Ditto.
(WebCore::ScreenDisplayCaptureSourceMac::ScreenDisplayCaptureSourceMac): Ditto.
(WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream): Update logging.
(WebCore::ScreenDisplayCaptureSourceMac::startDisplayStream): Ditto.
(WebCore::ScreenDisplayCaptureSourceMac::frameAvailable): Ditto.
* platform/mediastream/mac/WindowDisplayCaptureSourceMac.h:
* platform/mediastream/mac/WindowDisplayCaptureSourceMac.mm:
(WebCore::WindowDisplayCaptureSourceMac::create): Update parameters.
* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::create): Ditto.
(WebCore::MockRealtimeAudioSource::MockRealtimeAudioSource): Ditto.
(WebCore::MockRealtimeAudioSource::settings): Use hashedId to set device ID.
(WebCore::MockRealtimeAudioSource::capabilities): Ditto.
* platform/mock/MockRealtimeAudioSource.h:
* platform/mock/MockRealtimeMediaSourceCenter.cpp:
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::create): Update parameters.
(WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource): Ditto.
(WebCore::MockRealtimeVideoSource::capabilities): Use hashedId to set device ID.
(WebCore::MockRealtimeVideoSource::settings): Ditto.
* platform/mock/MockRealtimeVideoSource.h:
2018-10-02 Philippe Normand <pnormand@igalia.com>
[GStreamer][playbin3] Stream tag lists leaks
https://bugs.webkit.org/show_bug.cgi?id=190192
Reviewed by Xabier Rodriguez-Calvar.
The gst_stream_get_tags() result is transfer-full, so needs to be adopted to prevent a leak.
Also check the tags list pointer which might be NULL in some cases.
* platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp:
(WebCore::AudioTrackPrivateGStreamer::AudioTrackPrivateGStreamer):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::naturalSize const):
* platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp:
(WebCore::VideoTrackPrivateGStreamer::VideoTrackPrivateGStreamer):
2018-10-01 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, fix unused variable in RenderLayer::updateScrollableAreaSet
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const): This is a prepare-ChangeLog bug. I don't
have any changes in this function....
2018-10-02 Alicia Boya García <aboya@igalia.com>
[MSE][GStreamer] Make same thread assert non-release
https://bugs.webkit.org/show_bug.cgi?id=189924
Reviewed by Xabier Rodriguez-Calvar.
* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::AppendPipeline::handleNewAppsinkSample):
2018-10-01 Ryosuke Niwa <rniwa@webkit.org>
Add a new variant of serializePreservingVisualAppearance which takes VisibleSelection
https://bugs.webkit.org/show_bug.cgi?id=190108
Reviewed by Wenson Hsieh.
Added a version of serializePreservingVisualAppearance which takes VisibleSelection so that we can avoid creating
a range simply to get the first node and the end node of the selection later. This simple change also fixes a bug
demonstrated in editing/pasteboard/paste-table-003.html.
Test: editing/pasteboard/paste-table-003.html
* editing/cocoa/EditorCocoa.mm:
(WebCore::Editor::selectionInHTMLFormat): Adopt the new variant.
* editing/gtk/EditorGtk.cpp:
(WebCore::Editor::writeSelectionToPasteboard): Ditto.
* editing/markup.cpp:
(WebCore::serializePreservingVisualAppearance): Added.
* editing/markup.h:
* editing/wpe/EditorWPE.cpp:
(WebCore::Editor::writeSelectionToPasteboard): Ditto.
* loader/archive/cf/LegacyWebArchive.cpp:
(WebCore::LegacyWebArchive::createFromSelection): Ditto.
* platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::writeSelection): Ditto.
2018-10-01 Alex Christensen <achristensen@webkit.org>
Don't read from WebCore's bundle for IDNScriptWhiteList
https://bugs.webkit.org/show_bug.cgi?id=190157
Reviewed by Dan Bernstein.
No change in behavior. This increases performance by not reading from the WebCore bundle,
and it makes it so that URL-related functionality can be moved to a place without
a bundle for resources.
* Resources/IDNScriptWhiteList.txt: Removed.
* WebCore.xcodeproj/project.pbxproj:
* platform/mac/WebCoreNSURLExtras.mm:
(WebCore::whiteListIDNScripts):
(WebCore::allCharactersInIDNScriptWhiteList):
(WebCore::readIDNScriptWhiteListFile): Deleted.
2018-10-01 Alex Christensen <achristensen@webkit.org>
Unreviewed, rolling out r236551.
Fails URL validating too aggressively
Reverted changeset:
"URLWithUserTypedString should return nil for URLs deemed to
be invalid by WebCore::URL"
https://bugs.webkit.org/show_bug.cgi?id=189979
https://trac.webkit.org/changeset/236551
2018-10-01 Keith Miller <keith_miller@apple.com>
Create a RELEASE_AND_RETURN macro for ExceptionScopes
https://bugs.webkit.org/show_bug.cgi?id=190163
Reviewed by Mark Lam.
The new RELEASE_AND_RETURN does all the work for cases
where you want to return the result of some expression
without explicitly checking for an exception. This is
much like the existing RETURN_IF_EXCEPTION macro.
No new tests since this is a refactor.
* bridge/runtime_array.cpp:
(JSC::RuntimeArray::put):
2018-10-01 Daniel Bates <dabates@apple.com>
Attempt to fix the watchOS build after <https://trac.webkit.org/changeset/236678>
(https://bugs.webkit.org/show_bug.cgi?id=189974)
Explicitly cast index to unsigned to make the operator[] call unambiguous.
* platform/ios/KeyEventIOS.mm:
(WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
2018-10-01 Ryosuke Niwa <rniwa@webkit.org>
ASAN failure in ~GCReachableRef()
https://bugs.webkit.org/show_bug.cgi?id=190113
Reviewed by Darin Adler.
The bug was caused by ~GCReachableRef accessing Ref after it had been poisoned for ASAN
in Ref::leakRef via Ref(Ref&& other). Fixed the bug by using RefPtr instead since that's
the simplest solution here although we could unpoison Ref temporarily as done in ~Ref.
* dom/GCReachableRef.h:
(WebCore::GCReachableRef::GCReachableRef):
(WebCore::GCReachableRef::~GCReachableRef):
(WebCore::GCReachableRef::operator-> const):
(WebCore::GCReachableRef::get const):
(WebCore::GCReachableRef::operator T& const):
(WebCore::GCReachableRef::operator! const):
(WebCore::GCReachableRef::isNull const): Deleted.
2018-10-01 Sihui Liu <sihui_liu@apple.com>
Remove StorageProcess
https://bugs.webkit.org/show_bug.cgi?id=189975
Reviewed by Geoffrey Garen.
Clean up code. No behavior change.
* English.lproj/Localizable.strings:
2018-10-01 Alicia Boya García <aboya@igalia.com>
[MSE][GStreamer] Set a minimum sample duration
https://bugs.webkit.org/show_bug.cgi?id=190125
Reviewed by Xabier Rodriguez-Calvar.
The last sample of the audio track in the asset used in this test
player has a tiny duration (100 ns):
http://orange-opensource.github.io/hasplayer.js/1.2.0/player.html?url=http://playready.directtaps.net/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/Manifest
So small, we were truncating it to zero. We're not supposed to have
frames with zero duration. Instead, lets set a minimum frame duration
for those fringe cases.
* platform/graphics/gstreamer/MediaSampleGStreamer.cpp:
(WebCore::MediaSampleGStreamer::MediaSampleGStreamer):
2018-10-01 Daniel Bates <dabates@apple.com>
[iOS] Special keys are misidentified in DOM keyboard events
https://bugs.webkit.org/show_bug.cgi?id=189974
Reviewed by Wenson Hsieh.
This patch fixes two issues:
1. Special keyboard keys would be misidentified in dispatched DOM keyboard events.
2. DOM keypress events may not be dispatched for some special keys.
UIKit uses special input strings to identify the Page Up, Page Down, Escape, Up Arrow, Down Arrow,
Left Arrow, and Right Arrow keys. It also uses ASCII control characters to represent some other
special keys, including Num Lock / Clear, Home, End, Forward Delete, and F1, ..., F24. We need
to explicitly handle these special keyboard keys in order to be able to identify the key that
was pressed as well as to correctly disambiguate a key down to know whether to dispatch a DOM
keypress event for the key.
Unlike UIKit, AppKit reserves Unicode Private Use Area (PUA) code points in 0xF700–0xF8FF to
represent special keyboard keys. This makes it straightforward to disambiguate such keys using
the input string of the keyboard event alone. To simplify the implementation for iOS
we normalize the input string be AppKit compatible. See the explaination for WebCore::windowsKeyCodeForCharCode()
below for more details on why this is done.
Tests: fast/events/ios/keydown-keyup-arrow-keys-in-non-editable-element.html
fast/events/ios/keypress-keys-in-non-editable-element.html
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
Do not use unified source build strategy when building WebEvent.mm as it makes
use of SoftLinking macros that are incompatible with this strategy.
* platform/ios/KeyEventIOS.mm:
(WebCore::windowsKeyCodeForCharCode): Recognize some special AppKit special char codes.
These special char codes are generated by WebKit. WebKit uses the same special char codes
as AppKit as a convenience instead of defining our own constants for the same purpose.
Encoding the special UIKit input strings (e.g. up arrow) as distinct char codes allows us
to use integer arithmetic and switch blocks to map characters to Windows virtual key
codes as opposed to special cased branches to perform pointer or string comparisions.
The latter would be necessary in Modern WebKit in order for key down events to be properly
disambiguated to dispatch a DOM keypress event because pointers are not perserved, though
what they point to is, when sending the WebEvent from UIProcess to the WebProcess and
vice versa.
(WebCore::isFunctionKey): Convenience function that determines whether the specified char
code corresponds to a function key on the keyboard. The term "function key" is taken from
AppKit parlance to describe a special keyboard key. These keys include F1, F2, ..., F24,
and cursor keys among other special keyboard keys.
(WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent): Write in terms of isFunctionKey().
* platform/ios/PlatformEventFactoryIOS.h:
* platform/ios/PlatformEventFactoryIOS.mm:
(WebCore::keyIdentifierForKeyEvent): Remove code to handle UIKit special input strings as
we now map such special input strings to char codes and hence can use the default code path.
(WebCore::keyForKeyEvent): Ditto.
(WebCore::codeForKeyEvent): Remove code to compute the Window virtual key code corresponding
to a UIKit special key command now that we map such special input strings to char codes and
subsequently map the char codes to the Windows virtual key code (see -[WebEvent initWithKeyEventType:...]
constructors). So, we can now use WebEvent.keyCode directly to compute the DOM UIEvents code
for the event.
(WebCore::PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder): Remove code to fix up
WebEvent.keyCode to account for UIKit special input strings now that we map such special key
commands to char codes and subsequently map the char codes to the Windows virtual key code (see -[WebEvent initWithKeyEventType:...]
constructors). So, we can now take WebEvent.keyCode verbatim to be the Window virtual key code.
(WebCore::convertSpecialKeyToCharCode): Deleted.
(WebCore::keyCodeForEvent): Deleted.
* platform/ios/WebEvent.mm:
(normalizedStringWithAppKitCompatibilityMapping): Added; converts a UIKit character string
to the corresponding AppKit-compatible one (if not already compatible). See the explaination
for WebCore::windowsKeyCodeForCharCode() above for more details on why this is done.
(-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:keyCode:isTabKey:characterSet:]):
(-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:withInputManagerHint:keyCode:isTabKey:]):
Normalize the character strings to be AppKit compatible.
2018-10-01 Simon Fraser <simon.fraser@apple.com>
Optimize RenderStyle::diff() and clean up the code
https://bugs.webkit.org/show_bug.cgi?id=190104
Reviewed by Dan Bernstein.
RenderStyle::changeRequiresLayout() and related should only check values on
m_rareNonInheritedData and m_rareInheritedData after checking for pointer equality.
To reduce the chances of future changes regressing this, move code comparing values
on StyleRare[Non]InheritedData into dedication functions.
In addition, the transform comparison double-compared the transformOperations,
because m_rareNonInheritedData->transform != other.m_rareNonInheritedData->transform
is a deep comparison, and it was followed by *m_rareNonInheritedData->transform != *other.m_rareNonInheritedData->transform.
Change the first to be a pointer comparison.
* rendering/style/RenderStyle.cpp:
(WebCore::rareNonInheritedDataChangeRequiresLayout):
(WebCore::rareInheritedDataChangeRequiresLayout):
(WebCore::RenderStyle::changeRequiresLayout const):
(WebCore::rareNonInheritedDataChangeRequiresLayerRepaint):
(WebCore::RenderStyle::changeRequiresLayerRepaint const):
(WebCore::rareNonInheritedDataChangeRequiresRepaint):
(WebCore::rareInheritedDataChangeRequiresRepaint):
(WebCore::RenderStyle::changeRequiresRepaint const):
2018-10-01 Alex Christensen <achristensen@webkit.org>
URL should not use TextEncoding internally
https://bugs.webkit.org/show_bug.cgi?id=190111
Reviewed by Andy Estes.
That dependency makes it impossible to move or use elsewhere.
Using TextEncoding was overkill because we know the credentials are UTF-8 percent-encoded in a parsed URL.
No change in behavior as verified by new API tests.
* page/SecurityOrigin.cpp:
* page/csp/ContentSecurityPolicySourceList.cpp:
* platform/URL.cpp:
(WebCore::decodeEscapeSequencesFromParsedURL):
(WebCore::URL::user const):
(WebCore::URL::pass const):
(WebCore::URL::fileSystemPath const):
(WebCore::decodeURLEscapeSequences): Deleted.
* platform/URL.h:
* platform/network/DataURLDecoder.cpp:
* platform/text/TextEncoding.cpp:
(WebCore::decodeURLEscapeSequences):
* platform/text/TextEncoding.h:
2018-10-01 Simon Pieters <zcorpan@gmail.com>
<form> in quirks mode should have margin-block-end: 1em
https://bugs.webkit.org/show_bug.cgi?id=157788
Reviewed by Simon Fraser.
Change the default style for forms to take writing-mode into account
in quirks mode. Matches the behavior of Gecko and Edge and the HTML
standard.
Spec: https://html.spec.whatwg.org/multipage/rendering.html#flow-content-3
Test: imported/w3c/web-platform-tests/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html
* css/quirks.css:
(form):
2018-10-01 Jeremy Jones <jeremyj@apple.com>
Unify implementation in VideoFullscreenInterfaceAVKit
https://bugs.webkit.org/show_bug.cgi?id=190091
rdar://problem/44734523
Reviewed by Jer Noble.
No new tests because no behavior change.
Unified code in VideoFullscreenInterfaceAVKit now that new code path is proven and include
any changes that had been made in the old path.
* platform/ios/VideoFullscreenInterfaceAVKit.h:
* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerViewControllerDelegate playerViewControllerShouldStartPictureInPictureFromInlineWhenEnteringBackground:]):
(VideoFullscreenInterfaceAVKit::preparedToExitFullscreen):
(VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason):
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::requestUpdateInlineRect):
(VideoFullscreenControllerContext::requestVideoContentLayer):
(VideoFullscreenControllerContext::returnVideoContentLayer):
(VideoFullscreenControllerContext::didSetupFullscreen):
(VideoFullscreenControllerContext::didExitFullscreen):
2018-10-01 Antoine Quint <graouts@apple.com>
[Web Animations] Ensure renderers with accelerated animations have layers
https://bugs.webkit.org/show_bug.cgi?id=189990
Reviewed by Simon Fraser.
In r236501 we added code that would make a RenderBox and a RenderInline query the document timeline for whether a given element has
accelerated animations running on it. Since the calls to requiresLayer() are in a hot path, we instead keep a list of elements with
exclusively accelerated animations running.
No new tests, this is already covered by webanimations/accelerated-animation-with-delay.html and webanimations/opacity-animation-yields-compositing-span.html
which respectively check that we can apply an accelerated animation to a non-positioned block and an inline element.
* animation/AnimationTimeline.h:
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::detachFromDocument):
(WebCore::DocumentTimeline::animationWasAddedToElement):
(WebCore::DocumentTimeline::animationWasRemovedFromElement):
(WebCore::DocumentTimeline::animationAcceleratedRunningStateDidChange):
(WebCore::DocumentTimeline::updateListOfElementsWithRunningAcceleratedAnimationsForElement): Iterate over an element's animations to determine
whether all of its animations are running accelerated, then update the HashSet containing elements running accelerated animations to remove or
add this element.
(WebCore::DocumentTimeline::runningAnimationsForElementAreAllAccelerated const): Make a simple contains() call on the HashSet containing elements
running accelerated animations.
* animation/DocumentTimeline.h:
* animation/KeyframeEffectReadOnly.cpp:
(WebCore::KeyframeEffectReadOnly::updateAcceleratedAnimationState):
(WebCore::KeyframeEffectReadOnly::applyPendingAcceleratedActions):
* rendering/RenderBoxModelObject.h:
2018-10-01 Alicia Boya García <aboya@igalia.com>
[GStreamer] Fix abort in gst_sample_get_info()
https://bugs.webkit.org/show_bug.cgi?id=190135
Reviewed by Philippe Normand.
A flush can occur before any frame has finished decoding -- especially
in tests, where actions on the player often occur in quick succession.
Therefore, the code must not assume by the time a flush occurs any
frame has reached the sink. This patch fixes a case when such wrong
assumption was causing gst_sample_get_info() to abort (crashing
WebKit).
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
(WebCore::MediaPlayerPrivateGStreamerBase::createGLAppSink):
2018-10-01 Olivier Blin <olivier.blin@softathome.com>
[WPE] fix buffer over-read in RenderThemeWPE::mediaControlsStyleSheet()
https://bugs.webkit.org/show_bug.cgi?id=190139
Reviewed by Michael Catanzaro.
Like done upstream for EFL in r210213
https://bugs.webkit.org/show_bug.cgi?id=166622
This has been detected by a charactersAreAllASCII() assert failure.
This is because ASCIILiteral() is wrongly used in mediaControlsStyleSheet().
mediaControlsBaseUserAgentStyleSheet is a char array, not a null-terminated string.
It is thus incorrect to use StringImpl::createFromLiteral() that calls
strlen() to get the string length.
The String::ConstructFromLiteral constructor can not be used, since it
skips the last character.
* platform/wpe/RenderThemeWPE.cpp:
(WebCore::RenderThemeWPE::mediaControlsStyleSheet):
Explicitely pass the size to the String constructor.
2018-10-01 Rob Buis <rbuis@igalia.com>
Align XMLHttpRequest's overrideMimeType() with the standard
https://bugs.webkit.org/show_bug.cgi?id=169276
Reviewed by Chris Dumez.
Implement the overrideMimeType() as specified in that standard, i.e.
add a check that the passed mime type is valid and if not fallback
to application/octet-stream.
In order for this patch to have any effect, I went ahead and
made an improvement to the ContentType parsing, parseContentType now
will reject mime types that do not match the type / subtype format, I
believe this is required by both RFC2045 and mimesniff specs.
This behavior matches Chrome and Firefox.
Test: web-platform-tests/xhr/overridemimetype-invalid-mime-type.htm
* platform/network/ParsedContentType.cpp:
(WebCore::parseContentType):
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::overrideMimeType):
2018-10-01 Chris Dumez <cdumez@apple.com>
Make crossOriginObject.then undefined for promises
https://bugs.webkit.org/show_bug.cgi?id=190094
Reviewed by Darin Adler.
Make crossOriginObject.then undefined for promises. This allows promises to work better with cross-origin WindowProxy
and Location objects.
Specification:
- https://github.com/whatwg/html/pull/3242
- https://github.com/whatwg/dom/issues/536
This aligns our behavior with Blink and Gecko.
No new tests, rebaselined existing test.
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess):
(WebCore::addCrossOriginWindowOwnPropertyNames):
* bindings/js/JSLocationCustom.cpp:
(WebCore::getOwnPropertySlotCommon):
(WebCore::addCrossOriginLocationOwnPropertyNames):
2018-10-01 Xan Lopez <xan@igalia.com>
[SOUP] Fix the build for libsoup > 2.61.90
https://bugs.webkit.org/show_bug.cgi?id=190126
Reviewed by Michael Catanzaro.
* platform/network/soup/SocketStreamHandleImplSoup.cpp:
2018-10-01 Alicia Boya García <aboya@igalia.com>
[MSE][GStreamer] Reset running time in PlaybackPipeline::flush()
https://bugs.webkit.org/show_bug.cgi?id=190076
Reviewed by Philippe Normand.
Test: media/media-source/media-source-seek-redundant-append.html
PlaybackPipeline::flush() is called when already enqueued frames are
appended again. This may be caused by a quality change or just a
redundant append. Either way, the pipeline has to be flushed and
playback begin again, but without changing the player position by
much.
There are two kinds of time to consider here: stream time (i.e. the
time of a frame as written in the file, e.g. a frame may have stream
time 0:01:00), and running time (i.e. how much time since playback
started should pass before the frame should be played, e.g. if we
started playing at 0:00:59 that same frame would have a running time
of just 1 second).
Notice how running time depends on where and when playback starts.
Running time can also be optionally resetted after a flush. (This is
indeed done currently by most demuxers after a seek.)
Instead of resetting running time, PlaybackPipeline used to modify the
first GstSegment emitted after the flush. A GstSegment declares the
mapping between stream time and running time for the following frames.
There, PlaybackPipeline used to set `base` (the running time at which
the segment starts) to the position reported by a position query
(which is stream time).
This, of course, only worked when playback (or the last seek) started
at stream time 0:00:00, since that's the only case where running time
equals stream time. In other cases delays as long as the difference
between these timelines would appear. This is demonstrated in the
attached test, where seeks and appends are made in such an order that
the difference is more than 5 minutes, making the playback stall for
>5 minutes before playing 1 second of audio.
This patch fixes the problem by resetting running time with the flush
and not modifying GstSegment.base anymore (it will be left as zero,
which is now correct since the running time has been reset).
* platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:
(WebCore::PlaybackPipeline::flush):
(WebCore::segmentFixerProbe): Deleted.
2018-09-30 Ryosuke Niwa <rniwa@webkit.org>
Use Position instead of Range in createMarkupInternal
https://bugs.webkit.org/show_bug.cgi?id=190107
Reviewed by Darin Adler.
Use two Position's indicating start and end instead of Range in createMarkupInternal and StylizedMarkupAccumulator
in order to support copy & paste across shadow boundaries in the bug 157443. This patch also removes the use of
Range in MarkupAccumulator since all uses of range is via StylizedMarkupAccumulator.
Also renamed createMarkupInternal to serializePreservingVisualAppearanceInternal to match the rename in r236612.
* dom/Position.cpp:
(WebCore::Position::firstNode const): Added.
* dom/Position.h:
* editing/MarkupAccumulator.cpp:
(WebCore::MarkupAccumulator::MarkupAccumulator): No longer takes Range.
(WebCore::MarkupAccumulator::appendText): Removed the code to truncate string at the boundary points of the range.
* editing/MarkupAccumulator.h:
(WebCore::MarkupAccumulator): Made this class non-copyable.
* editing/markup.cpp:
(WebCore::StyledMarkupAccumulator::StyledMarkupAccumulator): Now takes and stores two positions.
(WebCore::StyledMarkupAccumulator::appendText): Use textContentRespectingRange in the case annotation is disabled
instead of calling to MarkupAccumulator::appendText, which no longer respects boundary offsets.
(WebCore::StyledMarkupAccumulator::renderedTextRespectingRange): Renamed from renderedText. Updated to respect
boundary offsets defined by m_start and m_end Positions instead of m_range Range.
(WebCore::StyledMarkupAccumulator::textContentRespectingRange): Renamed from stringValueForRange. Ditto.
(WebCore::StyledMarkupAccumulator::serializeNodes): Now computes startNode and pastEnd nodes from start and end
Positions. Note that the end position is always the next node in the tree order for a character node
and computeNodeAfterPosition returns nullptr for a character data.
(WebCore::highestAncestorToWrapMarkup): Now takes two positions instead of a range.
(WebCore::serializePreservingVisualAppearanceInternal): Renamed from createMarkupInternal. Removed the obsolete
comments which were added for DOMRange in WebKitLegacy.
(WebCore::serializePreservingVisualAppearance):
(WebCore::sanitizedMarkupForFragmentInDocument): Create positions instead of a range to pass to
serializePreservingVisualAppearanceInternal.
(WebCore::serializeFragment):
* editing/markup.h:
* page/PageSerializer.cpp:
(WebCore::PageSerializer::SerializerMarkupAccumulator): Removed the unnecessary WebCore namespace qualifier.
2018-09-30 Walker Henderson <wjahenderson@gmail.com>
AudioNode.connect should return passed destination node
https://bugs.webkit.org/show_bug.cgi?id=188834
Reviewed by Eric Carlson.
No new tests, rebaselined existing test.
* Modules/webaudio/AudioBasicInspectorNode.cpp:
(WebCore::AudioBasicInspectorNode::connect): Deleted.
* Modules/webaudio/AudioBasicInspectorNode.h:
* Modules/webaudio/AudioNode.cpp:
* Modules/webaudio/AudioNode.h:
* Modules/webaudio/AudioNode.idl:
2018-09-30 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Clean up RealtimeMediaSource settings change handling
https://bugs.webkit.org/show_bug.cgi?id=189998
<rdar://problem/44797884>
Reviewed by Youenn Fablet.
No new tests, updated webrtc/video-disabled-black.html.
* Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
(WebCore::CanvasCaptureMediaStreamTrack::Source::Source):
(WebCore::CanvasCaptureMediaStreamTrack::Source::settings):
(WebCore::CanvasCaptureMediaStreamTrack::Source::settingsDidChange):
(WebCore::CanvasCaptureMediaStreamTrack::Source::canvasResized):
* Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
* platform/mediastream/RealtimeIncomingVideoSource.cpp:
(WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource):
(WebCore::RealtimeIncomingVideoSource::settings):
(WebCore::RealtimeIncomingVideoSource::settingsDidChange):
* platform/mediastream/RealtimeIncomingVideoSource.h:
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::settingsDidChange):
(WebCore::RealtimeMediaSource::notifySettingsDidChangeObservers):
(WebCore::RealtimeMediaSource::setSize):
(WebCore::RealtimeMediaSource::setFrameRate):
(WebCore::RealtimeMediaSource::setAspectRatio):
(WebCore::RealtimeMediaSource::setFacingMode):
(WebCore::RealtimeMediaSource::setVolume):
(WebCore::RealtimeMediaSource::setSampleRate):
(WebCore::RealtimeMediaSource::setSampleSize):
(WebCore::RealtimeMediaSource::setEchoCancellation):
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
(WebCore::GStreamerAudioCaptureSource::settingsDidChange):
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
(WebCore::GStreamerVideoCaptureSource::settingsDidChange):
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::settingsDidChange):
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioCaptureSource::settingsDidChange):
* platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
(WebCore::DisplayCaptureSourceCocoa::settingsDidChange):
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
(WebCore::RealtimeIncomingVideoSourceCocoa::processNewSample):
* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::settingsDidChange):
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::settingsDidChange):
2018-09-30 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Use display-specific capture factories
https://bugs.webkit.org/show_bug.cgi?id=190043
<rdar://problem/44834412>
Reviewed by Youenn Fablet.
No new tests, no change in functionality.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::AudioCaptureFactory::~AudioCaptureFactory): Deleted.
(WebCore::RealtimeMediaSource::VideoCaptureFactory::~VideoCaptureFactory): Deleted.
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::createMediaStream):
(WebCore::RealtimeMediaSourceCenter::getDisplayMediaDevices):
* platform/mediastream/RealtimeMediaSourceCenter.h:
(WebCore::RealtimeMediaSourceCenter::setAudioFactory):
(WebCore::RealtimeMediaSourceCenter::unsetAudioFactory):
* platform/mediastream/RealtimeMediaSourceFactory.cpp: Added.
(WebCore::SingleSourceFactory::setActiveSource):
(WebCore::SingleSourceFactory::unsetActiveSource):
* platform/mediastream/RealtimeMediaSourceFactory.h: Added.
(WebCore::SingleSourceFactory::activeSource):
(WebCore::VideoCaptureFactory::setVideoCapturePageState):
(WebCore::DisplayCaptureFactory::setDisplayCapturePageState):
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
(WebCore::libWebRTCVideoCaptureSourceFactory):
(WebCore::libWebRTCDisplayCaptureSourceFactory):
(WebCore::GStreamerVideoCaptureSource::factory):
(WebCore::GStreamerVideoCaptureSource::displayFactory):
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
* platform/mediastream/gstreamer/RealtimeMediaSourceCenterLibWebRTC.cpp:
(WebCore::RealtimeMediaSourceCenterLibWebRTC::audioCaptureSourceFactory):
(WebCore::RealtimeMediaSourceCenterLibWebRTC::audioFactory):
(WebCore::RealtimeMediaSourceCenterLibWebRTC::videoFactory):
(WebCore::RealtimeMediaSourceCenterLibWebRTC::displayCaptureFactory):
* platform/mediastream/gstreamer/RealtimeMediaSourceCenterLibWebRTC.h:
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::~AVVideoCaptureSource):
(WebCore::AVVideoCaptureSource::setupCaptureSession):
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioCaptureSource::factory):
* platform/mediastream/mac/CoreAudioCaptureSource.h:
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
(WebCore::RealtimeMediaSourceCenterMac::videoCaptureSourceFactory):
(WebCore::RealtimeMediaSourceCenterMac::displayCaptureSourceFactory):
(WebCore::RealtimeMediaSourceCenterMac::audioCaptureSourceFactory):
(WebCore::RealtimeMediaSourceCenterMac::audioFactory):
(WebCore::RealtimeMediaSourceCenterMac::videoFactory):
(WebCore::RealtimeMediaSourceCenterMac::displayCaptureFactory):
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.h:
* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::~MockRealtimeAudioSource):
(WebCore::MockRealtimeAudioSource::startProducingData):
(): Deleted.
(WebCore::mockAudioCaptureSourceFactory): Deleted.
(WebCore::MockRealtimeAudioSource::factory): Deleted.
* platform/mock/MockRealtimeAudioSource.h:
* platform/mock/MockRealtimeMediaSourceCenter.cpp:
(WebCore::MockRealtimeVideoSourceFactory::setVideoCapturePageState):
(WebCore::MockRealtimeMediaSourceCenter::audioFactory):
(WebCore::MockRealtimeMediaSourceCenter::videoFactory):
(WebCore::MockRealtimeMediaSourceCenter::displayCaptureFactory):
* platform/mock/MockRealtimeMediaSourceCenter.h:
* platform/mock/MockRealtimeVideoSource.cpp:
(): Deleted.
(WebCore::MockRealtimeVideoSourceFactory::setVideoCapturePageState): Deleted.
(WebCore::mockVideoCaptureSourceFactory): Deleted.
(WebCore::MockRealtimeVideoSource::factory): Deleted.
* platform/mock/MockRealtimeVideoSource.h:
2018-09-29 Oriol Brufau <obrufau@igalia.com>
[css-grid] Properly align items next to collapsed tracks with gutters
https://bugs.webkit.org/show_bug.cgi?id=190089
Reviewed by Manuel Rego Casasnovas.
gridAreaPositionForInFlowChild could return a wrong end position for
grid items adjacent to a collapsed track, because it didn't take into
account that gutters collapse in that case. Therefore, "center" or
"end" alignments displayed the item at the wrong position.
Test: imported/w3c/web-platform-tests/css/css-grid/alignment/grid-gutters-013.html
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::gridAreaPositionForInFlowChild const):
2018-09-29 Alicia Boya García <aboya@igalia.com>
[GStreamer][MSE] Use GObject for GST_TRACE_OBJECT
https://bugs.webkit.org/show_bug.cgi?id=190045
Reviewed by Philippe Normand.
Passing a non-GObject object to GST_TRACE_OBJECT() can be
theoretically misunderstood by the GStreamer logging function, so this
patch avoids that.
* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::AppendPipeline::appsrcEndOfAppendCheckerProbe):
(WebCore::AppendPipeline::handleEndOfAppend):
(WebCore::AppendPipeline::consumeAppsinkAvailableSamples):
(WebCore::AppendPipeline::pushNewBuffer):
2018-09-28 Zamiul Haque <zhaque@apple.com>
Angled gradient backgrounds in body render vertically when body height is 0
https://bugs.webkit.org/show_bug.cgi?id=177232
<rdar://problem/34548230>.
Reviewed by Tim Horton.
Specifically, gradients displayed at an angle (ie. 45 degrees) are rendered
as if they are vertical when the body tag containing the gradient
has a height of 0. Other browsers do not render under these circumstances,
so WebKit was modified to follow in suit. The problem was due to layout sizes for
fill tiles being calculated with a minimum height of 1px. A simple change of the
minimum height and width to 0px was enough to bring about the desired behavior.
Tests: angled-background-repeating-gradient-rendering-vertical.html
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::calculateFillTileSize const):
2018-09-28 Wenson Hsieh <wenson_hsieh@apple.com>
No DOM API to instantiate an attachment for an img element
https://bugs.webkit.org/show_bug.cgi?id=189934
<rdar://problem/44743222>
Reviewed by Ryosuke Niwa.
Adds support for HTMLAttachmentElement.getAttachmentIdentifier, a function that internal WebKit clients can use
to ensure that an image element is backed by a unique _WKAttachment. See below for more details.
Tests: WKAttachmentTests.AddAttachmentToConnectedImageElement
WKAttachmentTests.ChangeFileWrapperForPastedImage
WKAttachmentTests.ConnectImageWithAttachmentToDocument
* dom/Document.cpp:
(WebCore::Document::registerAttachmentIdentifier):
Add a new hook to register an empty _WKAttachment in the UI process with a given identifier. Used when creating
a new empty attachment to back an image element.
* dom/Document.h:
* editing/Editor.cpp:
(WebCore::Editor::registerAttachmentIdentifier):
(WebCore::Editor::notifyClientOfAttachmentUpdates):
* editing/Editor.h:
* html/HTMLAttachmentElement.cpp:
(WebCore::HTMLAttachmentElement::getAttachmentIdentifier):
Creates an attachment element to back the image element, if an attachment does not already exist, and returns
the unique identifier. This also causes an empty corresponding _WKAttachment to be created in the client, whose
file wrapper determines the contents of the image.
(WebCore::HTMLAttachmentElement::ensureUniqueIdentifier):
(WebCore::HTMLAttachmentElement::hasEnclosingImage const):
(WebCore::HTMLAttachmentElement::updateEnclosingImageWithData):
Add a helper that updates the source of the enclosing image element given a content type and image data, by
creating a new blob and blob URL.
* html/HTMLAttachmentElement.h:
* html/HTMLAttachmentElement.idl:
* html/HTMLImageElement.idl:
Rename webkitAttachmentIdentifier to just attachmentIdentifier.
* page/EditorClient.h:
(WebCore::EditorClient::registerAttachmentIdentifier):
(WebCore::EditorClient::didInsertAttachmentWithIdentifier):
2018-09-28 Chris Dumez <cdumez@apple.com>
The return value of an OnBeforeUnloadEventHandler should always be coerced into a DOMString
https://bugs.webkit.org/show_bug.cgi?id=190090
Reviewed by Ryosuke Niwa.
The return value of an OnBeforeUnloadEventHandler should always be coerced into a DOMString:
- https://html.spec.whatwg.org/#onbeforeunloadeventhandler
- https://html.spec.whatwg.org/#the-event-handler-processing-algorithm (Step 5)
In particular, this means that returning false in an OnBeforeUnloadEventHandler should NOT
cancel the event when the event is a CustomEvent (and not a BeforeUnloadEvent). This is
because the return value cannot be false at:
- https://html.spec.whatwg.org/#the-event-handler-processing-algorithm (Step 5. Otherwise case).
No new tests, rebaselined existing test.
* bindings/js/JSEventListener.cpp:
(WebCore::JSEventListener::handleEvent):
2018-09-28 Simon Fraser <simon.fraser@apple.com>
RenderLayer::removeOnlyThisLayer() should not call updateLayerPositions()
https://bugs.webkit.org/show_bug.cgi?id=190093
Reviewed by Dean Jackson and Zalan Bujtas.
It's wrong for RenderLayer::removeOnlyThisLayer() to call updateLayerPositions(),
because this is called at style update time, and layout will be stale.
It was added (see webkit.org/b/25252) so that opacity changes, which can destroy layers, correctly update
descendants. However, RenderStyle::changeRequiresLayout() checks for opacity <=> no opacity
changes and triggers layout accordingly, which will result in a full post-layout
updateLayerPositions().
This also revealed that changes to the "isolate" property fail to trigger any kind of style recalc or layout;
we need it to trigger layout (for now) because it affects z-order.
Covered by existing tests.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::removeOnlyThisLayer):
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::changeRequiresLayout const):
2018-09-28 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthN] Polish WebAuthN auto-test environment
https://bugs.webkit.org/show_bug.cgi?id=189283
<rdar://problem/44117828>
Reviewed by Chris Dumez.
This patch removes the old mocking mechanism.
Tests: http/wpt/webauthn/public-key-credential-create-with-invalid-parameters.https.html
http/wpt/webauthn/public-key-credential-get-with-invalid-parameters.https.html
http/wpt/webauthn/public-key-credential-same-origin-with-ancestors.https.html
* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:
* testing/Internals.cpp:
(WebCore::Internals::Internals):
(WebCore::Internals::mockAuthenticatorCoordinator const): Deleted.
* testing/Internals.h:
* testing/Internals.idl:
* testing/MockAuthenticatorCoordinator.cpp: Removed.
* testing/MockAuthenticatorCoordinator.h: Removed.
* testing/MockAuthenticatorCoordinator.idl: Removed.
2018-09-28 Jer Noble <jer.noble@apple.com>
Refactoring: eliminate raw pointer usage in Fullscreen code
https://bugs.webkit.org/show_bug.cgi?id=188747
<rdar://problem/43541164>
Reviewed by Alex Christensen.
Two sources of raw pointers in the Fullscreen code:
- Model classes (PlaybackSessionModel and VideoFullscreenModel) aren't ref-able, so
they are passed around as raw references.
- Observer classes (PlaybackSessionModelClient and VideoFullscreenModelClient, and
VideoFullscreenChangeObserver) are also passed around as raw pointers, but shouldn't
be ref-able.
Make Model classes ref-able by adding ref() and deref() which call virtual refModel and
derefModel methods, overridden by implementing subclasses. Make every concrete observer
inherit from CanMakeWeakPtr, and every registration method take WeakPtr wrappers around
the client interface.
Since every Interface class now holds a strong reference to its Model classes, and each
Model class holds a weak reference to all its clients, no explicit invalidate() method
is necessary.
Notes:
- Since the weak pointer methods need to be able to downcast to the abstract base class,
observers need to inherit publically (rather than privately) from those base classes.
- Media element Models should compose EventListener rather than inheriting from it, since
EventListener has its own RefCount.
- WeakPtrs can't be held in HashSets (because they change value, and therefore hash, when
their underlying object is destroyed), so clients should be stored in a Vector instead.
- Interfaces should be given all required Refs at creation time, so that they can store
those parameters as Refs instead of RefPtrs.
* platform/cocoa/PlaybackSessionInterface.h:
(WebCore::PlaybackSessionInterface::~PlaybackSessionInterface): Deleted.
* platform/cocoa/PlaybackSessionModel.h:
(WebCore::PlaybackSessionModel::ref):
(WebCore::PlaybackSessionModel::deref):
(WebCore::PlaybackSessionModel::~PlaybackSessionModel): Deleted.
* platform/cocoa/PlaybackSessionModelMediaElement.h:
* platform/cocoa/PlaybackSessionModelMediaElement.mm:
(WebCore::PlaybackSessionModelMediaElement::PlaybackSessionModelMediaElement):
(WebCore::PlaybackSessionModelMediaElement::~PlaybackSessionModelMediaElement):
(WebCore::PlaybackSessionModelMediaElement::setMediaElement):
(WebCore::PlaybackSessionModelMediaElement::updateForEventName):
(WebCore::PlaybackSessionModelMediaElement::addClient):
(WebCore::PlaybackSessionModelMediaElement::removeClient):
(WebCore::PlaybackSessionModelMediaElement::updateMediaSelectionOptions):
(WebCore::PlaybackSessionModelMediaElement::updateMediaSelectionIndices):
(WebCore::PlaybackSessionModelMediaElement::handleEvent): Deleted.
* platform/cocoa/VideoFullscreenChangeObserver.h:
(WebCore::VideoFullscreenChangeObserver::~VideoFullscreenChangeObserver): Deleted.
* platform/cocoa/VideoFullscreenModel.h:
(WebCore::VideoFullscreenModel::ref):
(WebCore::VideoFullscreenModel::deref):
(WebCore::VideoFullscreenModel::~VideoFullscreenModel): Deleted.
* platform/cocoa/VideoFullscreenModelVideoElement.h:
* platform/cocoa/VideoFullscreenModelVideoElement.mm:
(VideoFullscreenModelVideoElement::VideoFullscreenModelVideoElement):
(VideoFullscreenModelVideoElement::setVideoElement):
(VideoFullscreenModelVideoElement::addClient):
(VideoFullscreenModelVideoElement::removeClient):
(VideoFullscreenModelVideoElement::setHasVideo):
(VideoFullscreenModelVideoElement::setVideoDimensions):
(VideoFullscreenModelVideoElement::willEnterPictureInPicture):
(VideoFullscreenModelVideoElement::didEnterPictureInPicture):
(VideoFullscreenModelVideoElement::failedToEnterPictureInPicture):
(VideoFullscreenModelVideoElement::willExitPictureInPicture):
(VideoFullscreenModelVideoElement::didExitPictureInPicture):
(VideoFullscreenModelVideoElement::handleEvent): Deleted.
* platform/ios/PlaybackSessionInterfaceAVKit.h:
(WebCore::PlaybackSessionInterfaceAVKit::create):
(WebCore::PlaybackSessionInterfaceAVKit::playbackSessionModel const):
(): Deleted.
* platform/ios/PlaybackSessionInterfaceAVKit.mm:
(WebCore::PlaybackSessionInterfaceAVKit::PlaybackSessionInterfaceAVKit):
(WebCore::PlaybackSessionInterfaceAVKit::~PlaybackSessionInterfaceAVKit):
(WebCore::PlaybackSessionInterfaceAVKit::invalidate): Deleted.
* platform/ios/VideoFullscreenInterfaceAVKit.h:
* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerLayer layoutSublayers]):
(-[WebAVPlayerLayer resolveBounds]):
(-[WebAVPlayerLayer setVideoGravity:]):
(VideoFullscreenInterfaceAVKit::create):
(VideoFullscreenInterfaceAVKit::VideoFullscreenInterfaceAVKit):
(VideoFullscreenInterfaceAVKit::~VideoFullscreenInterfaceAVKit):
(VideoFullscreenInterfaceAVKit::setVideoFullscreenChangeObserver):
(VideoFullscreenInterfaceAVKit::applicationDidBecomeActive):
(VideoFullscreenInterfaceAVKit::setupFullscreen):
(VideoFullscreenInterfaceAVKit::presentingViewController):
(VideoFullscreenInterfaceAVKit::requestHideAndExitFullscreen):
(VideoFullscreenInterfaceAVKit::preparedToExitFullscreen):
(VideoFullscreenInterfaceAVKit::willStartPictureInPicture):
(VideoFullscreenInterfaceAVKit::didStartPictureInPicture):
(VideoFullscreenInterfaceAVKit::failedToStartPictureInPicture):
(VideoFullscreenInterfaceAVKit::willStopPictureInPicture):
(VideoFullscreenInterfaceAVKit::didStopPictureInPicture):
(VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason):
(VideoFullscreenInterfaceAVKit::doSetup):
(VideoFullscreenInterfaceAVKit::setMode):
(VideoFullscreenInterfaceAVKit::clearMode):
(VideoFullscreenInterfaceAVKit::setVideoFullscreenModel): Deleted.
(VideoFullscreenInterfaceAVKit::invalidate): Deleted.
* platform/ios/WebAVPlayerController.h:
* platform/ios/WebAVPlayerController.mm:
(-[WebAVPlayerController delegate]):
(-[WebAVPlayerController playbackSessionInterface]):
(-[WebAVPlayerController setPlaybackSessionInterface:]):
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::didCleanupFullscreen):
(VideoFullscreenControllerContext::addClient):
(VideoFullscreenControllerContext::removeClient):
(VideoFullscreenControllerContext::willEnterPictureInPicture):
(VideoFullscreenControllerContext::didEnterPictureInPicture):
(VideoFullscreenControllerContext::failedToEnterPictureInPicture):
(VideoFullscreenControllerContext::willExitPictureInPicture):
(VideoFullscreenControllerContext::didExitPictureInPicture):
(VideoFullscreenControllerContext::setUpFullscreen):
* platform/mac/PlaybackSessionInterfaceMac.h:
* platform/mac/PlaybackSessionInterfaceMac.mm:
(WebCore::PlaybackSessionInterfaceMac::create):
(WebCore::PlaybackSessionInterfaceMac::PlaybackSessionInterfaceMac):
(WebCore::PlaybackSessionInterfaceMac::playbackSessionModel const):
(WebCore::PlaybackSessionInterfaceMac::rateChanged):
(WebCore::PlaybackSessionInterfaceMac::beginScrubbing):
(WebCore::PlaybackSessionInterfaceMac::endScrubbing):
(WebCore::PlaybackSessionInterfaceMac::setPlayBackControlsManager):
(WebCore::PlaybackSessionInterfaceMac::updatePlaybackControlsManagerTiming):
(WebCore::PlaybackSessionInterfaceMac::~PlaybackSessionInterfaceMac): Deleted.
(WebCore::PlaybackSessionInterfaceMac::invalidate): Deleted.
* platform/mac/VideoFullscreenInterfaceMac.h:
(WebCore::VideoFullscreenInterfaceMac::create):
(WebCore::VideoFullscreenInterfaceMac::videoFullscreenModel const):
(WebCore::VideoFullscreenInterfaceMac::playbackSessionModel const):
(WebCore::VideoFullscreenInterfaceMac::videoFullscreenChangeObserver const):
* platform/mac/VideoFullscreenInterfaceMac.mm:
(-[WebVideoFullscreenInterfaceMacObjC setUpPIPForVideoView:withFrame:inWindow:]):
(-[WebVideoFullscreenInterfaceMacObjC boundsDidChangeForVideoViewContainer:]):
(-[WebVideoFullscreenInterfaceMacObjC pipDidClose:]):
(-[WebVideoFullscreenInterfaceMacObjC pipActionPlay:]):
(-[WebVideoFullscreenInterfaceMacObjC pipActionPause:]):
(-[WebVideoFullscreenInterfaceMacObjC pipActionStop:]):
(WebCore::VideoFullscreenInterfaceMac::VideoFullscreenInterfaceMac):
(WebCore::VideoFullscreenInterfaceMac::~VideoFullscreenInterfaceMac):
(WebCore::VideoFullscreenInterfaceMac::setVideoFullscreenChangeObserver):
(WebCore::VideoFullscreenInterfaceMac::setMode):
(WebCore::VideoFullscreenInterfaceMac::clearMode):
(WebCore::VideoFullscreenInterfaceMac::invalidate):
(WebCore::VideoFullscreenInterfaceMac::requestHideAndExitPiP):
(WebCore::VideoFullscreenInterfaceMac::setVideoFullscreenModel): Deleted.
* platform/mac/WebPlaybackControlsManager.mm:
(-[WebPlaybackControlsManager seekToTime:toleranceBefore:toleranceAfter:]):
(-[WebPlaybackControlsManager setCurrentAudioTouchBarMediaSelectionOption:]):
(-[WebPlaybackControlsManager setCurrentLegibleTouchBarMediaSelectionOption:]):
(-[WebPlaybackControlsManager togglePlayback]):
(-[WebPlaybackControlsManager setPlaying:]):
(-[WebPlaybackControlsManager isPlaying]):
(-[WebPlaybackControlsManager togglePictureInPicture]):
2018-09-28 Chris Dumez <cdumez@apple.com>
Drop support for cross-origin-window-policy header
https://bugs.webkit.org/show_bug.cgi?id=190081
Reviewed by Ryosuke Niwa.
Drop support for cross-origin-window-policy header as this was never enabled and its design has
some issues we have not resolved. An alternative is being worked on but will be substantially
different so there is not much value in keeping this code around.
* bindings/js/JSDOMBindingSecurity.cpp:
* bindings/js/JSDOMBindingSecurity.h:
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess):
(WebCore::JSDOMWindow::getOwnPropertySlotByIndex):
(WebCore::addCrossOriginWindowPropertyNames):
(WebCore::addScopedChildrenIndexes):
(WebCore::addCrossOriginWindowOwnPropertyNames):
(WebCore::JSDOMWindow::getOwnPropertyNames):
* bindings/js/JSDOMWindowCustom.h:
* bindings/js/JSRemoteDOMWindowCustom.cpp:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateAttributeGetterBodyDefinition):
(GenerateAttributeSetterBodyDefinition):
(GenerateOperationBodyDefinition):
* bindings/scripts/IDLAttributes.json:
* dom/Document.cpp:
(WebCore::Document::canNavigate):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::didBeginDocument):
* page/AbstractDOMWindow.cpp:
(WebCore::AbstractDOMWindow::AbstractDOMWindow):
* page/AbstractDOMWindow.h:
* page/DOMWindow.idl:
* page/Settings.yaml:
* platform/network/HTTPParsers.cpp:
* platform/network/HTTPParsers.h:
2018-09-28 Daniel Bates <dabates@apple.com>
[iOS] Allow programmatic focus when hardware keyboard is attached
https://bugs.webkit.org/show_bug.cgi?id=190017
<rdar://problem/42270463>
Reviewed by Wenson Hsieh.
Add support for checking if the embedding client is WebKitTestRunner and export isDumpRenderTree()
so that we can make use of it from WebKit. We will make use of these functions to keep the current
behavior of disallowing programmatic focus when running tests in these apps. This is needed to
keep testing deterministic. Otherwise, test results would be dependent on whether a hardware
keyboard is attached. When running tests in Simulator.app the hardware keyboard may also not be
connected (i.e. Hardware > Keyboard > Connect Hardware Keyboard is disabled).
* platform/RuntimeApplicationChecks.h:
* platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::IOSApplication::isWebKitTestRunner): Added.
2018-09-28 Ryosuke Niwa <rniwa@webkit.org>
REGRESSION(r236609): API tests for mso list preservation are failing
https://bugs.webkit.org/show_bug.cgi?id=190095
Reviewed by Wenson Hsieh.
The regression was caused by appendNodeToPreserveMSOList called after an early return for not having renderer.
Clearly, comment & style elements coming from a MS word document wouldn't have a renderer.
Fixed the bug by changing the order.
* editing/markup.cpp:
(WebCore::StyledMarkupAccumulator::traverseNodesForSerialization):
2018-09-28 Ryosuke Niwa <rniwa@webkit.org>
Build fix after r236612.
* platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::writeSelection):
2018-09-28 Andy Estes <aestes@apple.com>
[Apple Pay] Remove the "in-store" button type
https://bugs.webkit.org/show_bug.cgi?id=190079
Reviewed by Tim Horton.
According to <https://developer.apple.com/design/human-interface-guidelines/apple-pay/buttons-and-marks/buttons/>,
this button is meant only for certain kinds of native apps. It shouldn't be available on the web.
Updated http/tests/ssl/applepay/ApplePayButton.html.
* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator ApplePayButtonType const):
* css/CSSValueKeywords.in:
* css/parser/CSSParserFastPaths.cpp:
(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
* rendering/RenderThemeCocoa.mm:
(WebCore::toPKPaymentButtonType):
* rendering/style/RenderStyleConstants.h:
2018-09-28 Chris Dumez <cdumez@apple.com>
document.open() should throw errors for cross-origin calls
https://bugs.webkit.org/show_bug.cgi?id=189371
<rdar://problem/44282700>
Reviewed by Youenn Fablet.
document.open() / document.write() should throw errors for cross-origin calls as per:
- https://html.spec.whatwg.org/#document-open-steps (Step 4)
No new tests, rebaselined existing tests.
* dom/Document.cpp:
(WebCore::Document::open):
(WebCore::Document::write):
(WebCore::Document::writeln):
* dom/Document.h:
2018-09-28 Ryosuke Niwa <rniwa@webkit.org>
Rename createMarkup to serializePreservingVisualAppearance
https://bugs.webkit.org/show_bug.cgi?id=190086
Reviewed by Wenson Hsieh.
Renamed the function to clarify what it does. Also removed the unused Range::toHTML.
* dom/Range.cpp:
(WebCore::Range::toHTML const): Deleted.
* dom/Range.h:
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::moveParagraphs):
* editing/cocoa/EditorCocoa.mm:
(WebCore::Editor::selectionInHTMLFormat):
* editing/gtk/EditorGtk.cpp:
(WebCore::Editor::writeSelectionToPasteboard):
* editing/markup.cpp:
(WebCore::serializePreservingVisualAppearance):
(WebCore::createMarkup): Deleted.
* editing/markup.h:
* editing/wpe/EditorWPE.cpp:
(WebCore::Editor::writeSelectionToPasteboard):
* loader/archive/cf/LegacyWebArchive.cpp:
(WebCore::LegacyWebArchive::create):
(WebCore::LegacyWebArchive::createFromSelection):
* platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::writeRangeToDataObject):
2018-09-28 Simon Fraser <simon.fraser@apple.com>
Remove some unused RenderLayer code
https://bugs.webkit.org/show_bug.cgi?id=190078
Reviewed by Zalan Bujtas.
The 'outOfFlowDescendantContainingBlocks' code was related to the accelerated overflow scrolling code that
I removed recently.
updateDescendantsLayerListsIfNeeded() is never called.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateDescendantDependentFlags):
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayer.h:
2018-09-28 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r236605.
https://bugs.webkit.org/show_bug.cgi?id=190087
caused three API test timeouts (Requested by jernoble on
#webkit).
Reverted changeset:
"Refactoring: eliminate raw pointer usage in Fullscreen code"
https://bugs.webkit.org/show_bug.cgi?id=188747
https://trac.webkit.org/changeset/236605
2018-09-28 Ryosuke Niwa <rniwa@webkit.org>
Simplify StyledMarkupAccumulator::traverseNodesForSerialization
https://bugs.webkit.org/show_bug.cgi?id=190073
Reviewed by Antti Koivisto.
Simplified the range traversal algorithm in traverseNodesForSerialization as it was too complicated
to support shadow DOM for copy and paste.
Instead of using NodeTraversal::next to traverse past ancestors and then figuring out which ancestor
must be closed or to wrap the existing markup with, new code collects the list of ancestors as we
traverse out of them.
Also extracted lambdas for generating markup and deciding whether to skip a node as well as keeping
track of the depth of the current markup. This further reduces the code complexity of the actual
node traversal algorithm. Keeping track of the depth allows us to now generate ancestor elements'
closing tags without keeping a stack of ancestor nodes we opened at all times.
* editing/markup.cpp:
(WebCore::StyledMarkupAccumulator::traverseNodesForSerialization):
2018-09-27 Ryosuke Niwa <rniwa@webkit.org>
Replace every use of Node::offsetInCharacters() by Node::isCharacterDataNode()
https://bugs.webkit.org/show_bug.cgi?id=190069
Reviewed by Zalan Bujtas.
Removed Node::offsetInCharacters() and replaced every use of it by isCharacterDataNode()
because their implementations are identical.
Note that offsetInCharacters() sounds like a function which returns some kind of an offset
but it doesn't. It returns true when called on a CharacterData and false elsewhere.
* accessibility/AXObjectCache.cpp:
(WebCore::characterOffsetsInOrder):
(WebCore::AXObjectCache::startOrEndCharacterOffsetForRange):
(WebCore::AXObjectCache::characterOffsetFromVisiblePosition):
* dom/CharacterData.cpp:
(WebCore::CharacterData::offsetInCharacters const): Deleted.
* dom/CharacterData.h:
* dom/Node.cpp:
(WebCore::Node::offsetInCharacters const): Deleted.
* dom/Node.h:
* dom/Position.cpp:
(WebCore::Position::parentAnchoredEquivalent const):
* dom/Position.h:
(WebCore::lastOffsetInNode):
(WebCore::minOffsetForNode):
(WebCore::offsetIsBeforeLastNodeOffset):
* dom/Range.cpp:
(WebCore::Range::firstNode const):
(WebCore::Range::pastLastNode const):
* dom/RangeBoundaryPoint.h:
(WebCore::RangeBoundaryPoint::setOffset):
(WebCore::RangeBoundaryPoint::setToEndOfNode):
* editing/Editing.cpp:
(WebCore::lastOffsetForEditing):
* editing/TextIterator.cpp:
(WebCore::nextInPreOrderCrossingShadowBoundaries):
(WebCore::TextIterator::node const):
(WebCore::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator):
* page/DOMSelection.cpp:
(WebCore::DOMSelection::extend):
2018-09-28 Jer Noble <jer.noble@apple.com>
Refactoring: eliminate raw pointer usage in Fullscreen code
https://bugs.webkit.org/show_bug.cgi?id=188747
<rdar://problem/43541164>
Reviewed by Alex Christensen.
Two sources of raw pointers in the Fullscreen code:
- Model classes (PlaybackSessionModel and VideoFullscreenModel) aren't ref-able, so
they are passed around as raw references.
- Observer classes (PlaybackSessionModelClient and VideoFullscreenModelClient, and
VideoFullscreenChangeObserver) are also passed around as raw pointers, but shouldn't
be ref-able.
Make Model classes ref-able by adding ref() and deref() which call virtual refModel and
derefModel methods, overridden by implementing subclasses. Make every concrete observer
inherit from CanMakeWeakPtr, and every registration method take WeakPtr wrappers around
the client interface.
Since every Interface class now holds a strong reference to its Model classes, and each
Model class holds a weak reference to all its clients, no explicit invalidate() method
is necessary.
Notes:
- Since the weak pointer methods need to be able to downcast to the abstract base class,
observers need to inherit publically (rather than privately) from those base classes.
- Media element Models should compose EventListener rather than inheriting from it, since
EventListener has its own RefCount.
- WeakPtrs can't be held in HashSets (because they change value, and therefore hash, when
their underlying object is destroyed), so clients should be stored in a Vector instead.
- Interfaces should be given all required Refs at creation time, so that they can store
those parameters as Refs instead of RefPtrs.
* platform/cocoa/PlaybackSessionInterface.h:
(WebCore::PlaybackSessionInterface::~PlaybackSessionInterface): Deleted.
* platform/cocoa/PlaybackSessionModel.h:
(WebCore::PlaybackSessionModel::ref):
(WebCore::PlaybackSessionModel::deref):
(WebCore::PlaybackSessionModel::~PlaybackSessionModel): Deleted.
* platform/cocoa/PlaybackSessionModelMediaElement.h:
* platform/cocoa/PlaybackSessionModelMediaElement.mm:
(WebCore::PlaybackSessionModelMediaElement::PlaybackSessionModelMediaElement):
(WebCore::PlaybackSessionModelMediaElement::~PlaybackSessionModelMediaElement):
(WebCore::PlaybackSessionModelMediaElement::setMediaElement):
(WebCore::PlaybackSessionModelMediaElement::updateForEventName):
(WebCore::PlaybackSessionModelMediaElement::addClient):
(WebCore::PlaybackSessionModelMediaElement::removeClient):
(WebCore::PlaybackSessionModelMediaElement::updateMediaSelectionOptions):
(WebCore::PlaybackSessionModelMediaElement::updateMediaSelectionIndices):
(WebCore::PlaybackSessionModelMediaElement::handleEvent): Deleted.
* platform/cocoa/VideoFullscreenChangeObserver.h:
(WebCore::VideoFullscreenChangeObserver::~VideoFullscreenChangeObserver): Deleted.
* platform/cocoa/VideoFullscreenModel.h:
(WebCore::VideoFullscreenModel::ref):
(WebCore::VideoFullscreenModel::deref):
(WebCore::VideoFullscreenModel::~VideoFullscreenModel): Deleted.
* platform/cocoa/VideoFullscreenModelVideoElement.h:
* platform/cocoa/VideoFullscreenModelVideoElement.mm:
(VideoFullscreenModelVideoElement::VideoFullscreenModelVideoElement):
(VideoFullscreenModelVideoElement::setVideoElement):
(VideoFullscreenModelVideoElement::addClient):
(VideoFullscreenModelVideoElement::removeClient):
(VideoFullscreenModelVideoElement::setHasVideo):
(VideoFullscreenModelVideoElement::setVideoDimensions):
(VideoFullscreenModelVideoElement::willEnterPictureInPicture):
(VideoFullscreenModelVideoElement::didEnterPictureInPicture):
(VideoFullscreenModelVideoElement::failedToEnterPictureInPicture):
(VideoFullscreenModelVideoElement::willExitPictureInPicture):
(VideoFullscreenModelVideoElement::didExitPictureInPicture):
(VideoFullscreenModelVideoElement::handleEvent): Deleted.
* platform/ios/PlaybackSessionInterfaceAVKit.h:
(WebCore::PlaybackSessionInterfaceAVKit::create):
(WebCore::PlaybackSessionInterfaceAVKit::playbackSessionModel const):
(): Deleted.
* platform/ios/PlaybackSessionInterfaceAVKit.mm:
(WebCore::PlaybackSessionInterfaceAVKit::PlaybackSessionInterfaceAVKit):
(WebCore::PlaybackSessionInterfaceAVKit::~PlaybackSessionInterfaceAVKit):
(WebCore::PlaybackSessionInterfaceAVKit::invalidate): Deleted.
* platform/ios/VideoFullscreenInterfaceAVKit.h:
* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerLayer layoutSublayers]):
(-[WebAVPlayerLayer resolveBounds]):
(-[WebAVPlayerLayer setVideoGravity:]):
(VideoFullscreenInterfaceAVKit::create):
(VideoFullscreenInterfaceAVKit::VideoFullscreenInterfaceAVKit):
(VideoFullscreenInterfaceAVKit::~VideoFullscreenInterfaceAVKit):
(VideoFullscreenInterfaceAVKit::setVideoFullscreenChangeObserver):
(VideoFullscreenInterfaceAVKit::applicationDidBecomeActive):
(VideoFullscreenInterfaceAVKit::setupFullscreen):
(VideoFullscreenInterfaceAVKit::presentingViewController):
(VideoFullscreenInterfaceAVKit::requestHideAndExitFullscreen):
(VideoFullscreenInterfaceAVKit::preparedToExitFullscreen):
(VideoFullscreenInterfaceAVKit::willStartPictureInPicture):
(VideoFullscreenInterfaceAVKit::didStartPictureInPicture):
(VideoFullscreenInterfaceAVKit::failedToStartPictureInPicture):
(VideoFullscreenInterfaceAVKit::willStopPictureInPicture):
(VideoFullscreenInterfaceAVKit::didStopPictureInPicture):
(VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason):
(VideoFullscreenInterfaceAVKit::doSetup):
(VideoFullscreenInterfaceAVKit::setMode):
(VideoFullscreenInterfaceAVKit::clearMode):
(VideoFullscreenInterfaceAVKit::setVideoFullscreenModel): Deleted.
(VideoFullscreenInterfaceAVKit::invalidate): Deleted.
* platform/ios/WebAVPlayerController.h:
* platform/ios/WebAVPlayerController.mm:
(-[WebAVPlayerController delegate]):
(-[WebAVPlayerController playbackSessionInterface]):
(-[WebAVPlayerController setPlaybackSessionInterface:]):
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::didCleanupFullscreen):
(VideoFullscreenControllerContext::addClient):
(VideoFullscreenControllerContext::removeClient):
(VideoFullscreenControllerContext::willEnterPictureInPicture):
(VideoFullscreenControllerContext::didEnterPictureInPicture):
(VideoFullscreenControllerContext::failedToEnterPictureInPicture):
(VideoFullscreenControllerContext::willExitPictureInPicture):
(VideoFullscreenControllerContext::didExitPictureInPicture):
(VideoFullscreenControllerContext::setUpFullscreen):
* platform/mac/PlaybackSessionInterfaceMac.h:
* platform/mac/PlaybackSessionInterfaceMac.mm:
(WebCore::PlaybackSessionInterfaceMac::create):
(WebCore::PlaybackSessionInterfaceMac::PlaybackSessionInterfaceMac):
(WebCore::PlaybackSessionInterfaceMac::playbackSessionModel const):
(WebCore::PlaybackSessionInterfaceMac::rateChanged):
(WebCore::PlaybackSessionInterfaceMac::beginScrubbing):
(WebCore::PlaybackSessionInterfaceMac::endScrubbing):
(WebCore::PlaybackSessionInterfaceMac::setPlayBackControlsManager):
(WebCore::PlaybackSessionInterfaceMac::updatePlaybackControlsManagerTiming):
(WebCore::PlaybackSessionInterfaceMac::~PlaybackSessionInterfaceMac): Deleted.
(WebCore::PlaybackSessionInterfaceMac::invalidate): Deleted.
* platform/mac/VideoFullscreenInterfaceMac.h:
(WebCore::VideoFullscreenInterfaceMac::create):
(WebCore::VideoFullscreenInterfaceMac::videoFullscreenModel const):
(WebCore::VideoFullscreenInterfaceMac::playbackSessionModel const):
(WebCore::VideoFullscreenInterfaceMac::videoFullscreenChangeObserver const):
* platform/mac/VideoFullscreenInterfaceMac.mm:
(-[WebVideoFullscreenInterfaceMacObjC setUpPIPForVideoView:withFrame:inWindow:]):
(-[WebVideoFullscreenInterfaceMacObjC boundsDidChangeForVideoViewContainer:]):
(-[WebVideoFullscreenInterfaceMacObjC pipDidClose:]):
(-[WebVideoFullscreenInterfaceMacObjC pipActionPlay:]):
(-[WebVideoFullscreenInterfaceMacObjC pipActionPause:]):
(-[WebVideoFullscreenInterfaceMacObjC pipActionStop:]):
(WebCore::VideoFullscreenInterfaceMac::VideoFullscreenInterfaceMac):
(WebCore::VideoFullscreenInterfaceMac::~VideoFullscreenInterfaceMac):
(WebCore::VideoFullscreenInterfaceMac::setVideoFullscreenChangeObserver):
(WebCore::VideoFullscreenInterfaceMac::setMode):
(WebCore::VideoFullscreenInterfaceMac::clearMode):
(WebCore::VideoFullscreenInterfaceMac::invalidate):
(WebCore::VideoFullscreenInterfaceMac::requestHideAndExitPiP):
(WebCore::VideoFullscreenInterfaceMac::setVideoFullscreenModel): Deleted.
* platform/mac/WebPlaybackControlsManager.mm:
(-[WebPlaybackControlsManager seekToTime:toleranceBefore:toleranceAfter:]):
(-[WebPlaybackControlsManager setCurrentAudioTouchBarMediaSelectionOption:]):
(-[WebPlaybackControlsManager setCurrentLegibleTouchBarMediaSelectionOption:]):
(-[WebPlaybackControlsManager togglePlayback]):
(-[WebPlaybackControlsManager setPlaying:]):
(-[WebPlaybackControlsManager isPlaying]):
(-[WebPlaybackControlsManager togglePictureInPicture]):
2018-09-28 Chris Dumez <cdumez@apple.com>
Drop iOS specific quirk in SettingsBase::scriptEnabledChanged()
https://bugs.webkit.org/show_bug.cgi?id=190077
<rdar://problem/44812613>
Reviewed by Zalan Bujtas.
Drop iOS specific quirk in SettingsBase::scriptEnabledChanged() that would dirty style after the
"JavaScriptEnabled" setting's state is toggled. I do not see a good reason to do this given that
scripts would not get executed until a reload.
If we find out after dropping this that this is actually useful for some reason, then we can
always bring it back and consider making this non-iOS specific, as well as documenting why this
it is needed.
* page/Settings.yaml:
* page/SettingsBase.cpp:
(WebCore::SettingsBase::scriptEnabledChanged): Deleted.
* page/SettingsBase.h:
2018-09-27 Basuke Suzuki <Basuke.Suzuki@sony.com>
[Curl] Fix priority issue with multiple cookies with different level of path.
https://bugs.webkit.org/show_bug.cgi?id=189920
Reviewed by Fujii Hironori.
When multiple cookies are stored in the database for same site, the priority of
multiple cookies which matches path criteria was not defined. The backend
implementation `sqlite` then returns the first matching result, which is the one
stored earlier.
Test: http/tests/cookies/cookie-with-multiple-level-path.html
* platform/network/curl/CookieJarDB.cpp:
(WebCore::CookieJarDB::searchCookies):
2018-09-26 Ryosuke Niwa <rniwa@webkit.org>
Use enum class in createMarkup arguments
https://bugs.webkit.org/show_bug.cgi?id=190028
Reviewed by Wenson Hsieh.
Replaced enums used by createMarkup with equivalent enum classes: EChildrenOnly with SerializedNodes,
EAbsoluteURLs with ResolveURLs, and EFragmentSerialization with SerializationSyntax.
Also replaced the boolean convertBlocksToInlines with an enum class of the same name.
Finally, renamed the createMarkup variant which doesn't serialize style and used for innerHTML and XMLSerializer
to serializeFragment.
* dom/Element.cpp:
(WebCore::Element::innerHTML const):
(WebCore::Element::outerHTML const):
* dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::innerHTML const):
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::moveParagraphs):
* editing/HTMLInterchange.h:
(WebCore::AnnotateForInterchange): Renamed from EAnnotateForInterchange.
* editing/MarkupAccumulator.cpp:
(WebCore::MarkupAccumulator::MarkupAccumulator):
(WebCore::MarkupAccumulator::serializeNodes):
(WebCore::MarkupAccumulator::serializeNodesWithNamespaces):
(WebCore::MarkupAccumulator::resolveURLIfNeeded const):
* editing/MarkupAccumulator.h:
(WebCore::MarkupAccumulator::inXMLFragmentSerialization const):
* editing/ReplaceRangeWithTextCommand.cpp:
(WebCore::ReplaceRangeWithTextCommand::inputEventDataTransfer const):
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::willApplyCommand):
* editing/SpellingCorrectionCommand.cpp:
(WebCore::SpellingCorrectionCommand::inputEventDataTransfer const):
* editing/cocoa/EditorCocoa.mm:
(WebCore::Editor::selectionInHTMLFormat):
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::WebContentMarkupReader::readRTFD):
(WebCore::WebContentMarkupReader::readRTF):
* editing/gtk/EditorGtk.cpp:
(WebCore::Editor::writeImageToPasteboard):
(WebCore::Editor::writeSelectionToPasteboard):
* editing/markup.cpp:
(WebCore::StyledMarkupAccumulator::StyledMarkupAccumulator):
(WebCore::StyledMarkupAccumulator::serializeNodes):
(WebCore::StyledMarkupAccumulator::traverseNodesForSerialization):
(WebCore::highestAncestorToWrapMarkup):
(WebCore::createMarkupInternal):
(WebCore::createMarkup):
(WebCore::sanitizedMarkupForFragmentInDocument):
(WebCore::serializeFragment): Renamed from createMarkup. This is used for innerHTML and XMLSerializer,
which faithfully serializes the fragment without any computed style as inline styles.
(WebCore::documentTypeString):
(WebCore::createFullMarkup): Deleted two varinats used in WebKitLegacy.
* editing/markup.h:
(WebCore::ResolveURLs): Renamed from EAbsoluteURLs.
(WebCore::ConvertBlocksToInlines): Added.
(WebCore::SerializedNodes): Renamed from EChildrenOnly.
(WebCore::SerializationSyntax): Renamed from EFragmentSerialization.
* editing/wpe/EditorWPE.cpp:
(WebCore::Editor::writeSelectionToPasteboard):
* inspector/DOMEditor.cpp:
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::getOuterHTML):
* loader/archive/cf/LegacyWebArchive.cpp:
(WebCore::LegacyWebArchive::create):
(WebCore::LegacyWebArchive::createFromSelection):
* page/PageSerializer.cpp:
(WebCore::PageSerializer::SerializerMarkupAccumulator::SerializerMarkupAccumulator):
(WebCore::PageSerializer::serializeFrame):
* page/win/DragControllerWin.cpp:
(WebCore::DragController::declareAndWriteDragImage):
* Source/WebCore/platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::writeRangeToDataObject):
(WebCore::Pasteboard::writeSelection):
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::send):
* xml/XMLSerializer.cpp:
(WebCore::XMLSerializer::serializeToString):
* xml/XSLTProcessorLibxslt.cpp:
(WebCore::xsltStylesheetPointer):
(WebCore::xmlDocPtrFromNode):
2018-09-27 John Wilander <wilander@apple.com>
Resource Load Statistics: Non-redirected top frame navigation should not get captured in statistics
https://bugs.webkit.org/show_bug.cgi?id=190055
<rdar://problem/44843460>
Reviewed by Chris Dumez.
Test: http/tests/resourceLoadStatistics/do-not-capture-statistics-for-simple-top-navigations.html
* loader/ResourceLoadStatistics.cpp:
(WebCore::ResourceLoadStatistics::decode):
Corrects legacy statistics for frames and triggers a re-classification.
2018-09-27 Jer Noble <jer.noble@apple.com>
Unreviewed watchOS build fix; Fix declaration for ports which USE(ENCRYPTED_MEDIA) but don't
HAVE(AVCONTENTKEYSESSION).
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
2018-09-27 Justin Michaud <justin_michaud@apple.com>
Remove duplicate CSS Properties and Values feature on status page
https://bugs.webkit.org/show_bug.cgi?id=189909
Reviewed by Simon Fraser.
Update CSS properties and values api feature in features.json
* features.json:
2018-09-27 Jer Noble <jer.noble@apple.com>
MediaPlayer should have mediaPlayerWaitingForKeyChanged() / bool waitingForKey() accessor
https://bugs.webkit.org/show_bug.cgi?id=189951
Reviewed by Eric Carlson.
In order to implement the "Resume Playback" section of EME, part 4, we need to be able
to query whether the MediaPlayer is still waiting for a key after attemptToDecrypt()
has been called. Currently this involves no behavioral changes, as all modern EME ports
will still just notify the media element that they no longer need keys after one has
been added, but future ports may be able to wait for multiple keys before reporting
that it is no longer waiting for keys.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaPlayerWaitingForKeyChanged):
(WebCore::HTMLMediaElement::attemptToResumePlaybackIfNecessary):
(WebCore::HTMLMediaElement::mediaPlayerWaitingForKey): Deleted.
* html/HTMLMediaElement.h:
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::waitingForKeyChanged):
(WebCore::MediaPlayer::waitingForKey const):
(WebCore::MediaPlayer::waitingForKey): Deleted.
* platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayerClient::mediaPlayerWaitingForKeyChanged):
(WebCore::MediaPlayerClient::mediaPlayerWaitingForKey): Deleted.
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::waitingForKey const):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
(WebCore::MediaPlayerPrivateAVFoundationObjC::attemptToDecryptWithInstance):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::attemptToDecryptWithInstance):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::waitingForKey const):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::waitingForKeyChanged):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::initializationDataEncountered):
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):
(WebCore::SourceBufferPrivateAVFObjC::attemptToDecrypt):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::reportWaitingForKey):
(WebCore::MediaPlayerPrivateGStreamerBase::setWaitingForKey):
(WebCore::MediaPlayerPrivateGStreamerBase::waitingForKey const):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
(webkitMediaCommonEncryptionDecryptSinkEventHandler):
2018-09-27 Alicia Boya García <aboya@igalia.com>
[MSE] Fix unwanted sample erase from the decode queue
https://bugs.webkit.org/show_bug.cgi?id=180643
Reviewed by Jer Noble.
Test: media/media-source/media-source-append-acb-no-frame-lost.html
This bug reproduced when unordered appends were made. For instance, if
the application appended [0, 10) and then [20, 30), the frame at 20
would be wrongly discarded from the decode queue.
Later the application could append [10, 20) and the gap at [20, 21)
would persist in the decode queue, even if the frame remained in the
track buffer table.
Thanks to Daniel Zhang for reporting the issue.
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::provideMediaData):
2018-09-27 Alex Christensen <achristensen@webkit.org>
URLParser should use TextEncoding through an abstract class
https://bugs.webkit.org/show_bug.cgi?id=190027
Reviewed by Andy Estes.
URLParser uses TextEncoding for one call to encode, which is only used for encoding the query of URLs in documents with non-UTF encodings.
There are 3 call sites that specify the TextEncoding to use from the Document, and even those call sites use a UTF encoding most of the time.
All other URL parsing is done using a well-optimized path which assumes UTF-8 encoding and uses macros from ICU headers, not a TextEncoding.
Moving the logic in this way breaks URL and URLParser's dependency on TextEncoding, which makes it possible to use in a lower-level project
without also moving TextEncoding, TextCodec, TextCodecICU, ThreadGlobalData, and the rest of WebCore and JavaScriptCore.
There is no observable change in behavior. There is now one virtual function call in a code path in URLParser that is not performance-sensitive,
and TextEncodings now have a vtable, which uses a few more bytes of memory total for WebKit.
* css/parser/CSSParserContext.h:
(WebCore::CSSParserContext::completeURL const):
* css/parser/CSSParserIdioms.cpp:
(WebCore::completeURL):
* dom/Document.cpp:
(WebCore::Document::completeURL const):
* html/HTMLBaseElement.cpp:
(WebCore::HTMLBaseElement::href const):
Move the call to encodingForFormSubmission from the URL constructor to the 3 call sites that specify the encoding from the Document.
* loader/FormSubmission.cpp:
(WebCore::FormSubmission::create):
* loader/TextResourceDecoder.cpp:
(WebCore::TextResourceDecoder::encodingForURLParsing):
* loader/TextResourceDecoder.h:
* platform/URL.cpp:
(WebCore::URL::URL):
* platform/URL.h:
(WebCore::URLTextEncoding::~URLTextEncoding):
* platform/URLParser.cpp:
(WebCore::URLParser::encodeNonUTF8Query):
(WebCore::URLParser::copyURLPartsUntil):
(WebCore::URLParser::URLParser):
(WebCore::URLParser::parse):
(WebCore::URLParser::encodeQuery): Deleted.
A pointer replaces the boolean isUTF8Encoding and the TextEncoding& which had a default value of UTF8Encoding.
Now the pointer being null means that we use UTF8, and the pointer being non-null means we use that encoding.
* platform/URLParser.h:
(WebCore::URLParser::URLParser):
* platform/text/TextEncoding.cpp:
(WebCore::UTF7Encoding):
(WebCore::TextEncoding::encodingForFormSubmissionOrURLParsing const):
(WebCore::ASCIIEncoding):
(WebCore::Latin1Encoding):
(WebCore::UTF16BigEndianEncoding):
(WebCore::UTF16LittleEndianEncoding):
(WebCore::UTF8Encoding):
(WebCore::WindowsLatin1Encoding):
(WebCore::TextEncoding::encodingForFormSubmission const): Deleted.
Use NeverDestroyed because TextEncoding now has a virtual destructor.
* platform/text/TextEncoding.h:
Rename encodingForFormSubmission to encodingForFormSubmissionOrURLParsing to make it more clear that we are intentionally using it for both.
2018-09-27 John Wilander <wilander@apple.com>
Resource Load Statistics: Remove temporary compatibility fix for auto-dismiss popups
https://bugs.webkit.org/show_bug.cgi?id=189980
<rdar://problem/44780645>
Reviewed by Alex Christensen.
Test: http/tests/storageAccess/deny-storage-access-under-opener-if-auto-dismiss.html
The change in https://bugs.webkit.org/show_bug.cgi?id=183620 was a temporary
compatibility fix as explained in:
https://webkit.org/blog/8311/intelligent-tracking-prevention-2-0/. We should
remove it.
Most of these changes remove the parameter isTriggeredByUserGesture since it's no longer needed.
* loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::setRequestStorageAccessUnderOpenerCallback):
(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
(WebCore::ResourceLoadObserver::requestStorageAccessUnderOpener):
(WebCore::ResourceLoadObserver::logWindowCreation): Deleted.
* loader/ResourceLoadObserver.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
Now no longer logs anything to ResourceLoadObserver.
2018-09-27 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r236557.
Really roll out r236557 this time because it breaks internal
builds.
Reverted changeset:
"Add VP8 support to WebRTC"
https://bugs.webkit.org/show_bug.cgi?id=189976
https://trac.webkit.org/changeset/236557
2018-09-27 Chris Dumez <cdumez@apple.com>
Fragment should be stripped from document URL during document.open() URL propagation
https://bugs.webkit.org/show_bug.cgi?id=189374
<rdar://problem/44282736>
Reviewed by Alex Christensen.
Strip the Document URL fragment during document.open() URL propagation if the entry document
is not the current document, as per:
- https://html.spec.whatwg.org/#document-open-steps (Step 11.2.)
No new tests, rebaselined existing test.
* dom/Document.cpp:
(WebCore::Document::open):
2018-09-27 Youenn Fablet <youenn@apple.com>
Add VP8 support to WebRTC
https://bugs.webkit.org/show_bug.cgi?id=189976
Reviewed by Eric Carlson.
Add a runtime flag to control activation of VP8 codec.
Bind this runtime flag to the video codec factories.
Test: webrtc/video-mute-vp8.html
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::createLibWebRTCPeerConnectionBackend):
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::webRTCVP8CodecEnabled const):
(WebCore::RuntimeEnabledFeatures::setWebRTCVP8CodecEnabled):
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
* platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:
(WebCore::LibWebRTCProviderCocoa::createDecoderFactory):
(WebCore::LibWebRTCProviderCocoa::createEncoderFactory):
* testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
Enable VP8 codec for tests.
2018-09-27 Chris Dumez <cdumez@apple.com>
Crash under WebCore::deleteCookiesForHostnames()
https://bugs.webkit.org/show_bug.cgi?id=190040
<rdar://problem/38020368>
Reviewed by Alex Christensen.
Update NetworkStorageSession::deleteCookiesForHostnames() to properly deal with the fact
that NSHTTPCookie.domain can return nil.
* platform/network/cocoa/NetworkStorageSessionCocoa.mm:
(WebCore::NetworkStorageSession::deleteCookiesForHostnames):
2018-09-27 Youenn Fablet <youenn@apple.com>
Use kCVPixelFormatType_420YpCbCr8Planar for capturing frames
https://bugs.webkit.org/show_bug.cgi?id=190014
Reviewed by Eric Carlson.
On Mac, rely on the monoplanar format which can be displayed without any issue.
Once rendering is fixed, we should change it back to biplanar as it is closer to what libwebrtc consumes.
Covered by manual testing.
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::avVideoCapturePixelBufferFormat):
(WebCore::AVVideoCaptureSource::setSizeAndFrameRateWithPreset):
(WebCore::AVVideoCaptureSource::setupCaptureSession):
(WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection):
2018-09-27 Andy Estes <aestes@apple.com>
[Apple Pay] Support granular errors in PaymentDetailsUpdate
https://bugs.webkit.org/show_bug.cgi?id=189938
Reviewed by Youenn Fablet.
Implemented the shippingAddressErrors, payerErrors, and paymentMethodErrors properties on
PaymentDetailsUpdate, as specified in the Payment Request API W3C Editor's Draft of
26 September 2018.
When these errors are specified in a PaymentDetailsUpdate, map them to PaymentErrors. For
shippingAddressErrors and payerErrors, we use the "shippingContactInvalid" code and a
contact field that matches the shippingAddressError or payerError property specified.
For paymentMethodErrors, we interpret this as a sequence of ApplePayErrors, which are
converted to PaymentErrors as in Apple Pay JS.
Tests: http/tests/ssl/applepay/ApplePayShippingAddressChangeEventErrors.https.html
http/tests/ssl/applepay/ApplePayShippingAddressChangeEventErrorsV3.https.html
* DerivedSources.make: Removed some tabs and added new .idl files.
* Modules/applepay/ApplePayError.idl: Moved ApplePayErrorCode and ApplePayErrorContactField
into their own .idl files so they can be used in MockPaymentError.
* Modules/applepay/ApplePayErrorCode.h: Added.
* Modules/applepay/ApplePayErrorCode.idl: Added.
* Modules/applepay/ApplePayErrorContactField.h: Added.
* Modules/applepay/ApplePayErrorContactField.idl: Added.
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
(WebCore::appendShippingContactInvalidError): Appended a "shippingContactInvalid"
PaymentError to errors if the message is non-null.
(WebCore::ApplePayPaymentHandler::computeErrors const):
(WebCore::ApplePayPaymentHandler::detailsUpdated):
(WebCore::ApplePayPaymentHandler::shippingAddressUpdated): Computed a vector of PaymentErrors
based on shippingAddressErrors, payerErrors, and paymentMethodErrors.
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
* Modules/paymentrequest/PaymentDetailsUpdate.h:
* Modules/paymentrequest/PaymentDetailsUpdate.idl: Defined shippingAddressErrors,
payerErrors, and paymentMethodErrors.
* Modules/paymentrequest/PaymentHandler.h:
* Modules/paymentrequest/PaymentRequest.cpp:
(WebCore::PaymentRequest::paymentMethodChanged):
(WebCore::PaymentRequest::settleDetailsPromise): Passed shippingAddressErrors, payerErrors,
and paymentMethodErrors to the payment handler.
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* testing/MockPaymentCoordinator.cpp:
(WebCore::MockPaymentCoordinator::completeShippingContactSelection): Stored errors in m_errors.
* testing/MockPaymentCoordinator.h:
* testing/MockPaymentCoordinator.idl: Added an errors attribute.
* testing/MockPaymentError.h: Added.
* testing/MockPaymentError.idl: Added.
2018-09-27 Alex Christensen <achristensen@webkit.org>
URLWithUserTypedString should return nil for URLs deemed to be invalid by WebCore::URL
https://bugs.webkit.org/show_bug.cgi?id=189979
Reviewed by Youenn Fablet.
* platform/mac/WebCoreNSURLExtras.mm:
(WebCore::URLWithUserTypedString):
(WebCore::dataForURLComponentType):
(WebCore::URLByRemovingComponentAndSubsequentCharacter):
(WebCore::URLByCanonicalizingURL):
(WebCore::originalURLData):
(WebCore::userVisibleString):
2018-09-27 Chris Dumez <cdumez@apple.com>
document.open() should not propagate URLs to non-fully active documents
https://bugs.webkit.org/show_bug.cgi?id=189375
<rdar://problem/44282755>
Reviewed by Youenn Fablet.
Update our document.open() to not propagate URLs to non-fully active documents, as per:
- https://html.spec.whatwg.org/#document-open-steps (Step 11)
A "fully active" document is defined by at:
- https://html.spec.whatwg.org/#fully-active
No new tests, rebaselined existing test.
* dom/Document.cpp:
(WebCore::Document::open):
(WebCore::Document::isFullyActive const):
* dom/Document.h:
* dom/Document.idl:
2018-09-27 Alicia Boya García <aboya@igalia.com>
[MSE][GStreamer] Use sentinel buffer to detect end of append
https://bugs.webkit.org/show_bug.cgi?id=189924
Reviewed by Philippe Normand.
This patch introduces a new mechanism to detect when an append has
been consumed completely by the demuxer. It takes advantage of the
fact that buffer pushing is synchronous: both the appsrc and the
demuxer live in the same streaming thread. When appsrc pushes a
buffer, it's actually making a qtdemux function call (it calls its
"chain" function). The demuxer will return from that call when it has
finished processing that buffer; only then the control returns to
appsrc, that can push the next buffer.
By pushing an additional buffer and capturing it in a probe we can
detect reliably when the previous buffer has been processed.
Because the pipeline only has one thread, at this point no more frames
can arrive to the appsink.
This replaces the old method of detecting end of append which relied
on the `need-data` event, which is more difficult to handle correctly
because it fires whenever the appsrc is empty (or below a given
level), which also happens when a buffer has not been pushed yet or
in response to a flush.
* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::EndOfAppendMeta::init):
(WebCore::EndOfAppendMeta::transform):
(WebCore::EndOfAppendMeta::free):
(WebCore::AppendPipeline::staticInitialization):
(WebCore::AppendPipeline::AppendPipeline):
(WebCore::AppendPipeline::~AppendPipeline):
(WebCore::AppendPipeline::appsrcEndOfAppendCheckerProbe):
(WebCore::AppendPipeline::handleApplicationMessage):
(WebCore::AppendPipeline::handleEndOfAppend):
(WebCore::AppendPipeline::consumeAppsinkAvailableSamples):
(WebCore::AppendPipeline::resetPipeline):
(WebCore::AppendPipeline::pushNewBuffer):
(WebCore::AppendPipeline::handleAppsrcNeedDataReceived): Deleted.:
(WebCore::AppendPipeline::handleAppsrcAtLeastABufferLeft): Deleted.
(WebCore::AppendPipeline::checkEndOfAppend): Deleted.
(WebCore::AppendPipeline::setAppsrcDataLeavingProbe): Deleted.
(WebCore::AppendPipeline::removeAppsrcDataLeavingProbe): Deleted.
(WebCore::AppendPipeline::reportAppsrcAtLeastABufferLeft): Deleted.
(WebCore::AppendPipeline::reportAppsrcNeedDataReceived): Deleted.
(WebCore::appendPipelineAppsrcDataLeaving): Deleted.
(WebCore::appendPipelineAppsrcNeedData): Deleted.
* platform/graphics/gstreamer/mse/AppendPipeline.h:
2018-09-27 Chris Dumez <cdumez@apple.com>
The WebContent process should not process incoming IPC while waiting for a sync IPC reply
https://bugs.webkit.org/show_bug.cgi?id=184183
<rdar://problem/36800576>
Reviewed by Ryosuke Niwa.
Drop test infrastructure for the DoNotProcessIncomingMessagesWhenWaitingForSyncReply IPC::SendOption
given that this SendOption was removed from this patch.
* page/ChromeClient.h:
* testing/Internals.cpp:
* testing/Internals.h:
* testing/Internals.idl:
2018-09-27 Philippe Normand <pnormand@igalia.com>
Unreviewed, GTK Ubuntu LTS build fix attempt after r236396.
* platform/graphics/gstreamer/GStreamerCommon.h:
2018-09-27 Antoine Quint <graouts@apple.com>
[Web Animations] Turn Web Animations with CSS integration on
https://bugs.webkit.org/show_bug.cgi?id=184819
<rdar://problem/39597337>
Reviewed by Dean Jackson.
* page/RuntimeEnabledFeatures.h:
2018-09-26 YUHAN WU <yuhan_wu@apple.com>
Video track clone cannot preserve original property
https://bugs.webkit.org/show_bug.cgi?id=189872
<rdar://problem/44706579>
Reviewed by Youenn Fablet.
Fix the issue that the cloned track created by canvas.captureStream().getVideoTracks() cannot keep some attributes, such as enabled.
Updated a testcase expected result:
LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint.html
* Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
(WebCore::CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack):
(WebCore::CanvasCaptureMediaStreamTrack::create):
(WebCore::CanvasCaptureMediaStreamTrack::clone):
* Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
* Modules/mediastream/MediaStreamTrack.h:
2018-09-26 Alex Christensen <achristensen@webkit.org>
Unreviewed, rolling out r236524.
Broke API tests
Reverted changeset:
"URLWithUserTypedString should return nil for URLs deemed to
be invalid by WebCore::URL"
https://bugs.webkit.org/show_bug.cgi?id=189979
https://trac.webkit.org/changeset/236524
2018-09-26 Per Arne Vollan <pvollan@apple.com>
WebVTT cue alignment broken
https://bugs.webkit.org/show_bug.cgi?id=190004
Reviewed by Eric Carlson.
If the position of the queue is unspecified, the default value of 50 was used, which is incorrect.
This patch also updates the API according to https://w3c.github.io/webvtt/#the-vttcue-interface.
The position attribute should not be a double, but either a double or the "auto" keyword. Parts
of this patch is inspired by the associated code in the Chromium project.
Test: media/track/track-cue-left-align.html
* html/track/TextTrackCueGeneric.cpp:
(WebCore::TextTrackCueGenericBoxElement::applyCSSProperties):
(WebCore::TextTrackCueGeneric::setPosition):
* html/track/TextTrackCueGeneric.h:
* html/track/VTTCue.cpp:
(WebCore::VTTCueBox::applyCSSProperties):
(WebCore::VTTCue::initialize):
(WebCore::VTTCue::position const):
(WebCore::VTTCue::setPosition):
(WebCore::VTTCue::textPositionIsAuto const):
(WebCore::VTTCue::calculateComputedTextPosition const):
(WebCore::VTTCue::calculateDisplayParameters):
(WebCore::VTTCue::toJSON const):
* html/track/VTTCue.h:
(WebCore::VTTCue::position const): Deleted.
* html/track/VTTCue.idl:
2018-09-26 James Savage <james.savage@apple.com>
Allow override of viewport configuration.
https://bugs.webkit.org/show_bug.cgi?id=188772.
<rdar://problem/43538892>.
Reviewed by Simon Fraser.
* page/Settings.yaml:
* page/ViewportConfiguration.cpp:
(WebCore::ViewportConfiguration::nativeWebpageParameters): Provide a viewport configuration
similar to width=device-width, with initial scale set to 1.
* page/ViewportConfiguration.h:
2018-09-26 Alex Christensen <achristensen@webkit.org>
URLs with mismatched surrogate pairs in the host should fail to parse
https://bugs.webkit.org/show_bug.cgi?id=190005
Reviewed by Chris Dumez.
Elsewhere in the URLParser, when we encounter mismatched surrogate pairs we use the replacement character,
but that just fails later on in domainToASCII, so we may as well just fail.
This behavior matches Chrome, but is unclear in the spec. There are no valid uses of hosts containing mismatched surrogate pairs.
Covered by new API tests.
* platform/URLParser.cpp:
(WebCore::URLParser::parseHostAndPort):
2018-09-26 Alex Christensen <achristensen@webkit.org>
uidna_nameToASCII only needs a buffer capacity of 64
https://bugs.webkit.org/show_bug.cgi?id=190006
Reviewed by Chris Dumez.
This is specified in https://www.unicode.org/reports/tr46/#ToASCII
This is how Chrome and Firefox also behave with long unicode hosts.
* platform/URLParser.cpp:
(WebCore::URLParser::domainToASCII):
2018-09-26 Alex Christensen <achristensen@webkit.org>
URLWithUserTypedString should return nil for URLs deemed to be invalid by WebCore::URL
https://bugs.webkit.org/show_bug.cgi?id=189979
<rdar://problem/44119696>
Reviewed by Chris Dumez.
Covered by an API test.
* platform/mac/WebCoreNSURLExtras.mm:
(WebCore::URLWithData):
2018-09-26 Ryosuke Niwa <rniwa@webkit.org>
Selection should work across shadow boundary when initiated by a mouse drag
https://bugs.webkit.org/show_bug.cgi?id=151380
<rdar://problem/24363872>
Revert the change that I said I would from r236519.
* editing/VisibleSelection.cpp:
(WebCore::VisibleSelection::adjustSelectionToAvoidCrossingShadowBoundaries):
2018-09-26 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r236511.
https://bugs.webkit.org/show_bug.cgi?id=190008
It is breaking some WebRTC tests (Requested by youenn on
#webkit).
Reverted changeset:
"[MediaStream] Clean up RealtimeMediaSource settings change
handling"
https://bugs.webkit.org/show_bug.cgi?id=189998
https://trac.webkit.org/changeset/236511
2018-09-26 Ryosuke Niwa <rniwa@webkit.org>
Selection should work across shadow boundary when initiated by a mouse drag
https://bugs.webkit.org/show_bug.cgi?id=151380
<rdar://problem/24363872>
Reviewed by Antti Koivisto and Wenson Hsieh.
This patch adds the basic support for selecting content across shadow DOM boundaries to VisibleSelection,
which is enough to allow users to select content across shadow DOM boundaries via a mouse drag.
This is the first step in allowing users to select, copy and paste content across shadow DOM boundaries,
which is a serious user experience regression right now. The new behavior is disabled by default under
an interal debug feature flag: selectionAcrossShadowBoundariesEnabled.
Like Chrome, we are not going to support selecting editable content across shadow DOM boundaries since
we'd have to generalize every editing commands to make that work, and there aren't any HTML editors that
use shadow DOM boundaries within an editable region yet. For simplicity, we also don't support extending
a selection out of a shadow root which resides inside an editing region.
The keyboard based navigation & manipulation of selection as well as allowing copy & paste of content
across shadow DOM boundaries will be implemented by separate patches. DOMSelection will not expose this new
behavior either. This is tracked in the spec as https://github.com/w3c/webcomponents/issues/79
Tests: editing/selection/selection-across-shadow-boundaries-mixed-editability-1.html
editing/selection/selection-across-shadow-boundaries-mixed-editability-2.html
editing/selection/selection-across-shadow-boundaries-mixed-editability-3.html
editing/selection/selection-across-shadow-boundaries-mixed-editability-4.html
editing/selection/selection-across-shadow-boundaries-mixed-editability-5.html
editing/selection/selection-across-shadow-boundaries-readonly-1.html
editing/selection/selection-across-shadow-boundaries-readonly-2.html
editing/selection/selection-across-shadow-boundaries-readonly-3.html
editing/selection/selection-across-shadow-boundaries-user-select-all-1.html
* editing/VisibleSelection.cpp:
(WebCore::isInUserAgentShadowRootOrHasEditableShadowAncestor): Added.
(WebCore::VisibleSelection::adjustSelectionToAvoidCrossingShadowBoundaries): When the feature is enabled,
allow crossing shadow DOM boundaries except when either end is inside an user agent shadow root, or one of
its shadow includign ancestor is inside an editable region. The latter check is needed to disallow
an extension of a selection starting in a shadow tree inside a non-editable region inside an editable region
to outside the editable region. The rest of the editing code is not ready to deal with selection like that.
* page/Settings.yaml: Added an internal debug feature to enable this new behavior.
2018-09-26 Chris Dumez <cdumez@apple.com>
Ignore-opens-during-unload counter of a parent should apply to its children during beforeunload event
https://bugs.webkit.org/show_bug.cgi?id=189376
<rdar://problem/44282754>
Reviewed by Ryosuke Niwa.
Make sure the Ignore-opens-during-unload counter of a parent stays incremented while we are firing the
beforeunload event for its descendants, as per:
- https://html.spec.whatwg.org/multipage/browsing-the-web.html#prompt-to-unload-a-document
No new tests, rebaselined existing tests.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::shouldClose):
(WebCore::FrameLoader::dispatchBeforeUnloadEvent):
2018-09-26 Justin Fan <justin_fan@apple.com>
WebGL 2: Adding logging to in-progress features
https://bugs.webkit.org/show_bug.cgi?id=189978
Reviewed by Jon Lee.
Logging will allow us to better identify the most in-demand WebGL 2 features and prioritize our efforts.
No tests as no change in WebGL functionality.
* html/canvas/WebGL2RenderingContext.cpp: Added logging statement to every function not yet implemented.
(WebCore::WebGL2RenderingContext::blitFramebuffer):
(WebCore::WebGL2RenderingContext::framebufferTextureLayer):
(WebCore::WebGL2RenderingContext::invalidateFramebuffer):
(WebCore::WebGL2RenderingContext::invalidateSubFramebuffer):
(WebCore::WebGL2RenderingContext::readBuffer):
(WebCore::WebGL2RenderingContext::texStorage3D):
(WebCore::WebGL2RenderingContext::texImage2D):
(WebCore::WebGL2RenderingContext::texImage3D):
(WebCore::WebGL2RenderingContext::texSubImage2D):
(WebCore::WebGL2RenderingContext::texSubImage3D):
(WebCore::WebGL2RenderingContext::copyTexSubImage3D):
(WebCore::WebGL2RenderingContext::compressedTexImage2D):
(WebCore::WebGL2RenderingContext::compressedTexImage3D):
(WebCore::WebGL2RenderingContext::compressedTexSubImage3D):
(WebCore::WebGL2RenderingContext::getFragDataLocation):
(WebCore::WebGL2RenderingContext::uniform1ui):
(WebCore::WebGL2RenderingContext::uniform2ui):
(WebCore::WebGL2RenderingContext::uniform3ui):
(WebCore::WebGL2RenderingContext::uniform4ui):
(WebCore::WebGL2RenderingContext::uniform1uiv):
(WebCore::WebGL2RenderingContext::uniform2uiv):
(WebCore::WebGL2RenderingContext::uniform3uiv):
(WebCore::WebGL2RenderingContext::uniform4uiv):
(WebCore::WebGL2RenderingContext::uniformMatrix2x3fv):
(WebCore::WebGL2RenderingContext::uniformMatrix3x2fv):
(WebCore::WebGL2RenderingContext::uniformMatrix2x4fv):
(WebCore::WebGL2RenderingContext::uniformMatrix4x2fv):
(WebCore::WebGL2RenderingContext::uniformMatrix3x4fv):
(WebCore::WebGL2RenderingContext::uniformMatrix4x3fv):
(WebCore::WebGL2RenderingContext::vertexAttribI4i):
(WebCore::WebGL2RenderingContext::vertexAttribI4iv):
(WebCore::WebGL2RenderingContext::vertexAttribI4ui):
(WebCore::WebGL2RenderingContext::vertexAttribI4uiv):
(WebCore::WebGL2RenderingContext::vertexAttribIPointer):
(WebCore::WebGL2RenderingContext::drawRangeElements):
(WebCore::WebGL2RenderingContext::createQuery):
(WebCore::WebGL2RenderingContext::deleteQuery):
(WebCore::WebGL2RenderingContext::isQuery):
(WebCore::WebGL2RenderingContext::beginQuery):
(WebCore::WebGL2RenderingContext::endQuery):
(WebCore::WebGL2RenderingContext::getQuery):
(WebCore::WebGL2RenderingContext::getQueryParameter):
(WebCore::WebGL2RenderingContext::createSampler):
(WebCore::WebGL2RenderingContext::deleteSampler):
(WebCore::WebGL2RenderingContext::isSampler):
(WebCore::WebGL2RenderingContext::bindSampler):
(WebCore::WebGL2RenderingContext::samplerParameteri):
(WebCore::WebGL2RenderingContext::samplerParameterf):
(WebCore::WebGL2RenderingContext::getSamplerParameter):
(WebCore::WebGL2RenderingContext::fenceSync):
(WebCore::WebGL2RenderingContext::isSync):
(WebCore::WebGL2RenderingContext::deleteSync):
(WebCore::WebGL2RenderingContext::clientWaitSync):
(WebCore::WebGL2RenderingContext::waitSync):
(WebCore::WebGL2RenderingContext::getSyncParameter):
(WebCore::WebGL2RenderingContext::createTransformFeedback):
(WebCore::WebGL2RenderingContext::deleteTransformFeedback):
(WebCore::WebGL2RenderingContext::isTransformFeedback):
(WebCore::WebGL2RenderingContext::bindTransformFeedback):
(WebCore::WebGL2RenderingContext::beginTransformFeedback):
(WebCore::WebGL2RenderingContext::endTransformFeedback):
(WebCore::WebGL2RenderingContext::transformFeedbackVaryings):
(WebCore::WebGL2RenderingContext::getTransformFeedbackVarying):
(WebCore::WebGL2RenderingContext::pauseTransformFeedback):
(WebCore::WebGL2RenderingContext::resumeTransformFeedback):
(WebCore::WebGL2RenderingContext::bindBufferBase):
(WebCore::WebGL2RenderingContext::bindBufferRange):
(WebCore::WebGL2RenderingContext::getUniformIndices):
(WebCore::WebGL2RenderingContext::getUniformBlockIndex):
(WebCore::WebGL2RenderingContext::getActiveUniformBlockParameter):
(WebCore::WebGL2RenderingContext::getActiveUniformBlockName):
(WebCore::WebGL2RenderingContext::uniformBlockBinding):
2018-09-26 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Clean up RealtimeMediaSource settings change handling
https://bugs.webkit.org/show_bug.cgi?id=189998
<rdar://problem/44797884>
Reviewed by Youenn Fablet.
No new tests, no change in functionality.
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::notifySettingsDidChangeObservers):
(WebCore::RealtimeMediaSource::setSize):
(WebCore::RealtimeMediaSource::setFrameRate):
(WebCore::RealtimeMediaSource::setAspectRatio):
(WebCore::RealtimeMediaSource::setFacingMode):
(WebCore::RealtimeMediaSource::setVolume):
(WebCore::RealtimeMediaSource::setSampleRate):
(WebCore::RealtimeMediaSource::setSampleSize):
(WebCore::RealtimeMediaSource::setEchoCancellation):
(WebCore::RealtimeMediaSource::settingsDidChange): Deleted.
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::settingsDidChange):
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioCaptureSource::settingsDidChange):
* platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
(WebCore::DisplayCaptureSourceCocoa::settingsDidChange):
* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::settingsDidChange):
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::settingsDidChange):
2018-09-26 Antoine Quint <graouts@apple.com>
[Web Animations] Ensure renderers with accelerated animations have layers
https://bugs.webkit.org/show_bug.cgi?id=189990
<rdar://problem/44791222>
Reviewed by Zalan Bujtas.
We have done some work already in webkit.org/b/189784 to prevent never-ending calls to DocumentTimeline::updateAnimations(). This was due to
the change made for webkit.org/b/186930 where we queued calls to updateAnimations() in KeyframeEffectReadOnly::applyPendingAcceleratedActions()
while we were waiting for a renderer with a layer backing for a given animation target. Instead of doing this, we now ensure renderers always
have a layer when they have an accelerated animation applied.
No new tests, this is already covered by webanimations/accelerated-animation-with-delay.html and webanimations/opacity-animation-yields-compositing-span.html
which respectively check that we can apply an accelerated animation to a non-positioned block and an inline element.
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::runningAnimationsForElementAreAllAccelerated const): This method should have been marked const all along and it is
now required so it can be called through RenderBox::requiresLayer() and RenderInline::requiresLayer().
(WebCore::DocumentTimeline::runningAnimationsForElementAreAllAccelerated): Deleted.
* animation/DocumentTimeline.h:
* animation/KeyframeEffectReadOnly.cpp:
(WebCore::KeyframeEffectReadOnly::applyPendingAcceleratedActions): Stop enqueuing the accelerated actions in case we're lacking a composited renderer
since this situation should no longer arise.
* rendering/RenderBox.h: Make requiresLayer() return true if this renderer's element is the target of accelerated animations.
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::hasRunningAcceleratedAnimations const): Query the document timeline, if it exists, to check that this renderer's element
has accelerated animations applied.
* rendering/RenderBoxModelObject.h:
* rendering/RenderInline.h: Make requiresLayer() return true if this renderer's element is the target of accelerated animations.
2018-09-25 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Add Mac window capture source
https://bugs.webkit.org/show_bug.cgi?id=189958
<rdar://problem/44767616>
Reviewed by Youenn Fablet.
* SourcesCocoa.txt: Add WindowDisplayCaptureSourceMac.
* WebCore.xcodeproj/project.pbxproj: Ditto.
* platform/mediastream/mac/DisplayCaptureManagerCocoa.cpp:
(WebCore::DisplayCaptureManagerCocoa::captureDevices): Include window "devices".
(WebCore::DisplayCaptureManagerCocoa::updateWindowCaptureDevices): New.
(WebCore::DisplayCaptureManagerCocoa::windowCaptureDeviceWithPersistentID): New.
(WebCore::DisplayCaptureManagerCocoa::captureDeviceWithPersistentID): Include window devices.
* platform/mediastream/mac/DisplayCaptureManagerCocoa.h:
* platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
(WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa):
(WebCore::DisplayCaptureSourceCocoa::settings): Use frameSize, report surface type and
logical surface.
(WebCore::DisplayCaptureSourceCocoa::settingsDidChange): Clear m_lastSampleBuffer when size changes.
(WebCore::DisplayCaptureSourceCocoa::frameSize const): New, return size() or intrinsic size.
(WebCore::DisplayCaptureSourceCocoa::setIntrinsicSize): New.
(WebCore::DisplayCaptureSourceCocoa::emitFrame): generateFrame now returns a CVPixelBuffer
so derived classes don't have to deal with resizing/transforming.
* platform/mediastream/mac/DisplayCaptureSourceCocoa.h:
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h:
* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
(WebCore::ScreenDisplayCaptureSourceMac::ScreenDisplayCaptureSourceMac): Add fixme.
(WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream): Update intrinsic size when
width/height changes.
(WebCore::ScreenDisplayCaptureSourceMac::generateFrame): Return a CVPixelBuffer.
* platform/mediastream/mac/WindowDisplayCaptureSourceMac.h: Added.
* platform/mediastream/mac/WindowDisplayCaptureSourceMac.mm: Added.
(WebCore::anyOfCGWindow):
(WebCore::windowDescription):
(WebCore::WindowDisplayCaptureSourceMac::create):
(WebCore::WindowDisplayCaptureSourceMac::WindowDisplayCaptureSourceMac):
(WebCore::WindowDisplayCaptureSourceMac::windowImage):
(WebCore::WindowDisplayCaptureSourceMac::generateFrame):
(WebCore::WindowDisplayCaptureSourceMac::pixelBufferFromCGImage):
(WebCore::WindowDisplayCaptureSourceMac::windowCaptureDeviceWithPersistentID):
(WebCore::WindowDisplayCaptureSourceMac::windowCaptureDevices):
2018-09-25 Justin Fan <justin_fan@apple.com>
WebGL 2 Conformance: primitive restart and draw_primitive_restart WebGL2 sample
https://bugs.webkit.org/show_bug.cgi?id=189625
<rdar://problem/42882620>
Reviewed by Dean Jackson.
Ref test: webgl/webgl2-primitive-restart.html.
Implement support for Primitive Restart Fixed Index as expected
by the WebGL 2 specifications.
* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::validateIndexArrayConservative):
* html/canvas/WebGLRenderingContextBase.h:
(WebCore::WebGLRenderingContextBase::getLastIndex): Template that must be defined in header.
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::validateIndexArrayPrecise):
* platform/graphics/GraphicsContext3D.h:
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::GraphicsContext3D::GraphicsContext3D):
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::primitiveRestartIndex):
2018-09-25 John Wilander <wilander@apple.com>
Change from HAVE(CFNETWORK_STORAGE_PARTITIONING) to ENABLE(RESOURCE_LOAD_STATISTICS)
https://bugs.webkit.org/show_bug.cgi?id=189959
<rdar://problem/44767642>
Reviewed by Chris Dumez.
No new tests because of no code change.
We no longer make use of CFNetwork's cookie partitioning so we should
change the compile-time flag to something that makes sense. This should
also make it easier/cleaner for other ports.
* dom/Document.cpp:
(WebCore::Document::hasStorageAccess):
(WebCore::Document::requestStorageAccess):
(WebCore::Document::setHasRequestedPageSpecificStorageAccessWithUserInteraction):
* dom/Document.h:
* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoaderClient.h:
* loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
(WebCore::ResourceLoadObserver::logWindowCreation):
* loader/ResourceLoadObserver.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
* platform/network/NetworkStorageSession.h:
* platform/network/cf/NetworkStorageSessionCFNet.cpp:
* platform/network/cocoa/NetworkStorageSessionCocoa.mm:
(WebCore::cookiesForURL):
(WebCore::NetworkStorageSession::setCookiesFromDOM const):
2018-09-25 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthN] Make AuthenticatorManager
https://bugs.webkit.org/show_bug.cgi?id=189279
<rdar://problem/44116792>
Reviewed by Chris Dumez.
This patch does the following things in WebCore in order to support AuthenticatorManager:
1) It separates AuthenticatorTransport from PublicKeyCredentialDescriptor such that the enum
can be queried from WebKit directly.
2) It adds AuthenticatorAttachment to PublicKeyCredentialCreationOptions such that relying parties
could express their interests in cross platform authenticators.
3) It enhances IPC encoder/decoder of a few such that Vectors and empty objects can be correctly coded.
4) It moves the LocalAuthenticator implementation to WebKit to better integrate with AuthenticatorManager.
5) It moves linking to LocalAuthentication.framework to WebKit as well.
6) It temporarily bans old mock test mechanism in Internals so we could enable the new mock test mechanism in
WebKitTestRunner which we will have a better coverage of codes in UI Process. Those tests will be either
removed or ported to the new mechanism in Bug 189283.
7) It also removes "using namespace WebCore" from the top namespace in some .mm files as they are reordered
to where they could introduce name confusions.
Tests: http/wpt/webauthn/public-key-credential-create-failure-local.https.html
http/wpt/webauthn/public-key-credential-create-success-local.https.html
http/wpt/webauthn/public-key-credential-get-failure-local.https.html
http/wpt/webauthn/public-key-credential-get-success-local.https.html
http/wpt/webauthn/public-key-credential-is-user-verifying-platform-authenticator-available.html
* CMakeLists.txt:
* Configurations/WebCore.xcconfig:
* DerivedSources.make:
* Modules/webauthn/AuthenticatorTransport.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
* Modules/webauthn/AuthenticatorTransport.idl: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredentialDescriptor.idl.
* Modules/webauthn/PublicKeyCredentialCreationOptions.h:
(WebCore::PublicKeyCredentialCreationOptions::encode const):
(WebCore::PublicKeyCredentialCreationOptions::decode):
* Modules/webauthn/PublicKeyCredentialCreationOptions.idl:
* Modules/webauthn/PublicKeyCredentialData.h:
(WebCore::PublicKeyCredentialData::encode const):
(WebCore::PublicKeyCredentialData::decode):
* Modules/webauthn/PublicKeyCredentialDescriptor.h:
(WebCore::PublicKeyCredentialDescriptor::encode const):
* Modules/webauthn/PublicKeyCredentialDescriptor.idl:
* Modules/webauthn/cocoa/LocalAuthenticator.mm: Removed.
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/ExceptionData.h:
* platform/cocoa/LocalAuthenticationSoftLink.mm: Removed.
* platform/cocoa/SharedBufferCocoa.mm:
(-[WebCoreSharedBufferData initWithSharedBufferDataSegment:]):
* platform/cocoa/VideoFullscreenModelVideoElement.mm:
(VideoFullscreenModelVideoElement::VideoFullscreenModelVideoElement): Deleted.
(VideoFullscreenModelVideoElement::~VideoFullscreenModelVideoElement): Deleted.
(VideoFullscreenModelVideoElement::setVideoElement): Deleted.
(VideoFullscreenModelVideoElement::handleEvent): Deleted.
(VideoFullscreenModelVideoElement::updateForEventName): Deleted.
(VideoFullscreenModelVideoElement::willExitFullscreen): Deleted.
(VideoFullscreenModelVideoElement::setVideoFullscreenLayer): Deleted.
(VideoFullscreenModelVideoElement::waitForPreparedForInlineThen): Deleted.
(VideoFullscreenModelVideoElement::requestFullscreenMode): Deleted.
(VideoFullscreenModelVideoElement::setVideoLayerFrame): Deleted.
(VideoFullscreenModelVideoElement::setVideoLayerGravity): Deleted.
(VideoFullscreenModelVideoElement::observedEventNames): Deleted.
(VideoFullscreenModelVideoElement::eventNameAll): Deleted.
(VideoFullscreenModelVideoElement::fullscreenModeChanged): Deleted.
(VideoFullscreenModelVideoElement::addClient): Deleted.
(VideoFullscreenModelVideoElement::removeClient): Deleted.
(VideoFullscreenModelVideoElement::isVisible const): Deleted.
(VideoFullscreenModelVideoElement::setHasVideo): Deleted.
(VideoFullscreenModelVideoElement::setVideoDimensions): Deleted.
(VideoFullscreenModelVideoElement::willEnterPictureInPicture): Deleted.
(VideoFullscreenModelVideoElement::didEnterPictureInPicture): Deleted.
(VideoFullscreenModelVideoElement::failedToEnterPictureInPicture): Deleted.
(VideoFullscreenModelVideoElement::willExitPictureInPicture): Deleted.
(VideoFullscreenModelVideoElement::didExitPictureInPicture): Deleted.
* platform/graphics/ca/cocoa/PlatformCAAnimationCocoa.mm:
(WebCore::hasExplicitBeginTime):
(WebCore::setHasExplicitBeginTime):
(WebCore::toCAFillModeType):
(WebCore::toCAValueFunctionType):
(WebCore::toCAMediaTimingFunction):
(WebCore::PlatformCAAnimationCocoa::setFromValue):
(WebCore::PlatformCAAnimationCocoa::setToValue):
(WebCore::PlatformCAAnimationCocoa::setValues):
(fromCAFillModeType): Deleted.
(fromCAValueFunctionType): Deleted.
(PlatformCAAnimationCocoa::create): Deleted.
(PlatformCAAnimationCocoa::PlatformCAAnimationCocoa): Deleted.
(PlatformCAAnimationCocoa::~PlatformCAAnimationCocoa): Deleted.
(PlatformCAAnimationCocoa::copy const): Deleted.
(PlatformCAAnimationCocoa::platformAnimation const): Deleted.
(PlatformCAAnimationCocoa::keyPath const): Deleted.
(PlatformCAAnimationCocoa::beginTime const): Deleted.
(PlatformCAAnimationCocoa::setBeginTime): Deleted.
(PlatformCAAnimationCocoa::duration const): Deleted.
(PlatformCAAnimationCocoa::setDuration): Deleted.
(PlatformCAAnimationCocoa::speed const): Deleted.
(PlatformCAAnimationCocoa::setSpeed): Deleted.
(PlatformCAAnimationCocoa::timeOffset const): Deleted.
(PlatformCAAnimationCocoa::setTimeOffset): Deleted.
(PlatformCAAnimationCocoa::repeatCount const): Deleted.
(PlatformCAAnimationCocoa::setRepeatCount): Deleted.
(PlatformCAAnimationCocoa::autoreverses const): Deleted.
(PlatformCAAnimationCocoa::setAutoreverses): Deleted.
(PlatformCAAnimationCocoa::fillMode const): Deleted.
(PlatformCAAnimationCocoa::setFillMode): Deleted.
(PlatformCAAnimationCocoa::setTimingFunction): Deleted.
(PlatformCAAnimationCocoa::copyTimingFunctionFrom): Deleted.
(PlatformCAAnimationCocoa::isRemovedOnCompletion const): Deleted.
(PlatformCAAnimationCocoa::setRemovedOnCompletion): Deleted.
(PlatformCAAnimationCocoa::isAdditive const): Deleted.
(PlatformCAAnimationCocoa::setAdditive): Deleted.
(PlatformCAAnimationCocoa::valueFunction const): Deleted.
(PlatformCAAnimationCocoa::setValueFunction): Deleted.
(PlatformCAAnimationCocoa::setFromValue): Deleted.
(PlatformCAAnimationCocoa::copyFromValueFrom): Deleted.
(PlatformCAAnimationCocoa::setToValue): Deleted.
(PlatformCAAnimationCocoa::copyToValueFrom): Deleted.
(PlatformCAAnimationCocoa::setValues): Deleted.
(PlatformCAAnimationCocoa::copyValuesFrom): Deleted.
(PlatformCAAnimationCocoa::setKeyTimes): Deleted.
(PlatformCAAnimationCocoa::copyKeyTimesFrom): Deleted.
(PlatformCAAnimationCocoa::setTimingFunctions): Deleted.
(PlatformCAAnimationCocoa::copyTimingFunctionsFrom): Deleted.
* platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm:
(PlatformCAFilters::filterValueForOperation): Deleted.
(PlatformCAFilters::colorMatrixValueForFilter): Deleted.
(PlatformCAFilters::setBlendingFiltersOnLayer): Deleted.
(PlatformCAFilters::numAnimatedFilterProperties): Deleted.
(PlatformCAFilters::animatedFilterPropertyName): Deleted.
* platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(-[WebAnimationDelegate animationDidStart:]):
(-[WebAnimationDelegate animationDidStop:finished:]):
(-[WebAnimationDelegate setOwner:]):
(PlatformCALayerCocoa::create): Deleted.
(PlatformCALayer::platformCALayer): Deleted.
(mediaTimeToCurrentTime): Deleted.
(PlatformCALayerCocoa::setOwner): Deleted.
(toCAFilterType): Deleted.
(PlatformCALayerCocoa::layerTypeForPlatformLayer): Deleted.
(PlatformCALayerCocoa::PlatformCALayerCocoa): Deleted.
(PlatformCALayerCocoa::commonInit): Deleted.
(PlatformCALayerCocoa::clone const): Deleted.
(PlatformCALayerCocoa::~PlatformCALayerCocoa): Deleted.
(PlatformCALayerCocoa::animationStarted): Deleted.
(PlatformCALayerCocoa::animationEnded): Deleted.
(PlatformCALayerCocoa::setNeedsDisplay): Deleted.
(PlatformCALayerCocoa::setNeedsDisplayInRect): Deleted.
(PlatformCALayerCocoa::copyContentsFromLayer): Deleted.
(PlatformCALayerCocoa::superlayer const): Deleted.
(PlatformCALayerCocoa::removeFromSuperlayer): Deleted.
(PlatformCALayerCocoa::setSublayers): Deleted.
(PlatformCALayerCocoa::removeAllSublayers): Deleted.
(PlatformCALayerCocoa::appendSublayer): Deleted.
(PlatformCALayerCocoa::insertSublayer): Deleted.
(PlatformCALayerCocoa::replaceSublayer): Deleted.
(PlatformCALayerCocoa::adoptSublayers): Deleted.
(PlatformCALayerCocoa::addAnimationForKey): Deleted.
(PlatformCALayerCocoa::removeAnimationForKey): Deleted.
(PlatformCALayerCocoa::animationForKey): Deleted.
(PlatformCALayerCocoa::setMask): Deleted.
(PlatformCALayerCocoa::isOpaque const): Deleted.
(PlatformCALayerCocoa::setOpaque): Deleted.
(PlatformCALayerCocoa::bounds const): Deleted.
(PlatformCALayerCocoa::setBounds): Deleted.
(PlatformCALayerCocoa::position const): Deleted.
(PlatformCALayerCocoa::setPosition): Deleted.
(PlatformCALayerCocoa::anchorPoint const): Deleted.
(PlatformCALayerCocoa::setAnchorPoint): Deleted.
(PlatformCALayerCocoa::transform const): Deleted.
(PlatformCALayerCocoa::setTransform): Deleted.
(PlatformCALayerCocoa::sublayerTransform const): Deleted.
(PlatformCALayerCocoa::setSublayerTransform): Deleted.
(PlatformCALayerCocoa::isHidden const): Deleted.
(PlatformCALayerCocoa::setHidden): Deleted.
(PlatformCALayerCocoa::contentsHidden const): Deleted.
(PlatformCALayerCocoa::setContentsHidden): Deleted.
(PlatformCALayerCocoa::userInteractionEnabled const): Deleted.
(PlatformCALayerCocoa::setUserInteractionEnabled): Deleted.
(PlatformCALayerCocoa::setBackingStoreAttached): Deleted.
(PlatformCALayerCocoa::backingStoreAttached const): Deleted.
(PlatformCALayerCocoa::geometryFlipped const): Deleted.
(PlatformCALayerCocoa::setGeometryFlipped): Deleted.
(PlatformCALayerCocoa::isDoubleSided const): Deleted.
(PlatformCALayerCocoa::setDoubleSided): Deleted.
(PlatformCALayerCocoa::masksToBounds const): Deleted.
(PlatformCALayerCocoa::setMasksToBounds): Deleted.
(PlatformCALayerCocoa::acceleratesDrawing const): Deleted.
(PlatformCALayerCocoa::setAcceleratesDrawing): Deleted.
(PlatformCALayerCocoa::wantsDeepColorBackingStore const): Deleted.
(PlatformCALayerCocoa::setWantsDeepColorBackingStore): Deleted.
(PlatformCALayerCocoa::supportsSubpixelAntialiasedText const): Deleted.
(PlatformCALayerCocoa::setSupportsSubpixelAntialiasedText): Deleted.
(PlatformCALayerCocoa::hasContents const): Deleted.
(PlatformCALayerCocoa::contents const): Deleted.
(PlatformCALayerCocoa::setContents): Deleted.
(PlatformCALayerCocoa::setContentsRect): Deleted.
(PlatformCALayerCocoa::setMinificationFilter): Deleted.
(PlatformCALayerCocoa::setMagnificationFilter): Deleted.
(PlatformCALayerCocoa::backgroundColor const): Deleted.
(PlatformCALayerCocoa::setBackgroundColor): Deleted.
(PlatformCALayerCocoa::setBorderWidth): Deleted.
(PlatformCALayerCocoa::setBorderColor): Deleted.
(PlatformCALayerCocoa::opacity const): Deleted.
(PlatformCALayerCocoa::setOpacity): Deleted.
(PlatformCALayerCocoa::setFilters): Deleted.
(PlatformCALayerCocoa::copyFiltersFrom): Deleted.
(PlatformCALayerCocoa::filtersCanBeComposited): Deleted.
(PlatformCALayerCocoa::setBlendMode): Deleted.
(PlatformCALayerCocoa::setName): Deleted.
(PlatformCALayerCocoa::setSpeed): Deleted.
(PlatformCALayerCocoa::setTimeOffset): Deleted.
(PlatformCALayerCocoa::contentsScale const): Deleted.
(PlatformCALayerCocoa::setContentsScale): Deleted.
(PlatformCALayerCocoa::cornerRadius const): Deleted.
(PlatformCALayerCocoa::setCornerRadius): Deleted.
(PlatformCALayerCocoa::setEdgeAntialiasingMask): Deleted.
(PlatformCALayerCocoa::shapeRoundedRect const): Deleted.
(PlatformCALayerCocoa::setShapeRoundedRect): Deleted.
(PlatformCALayerCocoa::shapeWindRule const): Deleted.
(PlatformCALayerCocoa::setShapeWindRule): Deleted.
(PlatformCALayerCocoa::shapePath const): Deleted.
(PlatformCALayerCocoa::setShapePath): Deleted.
(PlatformCALayerCocoa::requiresCustomAppearanceUpdateOnBoundsChange const): Deleted.
(PlatformCALayerCocoa::updateCustomAppearance): Deleted.
(layerContentsFormat): Deleted.
(PlatformCALayerCocoa::updateContentsFormat): Deleted.
(PlatformCALayerCocoa::tiledBacking): Deleted.
(PlatformCALayer::isWebLayer): Deleted.
(PlatformCALayer::setBoundsOnMainThread): Deleted.
(PlatformCALayer::setPositionOnMainThread): Deleted.
(PlatformCALayer::setAnchorPointOnMainThread): Deleted.
(PlatformCALayer::collectRectsToPaint): Deleted.
(PlatformCALayer::drawLayerContents): Deleted.
(PlatformCALayer::frameForLayer): Deleted.
(PlatformCALayerCocoa::createCompatibleLayer const): Deleted.
(PlatformCALayerCocoa::enumerateRectsBeingDrawn): Deleted.
(PlatformCALayerCocoa::backingStoreBytesPerPixel const): Deleted.
(PlatformCALayerCocoa::avPlayerLayer const): Deleted.
* platform/graphics/ca/cocoa/WebSystemBackdropLayer.mm:
(-[WebLightSystemBackdropLayer init]):
(-[WebDarkSystemBackdropLayer init]):
* platform/graphics/ca/cocoa/WebTiledBackingLayer.mm:
(-[WebTiledBackingLayer createTileController:]):
(-[WebTiledBackingLayer setNeedsDisplayInRect:]):
(-[WebTiledBackingLayer setBorderColor:]):
* testing/Internals.cpp:
(WebCore::Internals::Internals):
2018-09-25 YUHAN WU <yuhan_wu@apple.com>
Implement MediaStreamTrack Content Hints
https://bugs.webkit.org/show_bug.cgi?id=189262
<rdar://problem/44101773>
Reviewed by Youenn Fablet.
contentHint is a new attribute which is stored in MediaStreamTrackPrivate.
https://w3c.github.io/mst-content-hint/
Covered by tests:
LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint.html
LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/idlharness.window.html
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::contentHint const):
(WebCore::MediaStreamTrack::setContentHint):
* Modules/mediastream/MediaStreamTrack.h:
* Modules/mediastream/MediaStreamTrack.idl:
* platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::setContentHint):
(WebCore::MediaStreamTrackPrivate::clone):
* platform/mediastream/MediaStreamTrackPrivate.h:
(WebCore::MediaStreamTrackPrivate::contentHint):
2018-09-25 Alex Christensen <achristensen@webkit.org>
Allow for suffixes to com.apple.WebKit.WebContent
https://bugs.webkit.org/show_bug.cgi?id=189972
Reviewed by Chris Dumez.
* platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::isInWebProcess):
2018-09-25 Wenson Hsieh <wenson_hsieh@apple.com>
[iOS] Fix the open source iOS 12 build after r236445
https://bugs.webkit.org/show_bug.cgi?id=189953
Reviewed by Alex Christensen.
Remove soft-linking macros from several sources in WebCore, and instead import UIKitSoftLink from PAL. This
allows different WebCore sources to soft-link UIKit (and its classes and symbols) without reimplementing
WebCore::UIKitLibrary.
* editing/cocoa/FontAttributesCocoa.mm:
* editing/cocoa/FontShadowCocoa.mm:
(WebCore::FontShadow::createShadow const):
* platform/graphics/cocoa/ColorCocoa.mm:
(WebCore::platformColor):
* platform/ios/PlatformScreenIOS.mm:
(WebCore::screenIsMonochrome):
(WebCore::screenHasInvertedColors):
(WebCore::screenSize):
(WebCore::availableScreenSize):
(WebCore::screenScaleFactor):
2018-09-25 Thibault Saunier <tsaunier@igalia.com>
[WPE][GTK][WebRTC] Fixup VP8 encoding support
https://bugs.webkit.org/show_bug.cgi?id=189921
Previous leak fixing commit introduced a regression in
the way the encoded buffer were prepared in the default
GStreamerVideoEncoder::Fragmentize implementation (when
encoding with VP8 basically).
+ Fix a build warning in the decoder.
+ Fix some wrong object members namings.
+ Properly move the caps reference when setting restriction caps.
+ Do not raise a GStreamer error when GStreamerVideoEncoder::OnEncodedImage
fails - this might be a network issue and other encoders do not consider that
fatal.
+ Use GstMappedBuffer where appropriate.
Reviewed by Philippe Normand.
* platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
* platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
(WebCore::GStreamerVideoEncoder::InitEncode):
(WebCore::GStreamerVideoEncoder::newSampleCallback):
(WebCore::GStreamerVideoEncoder::Fragmentize):
(WebCore::GStreamerVideoEncoder::SetRestrictionCaps):
2018-09-25 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Update constraints supported by getDisplayMedia
https://bugs.webkit.org/show_bug.cgi?id=189930
Reviewed by Youenn Fablet.
No new tests, updated http/tests/media/media-stream/get-display-media-prompt.html.
* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::getDisplayMedia const): Ignore audio constraints.
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::hasInvalidGetDisplayMediaConstraint): Check for invalid constraints.
(WebCore::UserMediaRequest::start): Check for invalid constraints.
(WebCore::UserMediaRequest::deny): Support new error.
* Modules/mediastream/UserMediaRequest.h:
* platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::validateRequestConstraints):
2018-09-25 Xabier Rodriguez Calvar <calvaris@igalia.com>
[EME] Fix variable name that should have gone in r236317
https://bugs.webkit.org/show_bug.cgi?id=189944
Reviewed by Jer Noble.
m_cdmInstanceClientWeakPtrFactory becomes
m_cdmInstanceSessionClientWeakPtrFactory as its type changes to
CDMInstanceSessionClient.
* Modules/encryptedmedia/MediaKeySession.cpp:
(WebCore::MediaKeySession::MediaKeySession):
* Modules/encryptedmedia/MediaKeySession.h:
2018-09-25 Simon Fraser <simon.fraser@apple.com>
Clean up code around RenderLayer's "has accelerated scrolling" functions
https://bugs.webkit.org/show_bug.cgi?id=189932
Reviewed by Zalan Bujtas.
RenderLayer had:
bool hasAcceleratedTouchScrolling()
bool hasTouchScrollableOverflow()
bool usesAcceleratedScrolling()
bool usesCompositedScrolling()
bool usesAsyncScrolling()
which are hard to keep in your head. Removed usesAcceleratedScrolling() since it just returns hasTouchScrollableOverflow().
Renamed hasAcceleratedTouchScrolling() to canUseAcceleratedTouchScrolling() to indicate that it just looks at style,
not whether layout has given the layer scrollable overflow yet. Tidy up some #ifdefs.
usesCompositedScrolling() and usesAsyncScrolling() are ScrollableArea overrides, and
look at backing layers, so require that compositing has run already. Note this in comments.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::canUseAcceleratedTouchScrolling const):
(WebCore::RenderLayer::hasTouchScrollableOverflow const):
(WebCore::RenderLayer::handleTouchEvent):
(WebCore::RenderLayer::usesAsyncScrolling const):
(WebCore::RenderLayer::showsOverflowControls const):
(WebCore::RenderLayer::calculateClipRects const):
(WebCore::RenderLayer::hasAcceleratedTouchScrolling const): Deleted.
(WebCore::RenderLayer::usesAcceleratedScrolling const): Deleted.
* rendering/RenderLayer.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::layerOrAncestorIsTransformedOrUsingCompositedScrolling):
(WebCore::RenderLayerBacking::updateConfiguration):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::useCoordinatedScrollingForLayer const):
(WebCore::RenderLayerCompositor::requiresCompositingForOverflowScrolling const):
2018-09-24 Fujii Hironori <Hironori.Fujii@sony.com>
Rename WTF_COMPILER_GCC_OR_CLANG to WTF_COMPILER_GCC_COMPATIBLE
https://bugs.webkit.org/show_bug.cgi?id=189733
Reviewed by Michael Catanzaro.
No new tests (No behavior change).
* platform/graphics/cpu/arm/filters/FELightingNEON.cpp:
* platform/graphics/cpu/arm/filters/FELightingNEON.h:
* platform/graphics/filters/FELighting.cpp:
(WebCore::FELighting::platformApply):
* platform/graphics/filters/FELighting.h:
2018-09-24 John Wilander <wilander@apple.com>
Cap lifetime of persistent cookies created client-side through document.cookie
https://bugs.webkit.org/show_bug.cgi?id=189933
<rdar://problem/44741888>
Reviewed by Chris Dumez.
Test: http/tests/cookies/capped-lifetime-for-cookie-set-in-js.html
As pointed out in https://github.com/mikewest/http-state-tokens:
1) Cookies are available to JavaScript by default via document.cookie, which
enables a smooth upgrade from one-time XSS to theft of persistent credentials
and also makes cookies available to Spectre-like attacks on memory.
2) Though the HttpOnly attribute was introduced well over a decade ago, only
~8.31% of Set-Cookie operations use it today (stats from Chrome). We need
developer incentives to put proper protections in place.
3) The median (uncompressed) Cookie request header is 409 bytes, while the 90th
percentile is 1,589 bytes, the 95th 2,549 bytes, the 99th 4,601 bytes, and
~0.1% of Cookie headers are over 10kB (stats from Chrome). This is bad for load
performance.
In addition to this, third-party scripts running in first-party contexts can
read user data through document.cookie and even store cross-site tracking data
in them.
Authentication cookies should be HttpOnly and thus not be affected by
restrictions to document.cookie. Cookies that persist for a long time should
be Secure, HttpOnly, and SameSite to provide good security and privacy.
By capping the lifetime of persistent cookies set through document.cookie we
embark on a journey towards better cookie management on the web.
* platform/network/cocoa/NetworkStorageSessionCocoa.mm:
(WebCore::filterCookies):
Now caps the life time of persistent cookies to one week (seven days).
* testing/Internals.cpp:
(WebCore::Internals::getCookies const):
New test function to get to cookie meta data such as expiry.
* testing/Internals.h:
* testing/Internals.idl:
2018-09-24 Simon Fraser <simon.fraser@apple.com>
Remove filterRes parameter from SVG filters
https://bugs.webkit.org/show_bug.cgi?id=129565
<rdar://problem/44714340>
Reviewed by Dean Jackson.
Remove support for the "filterRes" attribute on SVG filters. It's marked as
deprecated in https://drafts.fxtf.org/filter-effects/#element-attrdef-filter-filterres
and no longer supported by Chrome or Firefox.
Removed existing filterRes tests, added new test checking that it has no effect.
Tests: svg/filters/filterRes-is-noop.svg
* rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::applyResource):
* svg/SVGElement.cpp:
(WebCore::SVGElement::animatableAttributeForName):
* svg/SVGFilterElement.cpp:
(WebCore::SVGFilterElement::registerAttributes):
(WebCore::SVGFilterElement::parseAttribute):
(WebCore::SVGFilterElement::filterResXIdentifier): Deleted.
(WebCore::SVGFilterElement::filterResYIdentifier): Deleted.
(WebCore::SVGFilterElement::setFilterRes): Deleted.
* svg/SVGFilterElement.h:
* svg/SVGFilterElement.idl:
* svg/svgattrs.in:
2018-09-24 Ryosuke Niwa <rniwa@webkit.org>
Don't cause a crash even when some IDL attribute is missing CEReactions
https://bugs.webkit.org/show_bug.cgi?id=189937
Reviewed by Simon Fraser.
Replaced release assertions in ElementQueue::add and ElementQueue::invokeAll by debug assertions
since a missing CEReactions resulting in a crash is a terrible user experience.
Also made the iteration in invokeAll safe when more elements were added to m_elements.
No new tests since we would still hit debug assertions, and this behavior should only come up
when some IDL attribute is erroneously missing CEReactions.
* dom/CustomElementReactionQueue.cpp:
(WebCore::CustomElementReactionQueue::ElementQueue::add):
(WebCore::CustomElementReactionQueue::ElementQueue::invokeAll):
2018-09-24 Wenson Hsieh <wenson_hsieh@apple.com>
Refactor Editor::fontAttributesForSelectionStart to be platform-agnostic
https://bugs.webkit.org/show_bug.cgi?id=189918
Work towards <rdar://problem/44648705>
Reviewed by Tim Horton.
Refactors the functionality in Editor::fontAttributesForSelectionStart to not be Cocoa-only. Rename this to
fontAttributesAtSelectionStart (to be consistent with `EditingStyle::styleAtSelectionStart`) and move it from
EditorCocoa.mm to Editor.cpp; instead of creating and populating an NSDictionary with font attribute
information, create and populate a new `FontAttributes` struct that contains the same information. Cocoa clients
in WebKitLegacy may then create an `NSDictionary` as needed from the `FontAttributes`.
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* editing/Editor.cpp:
(WebCore::Editor::platformFontAttributesAtSelectionStart const):
Add a hook to allow platforms to supply additional information in FontAttributes. On Cocoa, this adds a UIFont
or NSFont to FontAttributes; otherwise, this is a no-op.
(WebCore::Editor::fontAttributesAtSelectionStart const):
* editing/Editor.h:
* editing/FontAttributeChanges.cpp:
(WebCore::cssValueListForShadow):
* editing/FontAttributeChanges.h:
(): Deleted.
(WebCore::FontShadow::encode const): Deleted.
(WebCore::FontShadow::decode): Deleted.
* editing/FontAttributes.h: Added.
Introduce a new struct that contains font attribute information. May be converted into an NSDictionary for use
by Cocoa clients in WebKitLegacy and WebKit. In a future patch, this will become serializable over IPC for use
in WebKit2.
* editing/FontShadow.h: Added.
Move FontShadow out into a separate header file, included in `FontAttributeChanges.h` and `FontAttributes.h`.
(WebCore::FontShadow::encode const):
(WebCore::FontShadow::decode):
* editing/cocoa/EditorCocoa.mm:
Add a helper function to convert a WebCore::Color to either `UIColor` on iOS or `NSColor` when AppKit is being
used.
(WebCore::Editor::platformFontAttributesAtSelectionStart const):
(WebCore::Editor::getTextDecorationAttributesRespectingTypingStyle const): Deleted.
Remove a helper function that was only used to compute text decoration attributes in
fontAttributesForSelectionStart.
(WebCore::Editor::fontAttributesForSelectionStart const): Deleted.
* editing/cocoa/FontAttributesCocoa.mm: Added.
(WebCore::FontAttributes::createDictionary const):
* editing/cocoa/FontShadowCocoa.mm: Added.
(WebCore::FontShadow::createShadow const):
* editing/cocoa/HTMLConverter.mm:
(_webKitBundle):
(HTMLConverter::_colorForElement):
(_platformColor): Deleted.
Adopt platformColor().
* platform/graphics/cocoa/ColorCocoa.h: Added.
* platform/graphics/cocoa/ColorCocoa.mm: Added.
(WebCore::platformColor):
* platform/graphics/metal/GPURenderPassDescriptorMetal.mm:
Build fix due to changes in unified sources.
* platform/mac/WebCoreNSFontManagerExtras.mm:
(WebCore::computedFontAttributeChanges):
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
More build fixes due to changes in unified sources.
2018-09-24 Jer Noble <jer.noble@apple.com>
SharedBuffer should have an equality test
https://bugs.webkit.org/show_bug.cgi?id=189919
Reviewed by Alex Christensen.
Test: TestWebKitAPI SharedBuffer.isEqualTo.
* platform/SharedBuffer.cpp:
* platform/SharedBuffer.h:
(WebCore::operator==):
(WebCore::operator!=):
2018-09-24 Ryosuke Niwa <rniwa@webkit.org>
imported/w3c/web-platform-tests/shadow-dom/slotchange.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=167652
Reviewed by Saam Barati.
The bug appears to be caused by the JS wrappers of slot elements getting prematurely collected.
Deployed GCReachableRef introduced in r236376 to fix the bug.
Test: fast/shadow-dom/signal-slot-list-retains-js-wrappers.html
* dom/MutationObserver.cpp:
(WebCore::signalSlotList):
(WebCore::MutationObserver::enqueueSlotChangeEvent):
(WebCore::MutationObserver::notifyMutationObservers):
2018-09-24 Ryosuke Niwa <rniwa@webkit.org>
Release assert when using paper-textarea due to autocorrect IDL attribute missing CEReactions
https://bugs.webkit.org/show_bug.cgi?id=174629
<rdar://problem/33407620>
Reviewed by Simon Fraser.
The bug was caused by autocorrect and autocapitalize IDL attributes missing CEReactions.
Test: fast/custom-elements/autocorrect-autocapitalize-idl-attributes-crash.html
* html/HTMLElement.idl:
2018-09-24 Chris Dumez <cdumez@apple.com>
No-op document.open() calls should not have any side effects
https://bugs.webkit.org/show_bug.cgi?id=189373
<rdar://problem/44282702>
Reviewed by Geoffrey Garen.
Update document.open() implementation to match the specification [1] more closely.
In particular, URLs updates should happen much later, at step 11. They were happening
too early and would cause side effects when returning early.
[1] https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#document-open-steps
No new tests, rebaselined existing test.
* dom/Document.cpp:
(WebCore::Document::open):
2018-09-24 Daniel Bates <dabates@apple.com>
Include more headers in IOSurface.mm, PixelBufferResizer.{h, mm}
https://bugs.webkit.org/show_bug.cgi?id=189928
Reviewed by Andy Estes.
Make building IOSurface.mm and PixelBufferResizer.mm deterministic regardless of
which bundle of unified sources they are built in.
* platform/graphics/cocoa/IOSurface.mm: Include headers HostWindow.h and PlatformScreen.h
since we make use of functionality from these headers.
* platform/graphics/cv/PixelBufferResizer.h: Include header IntSize.h since
we need the size of an IntSize for m_size.
* platform/graphics/cv/PixelBufferResizer.mm: Include header Logging.h since
this file makes use of logging facilities. Also substitute #import for #include
while I am here since this file is an Objective-C++ file.
2018-09-24 Andy Estes <aestes@apple.com>
[Payment Request] Events cleanup
https://bugs.webkit.org/show_bug.cgi?id=189925
Reviewed by Simon Fraser.
1. Constructed MerchantValidationEvents (and ApplePayValidateMerchantEvents) with rvalue
references to validationURLs.
2. Instead of MerchantValidationEvent and PaymentRequestUpdateEvent having a
RefPtr<PaymentRequest>, downcasted their target to a PaymentRequest. Trusted versions of
these events are always dispatched to a PaymentRequest object.
3. Defined MerchantValidationEventInit in MerchantValidationEvent.idl instead of having a
separate .idl and .h for this dictionary.
No new tests. No change in behavior.
* CMakeLists.txt:
* DerivedSources.make:
* Modules/applepay/ApplePaySession.cpp:
(WebCore::ApplePaySession::validateMerchant):
* Modules/applepay/ApplePaySession.h:
* Modules/applepay/ApplePayValidateMerchantEvent.cpp:
(WebCore::ApplePayValidateMerchantEvent::ApplePayValidateMerchantEvent):
* Modules/applepay/ApplePayValidateMerchantEvent.h:
(WebCore::ApplePayValidateMerchantEvent::create):
* Modules/applepay/PaymentCoordinator.cpp:
(WebCore::PaymentCoordinator::validateMerchant):
* Modules/applepay/PaymentCoordinator.h:
* Modules/applepay/PaymentSession.h:
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
(WebCore::ApplePayPaymentHandler::validateMerchant):
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
* Modules/paymentrequest/MerchantValidationEvent.cpp:
(WebCore::MerchantValidationEvent::create):
(WebCore::MerchantValidationEvent::MerchantValidationEvent):
(WebCore::MerchantValidationEvent::complete):
* Modules/paymentrequest/MerchantValidationEvent.h:
* Modules/paymentrequest/MerchantValidationEvent.idl:
* Modules/paymentrequest/MerchantValidationEventInit.h: Removed.
* Modules/paymentrequest/MerchantValidationEventInit.idl: Removed.
* Modules/paymentrequest/PaymentMethodChangeEvent.cpp:
(WebCore::PaymentMethodChangeEvent::PaymentMethodChangeEvent):
* Modules/paymentrequest/PaymentMethodChangeEvent.h:
* Modules/paymentrequest/PaymentRequest.cpp:
(WebCore::PaymentRequest::shippingAddressChanged):
(WebCore::PaymentRequest::shippingOptionChanged):
(WebCore::PaymentRequest::paymentMethodChanged):
* Modules/paymentrequest/PaymentRequest.h:
(isType):
* Modules/paymentrequest/PaymentRequestUpdateEvent.cpp:
(WebCore::PaymentRequestUpdateEvent::PaymentRequestUpdateEvent):
(WebCore::PaymentRequestUpdateEvent::updateWith):
* Modules/paymentrequest/PaymentRequestUpdateEvent.h:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/EventTarget.cpp:
(WebCore::EventTarget::isPaymentRequest const):
* dom/EventTarget.h:
2018-09-24 Daniel Bates <dabates@apple.com>
Separate Mac and iOS implementation of windowsKeyCodeForCharCode()
https://bugs.webkit.org/show_bug.cgi?id=189898
Reviewed by Tim Horton.
Extract the Mac and iOS implementations into a windowsKeyCodeForCharCode() defined in file
KeyEventMac.mm and file KeyEventIOS, respectively.
Mac and iOS have significant differences in how they represent function keys. It is not worthwhile
to share windowsKeyCodeForCharCode() between them given these differences. On Mac function keys
are represented by a char code in the range 0xF700-0xF8FF. On iOS these keys may not have a unique
char code (e.g. F1 = 0x10 = F10) and must be identified either by special string (e.g. UIKeyInputUpArrow)
or key code.
* platform/cocoa/KeyEventCocoa.mm:
(WebCore::windowsKeyCodeForCharCode): Deleted.
* platform/ios/KeyEventIOS.mm:
(WebCore::windowsKeyCodeForCharCode): Added. Remove the handling of NS*FunctionKey char codes
as function keys are not represented using them as of iOS 12.
* platform/mac/KeyEventMac.mm:
(WebCore::windowsKeyCodeForCharCode): Added.
2018-09-21 Simon Fraser <simon.fraser@apple.com>
Remove the old "AcceleratedCompositingForOverflowScroll" code
https://bugs.webkit.org/show_bug.cgi?id=189870
Reviewed by Zalan Bujtas.
The "AcceleratedCompositingForOverflowScroll" code was added to allow overflow:scroll to use
composited scrolling if an overflow:scroll could be made a stacking context without affecting
z-order. We need overflow:scroll to be accelerated always, so a different approach is needed.
Remove this old code (unused by any platform?) to make working on new code easier.
* page/Settings.yaml:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::setHasVisibleContent):
(WebCore::RenderLayer::updateDescendantDependentFlags):
(WebCore::RenderLayer::dirty3DTransformedDescendantStatus):
(WebCore::RenderLayer::stackingContext const):
(WebCore::compositingContainer):
(WebCore::RenderLayer::addChild):
(WebCore::RenderLayer::removeChild):
(WebCore::RenderLayer::hasAcceleratedTouchScrolling const):
(WebCore::RenderLayer::usesAcceleratedScrolling const):
(WebCore::adjustedScrollDelta):
(WebCore::RenderLayer::updateCompositingLayersAfterScroll):
(WebCore::RenderLayer::updateScrollInfoAfterLayout):
(WebCore::RenderLayer::enclosingFragmentedFlowAncestor const):
(WebCore::RenderLayer::calculateClipRects const):
(WebCore::RenderLayer::acceleratedCompositingForOverflowScrollEnabled const): Deleted.
(WebCore::RenderLayer::updateDescendantsAreContiguousInStackingOrder): Deleted.
(WebCore::RenderLayer::updateDescendantsAreContiguousInStackingOrderRecursive): Deleted.
(WebCore::RenderLayer::positionNewlyCreatedOverflowControls): Deleted.
(WebCore::RenderLayer::canBeStackingContainer const): Deleted.
(WebCore::RenderLayer::stackingContainer const): Deleted.
(WebCore::RenderLayer::needsCompositedScrolling const): Deleted.
(WebCore::RenderLayer::updateNeedsCompositedScrolling): Deleted.
* rendering/RenderLayer.h:
(WebCore::RenderLayer::clearZOrderLists):
(WebCore::RenderLayer::updateZOrderLists):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateAfterLayout):
(WebCore::RenderLayerBacking::computeParentGraphicsLayerRect const):
(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::requiresHorizontalScrollbarLayer const):
(WebCore::RenderLayerBacking::requiresVerticalScrollbarLayer const):
(WebCore::RenderLayerBacking::requiresScrollCornerLayer const):
(WebCore::RenderLayerBacking::compositingOpacity const):
(WebCore::traverseVisibleNonCompositedDescendantLayers):
(WebCore::RenderLayerBacking::hasUnpositionedOverflowControlsLayers const): Deleted.
* rendering/RenderLayerBacking.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateScrollCoordinatedLayersAfterFlush):
(WebCore::RenderLayerCompositor::updateCustomLayersAfterFlush):
(WebCore::styleChangeRequiresLayerRebuild):
(WebCore::RenderLayerCompositor::enclosingNonStackingClippingLayer const):
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
(WebCore::RenderLayerCompositor::requiresCompositingLayer const):
(WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
(WebCore::RenderLayerCompositor::reasonsForCompositing const):
(WebCore::RenderLayerCompositor::requiresCompositingForBackfaceVisibility const):
(WebCore::RenderLayerCompositor::isViewportConstrainedFixedOrStickyLayer const):
(WebCore::RenderLayerCompositor::requiresCompositingForPosition const):
(WebCore::RenderLayerCompositor::requiresCompositingForOverflowScrolling const):
(WebCore::RenderLayerCompositor::requiresCompositingForScrolling const): Deleted.
* rendering/RenderLayerCompositor.h:
2018-09-24 Youenn Fablet <youenn@apple.com>
Enable conversion of libwebrtc internal frames as CVPixelBuffer
https://bugs.webkit.org/show_bug.cgi?id=189892
Reviewed by Eric Carlson.
Make sure to handle the case of libwebrtc frames that are not backed by CVPixelBuffer.
No observable change of behavior.
* platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:
(WebCore::LibWebRTCProviderCocoa::createDecoderFactory):
(WebCore::LibWebRTCProviderCocoa::createEncoderFactory):
Update according renamed methods.
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.h:
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
(WebCore::RealtimeIncomingVideoSourceCocoa::pixelBufferFromVideoFrame):
In case of libwebrtc frame that are not backed by CVPixelBuffer, we create
a CVPixelBuffer from a pixel buffer pool.
This CVPixelBuffer is then filled as part of webrtc::pixelBufferFromFrame.
* platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.mm:
(WebCore::RealtimeOutgoingVideoSourceCocoa::convertToYUV):
Make sure to use preferred pixel buffer format.
2018-09-24 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Add mock window capture source
https://bugs.webkit.org/show_bug.cgi?id=189843
<rdar://problem/44687445>
Reviewed by Youenn Fablet.
No new tests, the API is disabled and it isn't possible to test yet.
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::processNewFrame): Remove an extra blank line.
* platform/mock/MockMediaDevice.h:
(WebCore::MockDisplayProperties::encode const): Get rid of defaultFrameRate, add type.
(WebCore::MockDisplayProperties::decode): Ditto.
(WebCore::MockMediaDevice::type const):
* platform/mock/MockRealtimeMediaSourceCenter.cpp:
(WebCore::defaultDevices): Add mock window devices.
(WebCore::MockRealtimeMediaSourceCenter::audioDevices): Cleanup.
(WebCore::MockRealtimeMediaSourceCenter::videoDevices): Cleanup.
(WebCore::MockRealtimeMediaSourceCenter::displayDevices): New.
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource): Set default size on displays.
(WebCore::MockRealtimeVideoSource::supportsSizeAndFrameRate): Call RealtimeVideoSource for
mock camera, base class for device.
(WebCore::MockRealtimeVideoSource::setSizeAndFrameRate): Ditto.
(WebCore::MockRealtimeVideoSource::generatePresets): ASSERT if called as a camera.
(WebCore::MockRealtimeVideoSource::capabilities): updateCapabilities is only appropriate for cameras.
(WebCore::MockRealtimeVideoSource::settings): Camera and Device are different surface types.
(WebCore::MockRealtimeVideoSource::drawText): Render name, not ID.
(WebCore::MockRealtimeVideoSource::mockDisplayType const):
* platform/mock/MockRealtimeVideoSource.h:
(WebCore::MockRealtimeVideoSource::mockDisplay const):
(WebCore::MockRealtimeVideoSource::mockScreen const):
(WebCore::MockRealtimeVideoSource::mockWindow const):
2018-09-24 Daniel Bates <dabates@apple.com>
[iOS] Key code is 0 for many hardware keyboard keys
https://bugs.webkit.org/show_bug.cgi?id=189604
Reviewed by Wenson Hsieh.
Based off a patch by Jeremy Jones.
Add iOS-specific implementation of windowsKeyCodeForKeyCode() to map an iOS virtual key code to
the corresponding Windows virtual key code. Only hardware keyboard-generated events have a
virtual key code. For software-generated keyboard events we do what we do now and compute the
Windows virtual key code from the character string associated with the event.
When a WebEvent is instantiated with a non-zero iOS virtual key code (keyCode) we now always
convert it to its corresponding Windows virtual key code without considering the specified
charactersIgnoringModifiers character string. Currently we prefer computing the key code from
charactersIgnoringModifiers regardless of whether a non-zero iOS virtual key code was given.
However this causes special keys, including function keys (e.g. F10) to be misidentified because
keyboard layouts in iOS (at least iOS 12) map such special keys to ASCII control characters (e.g.
F10 maps to ASCII control character "data link escape" = 0x10) as opposed to special 16-bit
integral constants as we do on Mac (e.g. F10 maps to NSF10FunctionKey = 0xF70D on Mac). I will
look to fix up the computation of a Windows virtual key code from a char code on iOS in a
subsequent commit(s). For now, computing the Windows virtual key code directly from the iOS
virtual key code specified to the WebEvent constructor avoids the misidentification using
an ANSI US keyboard layout.
* platform/cocoa/KeyEventCocoa.mm:
(WebCore::windowsKeyCodeForKeyCode): Deleted; moved to KeyEventMac.mm as this mapping is specific to Mac.
* platform/ios/KeyEventIOS.mm:
(WebCore::windowsKeyCodeForKeyCode): Added.
* platform/ios/WebEvent.mm:
(-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:keyCode:isTabKey:characterSet:]): Address the NOTE comment and compute the Windows virtual key code from
the iOS virtual key code when we have one. Also inline the value of an unncessary local variable.
(-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:withInputManagerHint:keyCode:isTabKey:]): Ditto.
* platform/mac/KeyEventMac.mm:
(WebCore::windowsKeyCodeForKeyCode): Moved from KeyEventCocoa.mm. Updated code to make use of WTF_ARRAY_LENGTH() instead
of hardcoding the upper bound of the lookup table.
2018-09-24 Simon Fraser <simon.fraser@apple.com>
feMorphology filter in CSS doesn't update when element moves
https://bugs.webkit.org/show_bug.cgi?id=189895
Reviewed by Dean Jackson.
SourceAlpha needs to be invalidated from clearIntermediateResults(),
so get it from the SVGFilterBuilder (which always creates one) and store in
a member variable.
Test: css3/filters/invalidate-sourceAlpha.html
* rendering/CSSFilter.cpp:
(WebCore::CSSFilter::buildReferenceFilter):
(WebCore::CSSFilter::clearIntermediateResults):
* rendering/CSSFilter.h:
* svg/graphics/filters/SVGFilterBuilder.h:
2018-09-24 Simon Fraser <simon.fraser@apple.com>
CSS reference filter with feDisplacementMap shows buffer corruption on Retina displays
https://bugs.webkit.org/show_bug.cgi?id=188486
<rdar://problem/43189750>
Reviewed by Dean Jackson.
The paintSize needs to be scaled by filterScale on Retina displays.
Test: css3/filters/hidpi-feDisplacementMap.html
* platform/graphics/filters/FEDisplacementMap.cpp:
(WebCore::FEDisplacementMap::platformApplySoftware):
* platform/graphics/filters/FEDisplacementMap.h:
2018-09-24 Simon Fraser <simon.fraser@apple.com>
ReferenceFilterOperation doesn't need to store the FilterEffect
https://bugs.webkit.org/show_bug.cgi?id=189904
Reviewed by Dean Jackson.
ReferenceFilterOperation doesn't do anything with m_filterEffect so don't store it.
* platform/graphics/filters/FilterOperation.cpp:
(WebCore::ReferenceFilterOperation::setFilterEffect): Deleted.
* platform/graphics/filters/FilterOperation.h:
(WebCore::ReferenceFilterOperation::filterEffect const): Deleted.
* rendering/CSSFilter.cpp:
(WebCore::CSSFilter::build):
2018-09-24 Simon Fraser <simon.fraser@apple.com>
Garbled rendering of image when applied feConvolveMatrix to it, on Retina display
https://bugs.webkit.org/show_bug.cgi?id=189748
<rdar://problem/44621494>
Reviewed by Jon Lee.
feConvolveMatrix needs to scale the paintSize by the filter scale (2x on Retina displays),
otherwise parts of the output buffer are uninitialized and the result is incorrect.
Test: css3/filters/hidpi-feConvolveMatrix.html
* platform/graphics/filters/FEConvolveMatrix.cpp:
(WebCore::FEConvolveMatrix::platformApplySoftware):
2018-09-22 Dean Jackson <dino@apple.com>
Ensure PointerEvent is not visible when disabled
https://bugs.webkit.org/show_bug.cgi?id=189889
<rdar://problem/44708253>
Reviewed by Eric Carlson.
Test: pointerevents/disabled.html
* bindings/js/WebCoreBuiltinNames.h: Now that it is enabled at runtime, it needs
a built-in name.
* dom/PointerEvent.idl: Add EnabledAtRuntime.
2018-09-24 Alicia Boya García <aboya@igalia.com>
[MSE][GStreamer] Pull demuxed samples in batches
https://bugs.webkit.org/show_bug.cgi?id=189871
Reviewed by Xabier Rodriguez-Calvar.
After this patch, only the notifications of "new samples available"
(appsink-new-sample bus messages) travel from the streaming thread to
the main thread through the bus and the main thread is the responsible
of pulling as many samples as it can from appsink. Before, the samples
were pulled from appsink in the non-main thread and traveled to the
main thread through the bus one by one.
This reduces drastically the amount of context switches and waiting
time in the streaming thread, resulting in a noticeable performance
improvement.
This fixes stutter while loading YouTube videos.
* platform/graphics/gstreamer/MediaSampleGStreamer.cpp:
(WebCore::MediaSampleGStreamer::MediaSampleGStreamer):
* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::AppendPipeline::AppendPipeline):
(WebCore::AppendPipeline::~AppendPipeline):
(WebCore::AppendPipeline::clearPlayerPrivate):
(WebCore::AppendPipeline::handleApplicationMessage):
(WebCore::AppendPipeline::appsinkNewSample):
(WebCore::AppendPipeline::consumeAppSinkAvailableSamples):
(WebCore::AppendPipeline::resetPipeline):
(WebCore::AppendPipeline::handleNewAppsinkSample):
* platform/graphics/gstreamer/mse/AppendPipeline.h:
2018-09-24 Per Arne Vollan <pvollan@apple.com>
[WebVTT] Change name of WebVTT region attribute 'height' to 'lines'.
https://bugs.webkit.org/show_bug.cgi?id=189862
Reviewed by Eric Carlson.
The WebVTT region attribute 'height' has been renamed to 'lines', see https://w3c.github.io/webvtt/#region-settings.
No new tests, covered by existing tests.
* html/track/VTTRegion.cpp:
(WebCore::VTTRegion::setLines):
(WebCore::VTTRegion::updateParametersFromRegion):
(WebCore::VTTRegion::scanSettingName):
(WebCore::VTTRegion::parseSettingValue):
(WebCore::VTTRegion::prepareRegionDisplayTree):
(WebCore::VTTRegion::setHeight): Deleted.
* html/track/VTTRegion.h:
* html/track/VTTRegion.idl:
2018-09-24 Alicia Boya García <aboya@igalia.com>
[MSE][GStreamer] Use no-more-pads event for noticing initialization segments
https://bugs.webkit.org/show_bug.cgi?id=189868
Reviewed by Xabier Rodriguez-Calvar.
Fixes the following YTTV 2018 tests:
62.VideoDimensionVP9
63.PlaybackStateVP9
This removes the hack that was making supporting multiple tracks in
the same file in MSE impossible.
For WebM, this GStreamer patch is required:
https://bugzilla.gnome.org/show_bug.cgi?id=797187
"matroskademux: Emit no-more-pads after parsing Tracks"
* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::AppendPipeline::AppendPipeline):
(WebCore::AppendPipeline::handleApplicationMessage):
(WebCore::AppendPipeline::demuxerNoMorePads):
(WebCore::AppendPipeline::appsinkCapsChanged):
(WebCore::AppendPipeline::connectDemuxerSrcPadToAppsink):
(WebCore::AppendPipeline::appendPipelineDemuxerNoMorePadsFromAnyThread):
(WebCore::appendPipelineDemuxerNoMorePads):
* platform/graphics/gstreamer/mse/AppendPipeline.h:
2018-09-24 Thibault Saunier <tsaunier@igalia.com>
[WPE][GTK][WebRTC] Fix leaks in the libwebrtc Decoder and Encoder
https://bugs.webkit.org/show_bug.cgi?id=189835
Reviewed by Philippe Normand.
- Rework memory management to avoid leaking encoded frames (basically use the same
strategy as other libwebrtc encoder implementation).
- Plug a GstCaps leak.
* platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:
* platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
* platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
(WebCore::GStreamerVideoEncoder::InitEncode):
(WebCore::GStreamerVideoEncoder::newSampleCallback):
(WebCore::GStreamerVideoEncoder::Fragmentize):
(WebCore::GStreamerVideoEncoder::SetRestrictionCaps):
2018-09-24 Philippe Normand <pnormand@igalia.com>
[GStreamer] Utilities cleanups
https://bugs.webkit.org/show_bug.cgi?id=189699
<rdar://problem/44634143>
Reviewed by Xabier Rodriguez-Calvar.
The GstMappedBuffer now has a move constructor so that it can be easily
reused in the webaudiosrc element. The now-unused corresponding
buffer-mapping utilities are removed from the code-base.
The HTTP source element used to handle a GstBuffer in its private
structure but this is no longer required since data is now pushed
in chunks, see bug #182829.
* platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
(webKitWebAudioSrcLoop):
* platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::createGstBuffer): Deleted.
(WebCore::createGstBufferForData): Deleted.
(WebCore::getGstBufferDataPointer): Deleted.
(WebCore::mapGstBuffer): Deleted.
(WebCore::unmapGstBuffer): Deleted.
* platform/graphics/gstreamer/GStreamerCommon.h:
(WebCore::GstMappedBuffer::create): New method returning a
reference to a newly created GstMappedBuffer instance.
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webKitWebSrcStop): Remove reference to unused GstBuffer.
(CachedResourceStreamingClient::dataReceived): Ditto.
2018-09-24 Enrique Ocaña González <eocanha@igalia.com>
[MSE][GStreamer] Don't update duration when it was not previously NaN
https://bugs.webkit.org/show_bug.cgi?id=189869
Reviewed by Xabier Rodriguez-Calvar.
This is what the spec mandates. The spec doesn't say anything about
updating duration when it had been previously set, even if the new
init segment says that the duration is growing.
This fixes MSE YTTV 2018 69.MediaSourceDurationVP9.
* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::AppendPipeline::connectDemuxerSrcPadToAppsink):
2018-09-23 Frederic Wang <fwang@igalia.com>
Add missing includes in TextCodecReplacement.cpp
https://bugs.webkit.org/show_bug.cgi?id=189894
Reviewed by Darin Adler.
No new tests, behavior unchanged.
* platform/text/TextCodecReplacement.cpp: Add missing headers.
2018-09-22 Adrian Perez de Castro <aperez@igalia.com>
[ARM] Building FELightingNEON.cpp fails due to missing lightVector member
https://bugs.webkit.org/show_bug.cgi?id=189890
Reviewed by Darin Adler.
No new tests needed.
* platform/graphics/cpu/arm/filters/FELightingNEON.h:
(WebCore::FELighting::platformApplyNeon): Adapt to new layout of "struct PaintingData" after r225122.
2018-09-22 Zan Dobersek <zdobersek@igalia.com>
[Cairo] Null-check cairo_pattern_t gradient objects
https://bugs.webkit.org/show_bug.cgi?id=189820
Reviewed by Alex Christensen.
Cairo-specific implementation of Gradient::createPlatformGradient() can
now return a nullptr value when a conic gradient is described by the
Gradient object. Cairo doesn't have a way to create cairo_pattern_t
objects for such gradients.
Null-checks are now done on return values of createPlatformGradient(),
in order to avoid proceeding to paint a null cairo_pattern_t object.
* platform/graphics/cairo/GradientCairo.cpp:
(WebCore::Gradient::fill):
* platform/graphics/cairo/GraphicsContextImplCairo.cpp:
(WebCore::GraphicsContextImplCairo::fillRect):
2018-09-21 Ryosuke Niwa <rniwa@webkit.org>
Cannot start a drag inside a shadow tree when an inclusive-ancestor of its shadow host is a draggable element
https://bugs.webkit.org/show_bug.cgi?id=136836
Reviewed by Wenson Hsieh.
Fixed the bug by simply generalizing the existing code path existed for video / input type=color.
Tests: fast/shadow-dom/dragging-element-inside-shadow-tree.html
fast/shadow-dom/dragging-element-with-shadow-tree.html
* page/DragController.cpp:
(WebCore::DragController::startDrag):
2018-09-22 Chris Dumez <cdumez@apple.com>
FontDataCache should use Ref<Font> instead of a RefPtr<Font>
https://bugs.webkit.org/show_bug.cgi?id=189861
Reviewed by Antti Koivisto.
* platform/graphics/FontCache.cpp:
(WebCore::FontCache::fontForPlatformData):
(WebCore::FontCache::purgeInactiveFontData):
2018-09-21 Justin Michaud <justin_michaud@apple.com>
Implement initialValue support for CSS Custom Properties and Values API
https://bugs.webkit.org/show_bug.cgi?id=189819
Reviewed by Simon Fraser.
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::customPropertyValue):
* css/CSSCustomPropertyValue.cpp:
(WebCore::CSSCustomPropertyValue::resolveVariableReferences const):
* css/CSSCustomPropertyValue.h:
* css/CSSRegisteredCustomProperty.h:
* css/CSSVariableData.cpp:
(WebCore::CSSVariableData::resolveVariableFallback const):
(WebCore::CSSVariableData::resolveVariableReference const):
(WebCore::CSSVariableData::resolveVariableReferences const):
(WebCore::CSSVariableData::resolveTokenRange const):
* css/CSSVariableData.h:
* css/DOMCSSRegisterCustomProperty.cpp:
(WebCore::DOMCSSRegisterCustomProperty::registerProperty):
* css/DOMCSSRegisterCustomProperty.h:
* css/DOMCSSRegisterCustomProperty.idl:
* css/StyleResolver.cpp:
(WebCore::StyleResolver::resolvedVariableValue):
(WebCore::StyleResolver::applyCascadedProperties):
* css/parser/CSSParser.cpp:
(WebCore::CSSParser::parseValueWithVariableReferences):
* css/parser/CSSParser.h:
* dom/Document.h:
(WebCore::Document::getCSSRegisteredCustomPropertySet const):
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::checkVariablesInCustomProperties):
* rendering/style/RenderStyle.h:
2018-09-21 Dean Jackson <dino@apple.com>
Add PointerEvent, plus feature flag, plus Web Platform Tests
https://bugs.webkit.org/show_bug.cgi?id=189867
<rdar://problem/44697384>
Reviewed by Simon Fraser.
Add the PointerEvent interface.
Tests: imported/w3c/web-platform-tests/pointerevents/extension/idlharness.window.html
imported/w3c/web-platform-tests/pointerevents/extension/pointerevent_constructor.html
imported/w3c/web-platform-tests/pointerevents/extension/pointerevent_touch-action-verification.html
imported/w3c/web-platform-tests/pointerevents/idlharness.window.html
imported/w3c/web-platform-tests/pointerevents/pointerevent_constructor.html
imported/w3c/web-platform-tests/pointerevents/pointerevent_on_event_handlers.html
imported/w3c/web-platform-tests/pointerevents/pointerevent_touch-action-illegal.html
imported/w3c/web-platform-tests/pointerevents/pointerevent_touch-action-verification.html
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
Add the new files.
* dom/Event.h:
(WebCore::Event::isPointerEvent const): New virtual identification method.
* dom/EventNames.in: Add PointerEvent so the InterfaceType code is generated.
* dom/PointerEvent.cpp: The PointerEvent interface, as specified by W3C.
(WebCore::PointerEvent::PointerEvent):
(WebCore::PointerEvent::eventInterface const):
* dom/PointerEvent.h: Added.
* dom/PointerEvent.idl: Added.
* page/RuntimeEnabledFeatures.h: Clean up the ordering of the features, so there aren't
confusing blank lines interspersed with #if USE macros.
(WebCore::RuntimeEnabledFeatures::setPointerEventsEnabled): Add a new flag for Pointer Events.
(WebCore::RuntimeEnabledFeatures::pointerEventsEnabled const):
2018-09-21 Ryosuke Niwa <rniwa@webkit.org>
Custom elements in a reaction queue can lose its JS wrapper and become HTMLUnknownElement
https://bugs.webkit.org/show_bug.cgi?id=184307
Reviewed by Keith Miller.
The bug was caused by the custom elements reaction queue not reporting its content to GC during marking.
When there is no JS reference to the JS wrappers of those custom element, and if those custom elements
are disconnected, GC would happily collect those the wrappers. Unfortunately, the same bug exists for
any asynchronous events and other WebCore code which keeps elements alive for a later use but doesn't
report them to GC (e.g. during visitChildren).
This patch, therefore, introduces a generic mechanism to keep these elements' wrappers alive. Namely,
we introduce GCReachableRef, a new smart pointer type for Node's subclasses, which keeps element as well
as its wrappers alive. GCReachableRef works by adding its Node to a global hash counted set when it's
created and making JSNodeOwner::isReachableFromOpaqueRoots return true when the node is in the set.
Test: fast/custom-elements/custom-elements-reaction-queue-retains-js-wrapper.html
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSNodeCustom.cpp:
(WebCore::isReachableFromDOM):
* dom/CustomElementReactionQueue.cpp:
(WebCore::CustomElementReactionQueue::ElementQueue::invokeAll): Don't swap the vector of elements in
in the queue. Assuming each DOM API has an appropriate CustomElementsReactionStack, we should never
append a new element to this queue while invoking custom element reactions.
* dom/CustomElementReactionQueue.h:
* dom/GCReachableRef.cpp: Added.
* dom/GCReachableRef.h: Added.
(WebCore::GCReachableRefMap::contains): Added.
(WebCore::GCReachableRefMap::add): Added.
(WebCore::GCReachableRefMap::remove): Added.
(WebCore::GCReachableRef::GCReachableRef): Added. We need isNull() check since WTFMove may have been
called on the source GCReachableRef.
(WebCore::GCReachableRef::~GCReachableRef): Ditto.
(WebCore::GCReachableRef::operator-> const): Added.
(WebCore::GCReachableRef::get const): Added.
(WebCore::GCReachableRef::operator T& const): Added.
(WebCore::GCReachableRef::operator! const): Added.
(WebCore::GCReachableRef::isNull const): Added. Returns true if WTFMove had been called on Ref.
2018-09-21 Alex Christensen <achristensen@webkit.org>
Use a Variant for FormDataElement
https://bugs.webkit.org/show_bug.cgi?id=189777
Reviewed by Chris Dumez.
* platform/network/FormData.cpp:
(WebCore::FormData::FormData):
(WebCore::FormDataElement::lengthInBytes const):
(WebCore::FormDataElement::isolatedCopy const):
(WebCore::FormData::appendData):
(WebCore::FormData::flatten const):
(WebCore::FormData::resolveBlobReferences):
(WebCore::FormData::generateFiles):
(WebCore::FormData::hasGeneratedFiles const):
(WebCore::FormData::hasOwnedGeneratedFiles const):
(WebCore::FormData::removeGeneratedFilesIfNeeded):
(WebCore::FormData::asSharedBuffer const):
(WebCore::FormData::asBlobURL const):
(WebCore::FormData::expandDataStore): Deleted.
* platform/network/FormData.h:
(WebCore::FormDataElement::FormDataElement):
(WebCore::FormDataElement::encode const):
(WebCore::FormDataElement::decode):
(WebCore::FormDataElement::EncodedFileData::isolatedCopy const):
(WebCore::FormDataElement::EncodedFileData::operator== const):
(WebCore::FormDataElement::EncodedFileData::encode const):
(WebCore::FormDataElement::EncodedFileData::decode):
(WebCore::FormDataElement::EncodedBlobData::operator== const):
(WebCore::FormDataElement::EncodedBlobData::encode const):
(WebCore::FormDataElement::EncodedBlobData::decode):
(WebCore::FormDataElement::operator== const):
(WebCore::FormDataElement::operator!= const):
* platform/network/cf/FormDataStreamCFNet.cpp:
(WebCore::advanceCurrentStream):
(WebCore::createHTTPBodyCFReadStream):
(WebCore::setHTTPBody):
* platform/network/curl/CurlFormDataStream.cpp:
(WebCore::CurlFormDataStream::computeContentLength):
(WebCore::CurlFormDataStream::read):
(WebCore::CurlFormDataStream::readFromFile):
(WebCore::CurlFormDataStream::readFromData):
* platform/network/curl/CurlFormDataStream.h:
2018-09-20 Simon Fraser <simon.fraser@apple.com>
Simplify the logic around has*ScrollbarWithAutoBehavior
https://bugs.webkit.org/show_bug.cgi?id=189813
Reviewed by Zalan Bujtas.
The boolean logic in scrollsOverflowX() and hasHorizontalScrollbarWithAutoBehavior() (and the vertical
equivalents) reduces simply to hasOverflowClip() && (style().overflowX() == Overflow::Scroll || style().overflowX() == Overflow::Auto);
Similarly, RenderBox::intrinsicScrollbarLogicalWidth() just needs the part of the logic
that asks whether the theme uses overlay scrollbars which are not customized (and thus
turned into non-overlay scrollbars).
* rendering/RenderBox.cpp:
(WebCore::RenderBox::intrinsicScrollbarLogicalWidth const):
(WebCore::RenderBox::canUseOverlayScrollbars const):
(WebCore::RenderBox::hasVerticalScrollbarWithAutoBehavior const):
(WebCore::RenderBox::hasHorizontalScrollbarWithAutoBehavior const):
* rendering/RenderBox.h:
(WebCore::RenderBox::scrollsOverflowX const):
(WebCore::RenderBox::scrollsOverflowY const):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateScrollbarsAfterLayout):
2018-09-21 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, rolling out r236255.
Many WebAudio crashes
Reverted changeset:
"[GStreamer] Utilities cleanups"
https://bugs.webkit.org/show_bug.cgi?id=189699
https://trac.webkit.org/changeset/236255
2018-09-21 Jer Noble <jer.noble@apple.com>
Move AVVideoPerformanceMetrics into AVFoundationSPI.h
https://bugs.webkit.org/show_bug.cgi?id=189842
Reviewed by Jon Lee.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
2018-09-21 Chris Dumez <cdumez@apple.com>
WebSQL: User cannot grant quota increase if the JS provides an expected usage value that is too low
https://bugs.webkit.org/show_bug.cgi?id=189801
<rdar://problem/43592498>
Reviewed by Youenn Fablet.
User was unable to grant a quota increase for WebSQL if the JS provided an expected usage value that
is too low. This is because WebKit was passing this provided expectedUsage value to the client for
the purpose of quota increase, even when this expectedUsage value does not make any sense (i.e. it
is lower than the current database size). As a result, the client would grant a quota that is equal
to the previous quota and the JS would not be able to insert any data.
In order to address the issue, when the current quota is exceeded and Database::didExceedQuota()
is called, we now make sure that the expectedUsage value is greater than the current quota. If it
is not, we provide `current quota + 5MB` as expected usage to the client. This way, the client will
grant a quota that is actually increased (provided that the user accepts).
Test: storage/websql/transaction-database-expand-quota.html
* Modules/webdatabase/Database.cpp:
(WebCore::Database::setEstimatedSize):
(WebCore::Database::didExceedQuota):
* Modules/webdatabase/Database.h:
2018-09-21 Youenn Fablet <youenn@apple.com>
Use biplanar CVPixelBuffer for black frames sent to libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=189837
Reviewed by Eric Carlson.
Covered by webrtc/video-mute.html.
Add support to call CVPixelBufferGetBytesPerRowOfPlane.
Make createBlackPixelBuffer use a biplanar CVPixelBuffer as this is better supported in libwebrtc.
It is also what is being used in iOS for capture.
* platform/cocoa/CoreVideoSoftLink.cpp:
* platform/cocoa/CoreVideoSoftLink.h:
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
(WebCore::createBlackPixelBuffer):
2018-09-21 Youenn Fablet <youenn@apple.com>
Add RTCCodecStats support
https://bugs.webkit.org/show_bug.cgi?id=189792
<rdar://problem/32370668>
Reviewed by Eric Carlson.
Covered by updated and rebased tests.
* Modules/mediastream/RTCStatsReport.h:
Removed fields that are already defined in the base class.
(WebCore::RTCStatsReport::CodecStats::CodecStats):
Add support for RTCCodecStats.
* Modules/mediastream/RTCStatsReport.idl:
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::OnStatsDelivered):
* Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.cpp:
(WebCore::fillRTCRTPStreamStats):
(WebCore::fillRTCCodecStats):
(WebCore::LibWebRTCStatsCollector::OnStatsDelivered):
Add routines to fill RTCCodecStats from libwebrtc stats.
2018-09-20 Simon Fraser <simon.fraser@apple.com>
Make "overflow: overlay" a synonym for "overflow: auto"
https://bugs.webkit.org/show_bug.cgi?id=189811
Reviewed by Zalan Bujtas.
The "overlay" value for overflow was added for an internal Safari feature, and only has
an effect (allow the scrollbar to overlap the content) with legacy scrollbars on macOS.
It's little used on the web.
To simplify code in rendering, just make "overflow: overlay" behave like "overflow: auto".
It's still parsed, but turns into an "auto" value internally, and will be returned from getComputedStyle
as "auto".
Test: fast/css/getComputedStyle/getComputedStyle-overflow.html
* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator Overflow const):
* css/CSSProperties.json:
* css/CSSValueKeywords.in:
* css/StyleResolver.cpp:
(WebCore::isScrollableOverflow):
* css/parser/CSSParserFastPaths.cpp:
(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
* page/ios/FrameIOS.mm:
(WebCore::Frame::nodeRespondingToScrollWheelEvents):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::hasVerticalScrollbarWithAutoBehavior const):
(WebCore::RenderBox::hasHorizontalScrollbarWithAutoBehavior const):
* rendering/RenderLayer.cpp:
(WebCore::styleDefinesAutomaticScrollbar):
* rendering/RenderLayerCompositor.cpp:
(WebCore::isScrollableOverflow):
* rendering/style/RenderStyleConstants.h:
2018-09-21 Youenn Fablet <youenn@apple.com>
Centralize which CVPixelBuffer format is being used
https://bugs.webkit.org/show_bug.cgi?id=189772
Reviewed by Eric Carlson.
Get the format type from a single point.
This changes the video capture and mock realtime video sources on Mac to use a biplanar format.
No observable change of behavior.
* WebCore.xcodeproj/project.pbxproj:
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::setSizeAndFrameRateWithPreset):
(WebCore::AVVideoCaptureSource::setupCaptureSession):
(WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection):
* platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
(WebCore::MockRealtimeVideoSourceMac::updateSampleBuffer):
(WebCore::MockRealtimeVideoSourceMac::setSizeAndFrameRateWithPreset):
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
(WebCore::createBlackPixelBuffer):
* platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:
(WebCore::RealtimeOutgoingVideoSourceCocoa::sampleBufferUpdated):
* platform/mediastream/mac/RealtimeVideoUtilities.h: Added.
2018-09-21 Antoine Quint <graouts@apple.com>
REGRESSION (r235962-r235963): Layout Test animations/suspend-resume-animation-events.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=189607
<rdar://problem/44652315>
Reviewed by Dean Jackson.
There is no reason we shouldn't return the document timeline's time when suspended as otherwise animations may
report an unresolved current time when suspended which would wreak havoc when invalidating what DOM events to
dispatch for CSS Animations and Transitions. We also shouldn't be invalidation DOM events when suspended.
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::currentTime):
(WebCore::DocumentTimeline::DocumentTimeline::performInvalidationTask):
2018-09-21 Mike Gorse <mgorse@suse.com>
Build tools should work when the /usr/bin/python is python3
https://bugs.webkit.org/show_bug.cgi?id=156674
Reviewed by Michael Catanzaro.
No new tests (no behavior change).
* platform/network/create-http-header-name-table: remove xreadlines.
2018-09-21 Jer Noble <jer.noble@apple.com>
[EME] Introduce the concept of CDMInstanceSession.
https://bugs.webkit.org/show_bug.cgi?id=189725
Reviewed by Eric Carlson.
Currently, the same CDMInstance owned by a MediaKeys object is passed to every MediaKeySession created by that
MediaKeys, and since the CDMInstance has only a single CDMInstanceClient, subsequent MediaKeySessions prevent
previous ones from getting updates.
Add a new virtual interface, CDMInstanceSession, to be passed to MediaKeySession upon creation. Refactor
CDMInstanceClearKey and CDMInstanceFairPlayStreamingAVFObjC to adopt this new interface.
Drive-by fixes: Made a number of virtual overrides in final classes final themselves.
* Modules/encryptedmedia/MediaKeySession.cpp:
(WebCore::MediaKeySession::create):
(WebCore::MediaKeySession::MediaKeySession):
(WebCore::MediaKeySession::generateRequest):
(WebCore::MediaKeySession::load):
(WebCore::MediaKeySession::update):
(WebCore::MediaKeySession::remove):
(WebCore::MediaKeySession::updateKeyStatuses):
* Modules/encryptedmedia/MediaKeySession.h:
* Modules/encryptedmedia/MediaKeys.cpp:
(WebCore::MediaKeys::createSession):
* WebCore.xcodeproj/project.pbxproj:
* platform/encryptedmedia/CDMInstance.h:
(WebCore::CDMInstance::setHDCPStatus):
(WebCore::CDMInstance::setClient): Deleted.
(WebCore::CDMInstance::clearClient): Deleted.
* platform/encryptedmedia/CDMInstanceSession.h: Copied from Source/WebCore/platform/encryptedmedia/CDMInstance.h.
(WebCore::CDMInstanceSession::setClient):
(WebCore::CDMInstanceSession::clearClient):
* platform/encryptedmedia/clearkey/CDMClearKey.cpp:
(WebCore::parseLicenseFormat):
(WebCore::CDMInstanceClearKey::keySystem const):
(WebCore::CDMInstanceClearKey::createSession):
(WebCore::CDMInstanceSessionClearKey::requestLicense):
(WebCore::CDMInstanceSessionClearKey::keys const):
(WebCore::CDMInstanceSessionClearKey::updateLicense):
(WebCore::CDMInstanceSessionClearKey::loadSession):
(WebCore::CDMInstanceSessionClearKey::closeSession):
(WebCore::CDMInstanceSessionClearKey::removeSessionData):
(WebCore::CDMInstanceSessionClearKey::storeRecordOfKeyUsage):
(WebCore::CDMInstanceClearKey::requestLicense): Deleted.
(WebCore::CDMInstanceClearKey::keys const): Deleted.
(WebCore::CDMInstanceClearKey::updateLicense): Deleted.
(WebCore::CDMInstanceClearKey::loadSession): Deleted.
(WebCore::CDMInstanceClearKey::closeSession): Deleted.
(WebCore::CDMInstanceClearKey::removeSessionData): Deleted.
(WebCore::CDMInstanceClearKey::storeRecordOfKeyUsage): Deleted.
* platform/encryptedmedia/clearkey/CDMClearKey.h:
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::createSession):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::processContentKeyRequestForSession):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::processNextContentKeyRequest):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::keySystem const):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::didProvideRequest):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::didProvideRenewingRequest):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::didProvidePersistableRequest):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::didFailToProvideRequest):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::requestDidSucceed):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::shouldRetryRequestForReason):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::sessionIdentifierChanged):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::CDMInstanceSessionFairPlayStreamingAVFObjC):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::keyIDs):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::requestLicense):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::loadSession):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::closeSession):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::removeSessionData):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::storeRecordOfKeyUsage):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::setClient):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::clearClient):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequest):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRenewingRequest):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvidePersistableRequest):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didFailToProvideRequest):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::requestDidSucceed):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::shouldRetryRequestForReason):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::sessionIdentifierChanged):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::isLicenseTypeSupported const):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::isLicenseTypeSupported const): Deleted.
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::keyIDs): Deleted.
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::requestLicense): Deleted.
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::updateLicense): Deleted.
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::loadSession): Deleted.
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::closeSession): Deleted.
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::removeSessionData): Deleted.
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::storeRecordOfKeyUsage): Deleted.
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::setClient): Deleted.
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::clearClient): Deleted.
* testing/MockCDMFactory.cpp:
(WebCore::MockCDMInstance::keySystem const):
(WebCore::MockCDMInstance::createSession):
(WebCore::MockCDMInstanceSession::MockCDMInstanceSession):
(WebCore::MockCDMInstanceSession::requestLicense):
(WebCore::MockCDMInstanceSession::updateLicense):
(WebCore::MockCDMInstanceSession::loadSession):
(WebCore::MockCDMInstanceSession::closeSession):
(WebCore::MockCDMInstanceSession::removeSessionData):
(WebCore::MockCDMInstanceSession::storeRecordOfKeyUsage):
(WebCore::MockCDMInstance::requestLicense): Deleted.
(WebCore::MockCDMInstance::updateLicense): Deleted.
(WebCore::MockCDMInstance::loadSession): Deleted.
(WebCore::MockCDMInstance::closeSession): Deleted.
(WebCore::MockCDMInstance::removeSessionData): Deleted.
(WebCore::MockCDMInstance::storeRecordOfKeyUsage): Deleted.
* testing/MockCDMFactory.h:
(WebCore::MockCDMInstance::factory const):
(WebCore::MockCDMInstance::distinctiveIdentifiersAllowed const):
(WebCore::MockCDMInstance::persistentStateAllowed const):
2018-09-21 Alicia Boya García <aboya@igalia.com>
[MSE] Fix comparsion with uninitialized greatestDecodeDuration
https://bugs.webkit.org/show_bug.cgi?id=189805
Reviewed by Michael Catanzaro.
This bug was causing greatestDecodeDuration to never be initialized,
which in turned caused unintended frame erase as distant appends where
not being recognized as distinct coded frame groups.
A test reproducing the sequence of appends that caused unintended
frame deletion has also been added (media-source-append-out-of-order.html).
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):
2018-09-21 Antoine Quint <graouts@apple.com>
[Web Animations] Accelerated animations don't get suspended
https://bugs.webkit.org/show_bug.cgi?id=189783
<rdar://problem/44652315>
Unreviewed, correct a merge error in the previous commit.
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::performInvalidationTask):
2018-09-21 Antoine Quint <graouts@apple.com>
[Web Animations] Accelerated animations don't get suspended
https://bugs.webkit.org/show_bug.cgi?id=189783
<rdar://problem/43033568>
Reviewed by Dean Jackson.
Test: webanimations/accelerated-animation-suspension.html
We used to set the flag that marked the timeline as suspended prior to notifying animations that they need to be suspended.
However, since the timeline was marked as suspended, querying the running state of the animations would indicate that the
animations weren't running since a suspended timeline would identify its animations as not running. As such we would fail
to pause the accelerated animations because they were already not marked as running. We now set the suspended flag on the
timeline _after_ suspending its animations.
We also fix a bug in the new internals.acceleratedAnimationsForElement() test function so that we read from the actual
CA animations and not from a stale list of animations which would not indicate the correct animation speeds.
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::suspendAnimations):
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::acceleratedAnimationsForTesting):
2018-09-21 Zan Dobersek <zdobersek@igalia.com>
TransformationMatrix::toColumnMajorFloatArray() should return a std::array<> object
https://bugs.webkit.org/show_bug.cgi?id=189823
Reviewed by Michael Catanzaro.
Alias the TransformationMatrix::FloatMatrix4 type to
std::array<float, 16>. Instead of filling out the array object that's
passed in through a reference parameter, return the std::array<>
object from the function.
* Modules/webvr/VRFrameData.cpp:
(WebCore::matrixToArray):
* Modules/webvr/VRStageParameters.cpp:
(WebCore::VRStageParameters::sittingToStandingTransform const):
* platform/graphics/texmap/TextureMapperShaderProgram.cpp:
(WebCore::TextureMapperShaderProgram::setMatrix):
* platform/graphics/transforms/TransformationMatrix.cpp:
(WebCore::TransformationMatrix::toColumnMajorFloatArray const):
* platform/graphics/transforms/TransformationMatrix.h:
2018-09-21 Zan Dobersek <zdobersek@igalia.com>
FloatQuad point getters should return const references
https://bugs.webkit.org/show_bug.cgi?id=189821
Reviewed by Yusuke Suzuki.
Be pedantic and have the FloatQuad point getters return const references
to the FloatPoint member variables, instead of technically creating
copies of them (though much of this copying is eliminated when the
getters are inlined).
* platform/graphics/FloatQuad.h:
(WebCore::FloatQuad::p1 const):
(WebCore::FloatQuad::p2 const):
(WebCore::FloatQuad::p3 const):
(WebCore::FloatQuad::p4 const):
2018-09-20 Antoine Quint <graouts@apple.com>
[Web Animations] DocumentTimeline::updateAnimations() is called endlessly
https://bugs.webkit.org/show_bug.cgi?id=189784
<rdar://problem/41705679>
Reviewed by Dean Jackson.
Test: webanimations/accelerated-animation-interruption-display-none.html
We have code that keeps queueing pending accelerated actions for an animation that does not have a renderer until it has one
so that we can deal with situations where animations are ready to commited before its composited renderer is available. This
code ended up running continuously when an element with an accelerated animation had its renderer removed without the animation
being removed itself, such as setting "display: none" on an element with an acceelerated CSS Animation targeting it.
We fix this by queueing up a "Stop" accelerated action when updating the accelerated state if there is no renderer for the current
animation target. Then, we no longer re-queue pending accelerated actions if the last queued operation is "Stop". This ensures that
we no longer queue actions endlessly when there is no longer a visible animation.
To test this, we add a new internals.numberOfAnimationTimelineInvalidations() method that indicates the number of times the current
document's animation timeline was invalidated.
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::updateAnimations):
(WebCore::DocumentTimeline::numberOfAnimationTimelineInvalidationsForTesting const):
* animation/DocumentTimeline.h:
* animation/KeyframeEffectReadOnly.cpp:
(WebCore::KeyframeEffectReadOnly::updateAcceleratedAnimationState): If the animation target does not have a renderer and it's still
marked as running, enqueue a "Stop" accelerated action.
(WebCore::KeyframeEffectReadOnly::addPendingAcceleratedAction): If we enqueue a "Stop" accelerated action, remove any other queued
action so that we only process the "Stop" action, which would have superseded all previously queued actions anyway.
(WebCore::KeyframeEffectReadOnly::applyPendingAcceleratedActions): Only re-queue pending accelerated actions when a composited renderer
is not yet available if we don't have a "Stop" action queued.
* testing/Internals.cpp:
(WebCore::Internals::numberOfAnimationTimelineInvalidations const):
* testing/Internals.h:
* testing/Internals.idl:
2018-09-21 Yacine Bandou <yacine.bandou@softathome.com>
[EME] Fix typo in WebM sanitization variable
https://bugs.webkit.org/show_bug.cgi?id=189789
Reviewed by Xabier Rodriguez-Calvar.
This commit corrects a typo in the name of a local variable, sanitizedBuffer
instead of sanitazedBuffer.
* Modules/encryptedmedia/InitDataRegistry.cpp:
(WebCore::extractKeyIDsWebM):
2018-09-20 Dean Jackson <dino@apple.com>
Restrict the total combined size of backdrop filters
https://bugs.webkit.org/show_bug.cgi?id=189812
<rdar://problem/44532782>
Reviewed by Simon Fraser.
If the total area of all backdrop filters on the page gets
too large, the universe collapses in on itself and we enter
the Quantum Realm (i.e. crash horribly).
Put a hard limit on the total coverage, and ignore any backdrop
filters after the limit. This might break some content, but
such content is likely not doing things in the most optimal manner.
There isn't any reason to have a backdrop larger than the size of
the screen, because you'd be better off applying a foreground
filter to the main content and showing something above it.
Tests: css3/filters/backdrop/resource-use-add-more-layers.html
css3/filters/backdrop/resource-use-excessive.html
css3/filters/backdrop/resource-use-ok.html
css3/filters/backdrop/resource-use-remove-some-layers.html
* platform/graphics/ca/GraphicsLayerCA.cpp: Pick a fairly small maximum size. We
can consider increasing this if necessary, and as devices with less RAM are
upgraded.
(WebCore::GraphicsLayerCA::recursiveCommitChanges): Gather the accumulated size
of backdrop filters into the commit state as we are recursing through the tree.
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers): Force any layer
with backdrop filters, or any that is removing backdrop filters, into an update.
(WebCore::GraphicsLayerCA::updateBackdropFilters): Update the logic to first
check if this backdrop layer causes us to exceed the total allowed size, and if
it does, forbid it from getting the GraphicsLayer that composits the backdrop.
* platform/graphics/ca/GraphicsLayerCA.h: Remove const from some parameters so
that we can use the CommitState to hold the accumulated size.
2018-09-20 Benjamin Poulain <benjamin@webkit.org>
Adopt safe-area-insets on ImageDocument
https://bugs.webkit.org/show_bug.cgi?id=189774
Reviewed by Tim Horton.
rdar://problem/44624432
By having the safe-area insets on the image, we ensure that they only
grow the document if there is not enough space. This also ensures the image
does not have parts under UI elements.
* html/ImageDocument.cpp:
(WebCore::ImageDocument::createDocumentStructure):
(WebCore::ImageDocument::imageUpdated):
2018-09-20 Zalan Bujtas <zalan@apple.com>
Release assert under RenderView::pageOrViewLogicalHeight
https://bugs.webkit.org/show_bug.cgi?id=189798
<rdar://problem/43659749>
Reviewed by Simon Fraser.
Only the mainframe's render view is sized to the page while printing.
Use the matching check (see RenderView::layout) when accessing m_pageLogicalSize.
Test: printing/crash-while-formatting-subframe-for-printing.html
* rendering/RenderView.cpp:
(WebCore::RenderView::pageOrViewLogicalHeight const):
2018-09-20 Sihui Liu <sihui_liu@apple.com>
REGRESSION(r196265): WKWebView fires mouseover, mouseenter, and mouseleave events even when it's in a background window
https://bugs.webkit.org/show_bug.cgi?id=187545
<rdar://problem/42401575>
Reviewed by Ryosuke Niwa.
When the window is not active, we should only update the scrollbar for mouse events. GTK
apps have different expectation on this behavior.
Test: fast/events/inactive-window-no-mouse-event.html
* page/EventHandler.cpp:
(WebCore::EventHandler::handleMouseMoveEvent):
(WebCore::EventHandler::shouldSendMouseEventsToInactiveWindows const):
* page/EventHandler.h:
2018-09-20 Alex Christensen <achristensen@webkit.org>
Unreviewed, rolling out r235976.
Broke ARM
Reverted changeset:
"Use a Variant instead of a union in CSSSelector"
https://bugs.webkit.org/show_bug.cgi?id=188559
https://trac.webkit.org/changeset/235976
2018-09-20 Oriol Brufau <obrufau@igalia.com>
Fix 'border' serialization with both common and uncommon values
https://bugs.webkit.org/show_bug.cgi?id=189597
Reviewed by Simon Fraser.
Remove CommonValueMode enum and make borderPropertyValue always return null
when there are uncommon values (the previous ReturnNullOnUncommonValues mode).
Test: fast/css/getPropertyValue-border.html
Test: fast/dom/css-shorthand-common-value.html
* css/StyleProperties.cpp:
(WebCore::StyleProperties::getPropertyValue const):
(WebCore::StyleProperties::borderPropertyValue const):
(WebCore::StyleProperties::asText const):
* css/StyleProperties.h:
2018-09-20 Justin Michaud <justin_michaud@apple.com>
Implement CSS Custom Properties and Values Skeleton
https://bugs.webkit.org/show_bug.cgi?id=189694
Reviewed by Simon Fraser.
Add feature flag, CSS.registerProperty binding and registered property set in Document.h
for the css custom properties and values api.
Test: css-properties-values-api/registerProperty.html
* CMakeLists.txt:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSRegisteredCustomProperty.h: Added.
* css/DOMCSSCustomPropertyDescriptor.h: Added.
* css/DOMCSSCustomPropertyDescriptor.idl: Added.
* css/DOMCSSNamespace.h:
* css/DOMCSSRegisterCustomProperty.cpp: Added.
(WebCore::DOMCSSRegisterCustomProperty::registerProperty):
(WebCore::DOMCSSRegisterCustomProperty::from):
(WebCore::DOMCSSRegisterCustomProperty::supplementName):
* css/DOMCSSRegisterCustomProperty.h: Added.
* css/DOMCSSRegisterCustomProperty.idl: Added.
* css/parser/CSSParserContext.cpp:
* dom/Document.cpp:
(WebCore::Document::registerCSSProperty):
* dom/Document.h:
* features.json:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setCSSCustomPropertiesAndValuesEnabled):
(WebCore::RuntimeEnabledFeatures::cssCustomPropertiesAndValuesEnabled const):
2018-09-20 Justin Michaud <justin_michaud@apple.com>
JS bindings generator should support EnabledAtRuntime for static methods
https://bugs.webkit.org/show_bug.cgi?id=189729
Reviewed by Chris Dumez.
Add support for EnabledAtRuntime to static methods in the JS bindings
code generator.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateRuntimeEnableConditionalStringForExposed):
(GenerateRuntimeEnableConditionalString):
(GetRuntimeEnabledStaticProperties):
(GenerateConstructorHelperMethods):
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
(WebCore::JSTestGlobalObjectConstructor::initializeProperties):
(WebCore::JSTestGlobalObject::finishCreation):
(WebCore::jsTestGlobalObjectConstructorFunctionEnabledAtRuntimeOperationStaticBody):
(WebCore::jsTestGlobalObjectConstructorFunctionEnabledAtRuntimeOperationStatic):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObjConstructor::initializeProperties):
(WebCore::jsTestObjConstructorEnabledAtRuntimeAttributeStaticGetter):
(WebCore::jsTestObjConstructorEnabledAtRuntimeAttributeStatic):
(WebCore::setJSTestObjConstructorEnabledAtRuntimeAttributeStaticSetter):
(WebCore::setJSTestObjConstructorEnabledAtRuntimeAttributeStatic):
(WebCore::jsTestObjConstructorFunctionEnabledAtRuntimeOperationStaticBody):
(WebCore::jsTestObjConstructorFunctionEnabledAtRuntimeOperationStatic):
* bindings/scripts/test/TestGlobalObject.idl:
* bindings/scripts/test/TestObj.idl:
2018-09-20 Per Arne Vollan <pvollan@apple.com>
[WebVTT] Update the parser according to the new region syntax.
https://bugs.webkit.org/show_bug.cgi?id=189767
Reviewed by Eric Carlson.
The majority of the code added in this patch is adopted from the Chromium project, which has added
support for the new region syntax. The complete parser specification can be found at
https://w3c.github.io/webvtt/#file-parsing. One small difference in behavior is that the new parser
will not add regions with empty id.
No new tests, covered by existing tests.
* html/track/WebVTTParser.cpp:
(WebCore::WebVTTParser::getNewRegions):
(WebCore::WebVTTParser::parse):
(WebCore::WebVTTParser::collectRegionSettings):
(WebCore::WebVTTParser::collectWebVTTBlock):
(WebCore::WebVTTParser::checkAndRecoverCue):
(WebCore::WebVTTParser::checkAndCreateRegion):
(WebCore::WebVTTParser::checkAndStoreRegion):
(WebCore::WebVTTParser::collectMetadataHeader): Deleted.
(WebCore::WebVTTParser::createNewRegion): Deleted.
* html/track/WebVTTParser.h:
2018-09-20 Alicia Boya García <aboya@igalia.com>
[GStreamer][MSE] Add a default sample duration
https://bugs.webkit.org/show_bug.cgi?id=189788
Some WebM files don't provide sample durations, so we need to provide
a safe default in order for them to be playable.
Reviewed by Michael Catanzaro.
* platform/graphics/gstreamer/MediaSampleGStreamer.cpp:
(WebCore::MediaSampleGStreamer::MediaSampleGStreamer):
2018-09-20 Alicia Boya García <aboya@igalia.com>
[MSE] Use some tolerance when deciding whether a frame should be appended to the decode queue
https://bugs.webkit.org/show_bug.cgi?id=189782
Reviewed by Xabier Rodriguez-Calvar.
Ideally, container formats should use exact timestamps and frames
should not overlap. Unfortunately, there are lots of files out there
where this is not always the case.
This is particularly a problem in WebM, where timestamps are expressed
in a power of 10 timescale, which forces some rounding.
This patch makes SourceBuffer allow frames with a small overlaps
(<=1ms) as those usually found in WebM. 1 ms is chosen because it's
the default time scale of WebM files.
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):
2018-09-20 Yacine Bandou <yacine.bandou@softathome.com>
[EME] Add WebM sanitization
https://bugs.webkit.org/show_bug.cgi?id=189740
Reviewed by Xabier Rodriguez-Calvar.
This patch adds support for sanitizing the WebM initialization data,
ensures there are no bogus values.
See https://www.w3.org/TR/encrypted-media/#dom-mediakeysession-generaterequest.
Tests: imported/w3c/web-platform-tests/encrypted-media/clearkey-generate-request-disallowed-input.https.html
* Modules/encryptedmedia/InitDataRegistry.cpp:
(WebCore::sanitizeWebM): Added implementation, check if the initialization data doesn't empty and its size
should be less than 64KB, return the buffer copy if it is ok, otherwise a nullptr.
(WebCore::extractKeyIDsWebM): Added implementation.
2018-09-20 Philippe Normand <pnormand@igalia.com>
[GStreamer] Utilities cleanups
https://bugs.webkit.org/show_bug.cgi?id=189699
Reviewed by Xabier Rodriguez-Calvar.
The GstMappedBuffer now has a move constructor so that it can be easily
reused in the webaudiosrc element. The now-unused corresponding
buffer-mapping utilities are removed from the code-base.
The HTTP source element used to handle a GstBuffer in its private
structure but this is no longer required since data is now pushed
in chunks, see bug #182829.
* platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
(webKitWebAudioSrcLoop):
* platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::createGstBuffer): Deleted.
(WebCore::createGstBufferForData): Deleted.
(WebCore::getGstBufferDataPointer): Deleted.
(WebCore::mapGstBuffer): Deleted.
(WebCore::unmapGstBuffer): Deleted.
* platform/graphics/gstreamer/GStreamerCommon.h:
(WebCore::GstMappedBuffer::create): New method returning a
reference to a newly created GstMappedBuffer instance.
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webKitWebSrcStop): Remove reference to unused GstBuffer.
(CachedResourceStreamingClient::dataReceived): Ditto.
2018-09-20 Simon Fraser <simon.fraser@apple.com>
Fix crash under FontCache::purgeInactiveFontData() when a memory warning fires
https://bugs.webkit.org/show_bug.cgi?id=189722
rdar://problem/44182860
Reviewed by Myles C. Maxfield.
Hashing of FontPlatformData for cachedFonts() is somewhat broken because CFEqual() on CTFont
can return false when the fonts are actually the same, and have the same CFHash(). This
can result in multiple entries in cachedFonts() with the same Font.
Then in FontCache::purgeInactiveFontData(), the loop that appends fonts to fontsToDelete
gets the value by reference, and WTFMoves it into fontsToDelete. This nulls out all
the entries sharing the same value, leaving null entries in the hash table.
We later crash at font->hasOneRef() when using one of those null entries.
Fix by making a copy of the RefPtr<Font> in the loop, so the WTFMove doesn't nuke
the hash table entries. The entries will get removed at cachedFonts().remove() lower down.
* platform/graphics/FontCache.cpp:
(WebCore::FontCache::purgeInactiveFontData):
2018-09-20 Antoine Quint <graouts@apple.com>
[Web Animations] Provide a way to query accelerated animations for internal testing
https://bugs.webkit.org/show_bug.cgi?id=189762
Reviewed by Dean Jackson.
Expose a new internals.acceleratedAnimationsForElement(element) method to allow layout tests to query the current list
of accelerated animations for a given element. Currently only the animated property and animation speed are exposed, which
will allow us to identify missing, running and paused accelerated animations.
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::acceleratedAnimationsForElement const):
* animation/DocumentTimeline.h:
* platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::acceleratedAnimationsForTesting const):
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
* platform/graphics/ca/GraphicsLayerCA.h:
* testing/Internals.cpp:
(WebCore::Internals::acceleratedAnimationsForElement):
* testing/Internals.h:
* testing/Internals.idl:
2018-09-19 Ryosuke Niwa <rniwa@webkit.org>
Improve node statistics for rare data
https://bugs.webkit.org/show_bug.cgi?id=189775
Reviewed by Simon Fraser.
Report reasons we created NodeRareData and ElementRareData in node statistics.
Added NodeRareData::useTypes and ElementRareData::useTypes which returns OptionSet<NodeRareData::UseType>
indicating which instance member of the rare data is currently in use.
* dom/Element.cpp:
* dom/Element.h:
* dom/ElementRareData.h:
(WebCore::defaultMinimumSizeForResizing):
(WebCore::ElementRareData::useTypes const):
* dom/Node.cpp:
(WebCore::stringForRareDataUseType):
(WebCore::Node::dumpStatistics):
* dom/NodeRareData.cpp:
* dom/NodeRareData.h:
(WebCore::NodeRareData::useTypes const):
2018-09-19 Ryosuke Niwa <rniwa@webkit.org>
REGRESSION(r235917): 2% regression in Dromaeo CSS selector on MacBookPro11,4
https://bugs.webkit.org/show_bug.cgi?id=189738
Reviewed by Yusuke Suzuki.
The regression was caused by the regundant walk to the parent element. Removed it to fix the regression.
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateNthChildParentCheckAndRelationUpdate):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateNthLastChildParentCheckAndRelationUpdate):
2018-09-19 John Wilander <wilander@apple.com>
Resource Load Statistics: Add optional cap on partitioned cache max age
https://bugs.webkit.org/show_bug.cgi?id=189711
<rdar://problem/39246837>
Reviewed by Antti Koivisto and Chris Dumez.
Test: http/tests/resourceLoadStatistics/cap-cache-max-age-for-prevalent-resource.html
* platform/network/NetworkStorageSession.h:
* platform/network/cf/NetworkStorageSessionCFNet.cpp:
(WebCore::NetworkStorageSession::maxAgeCacheCap):
Checks if a max age cap is set and returns it if the request
represents a prevalent resource.
(WebCore::NetworkStorageSession::setCacheMaxAgeCapForPrevalentResources):
(WebCore::NetworkStorageSession::resetCacheMaxAgeCapForPrevalentResources):
New functionality to receive a max age cap setting in the session.
2018-09-19 Youenn Fablet <youenn@apple.com>
Layout Test webrtc/video-mute.html is flaky.
https://bugs.webkit.org/show_bug.cgi?id=177501
Reviewed by Eric Carlson.
Covered by updated test expectation.
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
(WebCore::createBlackPixelBuffer): Make sure the whole buffer is properly initialized.
2018-09-19 David Kilzer <ddkilzer@apple.com>
WebCoreNSURLSession leaks an NSString (_sessionDescription) in -dealloc
<https://webkit.org/b/189742>
<rdar://problem/44589774>
Reviewed by Joseph Pecoraro.
* platform/network/cocoa/WebCoreNSURLSession.h:
(WebCoreNSURLSession._sessionDescription): Change type from
NSString * to RetainPtr<NSString>.
* platform/network/cocoa/WebCoreNSURLSession.mm: Remove
@synthesized statement for sessionDescription so that custom
methods can be implemented to handle RetainPtr<NSString>.
(-[WebCoreNSURLSession sessionDescription]): Add.
(-[WebCoreNSURLSession setSessionDescription:]): Add.
2018-09-19 Youenn Fablet <youenn@apple.com>
Implement sender/receiver getStats
https://bugs.webkit.org/show_bug.cgi?id=189707
Reviewed by Eric Carlson.
Add support for sender and receiver getStats.
Also add support for peer connection selector parameter.
Add the plumbing of the selector to LibWebRTCMediaEndpoint.
Then make use of libwebrtc overloaded methods to retrieve the right stats.
Covered by updated/rebased tests.
* Modules/mediastream/PeerConnectionBackend.h:
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::getStats):
* Modules/mediastream/RTCPeerConnection.h:
* Modules/mediastream/RTCPeerConnection.idl:
* Modules/mediastream/RTCRtpReceiver.cpp:
(WebCore::RTCRtpReceiver::RTCRtpReceiver):
(WebCore::RTCRtpReceiver::getStats):
* Modules/mediastream/RTCRtpReceiver.h:
(WebCore::RTCRtpReceiver::create):
(WebCore::RTCRtpReceiver::backend):
* Modules/mediastream/RTCRtpReceiver.idl:
* Modules/mediastream/RTCRtpSender.cpp:
(WebCore::RTCRtpSender::create):
(WebCore::RTCRtpSender::RTCRtpSender):
(WebCore::RTCRtpSender::getStats):
* Modules/mediastream/RTCRtpSender.h:
* Modules/mediastream/RTCRtpSender.idl:
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::getStats):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::getStats):
(WebCore::backendFromRTPSender):
(WebCore::createReceiverForSource):
(WebCore::LibWebRTCPeerConnectionBackend::createReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::videoReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::audioReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::addTrack):
(WebCore::LibWebRTCPeerConnectionBackend::addUnifiedPlanTransceiver):
(WebCore::LibWebRTCPeerConnectionBackend::addTransceiver):
(WebCore::LibWebRTCPeerConnectionBackend::newRemoteTransceiver):
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
* Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.h:
2018-09-19 Jer Noble <jer.noble@apple.com>
REGRESSION (r236006): New waitingForKey() requirement breaks Modern EME tests.
https://bugs.webkit.org/show_bug.cgi?id=189720
<rdar://problem/44572140>
Reviewed by Xabier Rodriguez-Calvar.
Always call waitingForKey() after calling initializationDataEncountered().
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::initializationDataEncountered):
2018-09-19 Philippe Normand <pnormand@igalia.com>
[GStreamer] Add support for AV1 decoding
https://bugs.webkit.org/show_bug.cgi?id=189647
Tweaked by Xabier Rodriguez Calvar <calvaris@igalia.com>.
Reviewed by Žan Doberšek.
AV1 can be muxed in MP4 and WebM containers. The test is an adaptation from Chromium's unittest:
https://chromium.googlesource.com/chromium/src/+/master/content/browser/media/media_canplaytype_browsertest.cc
Test: media/media-can-play-av1.html
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::supportsType): Add AV1
support. The av01 codec has to be explicitely checked, along with
the presence of a compatible AV1 decoder.
2018-09-18 Basuke Suzuki <Basuke.Suzuki@sony.com>
[Curl] Limit capturing extra metrics for Web Inspector when not required.
https://bugs.webkit.org/show_bug.cgi?id=189520
Reviewed by Alex Christensen.
Respect the value of NetworkDataTask::shouldCaptureExtraNetworkLoadMetrics() to reduce the process
time when they are not needed.
No new tests because there's no behavior change.
* platform/network/curl/CurlContext.cpp:
(WebCore::CurlHandle::getNetworkLoadMetrics):
(WebCore::CurlHandle::addExtraNetworkLoadMetrics):
* platform/network/curl/CurlContext.h:
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::CurlRequest):
(WebCore::CurlRequest::updateNetworkLoadMetrics):
* platform/network/curl/CurlRequest.h:
(WebCore::CurlRequest::create):
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::createCurlRequest):
2018-09-18 Megan Gardner <megan_gardner@apple.com>
Support Images Module Level 4's double-position gradient color stop syntax
https://bugs.webkit.org/show_bug.cgi?id=186154
<rdar://problem/44158152>
Reviewed by Simon Fraser.
The CSS spec for all gradients allows for each color stop to have two angles to be used for hints.
This makes pie chart and checkerboard conic gradients much simpler to write.
Any time you want to have a hard line in a gradient, this syntax simplifies the gradient specification.
Test: fast/gradients/conic-two-hints.html
Test: fast/gradients/linear-two-hints-angle.html
Test: fast/gradients/linear-two-hints.html
Test: fast/gradients/radial-two-hints.html
* css/parser/CSSPropertyParserHelpers.cpp:
(WebCore::CSSPropertyParserHelpers::consumeAngularGradientColorStops): Removed.
(WebCore::CSSPropertyParserHelpers::consumeGradientColorStops):
2018-09-18 Simon Fraser <simon.fraser@apple.com>
Remove the unused RenderLayerCompositor::enclosingCompositorFlushingLayers()
https://bugs.webkit.org/show_bug.cgi?id=189689
Reviewed by Alex Christensen.
enclosingCompositorFlushingLayers() was added in r76196 but never used. Also use
a SetForScope<>.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::flushPendingLayerChanges):
(WebCore::RenderLayerCompositor::enclosingCompositorFlushingLayers const): Deleted.
* rendering/RenderLayerCompositor.h:
2018-09-18 Joseph Pecoraro <pecoraro@apple.com>
[macOS] Frequent leaks seen under WebCore::gpuIDForDisplayMask
https://bugs.webkit.org/show_bug.cgi?id=189685
<rdar://problem/44541974>
Reviewed by Per Arne Vollan.
* platform/mac/PlatformScreenMac.mm:
(WebCore::gpuIDForDisplayMask):
2018-09-18 Youenn Fablet <youenn@apple.com>
Implement RTCRtpReceiver getContributingSources/getSynchronizationSources
https://bugs.webkit.org/show_bug.cgi?id=189671
Reviewed by Eric Carlson.
Introduce implementation of these two methods by calling the libwebrtc corresponding method.
Add corresponding IDL as per spec.
Covered by rebased WPT tests.
* CMakeLists.txt:
* DerivedSources.make:
* Modules/mediastream/RTCRtpContributingSource.h: Added.
* Modules/mediastream/RTCRtpContributingSource.idl: Added.
* Modules/mediastream/RTCRtpReceiver.h:
(WebCore::RTCRtpReceiver::getContributingSources const):
(WebCore::RTCRtpReceiver::getSynchronizationSources const):
* Modules/mediastream/RTCRtpReceiver.idl:
* Modules/mediastream/RTCRtpReceiverBackend.h:
(WebCore::RTCRtpReceiverBackend::getContributingSources const):
(WebCore::RTCRtpReceiverBackend::getSynchronizationSources const):
* Modules/mediastream/RTCRtpSynchronizationSource.h: Added.
* Modules/mediastream/RTCRtpSynchronizationSource.idl: Added.
* Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp:
(WebCore::fillRTCRtpContributingSource):
(WebCore::toRTCRtpContributingSource):
(WebCore::toRTCRtpSynchronizationSource):
(WebCore::LibWebRTCRtpReceiverBackend::getContributingSources const):
(WebCore::LibWebRTCRtpReceiverBackend::getSynchronizationSources const):
* Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.h:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2018-09-18 Youenn Fablet <youenn@apple.com>
Enable Unified Plan by default
https://bugs.webkit.org/show_bug.cgi?id=189675
Reviewed by Eric Carlson.
RTCRtpTransceiver.currentDirection is now gated by the unified plan runtime flag.
This will allow easy feature detection of unified plan support.
Covered by updated test.
* Modules/mediastream/RTCRtpTransceiver.idl:
2018-09-18 Per Arne Vollan <pvollan@apple.com>
[WebVTT] change "middle" to "center" for consistency with CSS
https://bugs.webkit.org/show_bug.cgi?id=158478
Reviewed by Eric Carlson.
No new tests, covered by existing tests.
* html/track/TextTrackCueGeneric.cpp:
(WebCore::TextTrackCueGenericBoxElement::applyCSSProperties):
* html/track/VTTCue.cpp:
(WebCore::centerKeyword):
(WebCore::VTTCue::initialize):
(WebCore::VTTCue::align const):
(WebCore::VTTCue::setAlign):
(WebCore::VTTCue::calculateDisplayParameters):
(WebCore::VTTCue::setCueSettings):
(WebCore::middleKeyword): Deleted.
* html/track/VTTCue.h:
* html/track/WebVTTParser.cpp:
(WebCore::WebVTTTreeBuilder::buildFromString):
2018-09-18 Chris Dumez <cdumez@apple.com>
"DidFirstVisuallyNonEmptyLayout" callback does not get called when restoring a page from PageCache
https://bugs.webkit.org/show_bug.cgi?id=189681
<rdar://problem/44526171>
Reviewed by Alex Christensen and Zalan Bujtas.
The "DidFirstVisuallyNonEmptyLayout" callback was not getting called when restoring a page from PageCache
because the FrameView is restored from PageCache and we would fail to restore its flags (such as
m_firstVisuallyNonEmptyLayoutCallbackPending) when entering Page Cache. We now call reset those flags that
are related to layout miletones when entering PageCache so that layout milestone events properly get sent
again when restoring from Page Cache.
* history/CachedFrame.cpp:
(WebCore::CachedFrame::CachedFrame):
2018-09-18 Manuel Rego Casasnovas <rego@igalia.com>
[css-grid] Static position should use content-box, not padding-box
https://bugs.webkit.org/show_bug.cgi?id=189698
Reviewed by Javier Fernandez.
This is a recent change by the CSSWG:
https://github.com/w3c/csswg-drafts/issues/3020
The spec text (https://drafts.csswg.org/css-grid/#static-position):
"The static position of an absolutely-positioned child
of a grid container is determined as if it were the sole grid item
in a grid area whose edges coincide with the content edges
of the grid container."
Test: imported/w3c/web-platform-tests/css/css-grid/abspos/absolute-positioning-grid-container-parent-001.html
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::prepareChildForPositionedLayout):
Simple change to use border and padding.
2018-09-18 Xabier Rodriguez Calvar <calvaris@igalia.com>
[EME][GStreamer] The current EME implementation doesn't support the waitingforkey event
https://bugs.webkit.org/show_bug.cgi?id=185590
Reviewed by Philippe Normand.
When decryptors are blocked waiting for the key, instruct the
player to run the Wait for key algorithm. As per spec, if we run
out of blocks pending to decrypt because we don't have the key, we
request running the algorithm again.
Test: imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.https.html.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::initializationDataEncountered):
(WebCore::MediaPlayerPrivateGStreamerBase::reportWaitingForKey):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
(webkitMediaCommonEncryptionDecryptTransformInPlace):
(webkitMediaCommonEncryptionDecryptSinkEventHandler):
2018-09-12 Ryosuke Niwa <rniwa@webkit.org>
Update composedPath to match the latest spec
https://bugs.webkit.org/show_bug.cgi?id=180378
<rdar://problem/42843004>
Reviewed by Darin Adler.
This patch makes the check for whether a given node in the event path be included in composedPath
pre-determined at the time of the event dispatching per https://github.com/whatwg/dom/issues/525.
This was a fix for the issue that if an event listener in a closed shadow tree removes a node in the
same tree in the event path, then composedPath called on its shadow host, for example, will include
the removed node since it's no longer in the closed shadow tree.
Naively, implementing this behavior would require remembering the original document or shadow root
of each node in the event path as well as its parent shadow root, or worse which node is disclosed
to every other node at the time of computing the event path.
This patch takes a more novel and efficient approach to implement the new behavior by adding a single
integer indicating the number of closed-mode shadow root ancestors of each node in the event path.
In computePathUnclosedToTarget, any node whose *depth* is greater than the context object is excluded.
Consider the following example:
div ------- ShadowRoot (closed)
+- span +- slot
If an event is dispatched on span, then the event path would be [span, slot, ShadowRoot, div]. Then
the values of integers assigned to each node would be: [0, 1, 1, 0] respectively. When composedPath
is called on span or div, slot and ShadowRoot are excluded because they have a greater *depth* value.
Unfortunately, this simplistic solution doesn't work when there are multiple shadow roots of the same
depth through which an event is dispatched as in:
section -- ShadowRoot (closed, SR2)
| +- slot (s2)
+div ------ ShadowRoot (closed, SR1)
+- span +- slot (s1)
If an event is dispatched on span, the event path would be [span, s1, SR1, div, s2, SR2, section].
The values of integers assigned are: [0, 1, 1, 0, 1, 1, 0] respectively. When composedPath is called
on SR1, the simplistic approach would include s2 and SR2, which would be wrong.
To account for this case, in computePathUnclosedToTarget, we traverse the event path upwards (i.e.
ancestors) and downwards (i.e. descendants) from the context object and decrease the *allowed depth*
of shadow trees when we traverse out of a shadow tree in either direction. When traversing upwards,
therefore, moving out of a shadow root to its host would would decrease the allowed depth. When
traversing dowards, moving from a slot element to its assigned node would decrease the allowed depth.
Note that the depths can be negative when a composed event is dispatched inside a closed shadow tree,
and it gets out of its shadow host.
Unfortunately, the latest DOM specification has a bug and doesn't match the behavior of Chrome. This
patch proposes a new algorithm which can be adopted in https://github.com/whatwg/dom/issues/684.
Test: imported/w3c/web-platform-tests/shadow-dom/event-composed-path-after-dom-mutation.html
* dom/EventContext.cpp:
(WebCore::EventContext::EventContext):
(WebCore::MouseOrFocusEventContext::MouseOrFocusEventContext):
(WebCore::TouchEventContext::TouchEventContext):
* dom/EventContext.h:
(WebCore::EventContext::closedShadowDepth const): Added.
* dom/EventPath.cpp:
(WebCore::WindowEventContext::WindowEventContext):
(WebCore::EventPath::buildPath): Compute the closed shadow tree's depths for each node in the path.
(WebCore::computePathUnclosedToTarget const): Implemented the aforementioned algorithm.
(WebCore::EventPath::EventPath):
2018-09-17 Yusuke Suzuki <utatane.tea@gmail.com>
[WTF] Use Semaphore and BinarySemaphore instead of dispatch_semaphore_t
https://bugs.webkit.org/show_bug.cgi?id=185339
Reviewed by Mark Lam.
* fileapi/ThreadableBlobRegistry.cpp:
(WebCore::ThreadableBlobRegistry::blobSize):
* platform/cocoa/NetworkExtensionContentFilter.h:
* platform/cocoa/NetworkExtensionContentFilter.mm:
(WebCore::NetworkExtensionContentFilter::initialize):
(WebCore::NetworkExtensionContentFilter::willSendRequest):
(WebCore::NetworkExtensionContentFilter::responseReceived):
(WebCore::NetworkExtensionContentFilter::addData):
(WebCore::NetworkExtensionContentFilter::finishedAddingData):
(WebCore::NetworkExtensionContentFilter::handleDecision):
Use per-function BinarySemaphore instead of holding it in NetworkExtensionContentFilter's field.
* platform/glib/FileMonitorGLib.cpp:
(WebCore::FileMonitor::FileMonitor):
(WebCore::FileMonitor::~FileMonitor):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
(WebCore::MediaPlayerPrivateAVFoundationObjC::~MediaPlayerPrivateAVFoundationObjC):
(WebCore::MediaPlayerPrivateAVFoundationObjC::waitForVideoOutputMediaDataWillChange):
(WebCore::MediaPlayerPrivateAVFoundationObjC::outputMediaDataWillChange):
Use BinarySemaphore. And remove unused dispatch_semaphore_t.
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(-[WebAVStreamDataParserListener streamDataParserWillProvideContentKeyRequestInitializationData:forTrackID:]):
(-[WebAVStreamDataParserListener streamDataParser:didProvideContentKeyRequestInitializationData:forTrackID:]):
(WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):
(WebCore::SourceBufferPrivateAVFObjC::abort):
(WebCore::SourceBufferPrivateAVFObjC::setCDMSession):
(WebCore::SourceBufferPrivateAVFObjC::setCDMInstance):
Use Box<Semaphore> and Box<BinarySemaphore>.
* platform/graphics/cocoa/WebCoreDecompressionSession.h:
* platform/graphics/cocoa/WebCoreDecompressionSession.mm:
(WebCore::WebCoreDecompressionSession::WebCoreDecompressionSession):
Remove unused dispatch_semaphore_t.
* platform/network/cf/ResourceHandleCFNet.cpp:
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
* platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
(WebCore::getRunLoop):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willSendRequest):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willCacheResponse):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::canRespondToProtectionSpace):
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate initWithHandle:messageQueue:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate detachHandle]):
(-[WebCoreResourceHandleAsOperationQueueDelegate dealloc]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:canAuthenticateAgainstProtectionSpace:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:willCacheResponse:]):
Use BinarySemaphore instead.
2018-09-17 Simon Fraser <simon.fraser@apple.com>
Many modern media control tests leak documents in testing
https://bugs.webkit.org/show_bug.cgi?id=189437
Reviewed by Darin Adler.
In order to accurately detect leaks in media controls tests which use lots of
SVGImages, we have to:
- Fire a zero-delay timer after the postTask, in order for ImagesLoader's m_derefElementTimer
to clear references to elements.
- Have releaseCriticalMemory() call CachedResourceLoader's garbageCollectDocumentResources()
to drop the last handle to the CachedResource for an SVGImage.
- Call WKBundleReleaseMemory() after the GC and timer, since we need garbageCollectDocumentResources()
to run again after that timer has fired.
This should fix most of the spurious leak reports involving SVGImage documents.
* page/MemoryRelease.cpp:
(WebCore::releaseCriticalMemory):
2018-09-17 Jer Noble <jer.noble@apple.com>
Add support for HEVC codec types in Media Capabilities
https://bugs.webkit.org/show_bug.cgi?id=189565
Reviewed by Eric Carlson.
Test: media/hevc-codec-parameters.html
Add some utility methods for parsing HEVC codec strings, and using those parsed
values to query the platform for detailed support for HEVC decoding.
Drive-by fix: Modify MediaEngineConfigurationFactory to allow for null function
pointers in the encode/decode factory pair.
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/cocoa/VideoToolboxSoftLink.cpp:
* platform/cocoa/VideoToolboxSoftLink.h:
* platform/graphics/HEVCUtilities.cpp: Added.
(WebCore::parseHEVCCodecParameters):
* platform/graphics/HEVCUtilities.h: Added.
* platform/graphics/cocoa/HEVCUtilitiesCocoa.cpp: Added.
(WebCore::validateHEVCParameters):
* platform/graphics/cocoa/HEVCUtilitiesCocoa.h: Added.
* platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp: Added.
(WebCore::videoCodecTypeFromRFC4281Type):
(WebCore::createMediaPlayerDecodingConfigurationCocoa):
* platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.h: Added.
* platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:
(WebCore::factories):
(WebCore::MediaEngineConfigurationFactory::createDecodingConfiguration):
(WebCore::MediaEngineConfigurationFactory::createEncodingConfiguration):
* testing/Internals.cpp:
(WebCore::Internals::parseHEVCCodecParameters):
* testing/Internals.h:
* testing/Internals.idl:
2018-09-17 Devin Rousso <drousso@apple.com>
Web Inspector: generate CSSKeywordCompletions from backend values
https://bugs.webkit.org/show_bug.cgi?id=189041
Reviewed by Joseph Pecoraro.
Modified existing test inspector/css/getSupportedCSSProperties.html.
* inspector/agents/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::getSupportedCSSProperties):
Send alias and longhand information for all properties, and any known keyword values for
those applicable. This makes use of `CSSParserFastPaths::isValidKeywordPropertyAndValue` to
determine if a given keyword is a valid value for each property. This only generates a list
for properties who have no non-keyword values.
* css/makeprop.pl:
* css/makevalues.pl:
Create additional helper functions/constants for retrieving strings of each CSS keyword.
* css/CSSProperty.h:
(WebCore::CSSProperty::aliasesForProperty):
* css/CSSPrimitiveValue.cpp:
(WebCore::valueName):
* css/CSSValuePool.cpp:
(WebCore::CSSValuePool::CSSValuePool):
(WebCore::CSSValuePool::createIdentifierValue):
2018-09-17 Youenn Fablet <youenn@apple.com>
track.onmute isn't called for a remote MediaStreamTrack when its counter part track is removed from the peer connection
https://bugs.webkit.org/show_bug.cgi?id=176281
<rdar://problem/44525674>
Reviewed by Eric Carlson.
Listen to libwebrtc remove track callbacks.
Implement handling as per https://w3c.github.io/webrtc-pc/#process-remote-track-removal.
This triggers a mute event on the track.
Test: webrtc/remove-track.html
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::removeRemoteTrack):
(WebCore::LibWebRTCMediaEndpoint::OnRemoveTrack):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::shouldOfferAllowToReceive const):
Drive by fix: Plan B code path does not mandate having an rtc backend for each sender.
2018-09-17 Simon Fraser <simon.fraser@apple.com>
Add more Fullscreen logging
https://bugs.webkit.org/show_bug.cgi?id=189656
Reviewed by Jer Noble.
Add some fullscreen logging so I can tell whether WebFullScreenManager ever releases
the fullscreen element.
* platform/cocoa/VideoFullscreenModelVideoElement.mm:
(VideoFullscreenModelVideoElement::VideoFullscreenModelVideoElement):
(VideoFullscreenModelVideoElement::~VideoFullscreenModelVideoElement):
(VideoFullscreenModelVideoElement::setVideoElement):
2018-09-14 Simon Fraser <simon.fraser@apple.com>
Add support for dumping the GraphicsLayer tree via notifyutil
https://bugs.webkit.org/show_bug.cgi?id=189639
Reviewed by Zalan Bujtas.
Make "notifyutil -p com.apple.WebKit.showGraphicsLayerTree" work. It dumps the GraphicsLayer tree
for each top-level document (GraphicsLayers are connected across frame boundaries, so this prints
the entire tree for each main frame).
It uses WTFLogAlways rather than fprintf() so output shows on all platforms (other tree dumps should
be converted in the same way).
* page/mac/PageMac.mm:
(WebCore::Page::platformInitialize):
* platform/graphics/GraphicsLayer.cpp:
(showGraphicsLayerTree):
* rendering/RenderLayerCompositor.cpp:
(showGraphicsLayerTreeForCompositor):
* rendering/RenderLayerCompositor.h:
* rendering/RenderObject.cpp:
(WebCore::printGraphicsLayerTreeForLiveDocuments):
* rendering/RenderObject.h:
2018-09-17 Christopher Reid <chris.reid@sony.com>
[Curl] Add schema version and enable auto vacuum for cookie database.
https://bugs.webkit.org/show_bug.cgi?id=189669
Reviewed by Alex Christensen.
Turning on auto incremental vacuuming and adding versioning to the database. Right now we
reset tables if there's an unknown schema or if the none is set. There is placeholder logic
in place to upgrade databases as the schema changes in the future.
Tested by checking the database manually after launching MiniBrowser.
* platform/network/curl/CookieJarDB.cpp:
(WebCore::CookieJarDB::openDatabase):
(WebCore::CookieJarDB::verifySchemaVersion):
(WebCore::CookieJarDB::deleteAllTables):
(WebCore::CookieJarDB::createPrepareStatement):
(WebCore::CookieJarDB::getPrepareStatement):
(WebCore::CookieJarDB::executeSimpleSql):
* platform/network/curl/CookieJarDB.h:
* platform/network/curl/NetworkStorageSessionCurl.cpp:
(WebCore::defaultSession):
* platform/sql/SQLiteDatabase.cpp:
(WebCore::SQLiteDatabase::turnOnIncrementalAutoVacuum): fixed a bug.
2018-09-14 Ryosuke Niwa <rniwa@webkit.org>
Re-order Node flags based on semantics
https://bugs.webkit.org/show_bug.cgi?id=189643
Reviewed by Simon Fraser.
Re-ordered Node flags based on their category and subclasses of Node which use them.
* dom/Node.h:
2018-09-17 Simon Fraser <simon.fraser@apple.com>
Add more ResourceLoading logging, particularly in MemoryCache code
https://bugs.webkit.org/show_bug.cgi?id=189651
Reviewed by Tim Horton.
Adding more logging to the ResourceLoading log channel, which I found useful
when trying to understand cached SVGImage lifetimes (bug 189437).
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::deleteIfPossible):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):
(WebCore::CachedResourceLoader::garbageCollectDocumentResources):
* loader/cache/MemoryCache.cpp:
(WebCore::MemoryCache::add):
(WebCore::MemoryCache::pruneLiveResourcesToSize):
(WebCore::MemoryCache::pruneDeadResources):
(WebCore::MemoryCache::pruneDeadResourcesToSize):
(WebCore::MemoryCache::remove):
(WebCore::MemoryCache::dumpLRULists const):
2018-09-17 Jer Noble <jer.noble@apple.com>
Enable USE_MEDIAREMOTE on iOS
https://bugs.webkit.org/show_bug.cgi?id=189096
Reviewed by Eric Carlson.
Migrate to using MediaRemote.framework on iOS from MediaPlayer.framework. This unifies the
Now Playing implementation on iOS and Mac.
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/audio/cocoa/MediaSessionManagerCocoa.cpp: Removed.
* platform/audio/cocoa/MediaSessionManagerCocoa.h:
* platform/audio/cocoa/MediaSessionManagerCocoa.mm: Renamed from Source/WebCore/platform/audio/mac/MediaSessionManagerMac.mm.
(PlatformMediaSessionManager::sharedManager):
(PlatformMediaSessionManager::sharedManagerIfExists):
(MediaSessionManagerCocoa::updateSessionState):
(MediaSessionManagerCocoa::beginInterruption):
(MediaSessionManagerCocoa::scheduleUpdateNowPlayingInfo):
(MediaSessionManagerCocoa::sessionWillBeginPlayback):
(MediaSessionManagerCocoa::sessionDidEndRemoteScrubbing):
(MediaSessionManagerCocoa::removeSession):
(MediaSessionManagerCocoa::sessionWillEndPlayback):
(MediaSessionManagerCocoa::clientCharacteristicsChanged):
(MediaSessionManagerCocoa::sessionCanProduceAudioChanged):
(MediaSessionManagerCocoa::nowPlayingEligibleSession):
(MediaSessionManagerCocoa::updateNowPlayingInfo):
* platform/audio/ios/MediaSessionManagerIOS.h:
(): Deleted.
* platform/audio/ios/MediaSessionManagerIOS.mm:
(WebCore::MediaSessionManageriOS::nowPlayingEligibleSession): Deleted.
(WebCore::MediaSessionManageriOS::updateNowPlayingInfo): Deleted.
(WebCore::MediaSessionManageriOS::sessionWillBeginPlayback): Deleted.
(WebCore::MediaSessionManageriOS::removeSession): Deleted.
(WebCore::MediaSessionManageriOS::sessionWillEndPlayback): Deleted.
(WebCore::MediaSessionManageriOS::clientCharacteristicsChanged): Deleted.
* platform/audio/mac/MediaSessionManagerMac.h: Removed.
2018-09-17 Frederic Wang <fwang@igalia.com>
Build error in ImageBufferCG when compiled with IOSurfacePool
https://bugs.webkit.org/show_bug.cgi?id=189579
Reviewed by Tim Horton.
IOSurface.h might be included with different value of IOSURFACE_CANVAS_BACKING_STORE, causing
compilation errors when files in the same unified source do not agree on the definition.
This patch moves the definition of IOSURFACE_CANVAS_BACKING_STORE from ImageBufferDataCG.h
to Platform.h so that IOSURFACE_CANVAS_BACKING_STORE is set to the same value in all files.
Finally some minors changes to explicitly declare/define ImageBuffer are performed in order
to prevent future issues with Unified build rotating.
No new tests, behavior unchanged.
* html/HTMLCanvasElement.cpp: Explicitly include ImageBuffer.h since it's used in this file.
* platform/graphics/cg/ImageBufferDataCG.h: Move definition into Platform.h.
* platform/graphics/cocoa/IOSurface.h: Forward-declare ImageBuffer since it's used in this
header.
2018-09-17 Basuke Suzuki <Basuke.Suzuki@sony.com>
[Curl] Respond with requested authentication scheme for authentication challenge.
https://bugs.webkit.org/show_bug.cgi?id=189318
Reviewed by Alex Christensen.
Curl port depends on libcurl's authentication handling by enabling CURLAUTH_ANY. With this
mode, the round-trip communication between the client and the server is handled by libcurl
internally. That's okay for many cases. But when initial request has a credentials
(i.e. XMLHttpRequest), there's no valid chance to store credential to the storage because
the returned response is not 401.
Passes following tests:
- http/tests/websocket/tests/hybi/httponly-cookie.pl
- http/tests/websocket/tests/hybi/secure-cookie-insecure-connection.pl
- http/tests/websocket/tests/hybi/secure-cookie-secure-connection.pl
- http/tests/xmlhttprequest/basic-auth-default.html
- http/tests/xmlhttprequest/cross-origin-authorization.html
- http/tests/xmlhttprequest/logout.html
- http/tests/xmlhttprequest/null-auth.php
- http/tests/xmlhttprequest/re-login-async.html
- http/tests/xmlhttprequest/re-login.html
- http/tests/xmlhttprequest/redirect-credentials-responseURL.html
- http/tests/xmlhttprequest/remember-bad-password.html
* platform/network/ResourceHandle.h:
* platform/network/curl/CurlContext.cpp:
(WebCore::CurlHandle::setHttpAuthUserPass):
(WebCore::CurlHandle::enableHttpAuthentication): Deleted.
* platform/network/curl/CurlContext.h:
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::setAuthenticationScheme):
(WebCore::CurlRequest::setupTransfer):
* platform/network/curl/CurlRequest.h:
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
(WebCore::ResourceHandle::receivedCredential):
(WebCore::ResourceHandle::getCredential):
(WebCore::ResourceHandle::restartRequestWithCredential):
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
(WebCore::ResourceHandle::continueAfterWillSendRequest):
2018-09-17 Youenn Fablet <youenn@apple.com>
Enable VCP for iOS and reenable it for MacOS
https://bugs.webkit.org/show_bug.cgi?id=189635
<rdar://problem/43621029>
Reviewed by Eric Carlson.
Covered by exsiting and modified tests.
Instead of using libwebrtc YUV frames for black frames, use CVPixelBuffer to make it efficient.
Add internal API to know whether VCP is enabled so as to make capture-webrtc test pass on all platforms.
* platform/mediastream/RealtimeOutgoingVideoSource.cpp:
(WebCore::RealtimeOutgoingVideoSource::sendBlackFramesIfNeeded):
* platform/mediastream/RealtimeOutgoingVideoSource.h:
* platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.h:
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.h:
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
(WebCore::createBlackPixelBuffer):
(WebCore::RealtimeIncomingVideoSourceCocoa::pixelBufferFromVideoFrame):
* platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:
(WebCore::RealtimeOutgoingVideoSourceCocoa::createBlackFrame):
* platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.h:
* testing/Internals.cpp:
(WebCore::Internals::supportsVCPEncoder):
* testing/Internals.h:
* testing/Internals.idl:
2018-09-17 Chris Dumez <cdumez@apple.com>
PSON: window.open() with 'noopener' should only process-swap cross-site, not cross-origin
https://bugs.webkit.org/show_bug.cgi?id=189602
<rdar://problem/44430549>
Reviewed by Geoff Garen.
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::setTriggeringAction):
* loader/DocumentLoader.h:
* loader/FrameLoadRequest.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::loadWithNavigationAction):
(WebCore::FrameLoader::loadWithDocumentLoader):
(WebCore::FrameLoader::loadPostRequest):
(WebCore::FrameLoader::continueLoadAfterNewWindowPolicy):
(WebCore::FrameLoader::loadDifferentDocumentItem):
Move NavigationAction's opener setting to loadWithNavigationAction() as this is a better bottleneck.
Otherwise, we'd have to set it at several call sites. Also move the NavigationAction around instead
of copying it.
* loader/FrameLoader.h:
(WebCore::FrameLoader::loadWithNavigationAction):
* loader/NavigationAction.h:
(WebCore::NavigationAction::setShouldOpenExternalURLsPolicy):
* loader/PolicyChecker.cpp:
(WebCore::PolicyChecker::checkNavigationPolicy):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
2018-09-17 Darin Adler <darin@apple.com>
Use OpaqueJSString rather than JSRetainPtr inside WebKit
https://bugs.webkit.org/show_bug.cgi?id=189652
Reviewed by Saam Barati.
* Modules/plugins/QuickTimePluginReplacement.mm:
(WebCore::jsValueWithDictionaryInContext): Use OpaqueJSString::create.
(WebCore::jsValueWithAVMetadataItemInContext): Use adoptCF.
* platform/mac/SerializedPlatformRepresentationMac.mm:
(WebCore::jsValueWithDictionaryInContext): Use OpaqueJSString::create.
2018-09-08 Darin Adler <darin@apple.com>
Streamline JSRetainPtr, fix leaks of JSString and JSGlobalContext
https://bugs.webkit.org/show_bug.cgi?id=189455
Reviewed by Keith Miller.
* Modules/plugins/QuickTimePluginReplacement.mm:
(WebCore::jsValueWithDictionaryInContext): Adding a missing
JSStringRelease to fix a leak.
2018-09-15 Rob Buis <rbuis@igalia.com>
XMLHttpRequest::createResponseBlob() should create a Blob with type for empty response
https://bugs.webkit.org/show_bug.cgi?id=189627
Reviewed by Alexey Proskuryakov.
Right now we return an empty Blob without type when the response is empty, but
it should always include the type [1].
Test: web-platform-tests/xhr/overridemimetype-blob.html
[1] https://xhr.spec.whatwg.org/#blob-response
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::createResponseBlob):
2018-09-14 Basuke Suzuki <Basuke.Suzuki@sony.com>
[Curl] Bug fix on some inaccurate values in NetworkLoadMetrics.
https://bugs.webkit.org/show_bug.cgi?id=189530
Reviewed by Alex Christensen.
Curl port uses the start time libcurl provided. But there's a lug between main thread and Curl thread.
Record the start time of request instead of libcurl's start timing and use it to measure the metrics.
Also respondEnd was not correctly recorded and fixed.
No new tests because it cannot be measured from DRT.
* platform/network/ResourceHandleInternal.h:
* platform/network/curl/CurlContext.cpp:
(WebCore::CurlHandle::getNetworkLoadMetrics):
* platform/network/curl/CurlContext.h:
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::start):
(WebCore::CurlRequest::setupTransfer):
(WebCore::CurlRequest::didCompleteTransfer):
(WebCore::CurlRequest::updateNetworkLoadMetrics):
* platform/network/curl/CurlRequest.h:
(WebCore::CurlRequest::setStartTime):
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::restartRequestWithCredential):
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
(WebCore::ResourceHandle::willSendRequest):
(WebCore::ResourceHandle::continueAfterWillSendRequest):
2018-09-14 Justin Fan <justin_fan@apple.com>
WebGL 2 conformance: rgb-format-support.html
https://bugs.webkit.org/show_bug.cgi?id=189610
<rdar://problem/44403343>
Reviewed by Dean Jackson.
Implementing getInternalformatParameter (emulating on macOS) and updating
renderbufferStorage{Multisample} for WebGL 2 conformance.
Test: webgl/2.0.0/conformance2/rendering/rgb-format-support.html enabled.
* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::isRenderableInternalformat):
(WebCore::WebGL2RenderingContext::getInternalformatParameter):
(WebCore::WebGL2RenderingContext::renderbufferStorageMultisample):
(WebCore::WebGL2RenderingContext::renderbufferStorage):
(WebCore::WebGL2RenderingContext::baseInternalFormatFromInternalFormat):
(WebCore::WebGL2RenderingContext::isIntegerFormat):
* platform/graphics/GraphicsContext3D.h:
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::getInternalformativ):
(WebCore::GraphicsContext3D::renderbufferStorageMultisample):
2018-09-14 Justin Michaud <justin_michaud@apple.com>
Add support for spreadMethod=reflect and repeat on SVG gradients (for CoreGraphics platforms)
https://bugs.webkit.org/show_bug.cgi?id=5968
Add support for spreadMethod=repeat and reflect. Also, the opacity of a gradient is now
the result of multiplying stop-opacity with the opacity of the color.
Reviewed by Simon Fraser.
Tests: svg/gradients/spreadMethod-expected.svg
svg/gradients/spreadMethod.svg
svg/gradients/spreadMethodAlpha-expected.svg
svg/gradients/spreadMethodAlpha.svg
svg/gradients/spreadMethodClose0-expected-mismatch.svg
svg/gradients/spreadMethodClose0.svg
svg/gradients/spreadMethodClose1-expected-mismatch.svg
svg/gradients/spreadMethodClose1.svg
svg/gradients/spreadMethodClose2-expected.svg
svg/gradients/spreadMethodClose2.svg
svg/gradients/spreadMethodDiagonal-expected.svg
svg/gradients/spreadMethodDiagonal.svg
svg/gradients/spreadMethodDiagonal2-expected.svg
svg/gradients/spreadMethodDiagonal2.svg
svg/gradients/spreadMethodDuplicateStop-expected.svg
svg/gradients/spreadMethodDuplicateStop.svg
svg/gradients/spreadMethodReversed-expected.svg
svg/gradients/spreadMethodReversed.svg
svg/gradients/stopAlpha-expected.svg
svg/gradients/stopAlpha.svg
* platform/graphics/cg/GradientCG.cpp:
(WebCore::Gradient::paint):
* svg/SVGStopElement.cpp:
(WebCore::SVGStopElement::stopColorIncludingOpacity const):
2018-09-14 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, attempt to fix the iOSMac build after r236015.
* platform/graphics/cv/PixelBufferResizer.mm:
(WebCore::PixelBufferResizer::PixelBufferResizer):
2018-09-11 Simon Fraser <simon.fraser@apple.com>
Make GraphicsLayers ref-counted, so their tree can persist when disconnected from RenderLayerBackings
https://bugs.webkit.org/show_bug.cgi?id=189521
Reviewed by Tim Horton.
Make GraphicsLayer be RefCounted<GraphicsLayer>. GraphicsLayers own their children, via a Vector<Ref<GraphicsLayer>>.
RenderLayerBacking and other holders of GraphicsLayers use RefPtr<GraphicsLayer>.
All the other changes are just to adapt to the new ownership patterns.
I verified that no GraphicsLayers were leaked or abandoned after this change.
No behavior change.
* page/PageOverlayController.cpp:
(WebCore::PageOverlayController::layerWithDocumentOverlays):
(WebCore::PageOverlayController::layerWithViewOverlays):
(WebCore::PageOverlayController::installPageOverlay):
(WebCore::PageOverlayController::uninstallPageOverlay):
(WebCore::PageOverlayController::setPageOverlayNeedsDisplay):
(WebCore::PageOverlayController::didChangeViewSize):
(WebCore::PageOverlayController::didChangeDocumentSize):
(WebCore::PageOverlayController::didChangeSettings):
(WebCore::PageOverlayController::paintContents):
(WebCore::PageOverlayController::didChangeOverlayFrame):
(WebCore::PageOverlayController::didChangeOverlayBackgroundColor):
* page/PageOverlayController.h:
* page/mac/ServicesOverlayController.h:
(WebCore::ServicesOverlayController::Highlight::layer const):
* page/mac/ServicesOverlayController.mm:
(WebCore::ServicesOverlayController::Highlight::Highlight):
(WebCore::ServicesOverlayController::Highlight::invalidate):
(WebCore::ServicesOverlayController::Highlight::fadeIn):
(WebCore::ServicesOverlayController::Highlight::fadeOut):
(WebCore::ServicesOverlayController::Highlight::didFinishFadeOutAnimation):
(WebCore::ServicesOverlayController::determineActiveHighlight):
* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::GraphicsLayer):
(WebCore::GraphicsLayer::willBeDestroyed):
(WebCore::GraphicsLayer::setChildren):
(WebCore::GraphicsLayer::addChild):
(WebCore::GraphicsLayer::addChildAtIndex):
(WebCore::GraphicsLayer::addChildBelow):
(WebCore::GraphicsLayer::addChildAbove):
(WebCore::GraphicsLayer::replaceChild):
(WebCore::GraphicsLayer::removeAllChildren):
(WebCore::GraphicsLayer::removeFromParent):
(WebCore::GraphicsLayer::setMaskLayer):
(WebCore::GraphicsLayer::noteDeviceOrPageScaleFactorChangedIncludingDescendants):
(WebCore::GraphicsLayer::distributeOpacity):
(WebCore::GraphicsLayer::traverse):
(WebCore::dumpChildren):
* platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::children const):
(WebCore::GraphicsLayer::children):
(WebCore::GraphicsLayer::maskLayer const):
(WebCore::GraphicsLayer::replicaLayer const):
(WebCore::GraphicsLayer::beingDestroyed const):
(WebCore::GraphicsLayer:: const): Deleted.
* platform/graphics/GraphicsLayerFactory.h:
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayer::create):
(WebCore::GraphicsLayerCA::setChildren):
(WebCore::GraphicsLayerCA::addChild):
(WebCore::GraphicsLayerCA::addChildAtIndex):
(WebCore::GraphicsLayerCA::addChildBelow):
(WebCore::GraphicsLayerCA::addChildAbove):
(WebCore::GraphicsLayerCA::replaceChild):
(WebCore::GraphicsLayerCA::setMaskLayer):
(WebCore::GraphicsLayerCA::recursiveVisibleRectChangeRequiresFlush const):
(WebCore::GraphicsLayerCA::recursiveCommitChanges):
(WebCore::GraphicsLayerCA::updateSublayerList):
(WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
* platform/graphics/ca/GraphicsLayerCA.h:
* platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
(WebCore::GraphicsLayer::create):
(WebCore::GraphicsLayerTextureMapper::setChildren):
(WebCore::GraphicsLayerTextureMapper::addChild):
(WebCore::GraphicsLayerTextureMapper::addChildAtIndex):
(WebCore::GraphicsLayerTextureMapper::addChildAbove):
(WebCore::GraphicsLayerTextureMapper::addChildBelow):
(WebCore::GraphicsLayerTextureMapper::replaceChild):
(WebCore::GraphicsLayerTextureMapper::setMaskLayer):
(WebCore::GraphicsLayerTextureMapper::updateBackingStoreIncludingSubLayers):
* platform/graphics/texmap/GraphicsLayerTextureMapper.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::GraphicsLayer::create):
(WebCore::CoordinatedGraphicsLayer::setShouldUpdateVisibleRect):
(WebCore::CoordinatedGraphicsLayer::addChild):
(WebCore::CoordinatedGraphicsLayer::addChildAtIndex):
(WebCore::CoordinatedGraphicsLayer::addChildAbove):
(WebCore::CoordinatedGraphicsLayer::addChildBelow):
(WebCore::CoordinatedGraphicsLayer::replaceChild):
(WebCore::CoordinatedGraphicsLayer::setMaskLayer):
(WebCore::CoordinatedGraphicsLayer::syncPendingStateChangesIncludingSubLayers):
(WebCore::CoordinatedGraphicsLayer::updateContentBuffersIncludingSubLayers):
(WebCore::CoordinatedGraphicsLayer::setCoordinatorIncludingSubLayersIfNeeded):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
* platform/graphics/win/GraphicsLayerDirect2D.cpp:
(WebCore::GraphicsLayer::create):
(WebCore::GraphicsLayerDirect2D::GraphicsLayerDirect2D): Deleted.
(WebCore::GraphicsLayerDirect2D::initialize): Deleted.
(WebCore::GraphicsLayerDirect2D::~GraphicsLayerDirect2D): Deleted.
(WebCore::GraphicsLayerDirect2D::setNeedsDisplay): Deleted.
(WebCore::GraphicsLayerDirect2D::setNeedsDisplayInRect): Deleted.
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::createGraphicsLayer):
(WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
(WebCore::RenderLayerBacking::updateConfiguration):
(WebCore::RenderLayerBacking::updateInternalHierarchy):
(WebCore::RenderLayerBacking::updateMaskingLayer):
(WebCore::RenderLayerBacking::updateChildClippingStrategy):
(WebCore::RenderLayerBacking::updateScrollingLayers):
* rendering/RenderLayerBacking.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateCompositingLayers):
(WebCore::RenderLayerCompositor::appendDocumentOverlayLayers):
(WebCore::RenderLayerCompositor::setCompositingParent):
(WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
(WebCore::RenderLayerCompositor::parentFrameContentLayers):
(WebCore::RenderLayerCompositor::updateLayerForTopOverhangArea):
(WebCore::RenderLayerCompositor::updateLayerForBottomOverhangArea):
(WebCore::RenderLayerCompositor::updateLayerForHeader):
(WebCore::RenderLayerCompositor::updateLayerForFooter):
(WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
(WebCore::RenderLayerCompositor::ensureRootLayer):
(WebCore::RenderLayerCompositor::rootLayerAttachmentChanged):
* rendering/RenderLayerCompositor.h:
2018-09-14 Eric Carlson <eric.carlson@apple.com>
Support arbitrary video resolution in getUserMedia API
https://bugs.webkit.org/show_bug.cgi?id=178109
<rdar://problem/35083128>
Reviewed by Youenn Fablet.
Support arbitrary video resolutions by configuring the camera to capture at the closest
larger size it supports and scaling/cropping frames as necessary.
No new tests, existing tests updated.
* Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
* Modules/webaudio/MediaStreamAudioSource.cpp:
(WebCore::MediaStreamAudioSource::capabilities): Make non-const, it wasn't helpful.
(WebCore::MediaStreamAudioSource::settings): Ditto.
(WebCore::MediaStreamAudioSource::capabilities const): Deleted.
(WebCore::MediaStreamAudioSource::settings const): Deleted.
* Modules/webaudio/MediaStreamAudioSource.h:
* SourcesCocoa.txt: Add PixelBufferResizer.
* WebCore.xcodeproj/project.pbxproj: Ditto.
* platform/cocoa/CoreVideoSoftLink.h:
* platform/cocoa/VideoToolboxSoftLink.cpp:
* platform/cocoa/VideoToolboxSoftLink.h:
* platform/graphics/cv/PixelBufferResizer.h: Added.
(WebCore::PixelBufferResizer::canResizeTo):
* platform/graphics/cv/PixelBufferResizer.mm: Added.
(WebCore::PixelBufferResizer::PixelBufferResizer):
(WebCore::PixelBufferResizer::resize):
* platform/mediastream/RealtimeIncomingAudioSource.cpp:
(WebCore::RealtimeIncomingAudioSource::capabilities): Make non-const, it wasn't helpful.
(WebCore::RealtimeIncomingAudioSource::settings): Ditto.
(WebCore::RealtimeIncomingAudioSource::capabilities const): Deleted.
(WebCore::RealtimeIncomingAudioSource::settings const): Deleted.
* platform/mediastream/RealtimeIncomingAudioSource.h:
* platform/mediastream/RealtimeIncomingVideoSource.cpp:
(WebCore::RealtimeIncomingVideoSource::capabilities): Make non-const, it wasn't helpful.
(WebCore::RealtimeIncomingVideoSource::settings): Ditto.
(WebCore::RealtimeIncomingVideoSource::capabilities const): Deleted.
(WebCore::RealtimeIncomingVideoSource::settings const): Deleted.
* platform/mediastream/RealtimeIncomingVideoSource.h:
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::supportsConstraint):
(WebCore::RealtimeMediaSource::supportsConstraint const): Deleted.
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/RealtimeVideoSource.cpp:
(WebCore::RealtimeVideoSource::presets):
(WebCore::RealtimeVideoSource::setSupportedPresets):
(WebCore::standardVideoSizes):
(WebCore::RealtimeVideoSource::updateCapabilities): Make non-const, it wasn't helpful.
(WebCore::presetSupportsFrameRate):
(WebCore::RealtimeVideoSource::supportsCaptureSize):
(WebCore::RealtimeVideoSource::shouldUsePreset):
(WebCore::RealtimeVideoSource::bestSupportedSizeAndFrameRate):
(WebCore::RealtimeVideoSource::setSizeAndFrameRate):
(WebCore::RealtimeVideoSource::addSupportedCapabilities const): Deleted.
* platform/mediastream/RealtimeVideoSource.h:
(WebCore::VideoPresetData::encode const):
(WebCore::VideoPresetData::decode):
(WebCore::VideoPreset::create):
(WebCore::VideoPreset::VideoPreset):
(WebCore::RealtimeVideoSource::prefersPreset):
(WebCore::RealtimeVideoSource::canResizeVideoFrames const):
(WebCore::RealtimeVideoSource::setDefaultSize):
(WebCore::RealtimeVideoSource::observedFrameRate const):
(WebCore::VideoPreset::encode const): Deleted.
(WebCore::VideoPreset::decode): Deleted.
* platform/mediastream/mac/AVVideoCaptureSource.h:
(WebCore::AVVideoCaptureSource::videoPresets): Deleted.
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoPreset::create):
(WebCore::AVVideoPreset::AVVideoPreset):
(WebCore::AVVideoCaptureSource::AVVideoCaptureSource):
(WebCore::AVVideoCaptureSource::settings):
(WebCore::AVVideoCaptureSource::capabilities): Make non-const, it wasn't helpful.
(WebCore::AVVideoCaptureSource::setFrameRate):
(WebCore::AVVideoCaptureSource::prefersPreset):
(WebCore::AVVideoCaptureSource::setSizeAndFrameRateWithPreset):
(WebCore::AVVideoCaptureSource::frameDurationForFrameRate):
(WebCore::AVVideoCaptureSource::setupCaptureSession):
(WebCore::AVVideoCaptureSource::processNewFrame):
(WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection):
(WebCore::AVVideoCaptureSource::isFrameRateSupported):
(WebCore::AVVideoCaptureSource::generatePresets):
(WebCore::updateSizeMinMax): Deleted.
(WebCore::updateAspectRatioMinMax): Deleted.
(WebCore::AVVideoCaptureSource::settings const): Deleted.
(WebCore::AVVideoCaptureSource::capabilities const): Deleted.
(WebCore::AVVideoCaptureSource::sizeForPreset): Deleted.
(WebCore::AVVideoCaptureSource::setPreset): Deleted.
(WebCore::AVVideoCaptureSource::setSizeAndFrameRate): Deleted.
(WebCore::AVVideoCaptureSource::bestSessionPresetForVideoDimensions): Deleted.
(WebCore::AVVideoCaptureSource::supportsSizeAndFrameRate): Deleted.
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioCaptureSource::capabilities): Make non-const, it wasn't helpful.
(WebCore::CoreAudioCaptureSource::settings): Ditto.
(WebCore::CoreAudioCaptureSource::capabilities const): Deleted.
(WebCore::CoreAudioCaptureSource::settings const): Deleted.
* platform/mediastream/mac/CoreAudioCaptureSource.h:
* platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
(WebCore::DisplayCaptureSourceCocoa::capabilities): Make non-const, it wasn't helpful.
(WebCore::DisplayCaptureSourceCocoa::settings): Ditto.
(WebCore::DisplayCaptureSourceCocoa::capabilities const): Deleted.
(WebCore::DisplayCaptureSourceCocoa::settings const): Deleted.
* platform/mediastream/mac/DisplayCaptureSourceCocoa.h:
* platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
* platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
(WebCore::MockRealtimeVideoSourceMac::CMSampleBufferFromPixelBuffer):
(WebCore::MockRealtimeVideoSourceMac::updateSampleBuffer):
(WebCore::MockRealtimeVideoSourceMac::setSizeAndFrameRateWithPreset):
* platform/mock/MockMediaDevice.h:
(WebCore::MockCameraProperties::decode):
* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::settings): Make non-const, it wasn't helpful.
(WebCore::MockRealtimeAudioSource::capabilities): Ditto.
(WebCore::MockRealtimeAudioSource::settings const): Deleted.
(WebCore::MockRealtimeAudioSource::capabilities const): Deleted.
* platform/mock/MockRealtimeAudioSource.h:
* platform/mock/MockRealtimeMediaSourceCenter.cpp:
(WebCore::defaultDevices): Change video device presets to trigger resize code more often.
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource):
(WebCore::MockRealtimeVideoSource::generatePresets):
(WebCore::MockRealtimeVideoSource::capabilities): Make non-const, it wasn't helpful.
(WebCore::MockRealtimeVideoSource::settings): Ditto.
(WebCore::MockRealtimeVideoSource::capabilities const): Deleted.
(WebCore::MockRealtimeVideoSource::settings const): Deleted.
* platform/mock/MockRealtimeVideoSource.h:
2018-09-14 Frederic Wang <fwang@igalia.com>
Bug 189541 - Build error in FontDescriptionKey::computeHash when compiling FontTaggedSettings and FontCascadeFonts together
https://bugs.webkit.org/show_bug.cgi?id=189541
Reviewed by Alex Christensen.
FontDescriptionKey::computeHash() from In FontCache.h requires implicit instantiation of the
FontTaggedSettings::hash() template function. This instantiation may happen before
FontTaggedSettings::hash() is actually fully specialized in FontTaggedSettings.cpp. To avoid
compiler errors when FontCache.h and FontTaggedSettings.cpp are in the same translation unit,
we declare full specialization of the hash() functions in FontTaggedSettings.h.
No new tests, behavior unchanged.
* platform/graphics/FontCache.h: Explicitly include FontTaggedSettings to avoid possible future breakage.
* platform/graphics/FontTaggedSettings.h: Declare full specialization of FontTaggedSettings::hash().
2018-09-14 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r235990.
Introduced TestWebKitAPI.NowPlayingTest timeouts on iOS
Reverted changeset:
"Enable USE_MEDIAREMOTE on iOS"
https://bugs.webkit.org/show_bug.cgi?id=189096
https://trac.webkit.org/changeset/235990
2018-09-14 Jer Noble <jer.noble@apple.com>
Turn SourceBufferChangeTypeEnabled on by default
https://bugs.webkit.org/show_bug.cgi?id=189527
Reviewed by Eric Carlson.
* page/Settings.yaml:
2018-09-14 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Record actions performed on ImageBitmapRenderingContext
https://bugs.webkit.org/show_bug.cgi?id=181341
Reviewed by Joseph Pecoraro.
Test: inspector/canvas/recording-bitmaprenderer.html
* html/canvas/ImageBitmapRenderingContext.idl:
* inspector/InspectorCanvas.cpp:
(WebCore::shouldSnapshotBitmapRendererAction):
(WebCore::InspectorCanvas::recordAction):
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
* page/PageConsoleClient.cpp:
(canvasRenderingContext):
2018-09-14 David Kilzer <ddkilzer@apple.com>
REGRESSION (r235954): Fix build failure on watchOS
<https://webkit.org/b/189605>
Reviewed by Geoffrey Garen.
Remove `using WebCore::IndexedDB::KeyType;` from
Source/WebCore/Modules/indexeddb/IDBKey.h and fix all the
resulting build failures.
* Modules/indexeddb/IDBKey.cpp:
(WebCore::IDBKey::IDBKey):
(WebCore::IDBKey::isValid const):
(WebCore::IDBKey::compare const):
* Modules/indexeddb/IDBKey.h:
(WebCore::IDBKey::createNumber):
(WebCore::IDBKey::createDate):
(WebCore::IDBKey::type const):
(WebCore::IDBKey::array const):
(WebCore::IDBKey::string const):
(WebCore::IDBKey::date const):
(WebCore::IDBKey::number const):
(WebCore::IDBKey::binary const):
(WebCore::IDBKey::compareTypes):
(WebCore::IDBKey::IDBKey):
* Modules/indexeddb/IDBKeyData.cpp:
(WebCore::IDBKeyData::IDBKeyData):
(WebCore::IDBKeyData::maybeCreateIDBKey const):
(WebCore::IDBKeyData::isolatedCopy):
(WebCore::IDBKeyData::encode const):
(WebCore::IDBKeyData::decode):
(WebCore::IDBKeyData::compare const):
(WebCore::IDBKeyData::loggingString const):
(WebCore::IDBKeyData::setArrayValue):
(WebCore::IDBKeyData::setBinaryValue):
(WebCore::IDBKeyData::setStringValue):
(WebCore::IDBKeyData::setDateValue):
(WebCore::IDBKeyData::setNumberValue):
(WebCore::IDBKeyData::isValid const):
(WebCore::IDBKeyData::operator== const):
* Modules/indexeddb/IDBKeyData.h:
(WebCore::IDBKeyData::IDBKeyData):
(WebCore::IDBKeyData::minimum):
(WebCore::IDBKeyData::maximum):
(WebCore::IDBKeyData::type const):
(WebCore::IDBKeyData::hash const):
(WebCore::IDBKeyData::string const):
(WebCore::IDBKeyData::date const):
(WebCore::IDBKeyData::number const):
(WebCore::IDBKeyData::binary const):
(WebCore::IDBKeyData::array const):
(WebCore::IDBKeyData::encode const):
(WebCore::IDBKeyData::decode):
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey):
* bindings/js/IDBBindingUtilities.cpp:
(WebCore::toJS):
2018-09-14 Xabier Rodriguez Calvar <calvaris@igalia.com>
[EME] Add support the waitingforkey event
https://bugs.webkit.org/show_bug.cgi?id=189616
Reviewed by Philippe Normand.
Crossplatform support to fire the waitingforkey event from the
player to the element. The element implements the W3C specified
algorithm.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaPlayerWaitingForKey):
(WebCore::HTMLMediaElement::attemptToResumePlaybackIfNecessary):
* html/HTMLMediaElement.h:
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::waitingForKey):
* platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayerClient::mediaPlayerWaitingForKey):
2018-09-14 Mike Gorse <mgorse@suse.com>
builtins directory causes name conflict on Python 3
https://bugs.webkit.org/show_bug.cgi?id=189552
Reviewed by Michael Catanzaro.
No new tests (No behavior change).
* CMakeLists.txt: builtins -> wkbuiltins.
* DerivedSources.make: builtins -> wkbuiltins.
2018-09-13 Ryosuke Niwa <rniwa@webkit.org>
Capturing event listeners are called during bubbling phase for shadow hosts
https://bugs.webkit.org/show_bug.cgi?id=174288
<rdar://problem/33530455>
Reviewed by Darin Adler.
Implemented the new behavior proposed in https://github.com/whatwg/dom/pull/686 [1] to fix the problem
that capturing event listeners on a shadow host is invoked during bubbling phase when an event is
dispatched within its shadow tree.
To see why this is a problem, suppose we fire a composed event at span#target in the following DOM tree:
section#hostParent
+ div#host -- ShadowRoot
- p#parent
- span#target
Then capturing and bubbling event listeners on #target, #parent, #host, and #hostParent are invoked in
the following order in WebKit & Chrome right now:
1. #hostParent, capturing, eventPhase: CAPTURING_PHASE
2. #parent, capturing, eventPhase: CAPTURING_PHASE
3. #target, capturing, eventPhase: AT_TARGET
4. #target, non-capturing, eventPhase: AT_TARGET
5. #parent, non-capturing, eventPhase: BUBBLING_PHASE
6. #host, capturing, eventPhase: AT_TARGET
7. #host, non-capturing, eventPhase: AT_TARGET
8. #hostParent, non-capturing, eventPhase: BUBBLING_PHASE
This is counter-intuitive because capturing event listeners on #host isn't invoked until bubblign phase
started. A more natural ordering would be:
1. #hostParent, capturing, eventPhase: CAPTURING_PHASE
2. #host, capturing, eventPhase: AT_TARGET
3. #parent, capturing, eventPhase: CAPTURING_PHASE
4. #target, capturing, eventPhase: AT_TARGET
5. #target, non-capturing, eventPhase: AT_TARGET
6. #parent, non-capturing, eventPhase: BUBBLING_PHASE
7. #host, non-capturing, eventPhase: AT_TARGET
8. #hostParent, non-capturing, eventPhase: BUBBLING_PHASE
This also happens to be the order by which Gecko's current shadow DOM implementation invoke event listners.
This patch implements this new behavior using the spec-change proposed in [1]. Note that this patch also
impacts the invocation order of event listeners when there is no shadow tree. Namely, before this patch,
event listeners on the event's target is invoked in the registration order. After this patch, all capturing
event listeners are invoked before bubbling event listeners are invoked.
To implement this behavior, this patch introduces EventTarget::EventInvokePhase indicating whether we're
in the capturing phase or bubbling phase to EventTarget::fireEventListeners. We can't use Event's eventPhase
enum because that's set to Event::Phase::AT_TARGET when we're at a shadow host.
Test: fast/shadow-dom/capturing-and-bubbling-event-listeners-across-shadow-trees.html
* Modules/modern-media-controls/media/media-controller-support.js:
(MediaControllerSupport.prototype.enable): Use capturing event listeners so that we can update the states of
media controls before author scripts recieve the event.
(MediaControllerSupport.prototype.disable): Ditto.
* dom/EventContext.cpp:
(WebCore::EventContext::handleLocalEvents const):
(WebCore::MouseOrFocusEventContext::handleLocalEvents const):
(WebCore::TouchEventContext::handleLocalEvents const):
* dom/EventContext.h:
* dom/EventDispatcher.cpp:
(WebCore::dispatchEventInDOM): Invoke capturing event listners even when target and current target are same.
This happens when the current target is a shadow host and event's target is in its shadow tree. Also merged
the special code path for the event's target with the code in the bubbling phase.
* dom/EventPath.cpp:
(WebCore::WindowEventContext::handleLocalEvents const):
* dom/EventTarget.cpp:
(WebCore::EventTarget::dispatchEvent): Invoke capturing and bubbling event listeners in the order.
(WebCore::EventTarget::fireEventListeners):
(WebCore::EventTarget::innerInvokeEventListeners): Renamed from fireEventListeners to match the spec. Use
EventInvokePhase to filter out event listeners so that we can invoke capturing event listners before bubbling
event listeners even when eventPhase is Event::Phase::AT_TARGET.
* dom/EventTarget.h:
* dom/Node.cpp:
(WebCore::Node::handleLocalEvents):
* dom/Node.h:
* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::handleLocalEvents):
* html/HTMLFormElement.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::dispatchEvent):
2018-09-13 Megan Gardner <megan_gardner@apple.com>
Fix color stop blending in conic gradients for stops past 1
https://bugs.webkit.org/show_bug.cgi?id=189532
<rdar://problem/44158221>
Reviewed by Simon Fraser.
Calculation was wrong, fixed it, and wrote a test that failed
without the change, and passes with it.
Test: fast/gradients/conic-repeating-last-stop.html
* css/CSSGradientValue.cpp:
(WebCore::ConicGradientAdapter::normalizeStopsAndEndpointsOutsideRange):
2018-09-13 Chris Dumez <cdumez@apple.com>
Regression(PSON): setting window.opener to null allows process swapping in cases that are not web-compatible
https://bugs.webkit.org/show_bug.cgi?id=189590
<rdar://problem/44422725>
Reviewed by Geoffrey Garen.
Set a flag on the navigation action to indicate if the page was opened via window.open() without 'noopener'.
Test: http/tests/navigation/window-open-cross-origin-then-navigated-back-same-origin.html
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadURL):
* loader/NavigationAction.h:
(WebCore::NavigationAction::openedViaWindowOpenWithOpener const):
(WebCore::NavigationAction::setOpenedViaWindowOpenWithOpener):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
* page/Page.h:
(WebCore::Page::openedViaWindowOpenWithOpener const):
(WebCore::Page::setOpenedViaWindowOpenWithOpener):
2018-09-13 Jer Noble <jer.noble@apple.com>
Enable USE_MEDIAREMOTE on iOS
https://bugs.webkit.org/show_bug.cgi?id=189096
Reviewed by Eric Carlson.
Migrate to using MediaRemote.framework on iOS from MediaPlayer.framework. This unifies the
Now Playing implementation on iOS and Mac.
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/audio/cocoa/MediaSessionManagerCocoa.cpp: Removed.
* platform/audio/cocoa/MediaSessionManagerCocoa.h:
* platform/audio/cocoa/MediaSessionManagerCocoa.mm: Renamed from Source/WebCore/platform/audio/mac/MediaSessionManagerMac.mm.
(PlatformMediaSessionManager::sharedManager):
(PlatformMediaSessionManager::sharedManagerIfExists):
(MediaSessionManagerCocoa::updateSessionState):
(MediaSessionManagerCocoa::beginInterruption):
(MediaSessionManagerCocoa::scheduleUpdateNowPlayingInfo):
(MediaSessionManagerCocoa::sessionWillBeginPlayback):
(MediaSessionManagerCocoa::sessionDidEndRemoteScrubbing):
(MediaSessionManagerCocoa::removeSession):
(MediaSessionManagerCocoa::sessionWillEndPlayback):
(MediaSessionManagerCocoa::clientCharacteristicsChanged):
(MediaSessionManagerCocoa::sessionCanProduceAudioChanged):
(MediaSessionManagerCocoa::nowPlayingEligibleSession):
(MediaSessionManagerCocoa::updateNowPlayingInfo):
* platform/audio/ios/MediaSessionManagerIOS.h:
(): Deleted.
* platform/audio/ios/MediaSessionManagerIOS.mm:
(WebCore::MediaSessionManageriOS::nowPlayingEligibleSession): Deleted.
(WebCore::MediaSessionManageriOS::updateNowPlayingInfo): Deleted.
(WebCore::MediaSessionManageriOS::sessionWillBeginPlayback): Deleted.
(WebCore::MediaSessionManageriOS::removeSession): Deleted.
(WebCore::MediaSessionManageriOS::sessionWillEndPlayback): Deleted.
(WebCore::MediaSessionManageriOS::clientCharacteristicsChanged): Deleted.
* platform/audio/mac/MediaSessionManagerMac.h: Removed.
2018-09-13 Fujii Hironori <Hironori.Fujii@sony.com>
Remove the workaround for friend class LazyNeverDestroyed<X> statements for MSVC
https://bugs.webkit.org/show_bug.cgi?id=189576
Reviewed by Alex Christensen.
Old MSVC can't compile "friend class LazyNeverDestroyed<X>"
statements, but "friend LazyNeverDestroyed<X>".
No new tests (No behavior change).
* css/CSSInheritedValue.h: Removed the code for COMPILER(MSVC).
Removed 'class' keyword in "friend class LazyNeverDestroyed<X>"
statement.
* css/CSSInitialValue.h: Ditto.
* css/CSSPrimitiveValue.h: Ditto.
* css/CSSRevertValue.h: Ditto.
* css/CSSUnsetValue.h: Ditto.
2018-09-13 Ms2ger <Ms2ger@igalia.com>
[GLib] Fix format string in KeyedEncoderGlib::beginObject().
https://bugs.webkit.org/show_bug.cgi?id=189585
Reviewed by Michael Catanzaro.
This appears to fix the following assertion locally:
GLib-CRITICAL **: g_variant_builder_add_value: assertion '!GVSB(builder)->expected_type || g_variant_is_of_type (value, GVSB(builder)->expected_type)' failed
Covered by existing tests.
* platform/glib/KeyedEncoderGlib.cpp:
(WebCore::KeyedEncoderGlib::beginObject):
2018-09-13 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r235953.
Caused layout test crashes under GuardMalloc.
Reverted changeset:
"Make GraphicsLayers ref-counted, so their tree can persist
when disconnected from RenderLayerBackings"
https://bugs.webkit.org/show_bug.cgi?id=189521
https://trac.webkit.org/changeset/235953
2018-09-13 Fujii Hironori <Hironori.Fujii@sony.com>
Remove a MSVC workaround in XPath::Step::NodeTest
https://bugs.webkit.org/show_bug.cgi?id=189578
Reviewed by Alex Christensen.
XPath::Step::NodeTest has a special code for MSVC bug workaround.
It has been introduced in 5 years ago in Bug 121082 Comment 19.
I think it is safe just to remove the workaround.
No new tests (No behavior change).
* xml/XPathStep.h: Removed the MSVC workaround.
2018-09-13 Fujii Hironori <Hironori.Fujii@sony.com>
Remove a MSVC workaround in InspectorStyle::styleWithProperties
https://bugs.webkit.org/show_bug.cgi?id=189577
Reviewed by Alex Christensen.
No new tests (No behavior change).
* inspector/InspectorStyleSheet.cpp:
(WebCore::InspectorStyle::styleWithProperties const): Use 'auto' for the type of 'status'.
2018-09-13 Alex Christensen <achristensen@webkit.org>
Use a Variant instead of a union in CSSSelector
https://bugs.webkit.org/show_bug.cgi?id=188559
Reviewed by Antti Koivisto.
No change in behavior. This just makes some of the existing problems more obvious and easy to fix.
I moved m_caseInsensitiveAttributeValueMatching to RareData because it's only used with RareData.
I only have m_isForPage when assertions are enabled because it's only used for an assertion.
The rest is pretty straightforward translating union syntax to Variant syntax.
I use RefPtr for now where I could use Ref because it's never null to make copying easier, but that's temporary.
* css/CSSSelector.cpp:
(WebCore::CSSSelector::CSSSelector):
(WebCore::CSSSelector::createRareData):
(WebCore::CSSSelector::setAttribute):
(WebCore::CSSSelector::setArgument):
(WebCore::CSSSelector::setLangArgumentList):
(WebCore::CSSSelector::setSelectorList):
(WebCore::CSSSelector::setNth):
(WebCore::CSSSelector::matchNth const):
(WebCore::CSSSelector::nthA const):
(WebCore::CSSSelector::nthB const):
(WebCore::CSSSelector::RareData::RareData):
* css/CSSSelector.h:
(WebCore::CSSSelector::argument const):
(WebCore::CSSSelector::langArgumentList const):
(WebCore::CSSSelector::selectorList const):
(WebCore::CSSSelector::attribute const):
(WebCore::CSSSelector::attributeCanonicalLocalName const):
(WebCore::CSSSelector::setValue):
(WebCore::CSSSelector::CSSSelector):
(WebCore::CSSSelector::~CSSSelector):
(WebCore::CSSSelector::tagQName const):
(WebCore::CSSSelector::tagLowercaseLocalName const):
(WebCore::CSSSelector::value const):
(WebCore::CSSSelector::serializingValue const):
(WebCore::CSSSelector::attributeValueMatchingIsCaseInsensitive const):
(WebCore::CSSSelector::RareData::create): Deleted.
* css/parser/CSSParserImpl.cpp:
(WebCore::CSSParserImpl::parsePageSelector):
* css/parser/CSSParserSelector.h:
2018-09-13 Fujii Hironori <Hironori.Fujii@sony.com>
[Win][Clang] error: type 'float' cannot be narrowed to 'LONG' (aka 'long') in initializer list in WheelEventWin.cpp
https://bugs.webkit.org/show_bug.cgi?id=189575
Reviewed by Alex Christensen.
No new tests (No behavior change).
* platform/win/WheelEventWin.cpp:
(WebCore::PlatformWheelEvent::PlatformWheelEvent): Use flooredIntPoint to convert FloatPoint to POINT.
2018-09-13 Youenn Fablet <youenn@apple.com>
Introduce RTCRtpSendParameters
https://bugs.webkit.org/show_bug.cgi?id=189563
Reviewed by Eric Carlson.
Introduce RTCRtpSendParameters to match the WebRTC specification.
Split RTCRtpPrameters fields accordingly and update call sites.
Covered by updated test.
* CMakeLists.txt:
* DerivedSources.make:
* Modules/mediastream/PeerConnectionBackend.h:
* Modules/mediastream/RTCRtpCodingParameters.h: Added
* Modules/mediastream/RTCRtpCodingParameters.idl: Added
* Modules/mediastream/RTCRtpDecodingParameters.h: Added
* Modules/mediastream/RTCRtpDecodingParameters.idl: Added
* Modules/mediastream/RTCRtpEncodingParameters.h:
* Modules/mediastream/RTCRtpEncodingParameters.idl:
* Modules/mediastream/RTCRtpParameters.h:
* Modules/mediastream/RTCRtpParameters.idl:
* Modules/mediastream/RTCRtpReceiver.cpp:
* Modules/mediastream/RTCRtpSendParameters.h: Added.
(WebCore::RTCRtpSendParameters::RTCRtpSendParameters):
* Modules/mediastream/RTCRtpSendParameters.idl: Added.
* Modules/mediastream/RTCRtpSender.cpp:
(WebCore::RTCRtpSender::getParameters):
(WebCore::RTCRtpSender::setParameters):
* Modules/mediastream/RTCRtpSender.h:
* Modules/mediastream/RTCRtpSender.idl:
* Modules/mediastream/RTCRtpSenderBackend.h:
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
(WebCore::LibWebRTCRtpSenderBackend::getParameters const):
(WebCore::LibWebRTCRtpSenderBackend::setParameters):
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
* Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
(WebCore::toRTCRtpParameters):
(WebCore::toRTCRtpSendParameters):
(WebCore::fromRTCRtpSendParameters):
* Modules/mediastream/libwebrtc/LibWebRTCUtils.h:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2018-09-13 Xabier Rodriguez Calvar <calvaris@igalia.com>
[GStreamer][EME] decrypt-key-needed message renamed to drm-cdm-instance-needed
https://bugs.webkit.org/show_bug.cgi?id=189547
Reviewed by Philippe Normand.
decrypt-key-needed message renamed to drm-cdm-instance-needed.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::handleMessage): Apart from
renaming the message, removed the class prefix for
dispatchCDMInstance.
* platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
(webkitMediaCommonEncryptionDecryptTransformInPlace):
2018-09-11 Ryosuke Niwa <rniwa@webkit.org>
imported/w3c/web-platform-tests/shadow-dom/form-control-form-attribute.html hits assertion
https://bugs.webkit.org/show_bug.cgi?id=189493
Reviewed by Alex Christensen.
The debug assertion was caused by RefPtr in FormAssociatedElement::formOwnerRemovedFromTree introduced
by r224390 and r223644 ref'ing ShadowRoot while calling removeDetachedChildren inside ~ShadowRoot.
When a form (or any other) element has more than one ref inside removeDetachedChildren,
addChildNodesToDeletionQueue calls notifyChildNodeRemoved in the tree oreder.
However, when a form associated element of this form element appears later in the tree order,
FormAssociatedElement::formOwnerRemovedFromTree can traverse up ancestors including the ShadowRoot.
Fixed the bug by using raw pointers instead. Luckily, there is no DOM mutations or other non-trivial
operations happening in this function so this should be safe.
Test: imported/w3c/web-platform-tests/shadow-dom/form-control-form-attribute.html
* html/FormAssociatedElement.cpp:
(WebCore::FormAssociatedElement::formOwnerRemovedFromTree): Fixed the bug.
2018-09-12 Dan Bernstein <mitz@apple.com>
[Cocoa] Complete support for Paste as Quotation
https://bugs.webkit.org/show_bug.cgi?id=189504
Reviewed by Wenson Hsieh.
Tests: editing/pasteboard/4930986-1-paste-as-quotation.html
editing/pasteboard/4930986-2-paste-as-quotation.html
editing/pasteboard/4930986-3-paste-as-quotation.html
* editing/Editor.cpp:
Added ClipboardEventKind::PasteAsQuotation.
(WebCore::eventNameForClipboardEvent): Map PasteAsQuotation to the "paste" DOM event name.
(WebCore::createDataTransferForClipboardEvent): Place the unquoted content in the event.
This means that currently event handlers can’t emulate pasting as quotation, because they
neither have the quoted content nor knowledge that quoting has been requested. We could
change this in the future if needed.
(WebCore::Editor::paste): Updated for change in pasteWithPasteboard’s argument type.
(WebCore::Editor::pasteAsQuotation): Added. Similar to paste, but passes
PasteOption::AsQuotation to pasteWithPasteboard.
(WebCore::Editor::quoteFragmentForPasting): Added. Quoting for pasting consists of enclosing
the fragment in a blockquote element with the "type" attribute set to "cite" and the
"class" attribute set to a well-known value, which is used to trigger special behavior in
ReplaceSelectionCommand. The behavior includes removing the "class" attribute in the end,
so eventually, we could stop using this form of in-band signaling.
* editing/Editor.h: Declared PasteOption enum class to encompass the existing allowPlainText
and MailBlockquoteHandling arguments to pasteWithPasteboard as well as the new AsQuotation
behavior.
* editing/EditorCommand.cpp:
(WebCore::executePasteAsQuotation): Added. Similar to executing Paste.
(WebCore::createCommandMap): Added an entry for PasteAsQuotation, based on the Paste entry.
* editing/cocoa/EditorCocoa.mm:
(WebCore::Editor::webContentFromPasteboard): Moved from EditorIOS.mm and EditorMac.mm to
here.
* editing/gtk/EditorGtk.cpp:
(WebCore::Editor::pasteWithPasteboard): Updated for new OptionSet argument, added a call to
quote the fragment if needed.
* editing/ios/EditorIOS.mm:
(WebCore::Editor::pasteWithPasteboard): Ditto.
(WebCore::Editor::webContentFromPasteboard): Moved to EditorCocoa.mm.
* editing/mac/EditorMac.mm:
(WebCore::Editor::pasteWithPasteboard): Updated for new OptionSet argument, added a call to
quote the fragment if needed.
(WebCore::Editor::readSelectionFromPasteboard): Updated for new OptionSet argument to
pasteWithPasteboard.
(WebCore::Editor::webContentFromPasteboard): Moved to EditorCocoa.mm.
* editing/win/EditorWin.cpp:
(WebCore::Editor::pasteWithPasteboard): Updated for new OptionSet argument, added a call to
quote the fragment if needed.
* editing/wpe/EditorWPE.cpp:
(WebCore::Editor::pasteWithPasteboard): Ditto.
2018-09-11 Simon Fraser <simon.fraser@apple.com>
Make GraphicsLayers ref-counted, so their tree can persist when disconnected from RenderLayerBackings
https://bugs.webkit.org/show_bug.cgi?id=189521
Reviewed by Tim Horton.
Make GraphicsLayer be RefCounted<GraphicsLayer>. GraphicsLayers own their children, via a Vector<Ref<GraphicsLayer>>.
RenderLayerBacking and other holders of GraphicsLayers use RefPtr<GraphicsLayer>.
All the other changes are just to adapt to the new ownership patterns.
I verified that no GraphicsLayers were leaked or abandoned after this change.
No behavior change.
* page/PageOverlayController.cpp:
(WebCore::PageOverlayController::layerWithDocumentOverlays):
(WebCore::PageOverlayController::layerWithViewOverlays):
(WebCore::PageOverlayController::installPageOverlay):
(WebCore::PageOverlayController::uninstallPageOverlay):
(WebCore::PageOverlayController::setPageOverlayNeedsDisplay):
(WebCore::PageOverlayController::didChangeViewSize):
(WebCore::PageOverlayController::didChangeDocumentSize):
(WebCore::PageOverlayController::didChangeSettings):
(WebCore::PageOverlayController::paintContents):
(WebCore::PageOverlayController::didChangeOverlayFrame):
(WebCore::PageOverlayController::didChangeOverlayBackgroundColor):
* page/PageOverlayController.h:
* page/mac/ServicesOverlayController.h:
(WebCore::ServicesOverlayController::Highlight::layer const):
* page/mac/ServicesOverlayController.mm:
(WebCore::ServicesOverlayController::Highlight::Highlight):
(WebCore::ServicesOverlayController::Highlight::invalidate):
(WebCore::ServicesOverlayController::Highlight::fadeIn):
(WebCore::ServicesOverlayController::Highlight::fadeOut):
(WebCore::ServicesOverlayController::Highlight::didFinishFadeOutAnimation):
(WebCore::ServicesOverlayController::determineActiveHighlight):
* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::GraphicsLayer):
(WebCore::GraphicsLayer::willBeDestroyed):
(WebCore::GraphicsLayer::setChildren):
(WebCore::GraphicsLayer::addChild):
(WebCore::GraphicsLayer::addChildAtIndex):
(WebCore::GraphicsLayer::addChildBelow):
(WebCore::GraphicsLayer::addChildAbove):
(WebCore::GraphicsLayer::replaceChild):
(WebCore::GraphicsLayer::removeAllChildren):
(WebCore::GraphicsLayer::removeFromParent):
(WebCore::GraphicsLayer::setMaskLayer):
(WebCore::GraphicsLayer::noteDeviceOrPageScaleFactorChangedIncludingDescendants):
(WebCore::GraphicsLayer::distributeOpacity):
(WebCore::GraphicsLayer::traverse):
(WebCore::dumpChildren):
* platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::children const):
(WebCore::GraphicsLayer::children):
(WebCore::GraphicsLayer::maskLayer const):
(WebCore::GraphicsLayer::replicaLayer const):
(WebCore::GraphicsLayer::beingDestroyed const):
(WebCore::GraphicsLayer:: const): Deleted.
* platform/graphics/GraphicsLayerFactory.h:
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayer::create):
(WebCore::GraphicsLayerCA::setChildren):
(WebCore::GraphicsLayerCA::addChild):
(WebCore::GraphicsLayerCA::addChildAtIndex):
(WebCore::GraphicsLayerCA::addChildBelow):
(WebCore::GraphicsLayerCA::addChildAbove):
(WebCore::GraphicsLayerCA::replaceChild):
(WebCore::GraphicsLayerCA::setMaskLayer):
(WebCore::GraphicsLayerCA::recursiveVisibleRectChangeRequiresFlush const):
(WebCore::GraphicsLayerCA::recursiveCommitChanges):
(WebCore::GraphicsLayerCA::updateSublayerList):
(WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
* platform/graphics/ca/GraphicsLayerCA.h:
* platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
(WebCore::GraphicsLayer::create):
(WebCore::GraphicsLayerTextureMapper::setChildren):
(WebCore::GraphicsLayerTextureMapper::addChild):
(WebCore::GraphicsLayerTextureMapper::addChildAtIndex):
(WebCore::GraphicsLayerTextureMapper::addChildAbove):
(WebCore::GraphicsLayerTextureMapper::addChildBelow):
(WebCore::GraphicsLayerTextureMapper::replaceChild):
(WebCore::GraphicsLayerTextureMapper::setMaskLayer):
(WebCore::GraphicsLayerTextureMapper::updateBackingStoreIncludingSubLayers):
* platform/graphics/texmap/GraphicsLayerTextureMapper.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::GraphicsLayer::create):
(WebCore::CoordinatedGraphicsLayer::setShouldUpdateVisibleRect):
(WebCore::CoordinatedGraphicsLayer::addChild):
(WebCore::CoordinatedGraphicsLayer::addChildAtIndex):
(WebCore::CoordinatedGraphicsLayer::addChildAbove):
(WebCore::CoordinatedGraphicsLayer::addChildBelow):
(WebCore::CoordinatedGraphicsLayer::replaceChild):
(WebCore::CoordinatedGraphicsLayer::setMaskLayer):
(WebCore::CoordinatedGraphicsLayer::syncPendingStateChangesIncludingSubLayers):
(WebCore::CoordinatedGraphicsLayer::updateContentBuffersIncludingSubLayers):
(WebCore::CoordinatedGraphicsLayer::setCoordinatorIncludingSubLayersIfNeeded):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
* platform/graphics/win/GraphicsLayerDirect2D.cpp:
(WebCore::GraphicsLayer::create):
(WebCore::GraphicsLayerDirect2D::GraphicsLayerDirect2D): Deleted.
(WebCore::GraphicsLayerDirect2D::initialize): Deleted.
(WebCore::GraphicsLayerDirect2D::~GraphicsLayerDirect2D): Deleted.
(WebCore::GraphicsLayerDirect2D::setNeedsDisplay): Deleted.
(WebCore::GraphicsLayerDirect2D::setNeedsDisplayInRect): Deleted.
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::createGraphicsLayer):
(WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
(WebCore::RenderLayerBacking::updateConfiguration):
(WebCore::RenderLayerBacking::updateInternalHierarchy):
(WebCore::RenderLayerBacking::updateMaskingLayer):
(WebCore::RenderLayerBacking::updateChildClippingStrategy):
(WebCore::RenderLayerBacking::updateScrollingLayers):
* rendering/RenderLayerBacking.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateCompositingLayers):
(WebCore::RenderLayerCompositor::appendDocumentOverlayLayers):
(WebCore::RenderLayerCompositor::setCompositingParent):
(WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
(WebCore::RenderLayerCompositor::parentFrameContentLayers):
(WebCore::RenderLayerCompositor::updateLayerForTopOverhangArea):
(WebCore::RenderLayerCompositor::updateLayerForBottomOverhangArea):
(WebCore::RenderLayerCompositor::updateLayerForHeader):
(WebCore::RenderLayerCompositor::updateLayerForFooter):
(WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
(WebCore::RenderLayerCompositor::ensureRootLayer):
(WebCore::RenderLayerCompositor::rootLayerAttachmentChanged):
* rendering/RenderLayerCompositor.h:
2018-09-12 Alex Christensen <achristensen@webkit.org>
Expose fewer of URL's internal members
https://bugs.webkit.org/show_bug.cgi?id=189528
Reviewed by Chris Dumez.
* loader/appcache/ApplicationCacheStorage.cpp:
(WebCore::urlHostHash):
* platform/URL.cpp:
(WebCore::URL::hostStart const):
(WebCore::protocolHostAndPortAreEqual):
(WebCore::hostsAreEqual):
* platform/URL.h:
(WebCore::URL::hostStart const): Deleted.
(WebCore::URL::hostEnd const): Deleted.
2018-09-12 Basuke Suzuki <Basuke.Suzuki@sony.com>
[Curl] Implement correct total received bytes.
https://bugs.webkit.org/show_bug.cgi?id=189555
Reviewed by Alex Christensen.
Curl port only reported total network received bytes before decoding.
No new test. InspectorTest is only available for WebKitTestRunner.
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::didReceiveData):
(WebCore::CurlRequest::updateNetworkLoadMetrics):
* platform/network/curl/CurlRequest.h:
2018-09-12 Youenn Fablet <youenn@apple.com>
Split RTCRtpParameters idl and header file
https://bugs.webkit.org/show_bug.cgi?id=189524
Reviewed by Eric Carlson.
This will be easier to manage and will allow to more easily introduce sender/receiver parameters.
No change of behavior.
* CMakeLists.txt:
* DerivedSources.make:
* Modules/mediastream/RTCDegradationPreference.h: Copied from Source/WebCore/Modules/mediastream/RTCRtpParameters.h.
* Modules/mediastream/RTCDegradationPreference.idl: Added.
* Modules/mediastream/RTCDtxStatus.h: Copied from Source/WebCore/Modules/mediastream/RTCRtpParameters.h.
* Modules/mediastream/RTCDtxStatus.idl: Added.
* Modules/mediastream/RTCPriorityType.h: Copied from Source/WebCore/Modules/mediastream/RTCRtpParameters.h.
* Modules/mediastream/RTCPriorityType.idl: Added.
* Modules/mediastream/RTCRtpCodecParameters.h: Copied from Source/WebCore/Modules/mediastream/RTCRtpParameters.h.
* Modules/mediastream/RTCRtpCodecParameters.idl: Added.
* Modules/mediastream/RTCRtpEncodingParameters.h: Copied from Source/WebCore/Modules/mediastream/RTCRtpParameters.h.
* Modules/mediastream/RTCRtpEncodingParameters.idl: Added.
* Modules/mediastream/RTCRtpFecParameters.h: Copied from Source/WebCore/Modules/mediastream/RTCRtpParameters.h.
* Modules/mediastream/RTCRtpFecParameters.idl: Added.
* Modules/mediastream/RTCRtpHeaderExtensionParameters.h: Copied from Source/WebCore/Modules/mediastream/RTCRtpParameters.h.
* Modules/mediastream/RTCRtpHeaderExtensionParameters.idl: Added.
* Modules/mediastream/RTCRtpParameters.h:
* Modules/mediastream/RTCRtpParameters.idl:
* Modules/mediastream/RTCRtpRtxParameters.h: Copied from Source/WebCore/Modules/mediastream/RTCRtpParameters.h.
* Modules/mediastream/RTCRtpRtxParameters.idl: Added.
* Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
(WebCore::toRTCEncodingParameters):
(WebCore::fromRTCEncodingParameters):
(WebCore::toRTCHeaderExtensionParameters):
(WebCore::fromRTCHeaderExtensionParameters):
(WebCore::toRTCCodecParameters):
(WebCore::toRTCRtpParameters):
(WebCore::fromRTCRtpParameters):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
2018-09-12 Ali Juma <ajuma@chromium.org>
[IntersectionObserver] Implement rootMargin expansion
https://bugs.webkit.org/show_bug.cgi?id=189525
Reviewed by Simon Fraser.
Expand the root intersection rectangle by the observer's rootMargin when computing
intersections.
Test: imported/w3c/web-platform-tests/intersection-observer/root-margin.html
* dom/Document.cpp:
(WebCore::expandRootBoundsWithRootMargin):
(WebCore::computeIntersectionRects):
* page/IntersectionObserver.h:
(WebCore::IntersectionObserver::rootMarginBox const):
* platform/graphics/FloatRect.h:
(WebCore::FloatRect::expand):
2018-09-12 Fujii Hironori <Hironori.Fujii@sony.com>
[Win][Clang] error: non-constant-expression cannot be narrowed from type 'int' to 'SHORT'
https://bugs.webkit.org/show_bug.cgi?id=189542
Reviewed by Alex Christensen.
No new tests (No behavior change).
* platform/graphics/win/IntPointWin.cpp:
(WebCore::IntPoint::operator POINTS const): Narrowed m_x and m_y by using static_cast.
2018-09-12 Guillaume Emont <guijemont@igalia.com>
Add IGNORE_WARNING_.* macros
https://bugs.webkit.org/show_bug.cgi?id=188996
Reviewed by Michael Catanzaro.
* Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
* accessibility/mac/AXObjectCacheMac.mm:
(WebCore::AXObjectCache::postPlatformNotification):
* accessibility/mac/AccessibilityObjectMac.mm:
(WebCore::AccessibilityObject::overrideAttachmentParent):
(WebCore::AccessibilityObject::accessibilityIgnoreAttachment const):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper renderWidgetChildren]):
(-[WebAccessibilityObjectWrapper convertPointToScreenSpace:]):
(-[WebAccessibilityObjectWrapper role]):
(-[WebAccessibilityObjectWrapper roleDescription]):
* bridge/objc/WebScriptObject.mm:
* bridge/objc/objc_class.mm:
(JSC::Bindings::ObjcClass::fieldNamed const):
* crypto/CommonCryptoUtilities.cpp:
(WebCore::getCommonCryptoDigestAlgorithm):
* crypto/mac/CryptoAlgorithmAES_GCMMac.cpp:
(WebCore::encryptAES_GCM):
(WebCore::decyptAES_GCM):
* crypto/mac/SerializedCryptoKeyWrapMac.mm:
(WebCore::wrapSerializedCryptoKey):
(WebCore::unwrapSerializedCryptoKey):
* css/makeSelectorPseudoClassAndCompatibilityElementMap.py:
* css/makeSelectorPseudoElementsMap.py:
* editing/TextIterator.cpp:
* editing/mac/EditorMac.mm:
(WebCore::Editor::pasteWithPasteboard):
(WebCore::Editor::takeFindStringFromSelection):
(WebCore::Editor::replaceNodeFromPasteboard):
* page/mac/EventHandlerMac.mm:
(WebCore::EventHandler::sendFakeEventsAfterWidgetTracking):
* page/mac/ServicesOverlayController.mm:
(WebCore::ServicesOverlayController::Highlight::paintContents):
* platform/LocalizedStrings.cpp:
(WebCore::formatLocalizedString):
* platform/ScreenProperties.h:
(WebCore::ScreenData::decode):
* platform/gamepad/mac/HIDGamepadProvider.cpp:
(WebCore::HIDGamepadProvider::stopMonitoringInput):
* platform/graphics/PlatformDisplay.cpp:
(WebCore::PlatformDisplay::sharedDisplay):
* platform/graphics/SurrogatePairAwareTextIterator.cpp:
* platform/graphics/avfoundation/MediaSelectionGroupAVFObjC.mm:
(WebCore::MediaSelectionGroupAVFObjC::updateOptions):
* platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
(WebCore::CDMSessionAVStreamSession::update):
* platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::setCurrentTextTrack):
(WebCore::MediaPlayerPrivateAVFoundationObjC::languageOfPrimaryAudioTrack const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldDisableSleep):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::IGNORE_CLANG_WARNING_END):
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(-[WebAVSampleBufferErrorListener beginObservingRenderer:]):
(-[WebAVSampleBufferErrorListener stopObservingRenderer:]):
(-[WebAVSampleBufferErrorListener observeValueForKeyPath:ofObject:change:context:]):
(WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled):
(WebCore::IGNORE_CLANG_WARNING_END):
* platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(PlatformCALayer::drawLayerContents):
* platform/graphics/cairo/FontCairoHarfbuzzNG.cpp:
(WebCore::FontCascade::fontForCombiningCharacterSequence const):
* platform/graphics/cg/ImageDecoderCG.cpp:
(WebCore::ImageDecoderCG::createFrameImageAtIndex):
* platform/graphics/cocoa/GraphicsContextCocoa.mm:
(WebCore::GraphicsContext::drawLineForDocumentMarker):
* platform/graphics/cocoa/WebGLLayer.h:
(IGNORE_CLANG_WARNING):
* platform/graphics/mac/ComplexTextControllerCoreText.mm:
(WebCore::ComplexTextController::collectComplexTextRunsForCharacters):
* platform/graphics/mac/IconMac.mm:
(WebCore::Icon::Icon):
* platform/graphics/mac/PDFDocumentImageMac.mm:
(WebCore::PDFDocumentImage::drawPDFPage):
* platform/graphics/mac/WebKitNSImageExtras.mm:
(-[NSImage _web_lockFocusWithDeviceScaleFactor:]):
* platform/ios/DragImageIOS.mm:
* platform/mac/DragImageMac.mm:
(WebCore::scaleDragImage):
(WebCore::createDragImageForLink):
* platform/mac/LegacyNSPasteboardTypes.h:
* platform/mac/LocalCurrentGraphicsContext.mm:
(WebCore::LocalCurrentGraphicsContext::LocalCurrentGraphicsContext):
* platform/mac/PasteboardMac.mm:
(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::setDragImageImpl):
* platform/mac/PlatformEventFactoryMac.mm:
(WebCore::globalPoint):
* platform/mac/SSLKeyGeneratorMac.mm:
* platform/mac/ScrollViewMac.mm:
(WebCore::ScrollView::platformContentsToScreen const):
(WebCore::ScrollView::platformScreenToContents const):
* platform/mac/ThemeMac.mm:
(WebCore::drawCellFocusRingWithFrameAtTime):
* platform/mac/WebPlaybackControlsManager.mm:
* platform/mac/WidgetMac.mm:
(WebCore::Widget::paint):
* platform/mediastream/RealtimeIncomingAudioSource.h:
* platform/mediastream/RealtimeIncomingVideoSource.h:
* platform/mediastream/RealtimeOutgoingAudioSource.h:
* platform/mediastream/RealtimeOutgoingVideoSource.h:
* platform/mediastream/libwebrtc/LibWebRTCAudioModule.h:
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
* platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:
* platform/network/cf/NetworkStorageSessionCFNet.cpp:
* platform/network/cf/ResourceHandleCFNet.cpp:
(WebCore::ResourceHandle::createCFURLConnection):
* platform/network/cf/SocketStreamHandleImplCFNet.cpp:
(WebCore::SocketStreamHandleImpl::reportErrorToClient):
* platform/network/create-http-header-name-table:
* platform/text/TextEncoding.cpp:
* testing/MockLibWebRTCPeerConnection.h:
* xml/XPathGrammar.cpp:
2018-09-12 Pablo Saavedra <psaavedra@igalia.com>
Linking against libWPEWebKit-0.1.so is not posible when WPE is build with ENABLE_VIDEO=OFF and ENABLE_WEB_AUDIO=OFF
https://bugs.webkit.org/show_bug.cgi?id=189540
Reviewed by Philippe Normand.
Related issues:
This issue is related with changes in https://bugs.webkit.org/show_bug.cgi?id=183080
This issue is introduced in https://bugs.webkit.org/show_bug.cgi?id=186547
No new tests, no changes in the functionality.
* platform/GStreamer.cmake:
* platform/SourcesGLib.txt:
* platform/mediastream/libwebrtc/LibWebRTCProviderGlib.cpp:
(WebCore::LibWebRTCProvider::webRTCAvailable):
2018-09-11 Zan Dobersek <zdobersek@igalia.com>
Unreviewed WPE build fix.
* platform/network/soup/SocketStreamHandleImplSoup.cpp:
Add extra header inclusions to get this code building after the unified
sources system shifted it into a different translation unit.
2018-09-11 Basuke Suzuki <Basuke.Suzuki@sony.com>
[Curl] WebInspector doesn't display request headers added during processing.
https://bugs.webkit.org/show_bug.cgi?id=189531
Reviewed by Alex Christensen.
While processing the request, Curl port network layer adds some headers to the request
such as cookies. Those headers should be displayed in the WebInspector.
Tested on MiniBrowser.
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::didReceiveHeader):
(WebCore::CurlRequest::didCompleteTransfer):
(WebCore::CurlRequest::updateNetworkLoadMetrics):
* platform/network/curl/CurlRequest.h:
2018-09-11 James Savage <james.savage@apple.com>
Follow up to:
Expose -apple-system-container-border color to internal web views.
https://bugs.webkit.org/show_bug.cgi?id=189178.
Reviewed by Timothy Hatcher.
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::systemColor const): Add a separate #if block for
Mojave. When I used CSSValueAppleSystemFindHighlightBackground as a template
for this change, I had to write out the condition in the first change, but
mistakenly thought I could reuse the block here. Turns out the versions were
different, and I could not.
2018-09-11 Youenn Fablet <youenn@apple.com>
Remove MediaDevices NoInterfaceObject
https://bugs.webkit.org/show_bug.cgi?id=189512
Reviewed by Alex Christensen.
Covered by rebased WPT tests.
* Modules/mediastream/MediaDevices.idl:
2018-09-11 Jer Noble <jer.noble@apple.com>
[MediaCapabilities] Implement MediaEngineConfigurationFactory registration
https://bugs.webkit.org/show_bug.cgi?id=189438
Reviewed by Eric Carlson.
Implement a mechanism to register platform-specific MediaEngineConfigurationFactory methods, and a mechanism to iterate
over those registered factories when createDecodingConfiguration() and createEncodingConfiguration() are called.
The Factory has been radically simplified; the concept of MediaEngineDecodingConfiguration
and MediaEngineEncodingConfiguration and its subclasess have been removed. Since the primary
objects representing video and audio configurations are IDLDictionaries, the native objects
are just structs full of POD types (and Strings). Since these have no dependencies on
higher-level HTML concepts, they can be moved into platform/ and accessed from there. This
patch also converts MediaCapabilitiesInfo to an Interface, so its implementation also can
become a struct and live in platform/. The MediaEngineDecodingConfigurationMock and
MediaEngineEncodingConfigurationMock have been consolidated in a single class which simply
parses MediaDecodingConfiguration and MediaEncodingConifguration objects (now that they live
in Platform) and return a MediaCapabilitiesInfo object (now that it does too).
* Modules/mediacapabilities/MediaCapabilities.cpp:
(WebCore::isValidVideoConfiguration):
(WebCore::MediaCapabilities::decodingInfo):
(WebCore::MediaCapabilities::encodingInfo):
* Modules/mediacapabilities/MediaCapabilitiesInfo.h: Removed.
* Modules/mediacapabilities/MediaCapabilitiesInfo.idl:
* Modules/mediacapabilities/VideoConfiguration.idl:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/MediaCapabilitiesInfo.h: Copied from Source/WebCore/Modules/mediacapabilities/MediaDecodingType.h.
* platform/mediacapabilities/AudioConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/AudioConfiguration.h.
* platform/mediacapabilities/MediaConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaConfiguration.h.
* platform/mediacapabilities/MediaDecodingConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaDecodingConfiguration.h.
* platform/mediacapabilities/MediaDecodingType.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaDecodingType.h.
* platform/mediacapabilities/MediaEncodingConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaEncodingConfiguration.h.
* platform/mediacapabilities/MediaEncodingType.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaEncodingType.h.
* platform/mediacapabilities/MediaEngineConfiguration.cpp: Removed.
* platform/mediacapabilities/MediaEngineConfiguration.h: Removed.
* platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:
(WebCore::factories):
(WebCore::MediaEngineConfigurationFactory::createDecodingConfiguration):
(WebCore::MediaEngineConfigurationFactory::createEncodingConfiguration):
* platform/mediacapabilities/MediaEngineConfigurationFactory.h:
* platform/mediacapabilities/MediaEngineEncodingConfiguration.h: Removed.
* platform/mediacapabilities/VideoConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/VideoConfiguration.h.
* platform/mediastream/mac/DisplayCaptureSourceCocoa.h:
* platform/mock/MediaEngineConfigurationFactoryMock.cpp: Added.
(WebCore::canDecodeMedia):
(WebCore::canSmoothlyDecodeMedia):
(WebCore::canPowerEfficientlyDecodeMedia):
(WebCore::canEncodeMedia):
(WebCore::canSmoothlyEncodeMedia):
(WebCore::canPowerEfficientlyEncodeMedia):
(WebCore::MediaEngineConfigurationFactoryMock::createDecodingConfiguration):
(WebCore::MediaEngineConfigurationFactoryMock::createEncodingConfiguration):
* platform/mock/MediaEngineConfigurationFactoryMock.h: Renamed from Source/WebCore/platform/mediacapabilities/MediaEngineDecodingConfiguration.h.
* platform/mock/MediaEngineDecodingConfigurationMock.cpp: Removed.
* platform/mock/MediaEngineDecodingConfigurationMock.h: Removed.
* platform/mock/MediaEngineEncodingConfigurationMock.cpp: Removed.
* platform/mock/MediaEngineEncodingConfigurationMock.h: Removed.
2018-09-08 Ryosuke Niwa <rniwa@webkit.org>
:first-child, :last-child, :nth-child, and :nth-of-type don't work on shadow root's children
https://bugs.webkit.org/show_bug.cgi?id=166748
<rdar://problem/29649177>
Reviewed by Yusuke Suzuki.
Added the support for matching positional pseudo classes. For now, we invalidate whenever a child node
of a non-UA ShadowRoot is mutated instead of a fine-grained style invalidation as done for regular elements.
Tests: fast/shadow-dom/nth-node-on-shadow-child-invalidation.html
fast/shadow-dom/nth-node-on-shadow-child-no-jit.html
fast/shadow-dom/nth-node-on-shadow-child.html
* css/SelectorChecker.cpp:
(WebCore::SelectorChecker::checkOne const):
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateWalkToParentElementOrShadowRoot):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsFirstChild):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsLastChild):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsOnlyChild):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateNthChildParentCheckAndRelationUpdate):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthChild):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthChildOf):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateNthLastChildParentCheckAndRelationUpdate):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthLastChild):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthLastChildOf):
* dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::childrenChanged): Invalidate the subtree whenever a child node is mutated.
* dom/ShadowRoot.h:
* domjit/DOMJITHelpers.h:
(WebCore::DOMJIT::branchTestIsShadowRootFlagOnNode): Added.
(WebCore::DOMJIT::branchTestIsElementOrShadowRootFlagOnNode): Added.
2018-09-11 Per Arne Vollan <pvollan@apple.com>
Addressing post-review feedback on r235619.
https://bugs.webkit.org/show_bug.cgi?id=187925
Unreviewed.
* testing/Internals.cpp:
(WebCore::Internals::primaryScreenDisplayID):
* testing/Internals.h:
2018-09-11 Wenson Hsieh <wenson_hsieh@apple.com>
[macOS] [WK2] Support changing foreground colors via color panel
https://bugs.webkit.org/show_bug.cgi?id=189382
<rdar://problem/44227311>
Reviewed by Ryosuke Niwa.
Small adjustments to support changing foreground text color using NSColorPanel in WebKit2. See comments below.
Tested by FontManagerTests.ChangeFontColorWithColorPanel.
* editing/EditingStyle.cpp:
(WebCore::StyleChange::extractTextStyles):
Support setting foreground text color with alpha by using a styled span element rather than a font element with
attributes. To do this, only populate `StyleChange::m_applyFontColor` if the color is opaque. This is because
the font element does not support `rgba()` syntax, so any font colors here with alpha that are serialized to
`rgba()` result in a garbage value for the computed color style.
* editing/FontAttributeChanges.cpp:
(WebCore::FontAttributeChanges::editAction const):
Add a helper to return the relevant EditAction describing this set of FontAttributeChanges.
* editing/FontAttributeChanges.h:
(WebCore::FontChanges::isEmpty const):
2018-09-11 Yusuke Suzuki <yusukesuzuki@slowstart.org>
Shrink size of ResourseResponseBase
https://bugs.webkit.org/show_bug.cgi?id=189501
Reviewed by Simon Fraser.
We reduce the size of ResourceResponseBase by the following two optimizations.
1. Use bitfields for bool flags and reorder them.
2. Use Markable<> in CacheControlDirectives, which is held by ResourceResponseBase.
This patch reduces the size of ResourceResponseBase from 416 to 392 bytes.
No behavior change.
* platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm:
(WebCore::WebCoreAVFResourceLoader::responseReceived):
(WebCore::WebCoreAVFResourceLoader::fulfillRequestWithResource):
* platform/network/CacheValidation.h:
(WebCore::CacheControlDirectives::CacheControlDirectives):
* platform/network/ResourceResponseBase.cpp:
(WebCore::ResourceResponseBase::ResourceResponseBase):
(WebCore::ResourceResponseBase::contentRange const):
* platform/network/ResourceResponseBase.h:
(WebCore::ResourceResponseBase::decode):
2018-09-11 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, fix some -Wreturn-type warnings
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::sourceFromNewReceiver):
* Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
(WebCore::toRTCRtpTransceiverDirection):
(WebCore::fromRTCRtpTransceiverDirection):
2018-09-11 Jiewen Tan <jiewen_tan@apple.com>
Unreviewed, a speculative build fix for r235888.
* Modules/mediastream/MediaDevices.h:
Add class Document forward declaration.
2018-09-11 Woodrow Wang <woodrow_wang@apple.com>
Add Web API Statistics Collection
https://bugs.webkit.org/show_bug.cgi?id=187773
<rdar://problem/44155162>
Reviewed by Brent Fulgham.
Added data collection for web API statistics, specifically regarding the canvas, font loads,
screen functions, and navigator functions. The data collection code is placed under a runtime
enabled feature flag. The statistics are stored in a ResourceLoadStatistics object and written
to a plist on disk. Added a new file CanvasActivityRecord.h and CanvasActivityRecord.cpp which
includes a struct to keep track of HTML5 canvas element read and writes.
Tests: http/tests/webAPIStatistics/canvas-read-and-write-data-collection.html
http/tests/webAPIStatistics/font-load-data-collection.html
http/tests/webAPIStatistics/navigator-functions-accessed-data-collection.html
http/tests/webAPIStatistics/screen-functions-accessed-data-collection.html
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSFontFaceSource.cpp:
(WebCore::CSSFontFaceSource::load):
* css/CSSFontSelector.cpp:
(WebCore::CSSFontSelector::fontRangesForFamily):
(WebCore::CSSFontSelector::fallbackFontAt):
The following are the functions where we'd like to record a canvas read.
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::toDataURL):
(WebCore::HTMLCanvasElement::toBlob):
(WebCore::HTMLCanvasElement::getImageData):
(WebCore::HTMLCanvasElement::toMediaSample):
(WebCore::HTMLCanvasElement::captureStream):
The following are the functions where we'd like to record a canvas write.
* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::measureText):
(WebCore::CanvasRenderingContext2D::drawTextInternal):
The following files and functions handle the CanvasActivityRecord struct and
its respective functions.
* loader/CanvasActivityRecord.cpp: Added.
(WebCore::CanvasActivityRecord::recordWrittenOrMeasuredText):
(WebCore::CanvasActivityRecord::mergeWith):
* loader/CanvasActivityRecord.h: Added.
(WebCore::CanvasActivityRecord::encode const):
(WebCore::CanvasActivityRecord::decode):
* loader/DocumentThreadableLoader.cpp:
* loader/FrameLoader.cpp:
* loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::logFontLoad):
(WebCore::ResourceLoadObserver::logCanvasRead):
(WebCore::ResourceLoadObserver::logCanvasWriteOrMeasure):
(WebCore::ResourceLoadObserver::logNavigatorAPIAccessed):
(WebCore::ResourceLoadObserver::logScreenAPIAccessed):
Before, entries in the ResourceLoadStatistics involving HashSets used "origin" as the key.
Now the encodeHashSet function has been generalized to take any key to encode the entries
in the HashSet. Also added functionality to encode an OptionSet by converting it to its
raw bitmask state.
* loader/ResourceLoadObserver.h:
* loader/ResourceLoadStatistics.cpp:
(WebCore::encodeHashSet):
(WebCore::encodeOriginHashSet):
(WebCore::encodeOptionSet):
(WebCore::encodeFontHashSet):
(WebCore::encodeCanvasActivityRecord):
(WebCore::ResourceLoadStatistics::encode const):
(WebCore::decodeHashSet):
(WebCore::decodeOriginHashSet):
(WebCore::decodeOptionSet):
(WebCore::decodeFontHashSet):
(WebCore::decodeCanvasActivityRecord):
(WebCore::ResourceLoadStatistics::decode):
(WebCore::navigatorAPIEnumToString):
(WebCore::screenAPIEnumToString):
(WebCore::appendNavigatorAPIOptionSet):
(WebCore::appendScreenAPIOptionSet):
(WebCore::ResourceLoadStatistics::toString const):
(WebCore::ResourceLoadStatistics::merge):
* loader/ResourceLoadStatistics.h:
* loader/ResourceTiming.cpp:
The following are the navigator functions recorded for the web API statistics.
* page/Navigator.cpp:
(WebCore::Navigator::appVersion const):
(WebCore::Navigator::userAgent const):
(WebCore::Navigator::plugins):
(WebCore::Navigator::mimeTypes):
(WebCore::Navigator::cookieEnabled const):
(WebCore::Navigator::javaEnabled const):
The following are the screen functions recorded for the web API statistics.
* page/Screen.cpp:
(WebCore::Screen::height const):
(WebCore::Screen::width const):
(WebCore::Screen::colorDepth const):
(WebCore::Screen::pixelDepth const):
(WebCore::Screen::availLeft const):
(WebCore::Screen::availTop const):
(WebCore::Screen::availHeight const):
(WebCore::Screen::availWidth const):
2018-09-11 Pablo Saavedra <psaavedra@igalia.com>
playbackControlsManagerUpdateTimerFired and
m_playbackControlsManagerUpdateTimer must be
guarded with ENABLE(VIDEO), otherwise the following
error occurs with the VIDEO feature turned off:
error: 'MediaElementSession' has not been declared
Add missing #if ENABLE(VIDEO) Page.cpp and Page.h
https://bugs.webkit.org/show_bug.cgi?id=189500
Reviewed by Anders Carlsson.
* page/Page.cpp:
(WebCore::Page::Page):
(WebCore::Page::schedulePlaybackControlsManagerUpdate):
* page/Page.h:
2018-09-11 Frederic Wang <fwang@igalia.com>
Refactor filter list checking code
https://bugs.webkit.org/show_bug.cgi?id=185087
Reviewed by Antonio Gomes.
No new tests, behavior unchanged.
* page/animation/KeyframeAnimation.h: Add missing forward-declaration FilterOperations.
== Rolled over to ChangeLog-2018-09-11 ==