WebKit-https.git
4 months agoREGRESSION(r267502) [GLIB] Make WTR ignoreTLSErrors
carlosgc@webkit.org [Thu, 24 Sep 2020 09:16:25 +0000 (09:16 +0000)]
REGRESSION(r267502) [GLIB] Make WTR ignoreTLSErrors
https://bugs.webkit.org/show_bug.cgi?id=216911

Reviewed by Adrian Perez de Castro.

I forgot to initialize ignoreTLSErrors in network session parameters.

* UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp:
(WebKit::WebsiteDataStore::platformSetNetworkParameters):

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

4 months ago%TypedArray%.prototype.fill must only evaluate its argument once
ross.kirsling@sony.com [Thu, 24 Sep 2020 07:35:30 +0000 (07:35 +0000)]
%TypedArray%.prototype.fill must only evaluate its argument once
https://bugs.webkit.org/show_bug.cgi?id=216912

Reviewed by Yusuke Suzuki.

JSTests:

* stress/typedarray-fill.js:
Fix test.

* test262/expectations.yaml:
Mark two test cases as passing.

Source/JavaScriptCore:

Currently, we evaluate the argument in `typedArray.fill({ valueOf() { ... } })` once per filled element,
but it should only be evaluated once in total.

* builtins/TypedArrayPrototype.js:
(fill):

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

4 months agoREGRESSION (iOS/Safari 14): MediaRecorder produces invalid video files
youenn@apple.com [Thu, 24 Sep 2020 07:10:26 +0000 (07:10 +0000)]
REGRESSION (iOS/Safari 14): MediaRecorder produces invalid video files
https://bugs.webkit.org/show_bug.cgi?id=216832
<rdar://problem/69377550>

Reviewed by Eric Carlson.

Start the audio and video timestamps at zero.
Compute the audio timestamp based on the sample count and the video timestamp based
on the time at which the video sample is received.

Covered by manually testing Safari generated videos on VLC, Chrome and Firefox.

* platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
* platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:
(WebCore::MediaRecorderPrivateWriter::initialize):
(WebCore::MediaRecorderPrivateWriter::startAssetWriter):
(WebCore::copySampleBufferWithCurrentTimeStamp):
(WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):
(WebCore::createAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendAudioSampleBuffer):

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

4 months agoREGRESSION: Textures Fail to Render in WebGL from HLS Stream [iOS 14]
commit-queue@webkit.org [Thu, 24 Sep 2020 07:01:36 +0000 (07:01 +0000)]
REGRESSION: Textures Fail to Render in WebGL from HLS Stream [iOS 14]
https://bugs.webkit.org/show_bug.cgi?id=215908
<rdar://problem/68000962>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-09-24
Reviewed by Dean Jackson.

Disable ANGLE workers until EAGL implementation is more complete.
Current implementation fails to compile any shader, since the
compilation happens in the worker thread and worker EAGL context
which does not use the same sharegroup as the main context.
The shader objects are created in the main context but the shader
source setting and compilation happens in the worker context.
EAGL needs a flush between state changes, and adding that
correctly is a bigger change to be done later.

Use sized formats when calling [EAGLContext -texImageIOSurface]
from EGL_ANGLE_iosurface_client_buffer code. The texImageIOSurface
accepts parameters with glTexImage2D logic. On ES3, some of the
internal formats must be sized formats. The EAGLContext instantiated
by ANGLE is ES3, even if the ANGLE context would be ES2.

No tests added since this should be caught with the many video
related tests. It's unclear why this is not the case -- at
least on real hw. This is to be investigated later, too.

* src/libANGLE/renderer/driver_utils.h:
(rx::IsIOS):
* src/libANGLE/renderer/gl/eagl/IOSurfaceSurfaceEAGL.mm:
* src/libANGLE/renderer/gl/renderergl_utils.cpp:
(rx::nativegl_gl::InitializeFeatures):

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

4 months ago%ArrayIteratorPrototype%.next must check for detached buffers
ross.kirsling@sony.com [Thu, 24 Sep 2020 06:15:35 +0000 (06:15 +0000)]
%ArrayIteratorPrototype%.next must check for detached buffers
https://bugs.webkit.org/show_bug.cgi?id=216904

Reviewed by Yusuke Suzuki.

JSTests:

* stress/detach-buffer-during-iteration.js: Added.

* test262/expectations.yaml:
Mark two test cases as passing.

Source/JavaScriptCore:

Per https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next:
  8. If a has a [[TypedArrayName]] internal slot, then
    a. If IsDetachedBuffer(a.[[ViewedArrayBuffer]]) is true, throw a TypeError exception.

* builtins/ArrayIteratorPrototype.js:
(next):
* builtins/BuiltinNames.h:
* bytecode/LinkTimeConstant.h:
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
* runtime/JSTypedArrayViewPrototype.cpp:
(JSC::typedArrayViewPrivateFuncIsNeutered):
* runtime/JSTypedArrayViewPrototype.h:

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

4 months ago[JSC] Simply some of template-specialized host functions by defining each function
ysuzuki@apple.com [Thu, 24 Sep 2020 05:59:46 +0000 (05:59 +0000)]
[JSC] Simply some of template-specialized host functions by defining each function
https://bugs.webkit.org/show_bug.cgi?id=216907

