WebKit-https.git
4 months ago[GTK][WPE] Move TLS errors API from WebKitContext to WebKitWebsiteDataManager
commit-queue@webkit.org [Wed, 23 Sep 2020 22:14:15 +0000 (22:14 +0000)]
[GTK][WPE] Move TLS errors API from WebKitContext to WebKitWebsiteDataManager
https://bugs.webkit.org/show_bug.cgi?id=216822

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2020-09-23
Reviewed by Alex Christensen.

Source/WebCore:

Make ignoreTLSErrors a member of SoupNetworkSession, instead of being global.

* platform/network/soup/SoupNetworkSession.cpp:
(WebCore::SoupNetworkSession::setIgnoreTLSErrors):
(WebCore::SoupNetworkSession::checkTLSErrors):
(WebCore::SoupNetworkSession::setShouldIgnoreTLSErrors): Deleted.
* platform/network/soup/SoupNetworkSession.h:
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::setAllowsAnySSLCertificate): Do not use SoupNetworkSession in the web process.

Source/WebKit:

Make TLS errors policy per session instead of global to the network process. The web context API now simply
forwards the request to the website data manager. The website data manager created for an ephemeral web view
will inherit the network settings from the web context website data manager. This ensures backwards
compatibility, but it's also convenient, since it's the desired behavior in most of the cases. Apps can still
change the network settings of the web view by getting the website data manager.

* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* NetworkProcess/NetworkSessionCreationParameters.cpp:
(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):
* NetworkProcess/NetworkSessionCreationParameters.h:
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::tlsConnectionAcceptCertificate):
* NetworkProcess/soup/NetworkProcessSoup.cpp:
(WebKit::NetworkProcess::platformInitializeNetworkProcess):
(WebKit::NetworkProcess::setIgnoreTLSErrors):
* NetworkProcess/soup/NetworkSessionSoup.cpp:
(WebKit::NetworkSessionSoup::NetworkSessionSoup):
(WebKit::webSocketAcceptCertificateCallback):
(WebKit::webSocketMessageNetworkEventCallback):
(WebKit::NetworkSessionSoup::createWebSocketTask):
(WebKit::NetworkSessionSoup::setIgnoreTLSErrors):
* NetworkProcess/soup/NetworkSessionSoup.h:
* UIProcess/API/glib/WebKitAutomationSession.cpp:
(webkitAutomationSessionCreate):
* UIProcess/API/glib/WebKitWebContext.cpp:
(webkitWebContextConstructed):
(webkit_web_context_set_tls_errors_policy):
(webkit_web_context_get_tls_errors_policy):
* UIProcess/API/glib/WebKitWebView.cpp:
(webkitWebViewConstructed):
(webkit_web_view_class_init):
(webkitWebViewLoadFailedWithTLSErrors):
* UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
(webkitWebsiteDataManagerConstructed):
(webkitWebsiteDataManagerGetDataStore):
(webkit_website_data_manager_set_tls_errors_policy):
(webkit_website_data_manager_get_tls_errors_policy):
* UIProcess/API/gtk/WebKitWebContext.h:
* UIProcess/API/gtk/WebKitWebsiteDataManager.h:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* UIProcess/API/wpe/WebKitWebContext.h:
* UIProcess/API/wpe/WebKitWebsiteDataManager.h:
* UIProcess/API/wpe/docs/wpe-1.0-sections.txt:
* UIProcess/WebProcessPool.h:
* UIProcess/WebsiteData/WebsiteDataStore.h:
(WebKit::WebsiteDataStore::ignoreTLSErrors const):
* UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp:
(WebKit::WebsiteDataStore::setIgnoreTLSErrors):
* UIProcess/soup/WebProcessPoolSoup.cpp:
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
(WebKit::WebProcessPool::setIgnoreTLSErrors): Deleted.

Tools:

Update tests to use the new API instead of the deprecated one. Also update the TLSErrorsPolicy test to also
check that ephemeral web views inherit the network settings from its web context.

* TestWebKitAPI/Tests/WebKitGLib/TestSSL.cpp:
(testSSL):
(testInsecureContent):
(testTLSErrorsPolicy):
(testTLSErrorsRedirect):
(testTLSErrorsHTTPAuth):
(testLoadFailedWithTLSErrors):
(testSubresourceLoadFailedWithTLSErrors):
(testWebSocketTLSErrors):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267502 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoForce SYSTEM_VERSION_COMPAT=0 in Webkit scripts
jbedard@apple.com [Wed, 23 Sep 2020 21:54:31 +0000 (21:54 +0000)]
Force SYSTEM_VERSION_COMPAT=0 in Webkit scripts
https://bugs.webkit.org/show_bug.cgi?id=216895
<rdar://problem/69454393>

Reviewed by Dewei Zhu.

* Scripts/configure-xcode-for-embedded-development:
* Scripts/webkitpy/__init__.py:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267501 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[JSC] Intl spec update: handle awkward rounding behavior
ysuzuki@apple.com [Wed, 23 Sep 2020 21:26:09 +0000 (21:26 +0000)]
[JSC] Intl spec update: handle awkward rounding behavior
https://bugs.webkit.org/show_bug.cgi?id=216760

Reviewed by Ross Kirsling.

JSTests:

* stress/intl-numberformat.js:
* test262/expectations.yaml:

Source/JavaScriptCore:

This patch supports new spec change of "handle awkward rounding behavior"[1].
This changes minimumFractionDigits / maximumFractionDigits calculation when the specified ones are less than currency-digits.

[1]: https://github.com/tc39/ecma402/pull/471

* runtime/CommonIdentifiers.h:
* runtime/IntlNumberFormat.cpp:
(JSC::IntlNumberFormat::resolvedOptions const):
* runtime/IntlNumberFormatInlines.h:
(JSC::setNumberFormatDigitOptions):
* runtime/IntlPluralRules.cpp:
(JSC::IntlPluralRules::resolvedOptions const):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267500 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoFix some typo'd wheel event listener logging
timothy_horton@apple.com [Wed, 23 Sep 2020 21:17:06 +0000 (21:17 +0000)]
Fix some typo'd wheel event listener logging
https://bugs.webkit.org/show_bug.cgi?id=216892

Reviewed by Wenson Hsieh.

* rendering/EventRegion.cpp:
(WebCore::EventRegion::uniteEventListeners):
Wheel is passive, NonPassiveWheel is active.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267499 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[macOS] Issue sandbox extension for the diagnostic daemon
pvollan@apple.com [Wed, 23 Sep 2020 19:52:03 +0000 (19:52 +0000)]
[macOS] Issue sandbox extension for the diagnostic daemon
https://bugs.webkit.org/show_bug.cgi?id=216834
<rdar://problem/58496834>

Reviewed by Brent Fulgham.

* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::isInternalInstall):
(WebKit::agxCompilerClasses):
(WebKit::diagnosticServices):
(WebKit::WebProcessPool::platformInitializeWebProcess):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
* WebProcess/com.apple.WebProcess.sb.in:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267498 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoRemove ENABLE_SVG_FONTS macro
Hironori.Fujii@sony.com [Wed, 23 Sep 2020 19:50:23 +0000 (19:50 +0000)]
Remove ENABLE_SVG_FONTS macro
https://bugs.webkit.org/show_bug.cgi?id=216850

Reviewed by Don Olmstead.

.:

No ports have this disabled, so remove it.

* Source/cmake/OptionsFTW.cmake:
* Source/cmake/OptionsMac.cmake:
* Source/cmake/OptionsWin.cmake:
* Source/cmake/WebKitFeatures.cmake:
* Source/cmake/tools/vsprops/FeatureDefines.props:
* Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/WebCore:

* CMakeLists.txt:
* css/CSSFontFace.cpp:
(WebCore::CSSFontFace::appendSources):
(WebCore::CSSFontFace::hasSVGFontFaceSource const):
* css/CSSFontFace.h:
* css/CSSFontFaceSource.cpp:
(WebCore::CSSFontFaceSource::CSSFontFaceSource):
(WebCore::CSSFontFaceSource::load):
(WebCore::CSSFontFaceSource::font):
(WebCore::CSSFontFaceSource::isSVGFontFaceSource const):
* css/CSSFontFaceSource.h:
* css/CSSFontFaceSrcValue.cpp:
(WebCore::CSSFontFaceSrcValue::isSVGFontTarget const):
(WebCore::CSSFontFaceSrcValue::isSupportedFormat const):
* css/CSSFontFaceSrcValue.h:
* inspector/agents/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::inspectorResourceType):
* loader/LinkLoader.cpp:
(WebCore::createLinkPreloadResourceClient):
* loader/ResourceLoadInfo.cpp:
(WebCore::ContentExtensions::toResourceType):
* loader/SubresourceLoader.cpp:
(WebCore::logResourceLoaded):
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::defaultPriorityForResourceType):
(WebCore::CachedResource::isCORSSameOrigin const):
* loader/cache/CachedResource.h:
* loader/cache/CachedResourceLoader.cpp:
(WebCore::createResource):
(WebCore::CachedResourceLoader::requestFont):
(WebCore::contentTypeFromResourceType):
(WebCore::CachedResourceLoader::checkInsecureContent const):
(WebCore::CachedResourceLoader::allowedByContentSecurityPolicy const):
(WebCore::CachedResourceLoader::shouldUpdateCachedResourceWithCurrentRequest):
(WebCore::destinationForType):
* loader/cache/CachedSVGFont.cpp:
* loader/cache/CachedSVGFont.h:
* loader/cache/MemoryCache.cpp:
(WebCore::MemoryCache::getStatistics):
* rendering/svg/SVGTextLayoutEngineSpacing.cpp:
* style/StyleResolver.cpp:
(WebCore::Style::Resolver::addCurrentSVGFontFaceRules):
* svg/SVGAltGlyphDefElement.cpp:
* svg/SVGAltGlyphDefElement.h:
* svg/SVGAltGlyphDefElement.idl:
* svg/SVGAltGlyphElement.cpp:
* svg/SVGAltGlyphElement.h:
* svg/SVGAltGlyphElement.idl:
* svg/SVGAltGlyphItemElement.cpp:
* svg/SVGAltGlyphItemElement.h:
* svg/SVGAltGlyphItemElement.idl:
* svg/SVGDocumentExtensions.cpp:
* svg/SVGDocumentExtensions.h:
* svg/SVGElement.cpp:
(WebCore::SVGElement::childShouldCreateRenderer const):
* svg/SVGFontElement.cpp:
* svg/SVGFontElement.h:
* svg/SVGFontElement.idl:
* svg/SVGFontFaceElement.cpp:
* svg/SVGFontFaceElement.h:
* svg/SVGFontFaceElement.idl:
* svg/SVGFontFaceFormatElement.cpp:
* svg/SVGFontFaceFormatElement.h:
* svg/SVGFontFaceFormatElement.idl:
* svg/SVGFontFaceNameElement.cpp:
* svg/SVGFontFaceNameElement.h:
* svg/SVGFontFaceNameElement.idl:
* svg/SVGFontFaceSrcElement.cpp:
* svg/SVGFontFaceSrcElement.h:
* svg/SVGFontFaceSrcElement.idl:
* svg/SVGFontFaceUriElement.cpp:
* svg/SVGFontFaceUriElement.h:
* svg/SVGFontFaceUriElement.idl:
* svg/SVGGlyphElement.cpp:
* svg/SVGGlyphElement.h:
* svg/SVGGlyphElement.idl:
* svg/SVGGlyphRefElement.cpp:
* svg/SVGGlyphRefElement.h:
* svg/SVGGlyphRefElement.idl:
* svg/SVGHKernElement.cpp:
* svg/SVGHKernElement.h:
* svg/SVGHKernElement.idl:
* svg/SVGMissingGlyphElement.cpp:
* svg/SVGMissingGlyphElement.h:
* svg/SVGMissingGlyphElement.idl:
* svg/SVGTRefElement.cpp:
(WebCore::SVGTRefElement::rendererIsNeeded):
* svg/SVGTSpanElement.cpp:
(WebCore::SVGTSpanElement::childShouldCreateRenderer const):
(WebCore::SVGTSpanElement::rendererIsNeeded):
* svg/SVGTests.cpp:
(WebCore::supportedSVGFeatures):
* svg/SVGTextElement.cpp:
(WebCore::SVGTextElement::childShouldCreateRenderer const):
* svg/SVGTextPositioningElement.cpp:
(WebCore::SVGTextPositioningElement::elementFromRenderer):
* svg/SVGToOTFFontConversion.cpp:
* svg/SVGVKernElement.cpp:
* svg/SVGVKernElement.h:
* svg/SVGVKernElement.idl:
* svg/svgtags.in:

Source/WebKit:

* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::maximumBufferingTime):

Source/WTF:

* wtf/PlatformEnable.h:

Tools:

* Scripts/webkitperl/FeatureList.pm:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267497 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[macOS] Change name of client decoder entitlement
pvollan@apple.com [Wed, 23 Sep 2020 19:39:48 +0000 (19:39 +0000)]
[macOS] Change name of client decoder entitlement
https://bugs.webkit.org/show_bug.cgi?id=216670
<rdar://problem/69101997>

Reviewed by Darin Adler.

The client decoder entitlement landed in <https://trac.webkit.org/changeset/266613/webkit> has changed name, and should be updated.

* Scripts/process-entitlements.sh:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267496 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoMissing scope release in JSDOMBuiltinConstructorBase
tzagallo@apple.com [Wed, 23 Sep 2020 19:35:19 +0000 (19:35 +0000)]
Missing scope release in JSDOMBuiltinConstructorBase
https://bugs.webkit.org/show_bug.cgi?id=216851
<rdar://problem/69144642>

Reviewed by Yusuke Suzuki.

Source/WebCore:

In JSDOMBuiltinConstructorBase::callFunctionWithCurrentArguments, we should release the
ThrowScope before calling into JavaScript since we don't intend to handle the exception.

Test: js/transform-stream.html

* bindings/js/JSDOMBuiltinConstructorBase.cpp:
(WebCore::JSDOMBuiltinConstructorBase::callFunctionWithCurrentArguments):

LayoutTests:

* js/script-tests/transform-stream.js: Added.
* js/transform-stream-expected.txt: Added.
* js/transform-stream.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267495 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[LFC][IFC] Precompute the collapsible trailing width for LineBreaker
zalan@apple.com [Wed, 23 Sep 2020 19:34:44 +0000 (19:34 +0000)]
[LFC][IFC] Precompute the collapsible trailing width for LineBreaker
https://bugs.webkit.org/show_bug.cgi?id=216881

Reviewed by Antti Koivisto.

Let's just compute the collapsible trailing width while adding inline content to LineCandidate instead of
reverse looping through the runs in LineBreaker.
This is also in preparation for reducing the number of RuntimeEnabledFeatures::layoutFormattingContextIntegrationEnabled calls.

* layout/inlineformatting/InlineLineBreaker.cpp:
(WebCore::Layout::ContinuousContent::hasTrailingCollapsibleContent const):
(WebCore::Layout::ContinuousContent::isFullyCollapsible const):
(WebCore::Layout::LineBreaker::shouldKeepEndOfLineWhitespace const):
(WebCore::Layout::LineBreaker::shouldWrapInlineContent):
(WebCore::Layout::LineBreaker::tryWrappingInlineContent const):
(WebCore::Layout::ContinuousContent::ContinuousContent):
(WebCore::Layout::ContinuousContent::nonCollapsibleLogicalWidth const):
(WebCore::Layout::ContinuousContent::isTrailingContentFullyCollapsible const): Deleted.
(WebCore::Layout::ContinuousContent::TrailingCollapsibleContent::reset): Deleted.
* layout/inlineformatting/InlineLineBreaker.h:
* layout/inlineformatting/InlineLineBuilder.cpp:
(WebCore::Layout::LineCandidate::InlineContent::collapsibleTrailingWidth const):
(WebCore::Layout::LineCandidate::InlineContent::appendInlineItem):
(WebCore::Layout::LineCandidate::InlineContent::reset):
(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267494 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoLimit number of emails to send for flaky and pre-existing API and layout test failures
aakash_jain@apple.com [Wed, 23 Sep 2020 19:17:20 +0000 (19:17 +0000)]
Limit number of emails to send for flaky and pre-existing API and layout test failures
https://bugs.webkit.org/show_bug.cgi?id=216876

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/steps.py:
(ReRunWebKitTests): Simply limit the flaky failures immediately after they are calculated, since we don't display
the count of flaky failures. Flaky failures are displayed only to help bot-watchers in noticing flaky tests.
(AnalyzeLayoutTestsResults.report_pre_existing_failures): Limit pre-existing and flaky test failures just before sending emails.
(AnalyzeAPITestsResults.analyzeResults):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267493 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoNotify igalia team about pre-existing test failures and build failures for JSC queues
aakash_jain@apple.com [Wed, 23 Sep 2020 19:07:10 +0000 (19:07 +0000)]
Notify igalia team about pre-existing test failures and build failures for JSC queues
https://bugs.webkit.org/show_bug.cgi?id=216889

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/steps.py:
(AnalyzeCompileWebKitResults.send_email_for_preexisting_build_failure): Send email for pre-existing jsc build failures.
(AnalyzeJSCTestsResults.send_email_for_pre_existing_failure): Send email for pre-existing jsc test failure.
* BuildSlaveSupport/ews-build/send_email.py:
* BuildSlaveSupport/ews-build/emails.json: Added email address of igalia jsc team.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267492 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[Media in GPU Process] Implement caption support in video fullscreen and PiP
peng.liu6@apple.com [Wed, 23 Sep 2020 18:45:11 +0000 (18:45 +0000)]
[Media in GPU Process] Implement caption support in video fullscreen and PiP
https://bugs.webkit.org/show_bug.cgi?id=208752

Reviewed by Eric Carlson.

Source/WebCore:

Export TextTrackRepresentation so that WebKit can use it. Also, update the
interface of VideoLayerManagerObjC related to text track representation to
use PlatformLayer* instead of TextTrackRepresentation*.

Manually tested.

* WebCore.xcodeproj/project.pbxproj:
Change target membership of TextTrackRepresentation.h.

* platform/graphics/avfoundation/objc/VideoLayerManagerObjC.h:
* platform/graphics/avfoundation/objc/VideoLayerManagerObjC.mm:
(WebCore::VideoLayerManagerObjC::setTextTrackRepresentationLayer):
(WebCore::VideoLayerManagerObjC::setTextTrackRepresentation): Deleted.
Replace setTextTrackRepresentation() with setTextTrackRepresentationLayer().

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::setTextTrackRepresentation):
Use VideoLayerManagerObjC::setTextTrackRepresentationLayer() instead of
VideoLayerManagerObjC::setTextTrackRepresentation().

* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setTextTrackRepresentation): Ditto.

Source/WebKit:

* GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::syncTextTrackBounds): Deleted.
* GPUProcess/media/RemoteMediaPlayerProxy.h:
* GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
Remove syncTextTrackBounds() because the GPU process does not need to deal with
the text track bounds.

* WebProcess/GPU/GPUProcessConnection.cpp:
(WebKit::GPUProcessConnection::dispatchMessage):
Add a missing IPC message receiver.

* WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
(WebKit::MediaPlayerPrivateRemote::setVideoFullscreenLayer): Set the flag
m_requiresTextTrackRepresentation when changing video presentation mode.
(WebKit::MediaPlayerPrivateRemote::requiresTextTrackRepresentation const): Deleted.
(WebKit::MediaPlayerPrivateRemote::setTextTrackRepresentation): Deleted.
(WebKit::MediaPlayerPrivateRemote::syncTextTrackBounds): Deleted.
Move the implementation of those functions to MediaPlayerPrivateRemoteCocoa.

* WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
Add the flag m_requiresTextTrackRepresentation and add a reference
to the layer used to render text track (in fullscreen or picture-in-picture).

* WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm:
(WebKit::MediaPlayerPrivateRemote::setVideoFullscreenFrame):
(WebKit::MediaPlayerPrivateRemote::setTextTrackRepresentation):
(WebKit::MediaPlayerPrivateRemote::syncTextTrackBounds):
Those functions share a similar implementation as VideoLayerManagerObjC.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267491 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[macOS] Start collecting telemetry from a set of XPC services
pvollan@apple.com [Wed, 23 Sep 2020 17:55:35 +0000 (17:55 +0000)]
[macOS] Start collecting telemetry from a set of XPC services
<https://bugs.webkit.org/show_bug.cgi?id=216797>

Reviewed by Brent Fulgham.

* WebProcess/com.apple.WebProcess.sb.in:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267490 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[JSC][ESNext] Create a new opcode to handle private fields store/define
ticaiolima@gmail.com [Wed, 23 Sep 2020 17:19:38 +0000 (17:19 +0000)]
[JSC][ESNext] Create a new opcode to handle private fields store/define
https://bugs.webkit.org/show_bug.cgi?id=213372

Reviewed by Yusuke Suzuki.

JSTests:

Adjusting tests that emit `get_private_name` to avoid execution in
FTL/DFG.

* microbenchmarks/class-fields-private/polymorphic-put-private-field.js: Added.
* microbenchmarks/class-fields-private/put-private-field.js: Added.
* microbenchmarks/polymorphic-put-public-field.js: Added.
* microbenchmarks/put-public-field.js: Added.
* stress/dfg-put-private-name-check-barrier-insertion.js: Added.
* stress/dfg-put-private-name-compiled-as-put-by-id-direct.js: Added.
* stress/dfg-put-private-name-compiled-as-put-private-name-by-id.js: Added.
* stress/put-private-name-by-id-set-do-not-add-structure-trasition.js: Added.
* stress/put-private-name-check-structure-miss.js: Added.
* stress/put-private-name-constant-folding-to-mult-put-by-offset.js: Added.
* stress/put-private-name-constant-folding-to-put-by-offset.js: Added.
* stress/put-private-name-generic.js: Added.
* stress/put-private-name-invalid-define.js: Added.
* stress/put-private-name-invalid-store.js: Added.
* stress/put-private-name-invalidate-compiled-with-constant-symbol.js: Added.
* stress/put-private-name-polymorphic-with-constant-symbol.js: Added.
* stress/put-private-name-with-constant-symbol.js: Added.
* stress/put-private-name-with-different-identifier.js: Added.

Source/JavaScriptCore:

This patch is adding a new opcode to handle private field storage.
Before this change, we were using `put_by_val_direct` and including
the information of `PutKind` into `PutByValFlags`. We initially decided
to use `put_by_val_direct` to take advantage of all IC mechanism already
implemented for this instruction, however the semantics of private field
is different enough to complicate the understanding of
`put_by_val_direct`.

The new instruction is called `put_private_name` and has as its operands
`baseObject` where the put is going to be placed, the `property`
that's going to be installed (it is always a private symbol of a
private field), the `value` we are going to store and the
`PrivateFieldPutKind` that can be `Define` or `Set`.
The difference of each `PrivateFieldPutKind` is the following:

- Define: It defines a new private field. If this field is already
present, it throws a `TypeError`.
- Set: It sets the value of a private field. If the field is not
present at the moment of set, it throws a `TypeError`.

This patch includes support of IC for all tiers. For DFG and FTL, we
are only emmiting IC when we are able to emit `CheckConstant`
for subscript identifier during Bytecode parsing. We are adding a new
DFG node called `PutPrivateNameById` that handles such cases when we
have constant identifiers.
We are also adding a new DFG node `PutPrivateName` that handles generic
case of `put_private_name`. The strategy used to compile
`put_private_name` is very similar with what we are using with
`put_by_val[_direct]`. We first try to compile it as `[Multi]PutByOffset`
using profiled information from LLInt and Baseline execution. If it
is not possible, we then emit `PutPrivateName[ById]` node. We get another
chance to transform `PutPrivateNameById` into `PutByOffset` if we can prove
its structure set at constant folding phase.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* bytecode/BytecodeList.rb:
* bytecode/BytecodeUseDef.cpp:
(JSC::computeUsesForBytecodeIndexImpl):
(JSC::computeDefsForBytecodeIndexImpl):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::propagateTransitions):
(JSC::CodeBlock::finalizeLLIntInlineCaches):
* bytecode/Fits.h:
* bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeFromLLInt):
(JSC::PutByIdStatus::computeFor):
* bytecode/PutByIdStatus.h:
* bytecode/PutByValFlags.cpp: Removed.
* bytecode/PutByValFlags.h: Removed.
* bytecode/PutKind.h:
(): Deleted.
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitDirectPutByVal):
(JSC::BytecodeGenerator::emitDefinePrivateField):
(JSC::BytecodeGenerator::emitPrivateFieldPut):
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handlePutPrivateNameById):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::handlePutByVal):
(JSC::DFG::ecmaMode): Deleted.
(JSC::DFG::ecmaMode<OpPutByValDirect>): Deleted.
* dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
(JSC::DFG::ConstantFoldingPhase::tryFoldAsPutByOffset):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGNode.h:
(JSC::DFG::Node::convertToPutByOffset):
(JSC::DFG::Node::convertToMultiPutByOffset):
(JSC::DFG::Node::hasCacheableIdentifier):
(JSC::DFG::Node::hasPrivateFieldPutKind):
(JSC::DFG::Node::privateFieldPutKind):
* dfg/DFGNodeType.h:
* dfg/DFGOpInfo.h:
(JSC::DFG::OpInfo::OpInfo):
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compilePutPrivateName):
(JSC::DFG::SpeculativeJIT::compilePutPrivateNameById):
(JSC::DFG::SpeculativeJIT::compilePutByIdFlush):
(JSC::DFG::SpeculativeJIT::compilePutById):
(JSC::DFG::SpeculativeJIT::compilePutByIdDirect):
(JSC::DFG::SpeculativeJIT::cachedPutById):
* dfg/DFGSpeculativeJIT.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGStoreBarrierInsertionPhase.cpp:
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compilePutPrivateNameById):
(JSC::FTL::DFG::LowerDFGToB3::compilePutPrivateName):
(JSC::FTL::DFG::LowerDFGToB3::cachedPutById):
(JSC::FTL::DFG::LowerDFGToB3::compilePutById):
* generator/DSL.rb:
* jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):
(JSC::JIT::link):
* jit/JIT.h:
(JSC::ByValCompilationInfo::ByValCompilationInfo):
* jit/JITInlineCacheGenerator.cpp:
(JSC::JITPutByIdGenerator::JITPutByIdGenerator):
(JSC::JITPutByIdGenerator::slowPathFunction):
* jit/JITInlineCacheGenerator.h:
(JSC::JITPutByIdGenerator::JITPutByIdGenerator):
* jit/JITInlines.h:
(JSC::JIT::ecmaMode<OpPutPrivateName>):
(JSC::JIT::ecmaMode<OpPutByValDirect>): Deleted.
(JSC::JIT::privateFieldAccessKind): Deleted.
(JSC::JIT::privateFieldAccessKind<OpPutByValDirect>): Deleted.
* jit/JITOperations.cpp:
(JSC::setPrivateField):
(JSC::putPrivateField): Deleted.
* jit/JITOperations.h:
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emitPutByValWithCachedId):
(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::emit_op_put_private_name):
(JSC::JIT::emitSlow_op_put_private_name):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitPutPrivateNameWithCachedId):
(JSC::JIT::privateCompilePutPrivateNameWithCachedId):
(JSC::JIT::privateCompilePutByValWithCachedId):
* jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::emit_op_put_private_name):
(JSC::JIT::emitSlow_op_put_private_name):
(JSC::JIT::emit_op_put_by_id):
* jit/Repatch.cpp:
(JSC::appropriateGenericPutByIdFunction):
(JSC::appropriateOptimizingPutByIdFunction):
(JSC::tryCachePutByID):
(JSC::resetPutByID):
* llint/LLIntOffsetsExtractor.cpp:
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* llint/LLIntSlowPaths.h:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/JSObject.h:
* runtime/JSObjectInlines.h:
(JSC::JSObject::setPrivateField):
(JSC::JSObject::putPrivateField): Deleted.
* runtime/PrivateFieldPutKind.cpp: Added.
(JSC::PrivateFieldPutKind::dump const):
* runtime/PrivateFieldPutKind.h: Added.
(JSC::PrivateFieldPutKind::fromByte):
(JSC::PrivateFieldPutKind::none):
(JSC::PrivateFieldPutKind::set):
(JSC::PrivateFieldPutKind::define):
(JSC::PrivateFieldPutKind::isNone const):
(JSC::PrivateFieldPutKind::isSet const):
(JSC::PrivateFieldPutKind::isDefine const):
(JSC::PrivateFieldPutKind::value const):
(JSC::PrivateFieldPutKind::PrivateFieldPutKind):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267489 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoTurn on the modern unprefixed WebAudio API
cdumez@apple.com [Wed, 23 Sep 2020 17:10:18 +0000 (17:10 +0000)]
Turn on the modern unprefixed WebAudio API
https://bugs.webkit.org/show_bug.cgi?id=216885

Reviewed by Eric Carlson.

Turn on the modern unprefixed WebAudio API now that we support most of the API
besides AudioWorklet and now that we have a good pass rate on WPT tests.

Source/WebKit:

* Shared/WebPreferencesExperimental.yaml:

Source/WebKitLegacy/mac:

* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267488 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agowebaudio/AudioBufferSource/audiobuffersource-playbackrate.html is crashing
cdumez@apple.com [Wed, 23 Sep 2020 17:07:18 +0000 (17:07 +0000)]
webaudio/AudioBufferSource/audiobuffersource-playbackrate.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=216827

Reviewed by Darin Adler.

Source/WebCore:

AudioBufferSourceNode::renderSilenceAndFinishIfNotLooping() would hit an assertion inside
finish() because finish() was already called earlier when calling updateSchedulingInfo().
updateSchedulingInfo() already takes care of calling finish() when we're done playing.
Address the issue by only calling finish() if hasFinished() returns false.

No new tests, unskipped existing test.

* Modules/webaudio/AudioBufferSourceNode.cpp:
(WebCore::AudioBufferSourceNode::renderSilenceAndFinishIfNotLooping):

LayoutTests:

Unskip test that is no longer crashing.

* TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267486 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoUnreviewed, add ios baseline for media/media-can-play-av1.html
philn@webkit.org [Wed, 23 Sep 2020 16:54:27 +0000 (16:54 +0000)]
Unreviewed, add ios baseline for media/media-can-play-av1.html

This was forgotten in r267474.

* platform/ios/media/media-can-play-av1-expected.txt: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267484 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoUnreviewed, reverting r267403.
tsavell@apple.com [Wed, 23 Sep 2020 16:03:59 +0000 (16:03 +0000)]
Unreviewed, reverting r267403.

Caused 50+ Crashes on iOS Debug

Reverted changeset:

"Move Media in GPU Process flag from internal to experimental"
https://bugs.webkit.org/show_bug.cgi?id=216473
https://trac.webkit.org/changeset/267403

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267479 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoREGRESSION(r267368) [webkitpy] autoinstalled pytest raises ImportError in run-webdriv...
lmoura@igalia.com [Wed, 23 Sep 2020 15:57:11 +0000 (15:57 +0000)]
REGRESSION(r267368) [webkitpy] autoinstalled pytest raises ImportError in run-webdriver-tests
https://bugs.webkit.org/show_bug.cgi?id=216879

Reviewed by Jonathan Bedard.

Autoinstalled pytest requires sys.path to be updated with the newly
installed packages. Before r267368 it worked because
webdriver_w3c_executor.py autoinstalled mozlog/mozprocess which
updated the sys.path.

* Scripts/webkitpy/thirdparty/__init__.py:
(AutoinstallImportHook._install_pytest):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267478 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoFix for accessibility/aria-combobox-control-owns-elements.html in isolated tree mode.
andresg_22@apple.com [Wed, 23 Sep 2020 15:53:01 +0000 (15:53 +0000)]
Fix for accessibility/aria-combobox-control-owns-elements.html in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=216878

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/aria-combobox-control-owns-elements.html.

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::updateIsolatedTree): Update the isolated tree
node for ActiveDescendant and SelectedChildren notifications.
* accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::initializeAttributeData): Only cache
selectedChildren for those AXObjects that canHaveSelectedChildren.

LayoutTests:

Use Promises to make this test work reliably for both single and multithreaded accessibility modes.

* accessibility/aria-combobox-control-owns-elements-expected.txt:
* accessibility/aria-combobox-control-owns-elements.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267477 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoSelection API: Update more tests that depend on WebKit's legacy non-standard behavior...
darin@apple.com [Wed, 23 Sep 2020 15:50:44 +0000 (15:50 +0000)]
Selection API: Update more tests that depend on WebKit's legacy non-standard behavior to set up the selection
https://bugs.webkit.org/show_bug.cgi?id=216844

Reviewed by Ryosuke Niwa.

Discovered a batch of editing tests that accidentally rely on non-standard selection
behavior to set up the tests. In many cases, the tests were clearly written wrong, like
using character offsets but a container that is not a text node. These changes keep the
tests testing the same things they are today.

* editing/deleting/delete-block-merge-contents-025.html: Use the actual number of child
nodes rather than 2000000000.
* editing/deleting/delete-blockquote-large-offsets.html: Ditto. The "large offsets" in
the title of this bug might simply be something that can't actually be done in practice,
setting an offset that is much higher than the actual number of children. The old code
simply clamped the high value.

* editing/execCommand/format-block-typing-style.html: Use a 1 as an offset so we are
past the child text element, rather than 5, which was presumably an attempt at setting
an offset to a particular character, but using the wrong container node.