Reviewed by Saam Barati.

This makes automatically-registering these functions in JIT-caging easy.

* API/APICallbackFunction.h:
(JSC::APICallbackFunction::callImpl):
(JSC::APICallbackFunction::constructImpl):
(JSC::APICallbackFunction::call): Deleted.
(JSC::APICallbackFunction::construct): Deleted.
* API/JSCallbackConstructor.cpp:
(JSC::constructJSCallbackConstructor):
(JSC::JSCallbackConstructor::getConstructData):
* API/JSCallbackFunction.cpp:
(JSC::callJSCallbackFunction):
(JSC::JSCallbackFunction::JSCallbackFunction):
* API/ObjCCallbackFunction.mm:
(JSC::callObjCCallbackFunction):
(JSC::constructObjCCallbackFunction):
(JSC::ObjCCallbackFunction::ObjCCallbackFunction):
* API/glib/JSCCallbackFunction.cpp:
(JSC::callJSCCallbackFunction):
(JSC::constructJSCCallbackFunction):
(JSC::JSCCallbackFunction::JSCCallbackFunction):
* dfg/DFGOperations.h:
* jit/JITOperations.cpp:
* jit/JITOperations.h:
* jsc.cpp:
(accessorMakeMasquerader):
* runtime/JSArrayBufferConstructor.cpp:
(JSC::JSGenericArrayBufferConstructor<sharingMode>::JSGenericArrayBufferConstructor):
(JSC::JSGenericArrayBufferConstructor<sharingMode>::constructImpl):
(JSC::constructArrayBuffer):
(JSC::constructSharedArrayBuffer):
(JSC::JSGenericArrayBufferConstructor<sharingMode>::constructArrayBuffer): Deleted.
* runtime/JSArrayBufferConstructor.h:
* runtime/JSCustomGetterSetterFunction.cpp:
(JSC::customGetterSetterFunctionCall):
(JSC::JSCustomGetterSetterFunction::customGetterSetterFunctionCall): Deleted.
* runtime/JSCustomGetterSetterFunction.h:
* runtime/NativeErrorConstructor.cpp:
(JSC::NativeErrorConstructor<errorType>::constructImpl):
(JSC::NativeErrorConstructor<errorType>::callImpl):
(JSC::callEvalError):
(JSC::constructEvalError):
(JSC::callRangeError):
(JSC::constructRangeError):
(JSC::callReferenceError):
(JSC::constructReferenceError):
(JSC::callSyntaxError):
(JSC::constructSyntaxError):
(JSC::callTypeError):
(JSC::constructTypeError):
(JSC::callURIError):
(JSC::constructURIError):
(JSC::callFunction):
(JSC::constructFunction):
(JSC::NativeErrorConstructor<errorType>::NativeErrorConstructor):
(JSC::NativeErrorConstructorBase::finishCreation):
(JSC::NativeErrorConstructor<errorType>::constructNativeErrorConstructor): Deleted.
(JSC::NativeErrorConstructor<errorType>::callNativeErrorConstructor): Deleted.
* runtime/NativeErrorConstructor.h:
* runtime/RegExpConstructor.cpp:
(JSC::regExpConstructorDollarImpl):
(JSC::regExpConstructorDollar1):
(JSC::regExpConstructorDollar2):
(JSC::regExpConstructorDollar3):
(JSC::regExpConstructorDollar4):
(JSC::regExpConstructorDollar5):
(JSC::regExpConstructorDollar6):
(JSC::regExpConstructorDollar7):
(JSC::regExpConstructorDollar8):
(JSC::regExpConstructorDollar9):
(JSC::regExpConstructorInput):
(JSC::regExpConstructorMultiline):
(JSC::regExpConstructorLastMatch):
(JSC::regExpConstructorLastParen):
(JSC::regExpConstructorLeftContext):
(JSC::regExpConstructorRightContext):
(JSC::setRegExpConstructorInput):
(JSC::setRegExpConstructorMultiline):
(JSC::regExpConstructorDollar): Deleted.
* tools/JSDollarVM.cpp:

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

4 months ago[Windows] Ignore render tree dump based results on Windows
antti@apple.com [Thu, 24 Sep 2020 04:33:24 +0000 (04:33 +0000)]
[Windows] Ignore render tree dump based results on Windows
https://bugs.webkit.org/show_bug.cgi?id=209897

Reviewed by Darin Adler.

Render tree dumps are port specific and so difficult to maintain. They are mostly very old and
have been superseded by more modern ref and text dump tests. They rarely reveal any port specific bugs.

This patch adds --ignore-render-tree-dump-results option to run-webkit-tests and enables it by
default on Apple Windows port.

With the option set the render tree dump tests are still run (so crashes are detected) but their
output is treated as if it always passed. Missing results are not written to disk.

* Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
(SingleTestRunner._compare_text):
* Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(parse_args):
(_set_up_derived_options):

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

4 months agoAdd feature flags for GPU Process features
peng.liu6@apple.com [Thu, 24 Sep 2020 03:36:48 +0000 (03:36 +0000)]
Add feature flags for GPU Process features
https://bugs.webkit.org/show_bug.cgi?id=216901

Reviewed by Tim Horton.

Source/WebCore:

Rename useGPUProcessForMedia to useGPUProcessForMediaEnabled.

No new tests since no functional changes.

* page/Settings.yaml:

Source/WebKit:

Add feature flags for the following GPU Process features:
- 2D canvas in GPU process
- WebGL in GPU process
- DOM rendering in GPU Process

Also, clean up some related feature/function names.

* FeatureFlags/WebKit.plist:
Add keys for the GPU process features and sort all keys.

* Shared/WebPreferencesDefaultValues.cpp:
(WebKit::defaultUseGPUProcessForCanvasRenderingEnabled):
(WebKit::defaultUseGPUProcessForDOMRenderingEnabled):
(WebKit::defaultUseGPUProcessForMediaEnabled):
(WebKit::defaultUseGPUProcessForWebGLEnabled):
(WebKit::defaultCaptureAudioInGPUProcessEnabled):
(WebKit::defaultCaptureVideoInGPUProcessEnabled):
(WebKit::defaultWebRTCCodecsInGPUProcess):
(WebKit::defaultUseGPUProcessForMedia): Deleted.
(WebKit::defaultRenderCanvasInGPUProcessEnabled): Deleted.
* Shared/WebPreferencesDefaultValues.h:
* Shared/WebPreferencesInternal.yaml:
Add preferences and corresponding default values.

* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
Rename useGPUProcessForMedia to useGPUProcessForMediaEnabled.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
Use useGPUProcessForCanvasRenderingEnabled instead of renderCanvasInGPUProcessEnabled.

* WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:
(WebKit::RemoteMediaPlayerManager::updatePreferences):
Use useGPUProcessForMediaEnabled instead of useGPUProcessForMedia.

* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): Ditto.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_limitsNavigationsToAppBoundDomains): Ditto.
(WebKit::WebPage::updatePreferences): Ditto.

Source/WebKitLegacy/mac:

Minor cleanups.

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences useGPUProcessForMediaEnabled]):
(-[WebPreferences setUseGPUProcessForMediaEnabled:]):
(-[WebPreferences useGPUProcessForMedia]): Deleted.
(-[WebPreferences setUseGPUProcessForMedia:]): Deleted.
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

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

4 months ago[LFC][Integration] Line layout logic should consult LayoutState whether remove traili...
zalan@apple.com [Thu, 24 Sep 2020 03:15:01 +0000 (03:15 +0000)]
[LFC][Integration] Line layout logic should consult LayoutState whether remove trailing letter spacing.
https://bugs.webkit.org/show_bug.cgi?id=216905

Reviewed by Sam Weinig.

This is in preparation for completely moving away from the RuntimeEnabledFeatures check.

* layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::shouldIgnoreTrailingLetterSpacing const):
* layout/LayoutState.h:
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::appendTextContent):
* layout/inlineformatting/InlineLine.h:
* layout/inlineformatting/InlineLineBuilder.cpp:
(WebCore::Layout::LineCandidate::InlineContent::appendInlineItem):

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

4 months agoUpdate Array.prototype.sort to be consistent with tightened spec
shvaikalesh@gmail.com [Thu, 24 Sep 2020 02:46:41 +0000 (02:46 +0000)]
Update Array.prototype.sort to be consistent with tightened spec
https://bugs.webkit.org/show_bug.cgi?id=202582

Reviewed by Yusuke Suzuki and Keith Miller.

JSTests:

Provided microbenchmarks test receivers that are half-sorted: 50% of their
items and item pairs (to accomodate merge sort) are at the right place.

Arrays of multiple sizes (8/24/64 items) are tested with both userland
and default comparator (to cover bucket sort).

* ChakraCore/test/Array/array_sort.baseline-jsc: Fix typo in error message.
* microbenchmarks/array-prototype-sort-large-array-comparator.js: Added.
* microbenchmarks/array-prototype-sort-large-array.js: Added.
* microbenchmarks/array-prototype-sort-medium-array-comparator.js: Added.
* microbenchmarks/array-prototype-sort-medium-array.js: Added.
* microbenchmarks/array-prototype-sort-small-array-comparator.js: Added.
* microbenchmarks/array-prototype-sort-small-array.js: Added.
* mozilla/js1_5/Array/regress-157652.js: Skip sorting sparse array of UINT_MAX size.
* stress/regress-188577.js: Replace sort() with unshift() and refactor.

Source/JavaScriptCore:

This patch implements the spec change [1] that reduces amount of cases resulting
in an implementation-defined sort order, aligning JSC with V8 and SpiderMonkey.

To achieve this, we collect all existing non-undefined receiver elements to a
temporary array, sort it, and write back sorted items, followed by `undefined`
values and holes.

This change is proven to be web-compatible (shipping since Chrome 76) and neutral
on peak memory consumption in the wild.

Although we can unobservably detect sparse receivers, we can't avoid creating a
temporary array for common case since userland comparators may throw; string
sorting won't measurably benefit from this, only increasing code complexity.

This change uses @putByValDirect unless the spec requires [[Set]], avoids using
closure variables, and adds a few drive-by optimizations, resulting in ~22%
faster string sorting and 13% speed-up for userland comparators.
Dromaeo/jslib is neutral.

[1]: https://github.com/tc39/ecma262/pull/1585