* editing/execCommand/insert-nested-lists-in-table.html: Use a computed offset instead
of a hardcoded, and too high, value of 3.

* editing/execCommand/outdent-selection.html: Use a 1 instead of a 2 for an offset on
a container node that has only one child.
* editing/input/select-all-clear-input-method.html: Use a 3 instead of a 5 for an
offset in a container that's a text node containing 3 characters.

* editing/inserting/insert-list-during-node-removal-crash.html: This one is a little
different. The code selected the entire document and used the deleteFromDocument method.
That function is specified to not do an end-user "editing" delete, but to literally
delete all the nodes. That includes all the script nodes. To fix the test, just select
the contents of the body of the document.

* editing/inserting/insert-list-in-table-assert.html: Use a 0 instead of a 1
for an offset inside an empty style element.
* editing/inserting/insert-list-in-table-cell-04.html: Use a 1 instead of a 2
as the offest for the end of the element, given the element had only one child.
* editing/inserting/insert-list-in-table-cell-08.html: Ditto.
* editing/inserting/page-zoom-font-size.html: Ditto, 1 instead of 12.

* editing/inserting/replace-at-visible-boundary.html: Select the image by setting end
points before and after it, rather than trying to set offsets inside the image with
offsets of 0 and 1, since 1 is an illegal offset in an image with no children.

* editing/pasteboard/dataTransfer-setData-getData.html: Use a 1 instead of a 4
for an offset inside the dragme element, which has one child, which was presumably
an attempt at setting an offset to a particular character, but using the wrong
container node.
* editing/pasteboard/drag-drop-to-data-url.html: Ditto.

* editing/pasteboard/paste-blockquote-into-blockquote-2.html: Use an offset of 1
instead of 3 inside the block element which has no children, which was presumably
an attempt at setting an offset to a particular character, but using the wrong
container node.

* editing/pasteboard/paste-blockquote-into-blockquote-3.html: Use a range to set
the selection after the endContent <br> element rather than trying to use an
offset of 1 inside that element, which has no children.

* editing/pasteboard/paste-blockquote-into-blockquote.html: Use an offset of 1
instead of 3 inside the block element which has no children, which was presumably
an attempt at setting an offset to a particular character, but using the wrong
container node.

* editing/pasteboard/paste-table-cells.html: Use an offset of 1 instead of 3
inside the table, so the selection is after the table body. Presumably the error
is that someone thought that the table row elements were each children of the table.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267476 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agomedia/can-play-av1.html is not spec compliant
philn@webkit.org [Wed, 23 Sep 2020 14:44:24 +0000 (14:44 +0000)]
media/can-play-av1.html is not spec compliant
https://bugs.webkit.org/show_bug.cgi?id=216873

Reviewed by Eric Carlson.

Source/WebCore:

* platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:
(WebCore::GStreamerRegistryScanner::initialize): Add the "av1" codec in the codecs mapping.

LayoutTests:

* media/media-can-play-av1-expected.txt: Update baseline.
* media/media-can-play-av1.html: Update test and add another few testing invalid codecs.
* platform/glib/TestExpectations: Unflag passing test.
* platform/mac/media/media-can-play-av1-expected.txt: Added. This test is expected to fail on mac.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267474 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoAdd support for HTMLMediaElement.setSinkId
youenn@apple.com [Wed, 23 Sep 2020 14:04:20 +0000 (14:04 +0000)]
Add support for HTMLMediaElement.setSinkId
https://bugs.webkit.org/show_bug.cgi?id=216696

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

* resources/import-expectations.json:
* web-platform-tests/audio-output/META.yml: Added.
* web-platform-tests/audio-output/idlharness.https.window-expected.txt: Added.
* web-platform-tests/audio-output/idlharness.https.window.html: Added.
* web-platform-tests/audio-output/idlharness.https.window.js: Added.
* web-platform-tests/audio-output/setSinkId.https-expected.txt: Added.
* web-platform-tests/audio-output/setSinkId.https.html: Added.
* web-platform-tests/audio-output/w3c-import.log: Added.

Source/WebCore:

Implement setSinkId and sinkId as per https://w3c.github.io/mediacapture-output/#htmlmediaelement-extensions.
Introduce a setting to expose these methods and to enable/disable user gesture requirement.
Add interfaces to change device output for specific media players.
Add support for HLS, MSE and MediaStreamTrack renderers on MacOS.
In case of setting the empty string, the default output device is used

Tests: http/wpt/audio-output/setSinkId.https.html
       imported/w3c/web-platform-tests/audio-output/idlharness.https.window.html
       imported/w3c/web-platform-tests/audio-output/setSinkId.https.html

* CMakeLists.txt:
* DerivedSources.make:
* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::exposeDevices):
* Modules/mediastream/MediaDevices.h:
* WebCore.xcodeproj/project.pbxproj:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::audioOutputDevice const):
(WebCore::HTMLMediaElement::setAudioOutputDevice):
(WebCore::HTMLMediaElement::audioOutputDeviceId const):
* html/HTMLMediaElement.h:
(WebCore::HTMLMediaElement::audioOutputHashedDeviceId const):
* html/HTMLMediaElementAudioOutput.idl: Added.
* page/Settings.yaml:
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::audioOutputDeviceChanged):
* platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayerClient::audioOutputDeviceId const):
(WebCore::MediaPlayerClient::audioOutputDeviceIdOverride const):
(WebCore::MediaPlayer::audioOutputDeviceId const):
(WebCore::MediaPlayer::audioOutputDeviceIdOverride const):
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::audioOutputDeviceChanged):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::audioOutputDeviceChanged):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::audioOutputDeviceChanged):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateTracks):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::audioOutputDeviceChanged):
* platform/mediastream/AudioMediaStreamTrackRenderer.h:
(WebCore::AudioMediaStreamTrackRenderer::setAudioOutputDevice):
* platform/mediastream/AudioTrackPrivateMediaStream.cpp:
(WebCore::AudioTrackPrivateMediaStream::setAudioOutputDevice):
* platform/mediastream/AudioTrackPrivateMediaStream.h:
* platform/mediastream/mac/AudioMediaStreamTrackRendererCocoa.cpp:
(WebCore::AudioMediaStreamTrackRendererCocoa::setAudioOutputDevice):
(WebCore::AudioMediaStreamTrackRendererCocoa::pushSamples):
* platform/mediastream/mac/AudioMediaStreamTrackRendererCocoa.h:
* platform/mediastream/mac/AudioMediaStreamTrackRendererUnit.cpp:
(WebCore::AudioMediaStreamTrackRendererUnit::setAudioOutputDevice):
(WebCore::AudioMediaStreamTrackRendererUnit::createAudioUnitIfNeeded):
* platform/mediastream/mac/AudioMediaStreamTrackRendererUnit.h:

Source/WebKit:

Add internal flag to enable/disable user gesture requirement for setting audio output device,
and for per media element setting of audio output device.

* Shared/WebPreferencesExperimental.yaml:
* Shared/WebPreferencesInternals.yaml:

Source/WTF:

Add HAVE_AUDIO_OUTPUT_DEVICE_UNIQUE_ID.
* wtf/PlatformHave.h:

Tools:

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):

LayoutTests:

Skip new tests on WK1 since mediaDevices is not implemented in WK1.

* http/wpt/audio-output/setSinkId.https-expected.txt: Added.
* http/wpt/audio-output/setSinkId.https.html: Added.
* platform/mac-wk1/TestExpectations:
* platform/win/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267472 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoREGRESSION(r267383): fast/mediastream/getUserMedia-webaudio.html is failing
philn@webkit.org [Wed, 23 Sep 2020 13:36:28 +0000 (13:36 +0000)]
REGRESSION(r267383): fast/mediastream/getUserMedia-webaudio.html is failing
https://bugs.webkit.org/show_bug.cgi?id=216813

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Revert r267428 and fixup the GStreamer FFT implementation which broke in r267383.

* platform/audio/FFTFrame.cpp:
(WebCore::FFTFrame::multiply):
* platform/audio/FFTFrameStub.cpp:
(WebCore::FFTFrame::multiply): Deleted.
* platform/audio/gstreamer/FFTFrameGStreamer.cpp:
(WebCore::FFTFrame::doFFT): Update the real and imaginary arrays after applying the FFT.
(WebCore::FFTFrame::multiply): Deleted.
* platform/audio/mac/FFTFrameMac.cpp:
(WebCore::FFTFrame::multiply): Deleted.

LayoutTests:

Unflag passing tests.

* platform/glib/TestExpectations:
* platform/glib/webaudio/Analyser/realtimeanalyser-fftsize-reset-expected.txt:
* platform/glib/webaudio/Analyser/realtimeanalyser-freq-data-expected.txt: Added. There's
still a FAIL test there though.
* platform/glib/webaudio/Analyser/realtimeanalyser-multiple-calls-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267471 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoUnreviewed, prospective GTK build fix after r267449.
philn@webkit.org [Wed, 23 Sep 2020 12:36:35 +0000 (12:36 +0000)]
Unreviewed, prospective GTK build fix after r267449.

* svg/SVGPathBlender.cpp: Include <functional>, needed for std::invoke().

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267470 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoWheel event phases of FrameView are not handled correctly
cathiechen@igalia.com [Wed, 23 Sep 2020 12:17:59 +0000 (12:17 +0000)]
Wheel event phases of FrameView are not handled correctly
https://bugs.webkit.org/show_bug.cgi?id=216870

Reviewed by Simon Fraser.

In AsyncScrollingCoordinator::handleWheelEventPhase, the scrollAnimator of a FrameView should be from FrameView itself, not ScrollableArea.
It doesn't call nodeDidHandleEvent to handle wheel event phases when !asyncFrameOrOverflowScrollingEnabled. Should call it after handleWheelEvent.

* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::handleWheelEventPhase): When nodeID is FrameView, we should use the scrollAnimator of FrameView instead.
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::handleWheelEvent): If wheelEvent is handled, we should call nodeDidHandleEvent to handle the phases.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267469 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[LFC][Integration] Add canUseFor functions
antti@apple.com [Wed, 23 Sep 2020 12:03:57 +0000 (12:03 +0000)]
[LFC][Integration] Add canUseFor functions
https://bugs.webkit.org/show_bug.cgi?id=216869

Reviewed by Zalan Bujtas.

Copy the SLL canUseFor code.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/integration/LayoutIntegrationCoverage.cpp: Added.
(WebCore::LayoutIntegration::canUseForCharacter):
(WebCore::LayoutIntegration::canUseForText):
(WebCore::LayoutIntegration::canUseForFontAndText):
(WebCore::LayoutIntegration::canUseForStyle):
(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):
(WebCore::LayoutIntegration::canUseForLineLayout):
(WebCore::LayoutIntegration::canUseForLineLayoutAfterStyleChange):
* layout/integration/LayoutIntegrationCoverage.h: Added.

Also switch to OptionSet.

* layout/integration/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::isEnabled):
(WebCore::LayoutIntegration::LineLayout::canUseFor):
(WebCore::LayoutIntegration::LineLayout::canUseForAfterStyleChange):
* layout/integration/LayoutIntegrationLineLayout.h:
(WebCore::LayoutIntegration::LineLayout::canUseFor): Deleted.
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::layoutInlineChildren):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267468 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[GLIB] Unreviewed test gardening. Garden more failures in webaudio and webrtc tests.
dpino@igalia.com [Wed, 23 Sep 2020 10:27:14 +0000 (10:27 +0000)]
[GLIB] Unreviewed test gardening. Garden more failures in webaudio and webrtc tests.

* platform/glib/TestExpectations:
* platform/gtk/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267467 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[GLIB] Unreviewed test gardening. Remove specific baseline for webaudio/BiquadFilter...
dpino@igalia.com [Wed, 23 Sep 2020 09:17:49 +0000 (09:17 +0000)]
[GLIB] Unreviewed test gardening. Remove specific baseline for webaudio/BiquadFilter/tail-time-lowpass.html

The baseline became redudant after r267444.

* platform/glib/webaudio/BiquadFilter/tail-time-lowpass-expected.txt: Removed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267466 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[LFC][IFC] Remove redundant RuntimeEnabledFeatures::layoutFormattingContextIntegratio...
zalan@apple.com [Wed, 23 Sep 2020 07:57:26 +0000 (07:57 +0000)]
[LFC][IFC] Remove redundant RuntimeEnabledFeatures::layoutFormattingContextIntegrationEnabled from Line::Run::hasTrailingLetterSpacing
https://bugs.webkit.org/show_bug.cgi?id=216867

Reviewed by Simon Fraser.

This codepath is only triggered when Line::TrimmableTrailingContent has a partially trimmable run.
However we don't add such runs unless m_shouldIgnoreTrailingLetterSpacing is false (which is already based on the RuntimeEnabledFeatures flag).

* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Run::hasTrailingLetterSpacing const):
(WebCore::Layout::Line::Run::trailingLetterSpacing const):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267465 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoWeb Inspector: Change `InspectorAnimationAgent->startTracking` to not error on repeat...
commit-queue@webkit.org [Wed, 23 Sep 2020 04:47:42 +0000 (04:47 +0000)]
Web Inspector: Change `InspectorAnimationAgent->startTracking` to not error on repeated calls
https://bugs.webkit.org/show_bug.cgi?id=216385

Patch by Patrick Angle <pangle@apple.com> on 2020-09-22
Reviewed by Devin Rousso.

InpsectorAnimationAgent now mirrors the behavior of other timeline agents by no longer returning an error on a
repeated invocation of `startTracking`.

* inspector/agents/InspectorAnimationAgent.cpp:
(WebCore::InspectorAnimationAgent::startTracking):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267464 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[LFC][Integration] Basic pagination support
antti@apple.com [Wed, 23 Sep 2020 04:39:06 +0000 (04:39 +0000)]
[LFC][Integration] Basic pagination support
https://bugs.webkit.org/show_bug.cgi?id=215451
<rdar://problem/67482721>

Reviewed by Zalan Bujtas.

Port the Simple Line Layout pagination code to LFC integration layer.
Pagination is the last remaining use of SLL so this patch turns it into dead code.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/displaytree/DisplayInlineContent.h:
(WebCore::Display::InlineContent::create):
* layout/integration/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::canUseFor):

This now the same as SLL test, covering all cases.

(WebCore::LayoutIntegration::LineLayout::contentLogicalHeight const):
(WebCore::LayoutIntegration::LineLayout::adjustForPagination):
(WebCore::LayoutIntegration::LineLayout::ensureDisplayInlineContent):

This is fairly direct copy of the SLL code. It is not future proof or otherwise great but it serves the job for now.

* layout/integration/LayoutIntegrationLineLayout.h:
(WebCore::LayoutIntegration::LineLayout::isPaginated const):
* layout/integration/LayoutIntegrationPagination.cpp: Added.
(WebCore::LayoutIntegration::computeLineTopAndBottomWithOverflow):
(WebCore::LayoutIntegration::computeLineBreakIndex):
(WebCore::LayoutIntegration::computeOffsetAfterLineBreak):
(WebCore::LayoutIntegration::setPageBreakForLine):
(WebCore::LayoutIntegration::updateMinimumPageHeight):
(WebCore::LayoutIntegration::makeAdjustedContent):
(WebCore::LayoutIntegration::adjustLinePositionsForPagination):
* layout/integration/LayoutIntegrationPagination.h: Copied from Source/WebCore/layout/displaytree/DisplayInlineContent.h.
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::layoutLFCLines):
(WebCore::RenderBlockFlow::ensureLineBoxes):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267463 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[GLIB] Gardening some tests
lmoura@igalia.com [Wed, 23 Sep 2020 04:08:08 +0000 (04:08 +0000)]
[GLIB] Gardening some tests

Unreviewed test gardening.

* platform/glib/TestExpectations:
* platform/gtk/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267462 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[LFC][Integration] Move RuntimeEnabledFeatures::layoutFormattingContextIntegrationEna...
zalan@apple.com [Wed, 23 Sep 2020 03:50:31 +0000 (03:50 +0000)]
[LFC][Integration] Move RuntimeEnabledFeatures::layoutFormattingContextIntegrationEnabled() check out from LineBuilder::constraintsForLine
https://bugs.webkit.org/show_bug.cgi?id=216862

Reviewed by Simon Fraser.

* layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::setIsIntegratedRootBoxFirstChild):
* layout/LayoutState.h:
(WebCore::Layout::LayoutState::isIntegratedRootBoxFirstChild const):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):
* layout/inlineformatting/InlineLineBuilder.cpp:
(WebCore::Layout::LineBuilder::constraintsForLine):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267461 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[LFC][Floats] Remove the redundant RuntimeEnabledFeatures::layoutFormattingContextInt...
zalan@apple.com [Wed, 23 Sep 2020 03:48:22 +0000 (03:48 +0000)]
[LFC][Floats] Remove the redundant RuntimeEnabledFeatures::layoutFormattingContextIntegrationEnabled() check from FloatingState::append
https://bugs.webkit.org/show_bug.cgi?id=216866