* builtins/ArrayPrototype.js:
(sort.stringComparator):
Optimization #1: replace char-by-char comparison loop with > operator, aligning
JSC with V8 and SpiderMonkey. This semantically equivalent change alone is a ~15%
progression for string sort.

(sort.compact):
(sort.commit):
Optimization #2: copy large non-numeric arrays in a loop rather than @appendMemcpy.
Using the latter unconditionally regresses provided microbenchmarks.

(sort.merge):
Optimization #3: replace `typeof` check and negation with strict equality.

(sort.mergeSort):
Optimization #4: always return sorted array instead of copying, even if it's the buffer.
Tweak: create the buffer with correct length.

(sort.bucketSort):
Optimization #5: avoid emitting 2 extra get_by_val ops by saving bucket lookup to a variable.
Tweak: create new bucket via array literal.

(sort): Fix typo in error message.
(sort.compactSparse): Deleted.
(sort.compactSlow): Deleted.
(sort.comparatorSort): Deleted.
(sort.stringSort): Deleted.
* runtime/ObjectConstructor.cpp:
(JSC::ObjectConstructor::finishCreation):
Remove @Object.@getPrototypeOf as it's now unused and we have @getPrototypeOf intrinsic anyway.

LayoutTests:

While adding new LayoutTests for JS-only features is undesirable, it's a
quick-and-dirty way to import the tests [1] and fix the call count/order
of observable operations via debug() and text expectations.

The tests are imported into LayoutTests/js/dom instead of LayoutTests/js for
run-javascriptcore-tests to ignore them as they require array-sort-harness.js.

These files will be removed shortly in favor of thorough test262 coverage,
which is required for the proposal [2] to be merged.

[1]: https://gist.github.com/szuend/05ae15b4e1329b264ab4c9a1cda09242
[2]: https://github.com/tc39/ecma262/pull/1585

* TestExpectations: Mark a test as slow.
* js/dom/array-sort-*-expected.txt: Added.
* js/dom/array-sort-*.html: Added.
* js/dom/script-tests/array-sort-*.js: Added.
* js/resources/array-sort-harness.js: Added.

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

4 months agoUnreviewed, we should put it under js/dom since it is not usable in JSC shell
ysuzuki@apple.com [Thu, 24 Sep 2020 01:36:12 +0000 (01:36 +0000)]
Unreviewed, we should put it under js/dom since it is not usable in JSC shell
https://bugs.webkit.org/show_bug.cgi?id=216851

* js/dom/script-tests/transform-stream.js: Renamed from LayoutTests/js/script-tests/transform-stream.js.
* js/dom/transform-stream-expected.txt: Renamed from LayoutTests/js/transform-stream-expected.txt.
* js/dom/transform-stream.html: Renamed from LayoutTests/js/transform-stream.html.

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

4 months agoUnreviewed config fix.
jlewis3@apple.com [Thu, 24 Sep 2020 00:22:30 +0000 (00:22 +0000)]
Unreviewed config fix.

* BuildSlaveSupport/build.webkit.org-config/config.json: Fixing random unicode character.

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

4 months agoUpdate iOS, watchOS and tvOS builders and tester with new SDKs
jlewis3@apple.com [Wed, 23 Sep 2020 23:41:23 +0000 (23:41 +0000)]
Update iOS, watchOS and tvOS builders and tester with new SDKs
https://bugs.webkit.org/show_bug.cgi?id=216658

Reviewed by Jonathan Bedard.

Bumped the versions on iOS, tvOS, and watchOS in config, dashboard and main CSS. Also, added the updated
images for the queues.

* BuildSlaveSupport/build.webkit.org-config/config.json:
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/IOS14Device.png: Added.
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/IOS14Device@2x.png: Added.
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/IOS14Simulator.png: Added.
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/IOS14Simulator@2x.png: Added.
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/TvOS14.png: Added.
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/TvOS14@2x.png: Added.
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/TvOS14Simulator.png: Added.
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/TvOS14Simulator@2x.png: Added.
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/WatchOS7.png: Added.
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/WatchOS7@2x.png: Added.
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/WatchOSSimulator7.png: Added.
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/WatchOSSimulator7@2x.png: Added.
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Dashboard.js:
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/Main.css:
(table.queue-grid tr.platform.ios-simulator-14 img.logo):
(table.queue-grid tr.platform.ios-14 img.logo):
(table.queue-grid tr.platform.tvos-simulator-14 img.logo):
(table.queue-grid tr.platform.tvos-14 img.logo):
(table.queue-grid tr.platform.watchos-simulator-7 img.logo):
(table.queue-grid tr.platform.watchos-7 img.logo):
(table.queue-grid tr.platform.ios-simulator-13 img.logo): Deleted.
(table.queue-grid tr.platform.ios-13 img.logo): Deleted.
(table.queue-grid tr.platform.tvos-simulator-13 img.logo): Deleted.
(table.queue-grid tr.platform.tvos-13 img.logo): Deleted.
(table.queue-grid tr.platform.watchos-simulator-6 img.logo): Deleted.
(table.queue-grid tr.platform.watchos-6 img.logo): Deleted.
* BuildSlaveSupport/build.webkit.org-config/steps_unittest.py:

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