Reviewed by Simon Fraser.

The no-layout-box-for-the-FloatItem codepath is reserved for the IFC integration. This is temporary anyway.

* layout/floats/FloatingState.cpp:
(WebCore::Layout::FloatingState::append):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267460 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[GPU Process] fast/canvas/canvas-blend-image.html and fast/canvas/canvas-blend-solid...
wenson_hsieh@apple.com [Wed, 23 Sep 2020 03:41:44 +0000 (03:41 +0000)]
[GPU Process] fast/canvas/canvas-blend-image.html and fast/canvas/canvas-blend-solid.html fail on macOS
https://bugs.webkit.org/show_bug.cgi?id=216860

Reviewed by Said Abou-Hallawa.

These two tests disable accelerated drawing for canvas elements; when using the GPU process, this causes us to
use `ImageBufferShareableBitmapBackend` as the back-end for the image buffer backing the canvas element.

On both macOS and iOS, the image buffer is backed by BGRA image data. However, we override
`backendColorFormat()` and return `ColorFormat::BGRA` only for `PLATFORM(IOS_FAMILY)`, causing `putImageData`
and `getImageData` to result in flipped red and blue channels on macOS, which subsequently causes these two
layout tests to fail.

Fix these tests by removing the `PLATFORM(IOS_FAMILY)` guard.

* WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267459 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoUnify debug and release target aliases
krollin@apple.com [Wed, 23 Sep 2020 03:38:17 +0000 (03:38 +0000)]
Unify debug and release target aliases
https://bugs.webkit.org/show_bug.cgi?id=216863
<rdar://problem/69407746>

Reviewed by Tim Horton.

All Makefiles have "debug", "d", "release", and "r" for build
targets. Others -- but not all -- also include "dev", "develop",
"development", "dep", "deploy", and "deployment". Because of this
inconsistency, trying to use those additional targets didn't work. It
looks like all Makefiles used to support all of those targets, but
some got dropped along the way. For instance, the top-level Makefile
and Source/Makefile dropped them in 2013 as part of Bug 107863. And it
looks like WebKitLibraries/Makefile never had them. Given that those
additional targets don't work, it seems like no one uses them, so
let's remove them completely.

.:

* Makefile.shared:

Source/ThirdParty:

* Makefile:

Tools:

* Makefile:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267458 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[GTK] REGRESSION(r267329): imported/blink/editing/undo/crash-redo-with-iframes.html...
lmoura@igalia.com [Wed, 23 Sep 2020 03:36:13 +0000 (03:36 +0000)]
[GTK] REGRESSION(r267329): imported/blink/editing/undo/crash-redo-with-iframes.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=216778

Reviewed by Darin Adler.

Covered by existing tests.

* editing/markup.cpp:
(WebCore::serializePreservingVisualAppearanceInternal): Return early
also for "negative" ranges to avoid hitting an assertion inside
serializeNodes, as suggested by Darin.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267457 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoUnreviewed, reverting r267421.
commit-queue@webkit.org [Wed, 23 Sep 2020 02:37:54 +0000 (02:37 +0000)]
Unreviewed, reverting r267421.
https://bugs.webkit.org/show_bug.cgi?id=216864

Broke a test on macOS

Reverted changeset:

"[macOS] Start collecting telemetry from a set of XPC
services"
https://bugs.webkit.org/show_bug.cgi?id=216797
https://trac.webkit.org/changeset/267421

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267455 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[JSC] Enable Intl.DateTimeFormat dayPeriod
ysuzuki@apple.com [Wed, 23 Sep 2020 01:57:35 +0000 (01:57 +0000)]
[JSC] Enable Intl.DateTimeFormat dayPeriod
https://bugs.webkit.org/show_bug.cgi?id=216845

Reviewed by Mark Lam.

JSTests:

* stress/intl-datetimeformat.js:

Source/JavaScriptCore:

Since we already have consensus, let's enable it.
For now, we keep this flag since it is possible that something
happens before the change is integrated into the spec.

* runtime/OptionsList.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267454 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoSlightly improve AudioBufferSourceNode resampling
cdumez@apple.com [Wed, 23 Sep 2020 01:49:31 +0000 (01:49 +0000)]
Slightly improve AudioBufferSourceNode resampling
https://bugs.webkit.org/show_bug.cgi?id=216859

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

Rebaseline WPT tests that are now passing.

* web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/buffer-resampling-expected.txt:
* web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching-expected.txt:

Source/WebCore:

Slightly improve AudioBufferSourceNode resampling. Use simple linear extrapolation
to resample the data when we reach the end of the buffer. Previously, the last
sample would just be repeated enough times.

This is a merge of the following Blink change by Raymond Toy:
- https://chromium-review.googlesource.com/c/chromium/src/+/1211910/

No new tests, rebaselined existing tests.

* Modules/webaudio/AudioBufferSourceNode.cpp:
(WebCore::AudioBufferSourceNode::renderFromBuffer):

LayoutTests:

* webaudio/AudioBufferSource/audiobuffersource-detune-modulation-expected.txt:
* webaudio/AudioBufferSource/audiobuffersource-playbackrate-modulation-expected.txt:
* webaudio/gain-expected.wav:
Rebaseline tests that have slightly different output.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267453 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[WebIDL] Switch to new file name convention for partial interfaces
weinig@apple.com [Wed, 23 Sep 2020 00:20:14 +0000 (00:20 +0000)]
[WebIDL] Switch to new file name convention for partial interfaces
https://bugs.webkit.org/show_bug.cgi?id=216843

Reviewed by Tim Horton.

Updates all 'partial interface' IDLs to use the new naming convention adopted
in https://webkit.org/b/216729, where they are name as the construction of the
base interface '+' the supplementing spec. So, additions to Document from the
Web Animations spec becomes Document+WebAnimations.idl.

* accessibility/AccessibilityRenderObject.cpp:
* bindings/js/JSDocumentCustom.cpp:
* bindings/js/JSXMLDocumentCustom.cpp:
* html/HTMLFrameOwnerElement.h:
* loader/FrameLoader.cpp:
* page/FrameView.cpp:
* svg/DocumentSVG.cpp: Added.
* svg/DocumentSVG.h: Added.
* svg/SVGDocument.cpp:
* svg/SVGDocument.h:
* svg/SVGTRefElement.cpp:
* svg/graphics/SVGImage.cpp:
* style/StyleAdjuster.cpp:
* svg/Document+SVG.idl: Added.
* svg/SVGDocument.idl: Removed.
Fix weirdness around SVGDocument. Previously, additions to the Document
interface were in a class that was also a document subclass. Now the two
are split, so the additions are in DocumentSVG.h/cpp, matching convention,
and the subclass remains SVGDocument.h/cpp, also matching convention.

* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
Update for renames.

* Modules/async-clipboard/Navigator+Clipboard.idl: Added.
* Modules/async-clipboard/NavigatorClipboard.idl: Removed.
* Modules/beacon/Navigator+Beacon.idl: Added.
* Modules/beacon/NavigatorBeacon.idl: Removed.
* Modules/cache/DOMWindow+Caches.idl: Added.
* Modules/cache/DOMWindowCaches.idl: Removed.
* Modules/cache/WorkerGlobalScope+Caches.idl: Added.
* Modules/cache/WorkerGlobalScopeCaches.idl: Removed.
* Modules/credentialmanagement/Navigator+Credentials.idl: Added.
* Modules/credentialmanagement/NavigatorCredentials.idl: Removed.
* Modules/encryptedmedia/Navigator+EME.idl: Added.
* Modules/encryptedmedia/NavigatorEME.idl: Removed.
* Modules/entriesapi/HTMLInputElement+EntriesAPI.idl: Added.
* Modules/entriesapi/HTMLInputElementEntriesAPI.idl: Removed.
* Modules/fetch/WindowOrWorkerGlobalScope+Fetch.idl: Added.
* Modules/fetch/WindowOrWorkerGlobalScopeFetch.idl: Removed.
* Modules/gamepad/Navigator+Gamepad.idl: Added.
* Modules/gamepad/NavigatorGamepad.idl: Removed.
* Modules/geolocation/Navigator+Geolocation.idl: Added.
* Modules/geolocation/NavigatorGeolocation.idl: Removed.
* Modules/indexeddb/DOMWindow+IndexedDatabase.idl: Added.
* Modules/indexeddb/DOMWindowIndexedDatabase.idl: Removed.
* Modules/indexeddb/WorkerGlobalScope+IndexedDatabase.idl: Added.
* Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl: Removed.
* Modules/mediacapabilities/Navigator+MediaCapabilities.idl: Added.
* Modules/mediacapabilities/NavigatorMediaCapabilities.idl: Removed.
* Modules/mediasession/HTMLMediaElement+MediaSession.idl: Added.
* Modules/mediasession/HTMLMediaElementMediaSession.idl: Removed.
* Modules/mediasource/AudioTrack+MediaSource.idl: Added.
* Modules/mediasource/AudioTrackMediaSource.idl: Removed.
* Modules/mediasource/DOMURL+MediaSource.idl: Added.
* Modules/mediasource/DOMURLMediaSource.idl: Removed.
* Modules/mediasource/TextTrack+MediaSource.idl: Added.
* Modules/mediasource/TextTrackMediaSource.idl: Removed.
* Modules/mediasource/VideoTrack+MediaSource.idl: Added.
* Modules/mediasource/VideoTrackMediaSource.idl: Removed.
* Modules/mediastream/Navigator+MediaDevices.idl: Added.
* Modules/mediastream/NavigatorMediaDevices.idl: Removed.
* Modules/pictureinpicture/Document+PictureInPicture.idl: Added.
* Modules/pictureinpicture/DocumentOrShadowRoot+PictureInPicture.idl: Added.
* Modules/pictureinpicture/DocumentOrShadowRootPictureInPicture.idl: Removed.
* Modules/pictureinpicture/DocumentPictureInPicture.idl: Removed.
* Modules/pictureinpicture/HTMLVideoElement+PictureInPicture.idl: Added.
* Modules/pictureinpicture/HTMLVideoElementPictureInPicture.idl: Removed.
* Modules/quota/DOMWindow+Quota.idl: Added.
* Modules/quota/DOMWindowQuota.idl: Removed.
* Modules/quota/Navigator+StorageQuota.idl: Added.
* Modules/quota/NavigatorStorageQuota.idl: Removed.
* Modules/quota/WorkerNavigator+StorageQuota.idl: Added.
* Modules/quota/WorkerNavigatorStorageQuota.idl: Removed.
* Modules/remoteplayback/HTMLMediaElement+RemotePlayback.idl: Added.
* Modules/remoteplayback/HTMLMediaElementRemotePlayback.idl: Removed.
* Modules/speech/DOMWindow+SpeechSynthesis.idl: Added.
* Modules/speech/DOMWindowSpeechSynthesis.idl: Removed.
* Modules/webdatabase/DOMWindow+WebDatabase.idl: Added.
* Modules/webdatabase/DOMWindowWebDatabase.idl: Removed.
* Modules/webdriver/Navigator+WebDriver.idl: Added.
* Modules/webdriver/NavigatorWebDriver.idl: Removed.
* Modules/webgpu/Navigator+GPU.idl: Added.
* Modules/webgpu/NavigatorGPU.idl: Removed.
* Modules/webgpu/WorkerNavigator+GPU.idl: Added.
* Modules/webgpu/WorkerNavigatorGPU.idl: Removed.
* Modules/webxr/Navigator+WebXR.idl: Added.
* Modules/webxr/NavigatorWebXR.idl: Removed.
* animation/Document+WebAnimations.idl: Added.
* animation/DocumentAnimations.idl: Removed.
* animation/DocumentOrShadowRoot+WebAnimations.idl: Added.
* animation/DocumentOrShadowRootAnimations.idl: Removed.
* animation/GlobalEventHandlers+CSSAnimations.idl: Added.
* animation/GlobalEventHandlers+CSSTransitions.idl: Added.
* animation/GlobalEventHandlersCSSAnimations.idl: Removed.
* animation/GlobalEventHandlersCSSTransitions.idl: Removed.
* css/DOMCSSNamespace+CSSPainting.idl: Added.
* css/DOMCSSNamespace+CSSPropertiesandValues.idl: Added.
* css/DOMCSSPaintWorklet.idl: Removed.
* css/DOMCSSRegisterCustomProperty.idl: Removed.
* css/DocumentOrShadowRoot+CSSOM.idl: Added.
* css/DocumentOrShadowRootStyleSheets.idl: Removed.
* dom/Document+CSSOMView.idl: Added.
* dom/Document+Fullscreen.idl: Added.
* dom/Document+HTML.idl: Added.
* dom/Document+HTMLObsolete.idl: Added.
* dom/Document+PageVisibility.idl: Added.
* dom/Document+PointerLock.idl: Added.
* dom/Document+Selection.idl: Added.
* dom/Document+StorageAccess.idl: Added.
* dom/Document+Touch.idl: Added.
* dom/Document+UndoMananger.idl: Added.
* dom/DocumentFullscreen.idl: Removed.
* dom/DocumentHTML.idl: Removed.
* dom/DocumentHTMLObsolete.idl: Removed.
* dom/DocumentOrShadowRoot+PointerLock.idl: Added.
* dom/DocumentOrShadowRootPointerLock.idl: Removed.
* dom/DocumentPageVisibility.idl: Removed.
* dom/DocumentPointerLock.idl: Removed.
* dom/DocumentScrolling.idl: Removed.
* dom/DocumentSelection.idl: Removed.
* dom/DocumentStorageAccess.idl: Removed.
* dom/DocumentTouch.idl: Removed.
* dom/DocumentUndoMananger.idl: Removed.
* dom/Element+DOMParsing.idl: Added.
* dom/ElementDOMParsing.idl: Removed.
* dom/GlobalEventHandlers+PointerEvents.idl: Added.
* dom/GlobalEventHandlersPointerEvents.idl: Removed.
* page/Navigator+IsLoggedIn.idl: Added.
* page/NavigatorIsLoggedIn.idl: Removed.
Rename IDLs.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267449 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoMake TLSVersion API tests more robust.
achristensen@apple.com [Wed, 23 Sep 2020 00:11:00 +0000 (00:11 +0000)]
Make TLSVersion API tests more robust.
https://bugs.webkit.org/show_bug.cgi?id=216704

Like I did in r267278, the TLSVersion.ShouldAllowDeprecatedTLS API test was also asserting with TCPServer,
so use HTTPServer which gracefully handles a variable number of connection attempts.
The NetworkSession tests that use NSUserDefaults need to be split into a separate test for bug 216041,
so may as well do that here, too.

* TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:
(TestWebKitAPI::makeWebViewWith):
(TestWebKitAPI::TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267448 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoLimit number of emails to send for flaky and pre-existing JSC test failures
aakash_jain@apple.com [Wed, 23 Sep 2020 00:04:52 +0000 (00:04 +0000)]
Limit number of emails to send for flaky and pre-existing JSC test failures
https://bugs.webkit.org/show_bug.cgi?id=216857

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/steps.py:
(AnalyzeJSCTestsResults.start):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267447 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[LFC][IFC] Used geometry for inline level boxes should be in the coordinate system...
zalan@apple.com [Tue, 22 Sep 2020 23:43:06 +0000 (23:43 +0000)]
[LFC][IFC] Used geometry for inline level boxes should be in the coordinate system of the formatting context root
https://bugs.webkit.org/show_bug.cgi?id=216854

Reviewed by Simon Fraser.

Convert inline level box geometry from relative to the line box to relative to the formatting context root.

* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267446 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoFix BiquadFilterNode's lowpass & highpass filters
cdumez@apple.com [Tue, 22 Sep 2020 22:54:43 +0000 (22:54 +0000)]
Fix BiquadFilterNode's lowpass & highpass filters
https://bugs.webkit.org/show_bug.cgi?id=216852

Reviewed by Eric Carlson.

Source/WebCore:

Fix BiquadFilterNode's lowpass & highpass filters. They incorrectly clamp the
resonance to make it positive.

Formulas for the filters are specified here:
- https://www.w3.org/TR/webaudio/#filters-characteristics

No new tests, rebaselined existing tests.

* platform/audio/Biquad.cpp:
(WebCore::pow10):
(WebCore::Biquad::setLowpassParams):
(WebCore::Biquad::setHighpassParams):

LayoutTests:

Rebaseline tests that are now passing.

* webaudio/BiquadFilter/tail-time-highpass-expected.txt:
* webaudio/BiquadFilter/tail-time-lowpass-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267444 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoMerge AudioBufferSourceNode loop fixes from Blink
cdumez@apple.com [Tue, 22 Sep 2020 22:52:42 +0000 (22:52 +0000)]
Merge AudioBufferSourceNode loop fixes from Blink
https://bugs.webkit.org/show_bug.cgi?id=216849

Reviewed by Eric Carlson.

Source/WebCore:

Merge AudioBufferSourceNode loop fixes from Blink, the following one in particular:
- https://codereview.chromium.org/723823002

This allows us to pass all the checks in:
webaudio/AudioBufferSource/audiobuffersource-loop-comprehensive.html.

No new tests, rebaselined existing test.

* Modules/webaudio/AudioBufferSourceNode.cpp:
(WebCore::AudioBufferSourceNode::renderFromBuffer):
(WebCore::AudioBufferSourceNode::adjustGrainParameters):
Merge loop fixes from Blink.

* Modules/webaudio/AudioScheduledSourceNode.cpp:
(WebCore::AudioScheduledSourceNode::stopLater):
Stop throwing when m_endTime is already set. Our behavior did not match
Chrome and Firefox here. This was causing some existing tests to start
failing now that providing a grain duration when calling start() would
set m_endTime if loop() returns true.

LayoutTests:

* webaudio/AudioBufferSource/audiobuffersource-loop-comprehensive-expected.txt:
Rebaseline test that is now passing.

* webaudio/Oscillator/oscillator-basic-expected.txt:
* webaudio/dom-exceptions-expected.txt:
Rebaseline tests because the exception message was improved.

* webaudio/audiobuffersource-exception-expected.txt:
* webaudio/audiobuffersource-exception.html:
Stop expecting an exception to be thrown when AudioBufferSourceNode.stop() gets called
more than once. I have verified that Chrome and Firefox do not throw in this case.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267443 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[ macOS ] webgl/2.0.0/conformance/textures/misc/texture-upload-size.html is a flaky...
hector_i_lopez@apple.com [Tue, 22 Sep 2020 22:40:17 +0000 (22:40 +0000)]
[ macOS ] webgl/2.0.0/conformance/textures/misc/texture-upload-size.html is a flaky failure
rdar://66842535

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267442 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoRefactor build rules in Makefiles and Makefile.shared
krollin@apple.com [Tue, 22 Sep 2020 22:26:39 +0000 (22:26 +0000)]
Refactor build rules in Makefiles and Makefile.shared
https://bugs.webkit.org/show_bug.cgi?id=216806
<rdar://problem/69332316>

Reviewed by David Kilzer.

Build fix: Previous change for this bug broke the ability to perform a
build with just `make`, due to that code path invoking
`set-webkit-configuration` with no parameters, which causes that
script to error-out.

* Makefile.shared:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267441 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoCoerce computed property before adding to |excludedList|
commit-queue@webkit.org [Tue, 22 Sep 2020 22:23:08 +0000 (22:23 +0000)]
Coerce computed property before adding to |excludedList|
https://bugs.webkit.org/show_bug.cgi?id=216437

Patch by HyeockJin Kim <kherootz@gmail.com> on 2020-09-22
Reviewed by Yusuke Suzuki.

JSTests:

* stress/object-rest-deconstruct.js:
(get 3):

Source/JavaScriptCore:

* bytecompiler/NodesCodegen.cpp:
(JSC::ObjectPatternNode::bindValue const):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267440 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoREGRESSION(r266075): WebContent process crashes at TextManipulationController::getPath
sihui_liu@apple.com [Tue, 22 Sep 2020 22:21:43 +0000 (22:21 +0000)]
REGRESSION(r266075): WebContent process crashes at TextManipulationController::getPath
https://bugs.webkit.org/show_bug.cgi?id=216846

Reviewed by Wenson Hsieh.

Source/WebCore:

TextIterator does not visit node that has no renderer, so if node has become hidden, TextManipulationController
will not find content node in paragraph range during replacement.

API Test: TextManipulation.CompleteTextManipulationParagraphBecomesHidden

* editing/TextManipulationController.cpp:
(WebCore::TextManipulationController::replace):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:
(TestWebKitAPI::TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267439 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[LFC][IFC] Atomic inline-level box with margin is mispositioned
zalan@apple.com [Tue, 22 Sep 2020 21:45:32 +0000 (21:45 +0000)]
[LFC][IFC] Atomic inline-level box with margin is mispositioned
https://bugs.webkit.org/show_bug.cgi?id=216842

Reviewed by Antti Koivisto.

The inline box that an atomic inline-level box generates has the height of the margin box. Therefore the inline box's logical top position
is the position of the top edge of the margin box.
When converting the inline box geometry back to the layout box, we need to offset the top position (border box top edge)
with the value of the used margin before.

* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267437 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoAudioParam.setValueCurveAtTime() should have an implicit call to setValueAtTime(...
cdumez@apple.com [Tue, 22 Sep 2020 20:13:41 +0000 (20:13 +0000)]
AudioParam.setValueCurveAtTime() should have an implicit call to setValueAtTime() at the end
https://bugs.webkit.org/show_bug.cgi?id=216839

Reviewed by Eric Carlson.

Source/WebCore:

AudioParam.setValueCurveAtTime() should have an implicit call to setValueAtTime() at the end,
as specified here:
- https://www.w3.org/TR/webaudio/#dom-audioparam-setvaluecurveattime

"""
An implicit call to setValueAtTime() is made at time 𝑇0+𝑇𝐷 with value 𝑉[𝑁−1] so that
following automations will start from the end of the setValueCurveAtTime() event.
"""

No new tests, rebaselined existing test.

* Modules/webaudio/AudioParamTimeline.cpp:
(WebCore::AudioParamTimeline::setValueCurveAtTime):

LayoutTests:

Rebaseline test that is now passing.

* webaudio/AudioParam/audioparam-setValueCurve-end-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267435 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[LFC][IFC] Add support for multiline inline box geometry.
zalan@apple.com [Tue, 22 Sep 2020 20:07:19 +0000 (20:07 +0000)]
[LFC][IFC] Add support for multiline inline box geometry.
https://bugs.webkit.org/show_bug.cgi?id=216835

Reviewed by Antti Koivisto.

This patch computes the geometry for inline boxes spanning multiple lines (e.g. <span>first line<br>next line</span).
However this is not the getBoundingClientRect() type of geometry where we provide geometry for each fragments. This is more like the
element.offset* geometry where we compute the enclosing rectangle for all the fragments.

* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layoutInFlowContent): Decouple the run construction and inline box geometry update logic,
where we loop through the runs and create "line runs" when needed and then we loop through the inline boxes on the current line and
update the box geometries.

(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):
* layout/inlineformatting/InlineFormattingState.h:
(WebCore::Layout::InlineFormattingState::lineBoxes const):
(WebCore::Layout::InlineFormattingState::addLineBox):
(WebCore::Layout::InlineFormattingState::clearLineAndRuns):
(WebCore::Layout::InlineFormattingState::shrinkToFit):
* layout/inlineformatting/InlineLineBox.h:
(WebCore::Layout::LineBox::containsInlineLevelBox const):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267434 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoAudioParams with automations must process timelines
cdumez@apple.com [Tue, 22 Sep 2020 19:25:56 +0000 (19:25 +0000)]
AudioParams with automations must process timelines
https://bugs.webkit.org/show_bug.cgi?id=216837

Reviewed by Darin Adler.

Source/WebCore:

Currently, if an AudioNode has no inputs connected, any automations
(or connections) to an AudioParam of the node is not processed. Thus,
time never advances on the AudioParam, and any upstream graph
connected to the AudioParam never gets pulled for data.

AudioParam should get processed so that time progresses. Normal
processing of the node causes AudioParams to be processed, so we were
only missing the case where the node has silent inputs (silent or no
inputs). Then we just need to update the AudioParams, without having
to do the full processing associated with the node.

See https://webaudio.github.io/web-audio-api/#rendering-loop, step 8.1.1
in particular that says any inputs connected to an AudioParam are
processed. There are no conditions on when this happens.

This is a merge of the following Blink change by Raymond Toy:
- https://codereview.chromium.org/2420983002

No new tests, rebaselined existing test.

* Modules/webaudio/AudioBasicProcessorNode.cpp:
(WebCore::AudioBasicProcessorNode::processOnlyAudioParams):
* Modules/webaudio/AudioBasicProcessorNode.h:
* Modules/webaudio/AudioListener.h:
* Modules/webaudio/AudioNode.cpp:
(WebCore::AudioNode::processIfNecessary):
* Modules/webaudio/AudioNode.h:
(WebCore::AudioNode::processOnlyAudioParams):
* Modules/webaudio/BiquadFilterNode.cpp:
(WebCore::BiquadFilterNode::BiquadFilterNode):
* Modules/webaudio/BiquadProcessor.cpp:
(WebCore::BiquadProcessor::processOnlyAudioParams):
* Modules/webaudio/BiquadProcessor.h:
* Modules/webaudio/DelayDSPKernel.cpp:
(WebCore::DelayDSPKernel::processOnlyAudioParams):
* Modules/webaudio/DelayDSPKernel.h:
* Modules/webaudio/DelayNode.cpp:
(WebCore::DelayNode::DelayNode):
* Modules/webaudio/DynamicsCompressorNode.cpp:
(WebCore::DynamicsCompressorNode::processOnlyAudioParams):
* Modules/webaudio/DynamicsCompressorNode.h:
* Modules/webaudio/GainNode.cpp:
(WebCore::GainNode::processOnlyAudioParams):
* Modules/webaudio/GainNode.h:
* Modules/webaudio/PannerNode.cpp:
(WebCore::PannerNode::processOnlyAudioParams):
* Modules/webaudio/PannerNode.h:
* Modules/webaudio/StereoPannerNode.cpp:
(WebCore::StereoPannerNode::processOnlyAudioParams):
* Modules/webaudio/StereoPannerNode.h:
* platform/audio/AudioDSPKernel.h:
(WebCore::AudioDSPKernel::processOnlyAudioParams):
* platform/audio/AudioDSPKernelProcessor.cpp:
(WebCore::AudioDSPKernelProcessor::processOnlyAudioParams):
* platform/audio/AudioDSPKernelProcessor.h:
* platform/audio/AudioProcessor.h:
(WebCore::AudioProcessor::processOnlyAudioParams):

LayoutTests:

Rebaseline test that is now passing.

* webaudio/AudioParam/audioparam-processing-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267432 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[GTK] REGRESSION(r267398): several hidpi tests are failing
lmoura@igalia.com [Tue, 22 Sep 2020 19:18:17 +0000 (19:18 +0000)]
[GTK] REGRESSION(r267398): several hidpi tests are failing
https://bugs.webkit.org/show_bug.cgi?id=216830

Reviewed by Adrian Perez de Castro.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setCustomDeviceScaleFactor): Remove check for removed define.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267431 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoUnreviewed, partial revert of r267383.
cdumez@apple.com [Tue, 22 Sep 2020 19:03:05 +0000 (19:03 +0000)]
Unreviewed, partial revert of r267383.

Restore GStreamer-specific implementation of FFTFrame::multiply() since it appears
r267383 introduced test failures on GTK port.

* platform/audio/FFTFrame.cpp:
(WebCore::FFTFrame::multiply): Deleted.
* platform/audio/FFTFrameStub.cpp:
(WebCore::FFTFrame::multiply):
* platform/audio/gstreamer/FFTFrameGStreamer.cpp:
(WebCore::FFTFrame::multiply):
* platform/audio/mac/FFTFrameMac.cpp:
(WebCore::FFTFrame::multiply):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267428 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[Media in GPU Process] Add missing IPC message receivers
peng.liu6@apple.com [Tue, 22 Sep 2020 19:01:06 +0000 (19:01 +0000)]
[Media in GPU Process] Add missing IPC message receivers
https://bugs.webkit.org/show_bug.cgi?id=216829

Reviewed by Jer Noble.

Add missing IPC message receivers and clean up some macro usages.
Also remove the empty RemoteMediaPlayerManager.messages.in.

No new tests, no functional change.

* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources.make:
* GPUProcess/GPUConnectionToWebProcess.cpp:
(WebKit::GPUConnectionToWebProcess::dispatchMessage):
(WebKit::GPUConnectionToWebProcess::dispatchSyncMessage):
* GPUProcess/GPUConnectionToWebProcess.h:
* GPUProcess/media/ios/RemoteMediaSessionHelperProxy.h:
(WebKit::RemoteMediaSessionHelperProxy::didReceiveMessageFromWebProcess):
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/GPU/GPUProcessConnection.cpp:
(WebKit::GPUProcessConnection::dispatchMessage):
* WebProcess/GPU/media/RemoteMediaPlayerManager.messages.in: Removed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267427 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoRefactor build rules in Makefiles and Makefile.shared
krollin@apple.com [Tue, 22 Sep 2020 18:37:51 +0000 (18:37 +0000)]
Refactor build rules in Makefiles and Makefile.shared
https://bugs.webkit.org/show_bug.cgi?id=216806
<rdar://problem/69332316>

Reviewed by David Kilzer.

Factor out the common aspects of the build rules in Makefile.shared
and the various Makefiles. This allows us to more easily see what's
different between the various build targets, and to apply uniform
changes across all of the targets.

* Makefile:
.:

* Makefile.shared:
* Source/Makefile:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267424 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[macOS] Start collecting telemetry from a set of XPC services
pvollan@apple.com [Tue, 22 Sep 2020 18:03:15 +0000 (18:03 +0000)]
[macOS] Start collecting telemetry from a set of XPC services
<https://bugs.webkit.org/show_bug.cgi?id=216797>

Reviewed by Brent Fulgham.

* WebProcess/com.apple.WebProcess.sb.in:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267421 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[GLIB] Unreviewed test gardening. Mark several audio related tests as failure after...
dpino@igalia.com [Tue, 22 Sep 2020 17:57:36 +0000 (17:57 +0000)]
[GLIB] Unreviewed test gardening. Mark several audio related tests as failure after r267383.

Also emit baselines for 2 tests passing.

* platform/glib/TestExpectations:
* platform/glib/webaudio/Analyser/realtimeanalyser-fftsize-reset-expected.txt: Added.
* platform/glib/webaudio/Analyser/realtimeanalyser-multiple-calls-expected.txt: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267419 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[LFC] FormattingState should never be copied.
zalan@apple.com [Tue, 22 Sep 2020 17:33:21 +0000 (17:33 +0000)]
[LFC] FormattingState should never be copied.
https://bugs.webkit.org/show_bug.cgi?id=216833

Reviewed by Antti Koivisto.

Even when running a throw-away layout, we should not copy the state object but instead generate a new one for the subtree.
These objects should never be copied in general.

* layout/FormattingState.h:
* layout/LayoutState.h:
* layout/tableformatting/TableFormattingContextGeometry.cpp:
(WebCore::Layout::TableFormattingContext::Geometry::usedBaselineForCell):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267418 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoREGRESSION(r267354): Only import resource module on Darwin
commit-queue@webkit.org [Tue, 22 Sep 2020 16:53:31 +0000 (16:53 +0000)]
REGRESSION(r267354): Only import resource module on Darwin
https://bugs.webkit.org/show_bug.cgi?id=216823

Patch by Sam Sneddon <gsnedders@apple.com> on 2020-09-22
Reviewed by Darin Adler.

* web-platform-tests/tools/serve/serve.py:
Move the resource import to the local point behind the Darwin platform
test. This code is only run once per process initiation, hence it makes
no difference to have the import locally.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267417 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoCorrect instructions for building iOS in ReadMe
jbedard@apple.com [Tue, 22 Sep 2020 16:45:48 +0000 (16:45 +0000)]
Correct instructions for building iOS in ReadMe
https://bugs.webkit.org/show_bug.cgi?id=216825
<rdar://problem/69372654>

Reviewed by David Kilzer.

* ReadMe.md: Update iOS build instructions to apply to all embedded platforms.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267416 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoImplement a default prompt for getUserMedia
youenn@apple.com [Tue, 22 Sep 2020 16:32:11 +0000 (16:32 +0000)]
Implement a default prompt for getUserMedia
https://bugs.webkit.org/show_bug.cgi?id=216821

Reviewed by Eric Carlson.

Source/WebCore:

Manually tested by running Minibrowser.

* en.lproj/Localizable.strings:

Source/WebKit:

Move preferences used by WebRTC develop menu to internals.
This allows having them in MiniBrowser.

Enable video capture in UIProcess by default for non Safari applications.
Add support for a getUserMedia prompt, very similar to iOS current prompt.
Use the prompt in case the application does not implement any of the two delegates.

* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.cpp:
(WebKit::defaultCaptureVideoInUIProcessEnabled):
* Shared/WebPreferencesDefaultValues.h:
* Shared/WebPreferencesExperimental.yaml:
* Shared/WebPreferencesInternal.yaml:
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate):
(WebKit::requestUserMediaAuthorizationForFrame):
(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
* UIProcess/Cocoa/WKUserMediaCaptureAccessAlert.h: Added.
* UIProcess/Cocoa/WKUserMediaCaptureAccessAlert.mm: Added.
(WebKit::visibleDomain):
(WebKit::alertMessageText):
(WebKit::presentUserMediaCaptureAccessAlert):
* WebKit.xcodeproj/project.pbxproj:

Tools:

Remove getUserMedia delegate implementations to use WebKit built-in prompt.
Add camera and microphone entitlements to allow using real cameras and microphones.
Keep using mock devices as the default.

* MiniBrowser/MiniBrowser.entitlements:
* MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController _webView:requestMediaCaptureAuthorization:decisionHandler:]): Deleted.
(-[WK2BrowserWindowController _webView:includeSensitiveMediaDeviceDetails:]): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267414 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agowebaudio/AudioParam/audioparam-setTarget-timeConstant-0.html is crashing
cdumez@apple.com [Tue, 22 Sep 2020 16:29:35 +0000 (16:29 +0000)]
webaudio/AudioParam/audioparam-setTarget-timeConstant-0.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=216824

Reviewed by Darin Adler.

Source/WebCore:

If the time constant pass to AudioParam.setTargetAtTime() is 0, then insert a SetValue event in
the timeline instead of a SetTarget one, causing us to instantly jump to the target value. This
matches the Blink behavior.

No new tests, unskipped existing test.

* Modules/webaudio/AudioParamTimeline.cpp:
(WebCore::AudioParamTimeline::setTargetAtTime):

LayoutTests:

Unskip test that is passing and no longer crashing.

* TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267413 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoCrashtracer inside PDFPlugin::createScrollbar.
beidson@apple.com [Tue, 22 Sep 2020 16:22:33 +0000 (16:22 +0000)]
Crashtracer inside PDFPlugin::createScrollbar.
<rdar://problem/69256031> and https://bugs.webkit.org/show_bug.cgi?id=216810

Reviewed by Tim Horton.

To quote Tim from r264945:
No new tests; timing is such that I can't reproduce without inserting
intentional delays into the main thread hops, which is further than
I'm willing to go for a test.

This is a speculative fix due to the aforementioned reproducibility issue.

* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::installPDFDocument): With all the past fixes in place, its apparent
  the plug-in HAS been torn down, and it's somewhat common to bypass the other "hasBeenDestroyed"
  checks. So put an explicit check here followed by an explicit release assert.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267412 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[Cocoa] _WKInspectorDelegate should handle showing external resources
bburg@apple.com [Tue, 22 Sep 2020 16:14:08 +0000 (16:14 +0000)]
[Cocoa] _WKInspectorDelegate should handle showing external resources
https://bugs.webkit.org/show_bug.cgi?id=216334

Reviewed by Devin Rousso.

Source/WebCore:

Adapt to the rename of InspectorFrontendHost.{openInNewTab => openURLExternally}.

* inspector/InspectorFrontendClient.h:
* inspector/InspectorFrontendClientLocal.cpp:
(WebCore::InspectorFrontendClientLocal::openURLExternally):
(WebCore::InspectorFrontendClientLocal::openInNewTab): Deleted.
* inspector/InspectorFrontendClientLocal.h:
* inspector/InspectorFrontendHost.cpp:
(WebCore::InspectorFrontendHost::openURLExternally):
(WebCore::InspectorFrontendHost::openInNewTab): Deleted.
* inspector/InspectorFrontendHost.h:
* inspector/InspectorFrontendHost.idl:

Source/WebInspectorUI:

Adapt to the rename of InspectorFrontendHost.{openInNewTab => openURLExternally}.

* UserInterface/Base/Main.js:
* UserInterface/Debug/UncaughtExceptionReporter.js:
(sheetElement.innerHTML.div):
* UserInterface/Protocol/InspectorFrontendAPI.js:
* UserInterface/Views/ResourceTreeElement.js:
(WI.ResourceTreeElement.prototype.ondblclick):

Source/WebKit:

WebKit clients need a way to control the loading and presentation of
external resources that are linked in Web Inspector's user interface.

Rename InspectorFrontendHost.openInNewTab to openURLExternally. Change
the implementation to forward the request to UIProcess rather than the
inspected WebProcess.

When a navigation is triggered in WKInspectorViewController's WKWebView,
allow the delegate to open the requested resource. Otherwise, redirect
the navigation to the inspected WebView or open it using NSWorkspace
(for the remote case).

New API test: WKInspectorDelegate.OpenURLExternally.

* UIProcess/API/Cocoa/_WKInspectorPrivateForTesting.h: Added.
* UIProcess/API/Cocoa/_WKInspectorTesting.mm: Added.
(snippetToOpenURLExternally):
(-[_WKInspector _openURLExternallyForTesting:useFrontendAPI:]):
Add some helpers for writing API tests.

* UIProcess/API/APIInspectorClient.h:
(API::InspectorClient::openURLExternally):
* UIProcess/API/Cocoa/_WKInspectorDelegate.h:
* UIProcess/Cocoa/PageClientImplCocoa.mm:
* UIProcess/Inspector/Cocoa/InspectorDelegate.h:
* UIProcess/Inspector/Cocoa/InspectorDelegate.mm:
(WebKit::InspectorDelegate::setDelegate):
(WebKit::InspectorDelegate::InspectorClient::openURLExternally):
Add new delegate method to _WKInspectorDelegate.

* UIProcess/Inspector/RemoteWebInspectorProxy.messages.in:
* UIProcess/Inspector/RemoteWebInspectorProxy.h:
* UIProcess/Inspector/RemoteWebInspectorProxy.cpp:
(WebKit::RemoteWebInspectorProxy::openURLExternally):
(WebKit::RemoteWebInspectorProxy::platformOpenURLExternally):
(WebKit::RemoteWebInspectorProxy::openInNewTab): Deleted.
(WebKit::RemoteWebInspectorProxy::platformOpenInNewTab): Deleted.
* UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp:
(WebKit::RemoteWebInspectorProxy::platformURLExternally):
(WebKit::RemoteWebInspectorProxy::platformOpenInNewTab): Deleted.
* UIProcess/Inspector/mac/RemoteWebInspectorProxyMac.mm:
(WebKit::RemoteWebInspectorProxy::platformOpenURLExternally):
(WebKit::RemoteWebInspectorProxy::platformOpenInNewTab): Deleted.
* UIProcess/Inspector/win/RemoteWebInspectorProxyWin.cpp:
(WebKit::RemoteWebInspectorProxy::platformOpenURLExternally):
(WebKit::RemoteWebInspectorProxy::platformOpenInNewTab): Deleted.
Rename openInNewTab to openURLExternally. In some cases the client
may not choose to present a new tab, so the name is no longer accurate.

* UIProcess/Inspector/WebInspectorProxy.messages.in:
* UIProcess/Inspector/WebInspectorProxy.h:
* UIProcess/Inspector/WebInspectorProxy.cpp:
(WebKit::WebInspectorProxy::inspectorWindow const):
(WebKit::WebInspectorProxy::openURLExternally):
(WebKit::WebInspectorProxy::evaluateInFrontendForTesting):
* UIProcess/Inspector/mac/WebInspectorProxyMac.mm:
(-[WKWebInspectorProxyObjCAdapter inspectorViewController:openURLExternally:]):
Add some helpers for writing API tests. Add an IPC message
for evaluating a JavaScript expression in the frontend page.
Also, add a message receiver for the OpenURLExternally message
which passes the request to the API layer.

* UIProcess/Inspector/mac/WKInspectorViewController.h:
* UIProcess/Inspector/mac/WKInspectorViewController.mm:
(-[WKInspectorViewController webView:decidePolicyForNavigationAction:decisionHandler:]):
Call the delegate method if a navigation inside the inspector WKWebView is an external URL.
Specifically the request is to load something other than the Web Inspector's main HTML page.

* WebProcess/Inspector/WebInspector.cpp:
(WebKit::WebInspector::openInNewTab): Deleted.
* WebProcess/Inspector/WebInspector.h:
* WebProcess/Inspector/WebInspector.messages.in:
No need to handle this message anymore in the inspected WebProcess.

* WebProcess/Inspector/RemoteWebInspectorUI.h:
* WebProcess/Inspector/RemoteWebInspectorUI.cpp:
(WebKit::RemoteWebInspectorUI::openURLExternally):
(WebKit::RemoteWebInspectorUI::openInNewTab): Deleted.
* WebProcess/Inspector/WebInspectorUI.messages.in:
* WebProcess/Inspector/WebInspectorUI.h:
* WebProcess/Inspector/WebInspectorUI.cpp:
(WebKit::WebInspectorUI::updateConnection):
(WebKit::WebInspectorUI::closeWindow):
(WebKit::WebInspectorUI::openURLExternally):
(WebKit::WebInspectorUI::evaluateInFrontendForTesting):
(WebKit::WebInspectorUI::openInNewTab): Deleted.
When we need to open the URL externally, send an IPC message to UIProcess.
The old implementation triggered the navigation from the inspected WebProcess.
That approach is no longer desirable. Remove the unneeded IPC connection.

* WebProcess/Inspector/WebInspectorFrontendAPIDispatcher.h:
* WebProcess/Inspector/WebInspectorFrontendAPIDispatcher.cpp:
(WebKit::WebInspectorFrontendAPIDispatcher::evaluateExpressionForTesting):
Fulfill the request to evaluate the expression in the frontend page.

* SourcesCocoa.txt:
* WebKit.xcodeproj/project.pbxproj:
Some files were added.

Tools:

Test the delegate using WebKit API and using InspectorFrontendHost API.

* TestWebKitAPI/Tests/WebKitCocoa/WKInspectorDelegate.mm:
(-[InspectorDelegate inspector:openURLExternally:]): Added.
(TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267411 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoUnreviewed, reverting r267380.
tsavell@apple.com [Tue, 22 Sep 2020 16:00:50 +0000 (16:00 +0000)]
Unreviewed, reverting r267380.

Broke multiple test suites on Liberty

Reverted changeset:

"[webkitpy] Use webkitcorepy's auto installer for pytest
packages"
https://bugs.webkit.org/show_bug.cgi?id=215895
https://trac.webkit.org/changeset/267380

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267410 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[WebIDL] Split up Performance.idl into component partials
weinig@apple.com [Tue, 22 Sep 2020 15:28:32 +0000 (15:28 +0000)]
[WebIDL] Split up Performance.idl into component partials
https://bugs.webkit.org/show_bug.cgi?id=216729

Reviewed by Darin Adler.

Split additions to the Peformance interface from the Navagation Timing,
Resource Timing, User Timing and Performance Timeline specs into their
own IDL files. Trying something new with the naming (using Performance
'+' name of the spec supplying the addition) for these partials to test
the waters.

* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:
* page/Performance+NavigationTiming.idl: Added.
* page/Performance+PerformanceTimeline.idl: Added.
* page/Performance+ResourceTiming.idl: Added.
* page/Performance+UserTiming.idl: Added.
* page/Performance.idl:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267408 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[GTK] Mark compositing/video/video-update-rendering.html as flaky crash
lmoura@igalia.com [Tue, 22 Sep 2020 14:59:02 +0000 (14:59 +0000)]
[GTK] Mark compositing/video/video-update-rendering.html as flaky crash

Unreviewed test gardening.

* platform/gtk/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267406 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[macOS] Start collecting telemetry from message filtering
pvollan@apple.com [Tue, 22 Sep 2020 14:54:16 +0000 (14:54 +0000)]
[macOS] Start collecting telemetry from message filtering
<https://bugs.webkit.org/show_bug.cgi?id=216803>

Reviewed by Darin Adler.

Start collecting telemetry for message filtering in the WebContent sandbox on macOS.

* WebProcess/com.apple.WebProcess.sb.in:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267405 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[LFC][IFC] TextUtil::split needs logical left
zalan@apple.com [Tue, 22 Sep 2020 13:34:07 +0000 (13:34 +0000)]
[LFC][IFC] TextUtil::split needs logical left
https://bugs.webkit.org/show_bug.cgi?id=216798

Reviewed by Antti Koivisto.

Measuring text content requires logical left offset (e.g. tab size depends on the logical position).
Let's pass in the current logical left position to TextUtil::split.

* layout/inlineformatting/InlineLineBreaker.cpp:
(WebCore::Layout::ContinuousContent::runs const):
(WebCore::Layout::ContinuousContent::isEmpty const):
(WebCore::Layout::ContinuousContent::logicalWidth const):
(WebCore::Layout::ContinuousContent::logicalLeft const):
(WebCore::Layout::ContinuousContent::nonCollapsibleLogicalWidth const):
(WebCore::Layout::LineBreaker::isContentWrappingAllowed const):
(WebCore::Layout::LineBreaker::shouldKeepEndOfLineWhitespace const):
(WebCore::Layout::LineBreaker::shouldWrapInlineContent):
(WebCore::Layout::LineBreaker::tryWrappingInlineContent const):
(WebCore::Layout::LineBreaker::wrapTextContent const):
(WebCore::Layout::LineBreaker::tryBreakingTextRun const):
(WebCore::Layout::ContinuousContent::ContinuousContent):
(WebCore::Layout::ContinuousContent::hasTextContentOnly const):
(WebCore::Layout::ContinuousContent::isVisuallyEmptyWhitespaceContentOnly const):
(WebCore::Layout::ContinuousContent::firstTextRunIndex const):
(WebCore::Layout::ContinuousContent::lastContentRunIndex const):
(WebCore::Layout::ContinuousContent::hasNonContentRunsOnly const):
(WebCore::Layout::ContinuousContent::size const): Deleted.
(WebCore::Layout::ContinuousContent::width const): Deleted.
(WebCore::Layout::ContinuousContent::nonCollapsibleWidth const): Deleted.
* layout/inlineformatting/InlineLineBreaker.h:
* layout/inlineformatting/InlineLineBuilder.cpp:
(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267404 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoMove Media in GPU Process flag from internal to experimental
youenn@apple.com [Tue, 22 Sep 2020 12:10:58 +0000 (12:10 +0000)]
Move Media in GPU Process flag from internal to experimental
https://bugs.webkit.org/show_bug.cgi?id=216473
<rdar://problem/69318786>

Reviewed by Eric Carlson.

Source/WebKit:

No change of behavior.

* Shared/WebPreferencesExperimental.yaml:
* Shared/WebPreferencesInternal.yaml:

Tools:

* Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(parse_args):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):
Disable Media in GPU Process flag and WebRTC codec experimental features by default.
This can be overriden by WebKitTestRunner options.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267403 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoUpdate User Timing interfaces to User Timing Level 3
weinig@apple.com [Tue, 22 Sep 2020 08:46:36 +0000 (08:46 +0000)]
Update User Timing interfaces to User Timing Level 3
https://bugs.webkit.org/show_bug.cgi?id=216787

Reviewed by Alex Christensen.
LayoutTests/imported/w3c:

Import missing case-sensitivity test case from upstream and update the results
of User Timing tests now that we support Level 3.

* web-platform-tests/user-timing/case-sensitivity.any-expected.txt: Added.
* web-platform-tests/user-timing/case-sensitivity.any.html: Added.
* web-platform-tests/user-timing/case-sensitivity.any.js: Added.
* web-platform-tests/user-timing/case-sensitivity.any.worker-expected.txt: Added.
* web-platform-tests/user-timing/case-sensitivity.any.worker.html: Added.
* web-platform-tests/user-timing/idlharness.any-expected.txt:
* web-platform-tests/user-timing/idlharness.any.worker-expected.txt:
* web-platform-tests/user-timing/mark-entry-constructor.any-expected.txt:
* web-platform-tests/user-timing/mark-entry-constructor.any.worker-expected.txt:
* web-platform-tests/user-timing/mark-errors.any-expected.txt:
* web-platform-tests/user-timing/mark-errors.any.worker-expected.txt:
* web-platform-tests/user-timing/mark-l3.any-expected.txt:
* web-platform-tests/user-timing/mark-l3.any.worker-expected.txt:
* web-platform-tests/user-timing/mark-measure-return-objects.any-expected.txt:
* web-platform-tests/user-timing/mark-measure-return-objects.any.worker-expected.txt:
* web-platform-tests/user-timing/measure-l3.any-expected.txt:
* web-platform-tests/user-timing/measure-l3.any.worker-expected.txt:
* web-platform-tests/user-timing/measure-with-dict.any-expected.txt:
* web-platform-tests/user-timing/measure-with-dict.any.worker-expected.txt:
* web-platform-tests/user-timing/measure_exception-expected.txt:
* web-platform-tests/user-timing/performance-measure-invalid.worker-expected.txt:
* web-platform-tests/user-timing/structured-serialize-detail.any-expected.txt:
* web-platform-tests/user-timing/structured-serialize-detail.any.worker-expected.txt:

Source/WebCore:

Adds support for User Timing Level 3 which adds more flexibility in how PerformanceMarks
and PerformanceMeasures are created via synthetic start/end times and associate 'details'
values serialized with events themselves.

Updates results to existing WPT and standalone tests.

* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
Add new files.

* page/Performance.cpp:
(WebCore::Performance::mark):
(WebCore::Performance::clearMarks):
(WebCore::Performance::measure):
(WebCore::Performance::clearMeasures):
* page/Performance.h:
* page/Performance.idl:
Update for new signatures for mark and measure, and rename of UserTiming to PerformanceUserTiming.

* page/PerformanceMark.cpp: Added.
(WebCore::peformanceNow):
(WebCore::PerformanceMark::create):
(WebCore::PerformanceMark::PerformanceMark):
(WebCore::PerformanceMark::detail):
* page/PerformanceMark.h:
* page/PerformanceMark.idl:
Add support for PerformanceMark's constructor `detail` getter. While the spec says to
serialize and the deserialize in the constructor, we only serialize, and delay deserialization
until the first access, which is a non-observable difference. We also utilize [CachedAttribute]
to only ever deserialize once per wrapper world (and also greatly simplify the GC shenanigans).

* page/PerformanceMarkOptions.h: Added.
* page/PerformanceMarkOptions.idl: Added.
Import and bind PerformanceMarkOptions dictionary to a new struct.

* page/PerformanceMeasure.cpp: Added.
(WebCore::PerformanceMeasure::create):
(WebCore::PerformanceMeasure::PerformanceMeasure):
(WebCore::PerformanceMeasure::detail):
* page/PerformanceMeasure.h:
* page/PerformanceMeasure.idl:
Like with PerformanceMark, but there is no constructor here, so we only need to handle adding
support for the detail getter.

* page/PerformanceMeasureOptions.h: Added.
* page/PerformanceMeasureOptions.idl: Added.
Import and bind PerformanceMeasureOptions dictionary to a new struct.

* page/PerformanceUserTiming.cpp:
(WebCore::restrictedMarkNamesToNavigationTimingFunctionMap):
(WebCore::restrictedMarkFunction):
(WebCore::isRestrictedMarkNameNonMainThread):
(WebCore::PerformanceUserTiming::isRestrictedMarkName):
Split up existing map to enable accessing it safely from a worker using conservative
callOnMainThreadAndWait approach, though since the map is immutable after initialization,
we can probably optimize this to allow concurrent querying in the future.

(WebCore::addPerformanceEntry):
Add helper, mirroring clearPerformanceEntries, to add entries.

(WebCore::PerformanceUserTiming::mark):
Matching the spec language, utilize the new PerformanceMark constructor to create
the mark.

(WebCore::PerformanceUserTiming::convertMarkToTimestamp const):
(WebCore::isNonEmptyDictionary):
(WebCore::PerformanceUserTiming::measure):
Implement measure support by dispatching various combinations of arguments to
overloads manually by inspecting the Variant.

* page/PerformanceUserTiming.h:
Renames class from UserTiming to PerformanceUserTiming to match file names.

LayoutTests:

Update error text due to some changes in which exceptions are thrown due to
new support for User Timing Level 3.

* performance-api/performance-measure-name-expected.txt:
* performance-api/performance-now-api-expected.txt:
* performance-api/user-timing-apis-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267402 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agotoRTCIceProtocol should handle ssltcp candidates
youenn@apple.com [Tue, 22 Sep 2020 08:03:38 +0000 (08:03 +0000)]
toRTCIceProtocol should handle ssltcp candidates
https://bugs.webkit.org/show_bug.cgi?id=216762

Reviewed by Darin Adler.

Source/WebCore:

Covered by mock WebRTC backend pushing ssltcp candidates.

* Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
(WebCore::toRTCIceProtocol):
* testing/MockLibWebRTCPeerConnection.cpp:

LayoutTests:

* fast/mediastream/RTCPeerConnection-icecandidate-event-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267401 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoEnable MediaRecorder by default on iOS
youenn@apple.com [Tue, 22 Sep 2020 06:58:00 +0000 (06:58 +0000)]
Enable MediaRecorder by default on iOS
https://bugs.webkit.org/show_bug.cgi?id=216664

Reviewed by Darin Adler.

* Shared/WebPreferencesDefaultValues.cpp:
(WebKit::defaultMediaRecorderEnabled):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267400 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[CMake] Use imported targets in find module for the ATK SPI2 bridge dependency
aperez@igalia.com [Tue, 22 Sep 2020 06:52:15 +0000 (06:52 +0000)]
[CMake] Use imported targets in find module for the ATK SPI2 bridge dependency
https://bugs.webkit.org/show_bug.cgi?id=216773

Reviewed by Don Olmstead.

.:

* Source/cmake/FindATKBridge.cmake: Rewrite to define an ATK::Bridge imported target.
* Source/cmake/OptionsWPE.cmake: Use the ATK::Bridge imported target.

Source/WebKit:

No new tests needed.

* PlatformWPE.cmake: Use the ATK::Bridge imported target.

Tools:

* wpe/backends/CMakeLists.txt: Use the ATK::Bridge imported target.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267399 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[GTK] Bump cairo version to support HiDPI
aperez@igalia.com [Tue, 22 Sep 2020 06:08:19 +0000 (06:08 +0000)]
[GTK] Bump cairo version to support HiDPI
https://bugs.webkit.org/show_bug.cgi?id=133378

Reviewed by Carlos Garcia Campos.

Remove conditional compilation around cairo_{g,s}et_device_scale() as there is no need to
support older versions of Cairo which lack the functions. The minimum version of Cairo
being required by CMake is 1.14.0, which already includes them.

Source/WebCore:

No new tests needed.

* platform/graphics/cairo/BackingStoreBackendCairoImpl.cpp:
(WebCore::createCairoImageSurfaceWithFastMalloc): Use cairo_surface_set_device_scale()
directly.
(WebCore::BackingStoreBackendCairoImpl::scroll): Use cairo_surface_get_device_scale()
directly.
* platform/graphics/cairo/BackingStoreBackendCairoX11.cpp:
(WebCore::BackingStoreBackendCairoX11::BackingStoreBackendCairoX11): Use
cairo_surface_set_device_scale() directly.
(WebCore::BackingStoreBackendCairoX11::scroll): Use cairo_surface_get_device_scale()
directly.
* platform/graphics/cairo/CairoUtilities.cpp: Remove helper functions
cairoSurfaceSetDeviceScale() and cairoSurfaceGetDeviceScale().
* platform/graphics/cairo/CairoUtilities.h: Ditto.

Source/WebKit:

* Shared/cairo/ShareableBitmapCairo.cpp:
(WebKit::ShareableBitmap::paint): use cairo_surface_set_device_scale() directly.
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseTakeViewSnapshot): Ditto.
* UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
(WebKit::AcceleratedBackingStoreWayland::displayBuffer): Ditto.
(WebKit::AcceleratedBackingStoreWayland::downloadTexture): Ditto.
* UIProcess/gtk/AcceleratedBackingStoreX11.cpp:
(WebKit::AcceleratedBackingStoreX11::update): Ditto.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267398 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoRemove deprecated script and stylesheet injection SPI, replaced with more inclusively...
commit-queue@webkit.org [Tue, 22 Sep 2020 05:07:13 +0000 (05:07 +0000)]
Remove deprecated script and stylesheet injection SPI, replaced with more inclusively-named SPI
https://bugs.webkit.org/show_bug.cgi?id=214936