4 months ago[LFC Display] Add the beginnings of a CSS display box hierarchy and CSS painter
simon.fraser@apple.com [Wed, 23 Sep 2020 23:39:29 +0000 (23:39 +0000)]
[LFC Display] Add the beginnings of a CSS display box hierarchy and CSS painter
https://bugs.webkit.org/show_bug.cgi?id=216752

Reviewed by Zalan Bujtas.

Add some Display::Box subclasses to display/css, a Display::Tree class to own the
display tree, and a DisplayTreeBuilder. Also add css/DisplayCSSPainter which is
the beginnings of a class that knows how to paint a CSS stacking context.

This code other than DisplayCSSPainter is deliberately vague about how much is
CSS specific. It's likely that some box classes will be shared with SVG painting.

* CMakeLists.txt:
* Headers.cmake:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* display/DisplayLayerController.cpp:
(WebCore::Display::LayerController::RootLayerClient::paintContents):
(WebCore::Display::LayerController::RootLayerClient::deviceScaleFactor const):
(WebCore::Display::LayerController::prepareForDisplay):
(WebCore::Display::LayerController::ensureRootLayer):
(WebCore::Display::LayerController::updateRootLayerGeometry):
* display/DisplayLayerController.h:
* display/DisplayTree.cpp: Copied from Source/WebCore/display/DisplayView.h.
(WebCore::Display::Tree::Tree):
* display/DisplayTree.h: Copied from Source/WebCore/display/DisplayView.h.
(WebCore::Display::Tree::rootBox const):
* display/DisplayTreeBuilder.cpp: Added.
(WebCore::Display::TreeBuilder::TreeBuilder):
(WebCore::Display::TreeBuilder::build const):
(WebCore::Display::TreeBuilder::recursiveBuildDisplayTree const):
(WebCore::Display::TreeBuilder::displayBoxForRootBox const):
(WebCore::Display::TreeBuilder::displayBoxForLayoutBox const):
(WebCore::Display::outputDisplayBox):
(WebCore::Display::outputDisplayTree):
(WebCore::Display::showDisplayTree):
* display/DisplayTreeBuilder.h: Copied from Source/WebCore/display/DisplayView.h.
* display/DisplayView.cpp:
(WebCore::Display::View::prepareForDisplay):
(WebCore::Display::View::deviceScaleFactor const):
* display/DisplayView.h:
* display/css/DisplayBox.cpp: Copied from Source/WebCore/display/DisplayView.h.
(WebCore::Display::Box::Box):
(WebCore::Display::Box::setNextSibling):
(WebCore::Display::Box::debugDescription const):
* display/css/DisplayBox.h: Copied from Source/WebCore/display/DisplayView.h.
(WebCore::Display::Box::Box):
(WebCore::Display::Box::style const):
(WebCore::Display::Box::borderBoxFrame const):
(WebCore::Display::Box::isContainerBox const):
(WebCore::Display::Box::isImageBox const):
(WebCore::Display::Box::isReplacedBox const):
(WebCore::Display::Box::nextSibling const):
* display/css/DisplayCSSPainter.cpp: Added.
(WebCore::Display::CSSPainter::paintBoxDecorations):
(WebCore::Display::CSSPainter::paintBoxContent):
(WebCore::Display::CSSPainter::paintBox):
(WebCore::Display::CSSPainter::recursivePaintDescendants):
(WebCore::Display::CSSPainter::paintStackingContext):
(WebCore::Display::CSSPainter::isStackingContextPaintingBoundary):
(WebCore::Display::CSSPainter::recursiveCollectLayers):
(WebCore::Display::CSSPainter::paintTree):
* display/css/DisplayCSSPainter.h: Copied from Source/WebCore/display/DisplayView.h.
* display/css/DisplayContainerBox.cpp: Copied from Source/WebCore/display/DisplayView.h.
(WebCore::Display::ContainerBox::ContainerBox):
(WebCore::Display::ContainerBox::setFirstChild):
(WebCore::Display::ContainerBox::debugDescription const):
* display/css/DisplayContainerBox.h: Copied from Source/WebCore/display/DisplayView.h.
(WebCore::Display::ContainerBox::firstChild const):
* display/css/DisplayImageBox.cpp: Copied from Source/WebCore/display/DisplayView.h.
(WebCore::Display::ImageBox::ImageBox):
(WebCore::Display::ImageBox::setImage):
(WebCore::Display::ImageBox::debugDescription const):
* display/css/DisplayImageBox.h: Copied from Source/WebCore/display/DisplayView.h.
(WebCore::Display::ImageBox::image const):
* display/css/DisplayReplacedBox.cpp: Copied from Source/WebCore/display/DisplayView.h.
(WebCore::Display::ReplacedBox::ReplacedBox):
* display/css/DisplayReplacedBox.h: Copied from Source/WebCore/display/DisplayView.h.
(WebCore::Display::ReplacedBox::replacedContentRect const):
* display/css/DisplayStyle.cpp: Copied from Source/WebCore/display/DisplayView.cpp.
(WebCore::Display::Style::Style):
(WebCore::Display::Style::hasBackground const):
(WebCore::Display::Style::hasVisibleBorder const):
* display/css/DisplayStyle.h: Added.
(WebCore::Display::Style::backgroundColor const):
(WebCore::Display::Style::hasBackgroundImage const):
(WebCore::Display::Style::borderLeft const):
(WebCore::Display::Style::borderRight const):
(WebCore::Display::Style::borderTop const):
(WebCore::Display::Style::borderBottom const):
(WebCore::Display::Style::zIndex const):
(WebCore::Display::Style::isStackingContext const):
(WebCore::Display::Style::isPositioned const):
(WebCore::Display::Style::isFloating const):
(WebCore::Display::Style::participatesInZOrderSorting const):
(WebCore::Display::Style::setIsPositioned):
(WebCore::Display::Style::setIsFloating):
* layout/displaytree/DisplayBox.cpp: Removed.
* layout/displaytree/DisplayBox.h: Removed.
* layout/layouttree/LayoutIterator.h: Unified sources build fix.

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