Patch by Alex Christensen <achristensen@webkit.org> on 2020-09-21
Reviewed by Youenn Fablet.

rdar://64376341 tracks the adoption of the replacement.  Once that is done, we can remove the old SPI.

* WebView/WebView.mm:
(+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:]): Deleted.
(+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]): Deleted.
(+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:]): Deleted.
(+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]): Deleted.
* WebView/WebViewPrivate.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267397 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[GLIB] Unreviewed test gardening. Update baselines after r267389.
dpino@igalia.com [Tue, 22 Sep 2020 05:03:08 +0000 (05:03 +0000)]
[GLIB] Unreviewed test gardening. Update baselines after r267389.

* platform/glib/imported/w3c/web-platform-tests/selection/selection-select-all-move-input-crash-expected.txt:
* platform/glib/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner-expected.txt: Update after r267357.
* platform/glib/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation-expected.txt: Removed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267396 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoFix MIPS leai,leap when offset is nonzero
pmatos@igalia.com [Tue, 22 Sep 2020 04:56:42 +0000 (04:56 +0000)]
Fix MIPS leai,leap when offset is nonzero
https://bugs.webkit.org/show_bug.cgi?id=216772

Reviewed by Mark Lam.

Fix required by change from webkit#216685
* offlineasm/mips.rb:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267395 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agopaper.io ad close buttons cannot be iteracted with via trackpad on iPad
timothy_horton@apple.com [Tue, 22 Sep 2020 04:44:47 +0000 (04:44 +0000)]
paper.io ad close buttons cannot be iteracted with via trackpad on iPad
https://bugs.webkit.org/show_bug.cgi?id=216812
<rdar://problem/68738585>

Reviewed by Wenson Hsieh.

Source/WebCore:

* platform/RuntimeApplicationChecks.h:
* platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::IOSApplication::isPaperIO):

Source/WebKit:

* UIProcess/ios/WKContentViewInteraction.mm:
(applicationIsKnownToIgnoreMouseEvents):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267394 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[GLIB] fast/mediastream/getUserMedia-webaudio.html is failing since 267383
lmoura@igalia.com [Tue, 22 Sep 2020 03:48:18 +0000 (03:48 +0000)]
[GLIB] fast/mediastream/getUserMedia-webaudio.html is failing since 267383

Unreviewed test gardening.

* platform/glib/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267389 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoValue returned by AudioParamTimeline::valuesForTimeRange() is sometimes incorrect...
cdumez@apple.com [Tue, 22 Sep 2020 01:30:35 +0000 (01:30 +0000)]
Value returned by AudioParamTimeline::valuesForTimeRange() is sometimes incorrect for exponential ramps
https://bugs.webkit.org/show_bug.cgi?id=216811

Reviewed by Darin Adler.

Source/WebCore:

AudioParamTimeline::valuesForTimeRangeImpl() always need to return the *last* value since this is
what will be used to update AudioParam::m_value to its latest value. We had a bug in our exponential
ramp processing causing value to be multiplied one extra time.

No new tests, rebaselined existing test.

* Modules/webaudio/AudioParamTimeline.cpp:
(WebCore::AudioParamTimeline::valuesForTimeRangeImpl):

LayoutTests:

Rebaseline test that is now passing.

* webaudio/AudioParam/audioparam-update-value-attribute-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267388 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoAdd some WKWebProcessPlugInFrame SPI needed by Safari.
timothy@apple.com [Tue, 22 Sep 2020 00:37:16 +0000 (00:37 +0000)]
Add some WKWebProcessPlugInFrame SPI needed by Safari.
https://bugs.webkit.org/show_bug.cgi?id=216809
rdar://problem/69336928

Reviewed by Brian Weinstein.

* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:
(+[WKWebProcessPlugInFrame lookUpFrameFromJSContext:]): Added.
(-[WKWebProcessPlugInFrame _securityOrigin]): Added.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFramePrivate.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267387 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoAudioBufferSourceNode should update grain parameters when buffer is set after renderi...
cdumez@apple.com [Tue, 22 Sep 2020 00:17:33 +0000 (00:17 +0000)]
AudioBufferSourceNode should update grain parameters when buffer is set after rendering has started
https://bugs.webkit.org/show_bug.cgi?id=216808

Reviewed by Eric Carlson.

Source/WebCore:

AudioBufferSourceNode should update grain parameters when buffer is set after rendering has
started. The grain parameters need to be adjusted so that they make sense given the buffer
length. Previously, we would only update grain parameters in AudioBufferSourceNode::startPlaying(),
when a buffer is set. We would fail to update those grain parameters when the buffer is set,
in setBuffer(), if startPlaying() has already been called.

No new tests, rebaselined existing test.

* Modules/webaudio/AudioBufferSourceNode.cpp:
(WebCore::AudioBufferSourceNode::setBuffer):
(WebCore::AudioBufferSourceNode::startLater):
(WebCore::AudioBufferSourceNode::startPlaying):
(WebCore::AudioBufferSourceNode::updateGrainParameters):
* Modules/webaudio/AudioBufferSourceNode.h:

LayoutTests:

Rebaseline test that is now passing.

* webaudio/AudioBufferSource/audiobuffersource-loop-grain-no-duration-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267386 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoMake accessibility isolated tree a non-experimental feature.
andresg_22@apple.com [Mon, 21 Sep 2020 23:49:41 +0000 (23:49 +0000)]
Make accessibility isolated tree a non-experimental feature.
https://bugs.webkit.org/show_bug.cgi?id=216792

Reviewed by Chris Fleizach.

Promote accessibility isolated tree from an experimental feature to a
non-experimental one. This avoids the problem where a user can turn off
the feature through the Safari > Develop > Experimental Features submenu,
while the accessibility request are still coming on a secondary thread,
which leads to random crashes.

* Shared/WebPreferences.yaml:
* Shared/WebPreferencesExperimental.yaml:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267385 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoUnreviewed, unskip webaudio/Analyser/handle-silent-inputs.html.
cdumez@apple.com [Mon, 21 Sep 2020 23:42:29 +0000 (23:42 +0000)]
Unreviewed, unskip webaudio/Analyser/handle-silent-inputs.html.

This test should no longer be flaky now that it is passing.

* TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267384 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoValues returned by FFTFrame::doFFT() are twice as large as they should be
cdumez@apple.com [Mon, 21 Sep 2020 23:27:50 +0000 (23:27 +0000)]
Values returned by FFTFrame::doFFT() are twice as large as they should be
https://bugs.webkit.org/show_bug.cgi?id=216781

Reviewed by Darin Adler.

Source/WebCore:

To provide the best possible execution speeds, the vDSP library's functions don't always adhere strictly
to textbook formulas for Fourier transforms, and must be scaled accordingly [1].

In the case of a Real forward Transform like in FFTFrame::doFFT(): RFimp = RFmath * 2 so we need to
divide the output by 2 to get the correct value. We were failing to do this scaling and this was causing
AnalyserNode tests to fail.

[1] See https://developer.apple.com/library/archive/documentation/Performance/Conceptual/vDSP_Programming_Guide/UsingFourierTransforms/UsingFourierTransforms.html#//apple_ref/doc/uid/TP40005147-CH3-SW5

No new tests, rebaselined existing tests.

* Modules/webaudio/PeriodicWave.cpp:
(WebCore::PeriodicWave::createBandLimitedTables):
Update normalization factor now that FFTFrame::doInverseFFT() has been fixed. The new normalization factor
matches the value used by blink at:
- https://github.com/chromium/chromium/blob/master/third_party/blink/renderer/modules/webaudio/periodic_wave.cc

* platform/audio/FFTFrame.cpp:
(WebCore::FFTFrame::multiply):
We were applying a 0.5 scaling factor to the output of vDSP_zvmul(). However, the documentation for vDSP_zvmul()
does not indicate that its output is twice as large as expected. Odds are that this was done because we used
to have a bug in FFTFrame::doFFT() that was returning values twice as large as expected. SInce this function
relies on VectorMath, there is no need for its implementation to be platform-specific.

* platform/audio/FFTFrameStub.cpp:
* platform/audio/gstreamer/FFTFrameGStreamer.cpp:
(WebCore::FFTFrame::doFFT):
(WebCore::FFTFrame::doInverseFFT):
Drop 2 factor in the GStreamer implementation that was added to try and be consistent with the incorrect Mac
implementation.

* platform/audio/mac/FFTFrameMac.cpp:
(WebCore::FFTFrame::doFFT):
Fix issue where the values returned by doFFT() were twice as large as expected due to the odd behavior of
vDSP_fft_zrip().

(WebCore::FFTFrame::doInverseFFT):
Drop 2 factor in doInverseFFT that was added because the output of doFFT() was twice as large as expected
and we wanted x == InverseFFT(FFT(x)).

LayoutTests:

* webaudio/Analyser/realtimeanalyser-downmix-expected.txt:
* webaudio/Analyser/realtimeanalyser-freq-data-expected.txt:
* webaudio/Analyser/realtimeanalyser-freq-data-smoothing-expected.txt:
* webaudio/Analyser/realtimeanalyser-multiple-calls-expected.txt:
Rebaseline tests that are passing now that the bug has been fixed.

* webaudio/realtimeanalyser-fft-scaling-expected.txt: Removed.
* webaudio/realtimeanalyser-fft-scaling.html: Removed.
Drop outdated test. This test was imported into WPT and now resides at:
- imported/w3c/web-platform-tests/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267383 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[GPU Process] Several tests in canvas/philip/tests are failing with text diffs
wenson_hsieh@apple.com [Mon, 21 Sep 2020 23:25:25 +0000 (23:25 +0000)]
[GPU Process] Several tests in canvas/philip/tests are failing with text diffs
https://bugs.webkit.org/show_bug.cgi?id=216800