4 months agowebkitpy: Make sw_vers the source of truth for the MacOS version
jbedard@apple.com [Wed, 23 Sep 2020 23:28:50 +0000 (23:28 +0000)]
webkitpy: Make sw_vers the source of truth for the MacOS version
https://bugs.webkit.org/show_bug.cgi?id=216903
<rdar://problem/69462735>

Reviewed by Dewei Zhu.

* Scripts/webkitpy/common/system/platforminfo.py:
(PlatformInfo.__init__): Use sw_vers instead of platform.mac_ver().
* Scripts/webkitpy/common/system/platforminfo_unittest.py:
(fake_executive): Set a valid return value for sw_vers by default.

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

4 months agoweb audio api outputs silence for 302 redirected resource in safari
cdumez@apple.com [Wed, 23 Sep 2020 23:25:31 +0000 (23:25 +0000)]
web audio api outputs silence for 302 redirected resource in safari
https://bugs.webkit.org/show_bug.cgi?id=214932
<rdar://problem/66300050>

Reviewed by Darin Adler.

Source/WebCore:

If the resource is redirected to another origin, treat it as tainted only if the crossorigin attribute
is not set. This is done for consistency with Blink:
- https://github.com/chromium/chromium/blob/master/media/blink/webmediaplayer_impl.cc (see WouldTaintOrigin())

The new behavior also seems to match Firefox.

Tests: http/tests/security/webaudio-render-remote-audio-allowed-crossorigin-redirect.html
       http/tests/security/webaudio-render-remote-audio-blocked-no-crossorigin-redirect.html

* Modules/webaudio/MediaElementAudioSourceNode.cpp:
(WebCore::MediaElementAudioSourceNode::wouldTaintOrigin):

LayoutTests:

Add layout test coverage. Update existing test to reflect the fact that the frequency returned by
the AnalyserNode is -Infinity when input is silent, not minDecibels (this has changed fairly
recently).

* http/tests/security/webaudio-render-remote-audio-allowed-crossorigin-redirect-expected.txt: Added.
* http/tests/security/webaudio-render-remote-audio-allowed-crossorigin-redirect.html: Copied from LayoutTests/http/tests/security/webaudio-render-remote-audio-allowed-crossorigin.html.
* http/tests/security/webaudio-render-remote-audio-allowed-crossorigin.html:
* http/tests/security/webaudio-render-remote-audio-blocked-no-crossorigin-redirect-expected.txt: Added.
* http/tests/security/webaudio-render-remote-audio-blocked-no-crossorigin-redirect.html: Copied from LayoutTests/http/tests/security/webaudio-render-remote-audio-allowed-crossorigin.html.

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

4 months agoUse less explicit ref() / deref() calls in WebAudio code
cdumez@apple.com [Wed, 23 Sep 2020 23:06:16 +0000 (23:06 +0000)]
Use less explicit ref() / deref() calls in WebAudio code
https://bugs.webkit.org/show_bug.cgi?id=216894

Reviewed by Darin Adler.

* Modules/webaudio/BaseAudioContext.cpp:
(WebCore::BaseAudioContext::clearPendingActivity):
(WebCore::BaseAudioContext::makePendingActivity):
* Modules/webaudio/MediaElementAudioSourceNode.cpp:
(WebCore::MediaElementAudioSourceNode::setFormat):
(WebCore::MediaElementAudioSourceNode::process):
* Modules/webaudio/MediaElementAudioSourceNode.h:
* Modules/webaudio/OfflineAudioDestinationNode.cpp:
(WebCore::OfflineAudioDestinationNode::startRendering):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaEngineWasUpdated):
(WebCore::HTMLMediaElement::createMediaPlayer):

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

4 months agoTurn off the legacy prefixed WebAudio API
cdumez@apple.com [Wed, 23 Sep 2020 22:48:05 +0000 (22:48 +0000)]
Turn off the legacy prefixed WebAudio API
https://bugs.webkit.org/show_bug.cgi?id=216886

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

* web-platform-tests/webaudio/historical-expected.txt:
Rebaseline test that is now passing.

Source/WebCore:

Turn off the legacy prefixed WebAudio API, now that the modern unprefixed API has been enabled
in r267488.

No new tests, rebaselined existing tests.

* Modules/webaudio/AudioBufferSourceNode.idl:
Make sure legacy constants get unexposed if the PrefixedWebAudio setting is disabled.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
(GetRuntimeEnabledStaticProperties):
* bindings/scripts/test/JS/JSTestConditionalIncludes.cpp:
(WebCore::JSTestConditionalIncludesConstructor::initializeProperties):
(WebCore::JSTestConditionalIncludesPrototype::finishCreation):
* bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
(WebCore::JSTestEnabledBySettingConstructor::prototypeForStructure):
(WebCore::JSTestEnabledBySettingConstructor::initializeProperties):
(WebCore::JSTestEnabledBySettingPrototype::finishCreation):
* bindings/scripts/test/TestEnabledBySetting.idl:
Add support for using [EnabledBySetting=X] on constants.

Source/WebKit:

Turn off the legacy prefixed WebAudio API, now that the modern unprefixed API has been enabled
in r267488.

* Shared/WebPreferencesInternal.yaml:

Source/WebKitLegacy/mac:

Turn off the legacy prefixed WebAudio API, now that the modern unprefixed API has been enabled
in r267488.

* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

LayoutTests:

Port existing layout tests from the prefixed WebAudio API to the new
unprefixed version.

* fast/history/page-cache-closed-audiocontext.html:
* fast/history/page-cache-running-audiocontext.html:
* fast/history/page-cache-suspended-audiocontext.html:
* fast/mediastream/getUserMedia-webaudio.html:
* fast/mediastream/media-devices-enumerate-devices.html:
* fast/mediastream/mediastreamtrack-audio-clone.html:
* fast/mediastream/mock-media-source-webaudio.html:
* http/tests/security/webaudio-render-remote-audio-allowed-crossorigin.html:
* http/tests/security/webaudio-render-remote-audio-blocked-no-crossorigin.html:
* http/wpt/mediarecorder/MediaRecorder-onremovetrack.html:
* http/wpt/webaudio/resources/audiocontext-stopped-iframe.html:
* platform/ios/webaudio/realtimeanalyser-fft-sizing-expected.txt:
* resources/testharnessreport.js:
* webaudio/analyser-exception.html:
* webaudio/audiobuffer-crash-expected.txt:
* webaudio/audiobuffer-crash.html:
* webaudio/audiobuffer-expected.txt:
* webaudio/audiobuffer-neuter.html:
* webaudio/audiobuffer.html:
* webaudio/audiobuffersource-channels-expected.txt:
* webaudio/audiobuffersource-channels.html:
* webaudio/audiobuffersource-ended.html:
* webaudio/audiobuffersource-multi-channels.html:
* webaudio/audiobuffersource-negative-playbackrate-interpolated-loop.html:
* webaudio/audiobuffersource-negative-playbackrate-interpolated.html:
* webaudio/audiobuffersource-negative-playbackrate-loop.html:
* webaudio/audiobuffersource-negative-playbackrate.html:
* webaudio/audiobuffersource-not-gced-until-ended.html:
* webaudio/audiobuffersource-playbackState-expected.txt: Removed.
* webaudio/audiobuffersource-playbackState.html: Removed.
* webaudio/audiobuffersource-playbackrate.html:
* webaudio/audiobuffersource-start.html:
* webaudio/audiobuffersource.html:
* webaudio/audiobuffersourcenode-legacy-api-expected.txt:
* webaudio/audiobuffersourcenode-legacy-api.html:
* webaudio/audiochannelmerger-basic.html:
* webaudio/audiochannelmerger-stereo.html:
* webaudio/audiochannelsplitter.html:
* webaudio/audiocontext-promise-throwing-expected.txt:
* webaudio/audiocontext-promise-throwing.html:
* webaudio/audiocontext-promise.html:
* webaudio/audiocontext-restriction-audiobuffersourcenode-start.html:
* webaudio/audiocontext-restriction.html:
* webaudio/audiocontext-state-interrupted.html:
* webaudio/audiocontext-state.html:
* webaudio/audionode-connect-order.html:
* webaudio/audionode.html:
* webaudio/audioparam-connect-audioratesignal.html:
* webaudio/audioparam-summingjunction.html:
* webaudio/audioprocessingevent.html:
* webaudio/automatic-pull-node.html:
* webaudio/convolution-mono-mono.html:
* webaudio/convolver-channels.html:
* webaudio/convolver-setBuffer-different-samplerate.html:
* webaudio/convolver-setBuffer-null.html:
* webaudio/createMediaStreamSource-null-expected.txt:
* webaudio/createMediaStreamSource-null.html:
* webaudio/decode-audio-data-basic-expected.txt:
* webaudio/decode-audio-data-basic.html:
* webaudio/decode-audio-data-too-short.html:
* webaudio/delaynode-max-default-delay.html:
* webaudio/delaynode-max-nondefault-delay.html:
* webaudio/delaynode-maxdelay.html:
* webaudio/delaynode-maxdelaylimit.html:
* webaudio/delaynode-scheduling.html:
* webaudio/delaynode.html:
* webaudio/distance-exponential.html:
* webaudio/distance-inverse.html:
* webaudio/distance-linear.html:
* webaudio/dynamicscompressor-basic.html:
* webaudio/finished-audio-buffer-source-nodes-should-be-collectable.html:
* webaudio/gain-basic.html:
* webaudio/gain.html:
* webaudio/mediaelementaudiosourcenode-expected.txt:
* webaudio/mediaelementaudiosourcenode-gc.html:
* webaudio/mediaelementaudiosourcenode.html:
* webaudio/mixing.html:
* webaudio/offlineaudiocontext-gc.html:
* webaudio/offlineaudiocontext-restriction.html:
* webaudio/oscillatornode-legacy-api-expected.txt:
* webaudio/oscillatornode-legacy-api.html:
* webaudio/page-canstartmedia.html:
* webaudio/panner-equalpower-stereo.html:
* webaudio/panner-equalpower.html:
* webaudio/prefixed-pannernode-basic-expected.txt: Removed.
* webaudio/prefixed-pannernode-basic.html: Removed.
* webaudio/realtimeanalyser-fft-sizing-expected.txt:
* webaudio/realtimeanalyser-fft-sizing.html:
* webaudio/resources/audio-codec-test.js:
(runDecodingTest):
* webaudio/resources/audiobuffersource-ended-detached-frame-iframe.html:
* webaudio/resources/audioparam-testing-legacy.js:
(createAudioGraphAndTest):
* webaudio/resources/compatibility.js: Removed.
* webaudio/resources/javascriptaudionode-testing.js:
(runJSNodeTest):
* webaudio/resources/oscillator-testing-legacy.js:
(generateExponentialOscillatorSweep):
* webaudio/sample-accurate-scheduling.html:
* webaudio/silence-after-playback.html:
* webaudio/silent-audio-interrupted-in-background.html:
* webaudio/stereo2mono-down-mixing.html:
* webaudio/test-basic.html:
* webaudio/up-mixing-mono-51.html:
* webaudio/up-mixing-mono-stereo.html:
* webaudio/up-mixing-stereo-51.html:
* webaudio/waveshaper.html:
* webaudio/web-audio-is-playing.html:
* webaudio/webaudio-gc.html:
* webaudio/webkitofflineaudiocontext-startRendering-crash-expected.txt:
* webaudio/webkitofflineaudiocontext-startRendering-crash.html:
* webrtc/audio-peer-connection-g722.html:
* webrtc/audio-peer-connection-webaudio.html:
* webrtc/clone-audio-track.html:
* webrtc/getUserMedia-webaudio-autoplay.html:
* webrtc/peer-connection-audio-mute.html:
* webrtc/peer-connection-audio-mute2.html:
* webrtc/peer-connection-createMediaStreamDestination.html:
* webrtc/peer-connection-remote-audio-mute.html:
* webrtc/peer-connection-remote-audio-mute2.html:
* webrtc/routines.js:

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