Reviewed by Darin Adler.

When using the GPU process to render canvas elements, we currently fail the 7 tests in `canvas/philip/tests`
below, due to gradient and pattern fill/stroke styles lingering on the 2D graphics context state after a fill or
stroke color is set, respectively.

This happens when:
1. The fill color is set to a color `C`.
2. A fill pattern or gradient is applied.
3. The fill color is set to the color `C` again.

In this case, after step (2), we propagate a graphics context state change indicating that the fill pattern has
changed, but we leave the fill color unchanged (i.e., it remains equal to `C`). In step (3), we then set the
fill color to `C` again, which doesn't propagate a state change to the GPU process, since the fill color is the
same (`C`). As such, the state in the GPU process keeps its fill gradient, and we end up filling with this old
gradient instead of the fill color `C`.

To fix this, we simply revert `fillColor` and `strokeColor` to the invalid color when setting a gradient or
pattern in the same way that we currently clear out the fill/stroke gradient and pattern when setting a fill/
stroke color, which ensures that a state change will be sent to the GPU process during step (3).

Fixes the following canvas-related layout tests when using the GPU process:
- canvas/philip/tests/2d.gradient.radial.cone.shape2.html
- canvas/philip/tests/2d.pattern.basic.nocontext.html
- canvas/philip/tests/2d.pattern.paint.norepeat.coord3.html
- canvas/philip/tests/2d.pattern.paint.repeatx.coord1.html
- canvas/philip/tests/2d.pattern.paint.repeatx.outside.html
- canvas/philip/tests/2d.pattern.paint.repeaty.coord1.html
- canvas/philip/tests/2d.pattern.paint.repeaty.outside.html

The entire canvas/ directory is currently skipped when enabling the GPU process for canvas rendering, but once
we're down to a smaller number of failures, I intend to unskip these directories for GPU process, and
individually track any remaining test failures.

* platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::setStrokePattern):
(WebCore::GraphicsContext::setFillPattern):
(WebCore::GraphicsContext::setStrokeGradient):
(WebCore::GraphicsContext::setFillGradient):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267382 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoProperly handle AudioParam.setTargetAtTime() followed by a ramp
cdumez@apple.com [Mon, 21 Sep 2020 23:14:06 +0000 (23:14 +0000)]
Properly handle AudioParam.setTargetAtTime() followed by a ramp
https://bugs.webkit.org/show_bug.cgi?id=216804

Reviewed by Darin Adler.

Source/WebCore:

Properly handle AudioParam.setTargetAtTime() followed by a ramp:
- https://www.w3.org/TR/webaudio/#dom-audioparam-settargetattime
- https://www.w3.org/TR/webaudio/#dom-audioparam-linearramptovalueattime
- https://www.w3.org/TR/webaudio/#dom-audioparam-exponentialramptovalueattime

This is a merge of the following Blink change:
- https://codereview.chromium.org/1485003002

No new tests, rebaselined existing test.

* Modules/webaudio/AudioParamTimeline.cpp:
(WebCore::AudioParamTimeline::valuesForTimeRangeImpl):
(WebCore::AudioParamTimeline::processSetTargetFollowedByRamp):
* Modules/webaudio/AudioParamTimeline.h:

LayoutTests:

Rebaseline test that is now passing.

* webaudio/AudioParam/audioparam-setTargetAtTime-continuous-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267381 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[webkitpy] Use webkitcorepy's auto installer for pytest packages
jbedard@apple.com [Mon, 21 Sep 2020 23:10:08 +0000 (23:10 +0000)]
[webkitpy] Use webkitcorepy's auto installer for pytest packages
https://bugs.webkit.org/show_bug.cgi?id=215895
<rdar://problem/67885471>

Rubber-stamped by Aakash Jain.

* Scripts/webkitpy/__init__.py: Add pytest and it's dependencies.
* Scripts/webkitpy/thirdparty/__init__.py:
(AutoinstallImportHook.find_module): Remove pytest and pytest_timeout.
(AutoinstallImportHook._install_pytest_timeout): Deleted.
(AutoinstallImportHook._install_pytest): Deleted.
* Scripts/webkitpy/webdriver_tests/pytest_runner.py: Implicitly use webkitcorepy's autoinstaller.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267380 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoWeb Inspector: Uncaught Exception: Missing node for given nodeId
nvasilyev@apple.com [Mon, 21 Sep 2020 23:09:18 +0000 (23:09 +0000)]
Web Inspector: Uncaught Exception: Missing node for given nodeId
https://bugs.webkit.org/show_bug.cgi?id=216067
<rdar://problem/68520144>

Reviewed by Devin Rousso.

* UserInterface/Views/ContentBrowserTabContentView.js:
(WI.ContentBrowserTabContentView.prototype.showDetailsSidebarPanels):
Rewrite `showDetailsSidebarPanels` in such way that causes no more than one change of selectedSidebarPanel.
Previously, `removeSidebarPanel` would cause the change of selectedSidebarPanel, resulting in showing
a panel with outdated `this.domNode`.

* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
Display a useful error with a relevant location instead of a generic Connection.js error.

* UserInterface/Views/Sidebar.js:
(WI.Sidebar.prototype.removeSidebarPanel):
After removing a panel, don't select the nearest panel. There doesn't seem to be a useful case for it.
The selected panel is determined at the removeSidebarPanel callsites.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267379 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoRemove unused NodeFlag::HasCSSAnimation
graouts@webkit.org [Mon, 21 Sep 2020 22:56:34 +0000 (22:56 +0000)]
Remove unused NodeFlag::HasCSSAnimation
https://bugs.webkit.org/show_bug.cgi?id=216785

Reviewed by Antti Koivisto.

* dom/Element.h:
(WebCore::Element::hasCSSAnimation const): Deleted.
(WebCore::Element::setHasCSSAnimation): Deleted.
(WebCore::Element::clearHasCSSAnimation): Deleted.
* dom/Node.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267377 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoThrow when AudioConnect::connect() is called for an output that has no channels
cdumez@apple.com [Mon, 21 Sep 2020 22:50:47 +0000 (22:50 +0000)]
Throw when AudioConnect::connect() is called for an output that has no channels
https://bugs.webkit.org/show_bug.cgi?id=216802

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline existing tests because I improved exception messages.

* web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining-expected.txt:
* web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-expected.txt:

Source/WebCore:

Throw when AudioConnect::connect() is called for an output that has no channels, for consistency
with Blink. The ScriptProcessorNode cannot have an output node that has zero channels.

No new tests, rebaselined existing tests.

* Modules/webaudio/AudioNode.cpp:
(WebCore::AudioNode::connect):

LayoutTests:

* webaudio/MediaElementAudioSource/mediaelementaudiosourcenode-expected.txt:
* webaudio/dom-exceptions-expected.txt:
Rebaseline existing tests because I improved exception messages.

* webaudio/ScriptProcessor/scriptprocessornode-0-output-channels-expected.txt:
Rebaseline test that is now passing.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267376 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[JSC] BigInt should work with Map / Set
ysuzuki@apple.com [Mon, 21 Sep 2020 22:10:24 +0000 (22:10 +0000)]
[JSC] BigInt should work with Map / Set
https://bugs.webkit.org/show_bug.cgi?id=216667
JSTests:

<rdar://problem/69107221>

Reviewed by Robin Morisset.

* stress/bigint-and-map-set.js: Added.
(shouldBe):
(opaque1n):
(testMap):
(let.set new):
* stress/bigint-string-map-set.js: Added.
(shouldBe):
(testMap):
* stress/bigint32-map-set.js: Added.
(shouldBe):
(testMap):

Source/JavaScriptCore:

Reviewed by Robin Morisset.

This patch makes BigInt supported in Map / Set.

1. In NormalizeMapKey, we always attempt to convert HeapBigInt to BigInt32 (if supported). So we ensure that,
    normalized BigInt has one unique form for BigInt32 range. This allows us to use hashing for BigInt32 bit pattern directly.
2. In MapHash, for BigInt32, we directly has the JSValue bits. For HeapBigInt, we calculate hash via Hasher.
3. In GetMapBucket, we consider HeapBigInt case correctly.

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::fixupNormalizeMapKey):
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileNormalizeMapKey):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileMapHash):
(JSC::FTL::DFG::LowerDFGToB3::compileNormalizeMapKey):
(JSC::FTL::DFG::LowerDFGToB3::compileGetMapBucket):
* runtime/HashMapImpl.h:
(JSC::normalizeMapKey):
(JSC::jsMapHash):
(JSC::concurrentJSMapHash):
* runtime/JSBigInt.cpp:
(JSC::JSBigInt::concurrentHash):
* runtime/JSBigInt.h:
(JSC::tryConvertToBigInt32):

Source/WebCore:

<rdar://problem/69107221>

Reviewed by Robin Morisset.

Strongly ensure that BigInt32 is always selected since Map / Set could use it as a key.

* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneDeserializer::readBigInt):

Source/WTF:

Reviewed by Robin Morisset.

* wtf/Hasher.h:
(WTF::Hasher::hash const):
(WTF::add):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267373 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoTapping to zoom in and out causes video to become very small on some iPhone models
peng.liu6@apple.com [Mon, 21 Sep 2020 22:03:44 +0000 (22:03 +0000)]
Tapping to zoom in and out causes video to become very small on some iPhone models
https://bugs.webkit.org/show_bug.cgi?id=216635

Reviewed by Jer Noble.

* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerLayer resolveBounds]): On some iPhone models, AVKit does not
change "bounds" of WebAVPlayerLayer after changing its video gravity. Therefore,
in this function, "modelVideoLayerFrame" and "bounds" might be the same. But we
still need to update the video layer frame in the Web process.

(-[WebAVPlayerLayer setVideoGravity:]): On some iPhone models, AVKit does
not call -[WebAVPlayerLayer:layoutSublayers] immediately after changing
the video gravity. Forcing a layout can fix that.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267372 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months agoMove some LLInt globals into JSC::Config.
mark.lam@apple.com [Mon, 21 Sep 2020 22:01:12 +0000 (22:01 +0000)]
Move some LLInt globals into JSC::Config.
https://bugs.webkit.org/show_bug.cgi?id=216685
rdar://68964544

Reviewed by Keith Miller.

Source/bmalloc:

Introduce ConfigAlignment to match WTFConfig.h.
Added BENABLE(UNIFIED_AND_FREEZABLE_CONFIG_RECORD) support to match WTF.

* bmalloc/BPlatform.h:
* bmalloc/Gigacage.cpp:
(Gigacage::ensureGigacage):
* bmalloc/GigacageConfig.h:
* bmalloc/mbmalloc.cpp:

Source/JavaScriptCore:

1. Moved the following into g_jscConfig:

   Data::s_exceptionInstructions ==> g_jscConfig.llint.exceptionInstructions
   Data::s_wasmExceptionInstructions ==> g_jscConfig.llint.wasmExceptionInstructions
   g_opcodeMap ==> g_jscConfig.llint.opcodeMap
   g_opcodeMapWide16 ==> g_jscConfig.llint.opcodeMapWide16
   g_opcodeMapWide32 ==> g_jscConfig.llint.opcodeMapWide32

2. Fixed cloop.rb so that it can take an offset for the leap offlineasm instruction.
3. Fixed x86.rb so that it can take an offset for the leap offlineasm instruction.
4. Fixed arm.rb so that it can take an offset for the leap offlineasm instruction.

   Note: arm64.rb already does this right.

5. Added JSC::Config::singleton() to return a reference to g_jscConfig.
   This is useful when debugging with lldb since g_jscConfig is not an actual
   label, but is a macro that computes the address of the Config record.

This patch has been smoke tested on arm64e, x86_64, and cloop (on x86_64 and armv7k).

* llint/LLIntData.cpp:
(JSC::LLInt::LLIntInitializeAssertScope::LLIntInitializeAssertScope):
(JSC::LLInt::LLIntInitializeAssertScope::~LLIntInitializeAssertScope):
(JSC::LLInt::LLIntInitializeAssertScope::assertInitializationIsAllowed):
(JSC::LLInt::initialize):
* llint/LLIntData.h:
(JSC::LLInt::exceptionInstructions):
(JSC::LLInt::wasmExceptionInstructions):
(JSC::LLInt::opcodeMap):
(JSC::LLInt::opcodeMapWide16):
(JSC::LLInt::opcodeMapWide32):
(JSC::LLInt::getOpcode):
(JSC::LLInt::getOpcodeWide16):
(JSC::LLInt::getOpcodeWide32):
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter.cpp:
* llint/LowLevelInterpreter64.asm:
* llint/WebAssembly.asm:
* offlineasm/arm.rb:
* offlineasm/cloop.rb:
* offlineasm/x86.rb:
* runtime/JSCConfig.cpp:
(JSC::Config::singleton):
* runtime/JSCConfig.h:

Source/WTF:

1. Introduce ConfigAlignment as a distinct value from ConfigSizeToProtect.
   This is because ConfigSizeToProtect is now larger than 1 CeilingOnPageSize on
   some platforms, but ConfigAlignment only needs to match CeilingOnPageSize.

2. Introduced ENABLE(UNIFIED_AND_FREEZABLE_CONFIG_RECORD) to disable using the
   unified g_config record for Windows ports.

   This is needed because WTF is built as a DLL on Windows.  offlineasm does not
   know how to resolve a DLL exported variable.  Additionally, the Windows ports
   have never supported freezing of the Config record to begin with.  So, we're
   working around this by disabling ENABLE(UNIFIED_AND_FREEZABLE_CONFIG_RECORD)
   for Windows.  This allows JSC to have its own g_jscConfig record, which solves
   this issue for now.

* wtf/PlatformEnable.h:
* wtf/WTFConfig.cpp:
(WTF::Config::permanentlyFreeze):
* wtf/WTFConfig.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267371 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 months ago[WinCairo][PlayStation] Support different instances of listener client.
basuke.suzuki@sony.com [Mon, 21 Sep 2020 21:45:23 +0000 (21:45 +0000)]
[WinCairo][PlayStation] Support different instances of listener client.
https://bugs.webkit.org/show_bug.cgi?id=216733

Reviewed by Don Olmstead.

Source/JavaScriptCore:

Currently RemoteInspectorSocketEndpoint support one client instance for all
listeners. This patch allows listeners to create its own listener client on
accept timing.

* inspector/remote/RemoteControllableTarget.h:
* inspector/remote/RemoteInspector.h:
* inspector/remote/socket/RemoteInspectorConnectionClient.cpp:
(Inspector::RemoteInspectorConnectionClient::didReceive):
* inspector/remote/socket/RemoteInspectorConnectionClient.h:
* inspector/remote/socket/RemoteInspectorServer.cpp:
(Inspector::RemoteInspectorServer::start):
(Inspector::RemoteInspectorServer::doAccept):
* inspector/remote/socket/RemoteInspectorServer.h:
* inspector/remote/socket/RemoteInspectorSocket.cpp:
(Inspector::RemoteInspector::didClose):
* inspector/remote/socket/RemoteInspectorSocket.h:
* inspector/remote/socket/RemoteInspectorSocketEndpoint.cpp:
(Inspector::RemoteInspectorSocketEndpoint::RemoteInspectorSocketEndpoint):
(Inspector::RemoteInspectorSocketEndpoint::~RemoteInspectorSocketEndpoint):
(Inspector::RemoteInspectorSocketEndpoint::listenInet):
(Inspector::RemoteInspectorSocketEndpoint::workerThread):
(Inspector::RemoteInspectorSocketEndpoint::generateConnectionID):
(Inspector::RemoteInspectorSocketEndpoint::createClient):
(Inspector::RemoteInspectorSocketEndpoint::disconnect):
(Inspector::RemoteInspectorSocketEndpoint::createListener):
(Inspector::RemoteInspectorSocketEndpoint::invalidateClient):
(Inspector::RemoteInspectorSocketEndpoint::invalidateListener):
(Inspector::RemoteInspectorSocketEndpoint::getPort const):
(Inspector::RemoteInspectorSocketEndpoint::recvIfEnabled):
(Inspector::RemoteInspectorSocketEndpoint::sendIfEnabled):
(Inspector::RemoteInspectorSocketEndpoint::send):
(Inspector::RemoteInspectorSocketEndpoint::acceptInetSocketIfEnabled):
* inspector/remote/socket/RemoteInspectorSocketEndpoint.h:

Source/WebKit:

Follows the change of RemoteInspectorSocketEndpoint::Client interface change.

No new tests because there's no behaivior change.

* UIProcess/Inspector/socket/RemoteInspectorClient.cpp:
(WebKit::RemoteInspectorClient::didClose):
* UIProcess/Inspector/socket/RemoteInspectorClient.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267370 268f45cc-cd09-0410-ab3c-d52691b4dbfc