4 months ago[css-grid] Clear the override width for computing percent margins
obrufau@igalia.com [Wed, 23 Sep 2020 22:31:47 +0000 (22:31 +0000)]
[css-grid] Clear the override width for computing percent margins
https://bugs.webkit.org/show_bug.cgi?id=209461

Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

Update test expectations.

The 2 grid-items-percentage-paddings tests are now expected to have some
failures because of bug 191964. In fact they were already failing before
this patch, as can be seen in wpt.fyi:
https://wpt.fyi/results/css/css-grid/grid-items?q=grid-items-percentage-paddings-vertical-%20-002.html
It's just that the bug that is being fixed made the test runner think
that the tests were passing, probably some racy condition or such.

* web-platform-tests/css/css-grid/grid-definition/grid-minimum-contribution-with-percentages-expected.txt:
* web-platform-tests/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001-expected.txt:
* web-platform-tests/css/css-grid/grid-items/grid-items-minimum-height-orthogonal-001-expected.txt:
* web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-002-expected.txt:
* web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-002-expected.txt:

Source/WebCore:

When calculating the min-content contribution of a grid item of an auto
sized grid track we must consider the grid item's margin. When the grid
item's area is indefinite, a percent margin is resolved to zero.
However, when performing a relayout, the percent margin may be solved
against the previously computed grid area, since the grid item has
already an OverrideContainingBlockLogicalWidth value.

In order to re-compute the percent margin properly, we need to clear
the previously override value. It's important to be careful of not
clearing the override value set during intrinsic size, since we need
it for the actual layout phase. Hence, we only reset the 'override'
value when we are executing a definite strategy.

This is a reland of r261841, which was reverted because it broke spotify.
This problem is now avoided thanks to bug 210089.

Tests: imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-minimum-contribution-with-percentages.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-height-orthogonal-001.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-003.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-004.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-005.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-006.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-007.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-008.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-009.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-010.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-005.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-006.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-009.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-010.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-002.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-002.html

* rendering/GridTrackSizingAlgorithm.cpp:
(WebCore::hasRelativeMarginOrPaddingForChild):
(WebCore::hasRelativeOrIntrinsicSizeForChild):
(WebCore::shouldClearOverrideContainingBlockContentSizeForChild):
(WebCore::GridTrackSizingAlgorithmStrategy::minSizeForChild const):
(WebCore::GridTrackSizingAlgorithmStrategy::minLogicalSizeForChild const):
(WebCore::DefiniteSizeStrategy::minLogicalSizeForChild const):
(WebCore::DefiniteSizeStrategy::minContentForChild const):
* rendering/GridTrackSizingAlgorithm.h:

LayoutTests:

Update test expectations.

* TestExpectations:

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

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