Timeline



Oct 4, 2020:

11:57 PM Changeset in webkit [267956] by commit-queue@webkit.org
  • 7 edits
    2 adds in trunk

DataTransfer.setDragImage takes a non nullable Element parameter
https://bugs.webkit.org/show_bug.cgi?id=217283

Patch by Rob Buis <rbuis@igalia.com> on 2020-10-04
Reviewed by Sam Weinig.

Source/WebCore:

DataTransfer.setDragImage takes a non nullable Element parameter [1].

Behavior matches Firefox and Chrome.

Test: fast/events/setDragImage-element-non-nullable.html

[1] https://html.spec.whatwg.org/multipage/dnd.html#dom-datatransfer-setdragimage

  • dom/DataTransfer.cpp:

(WebCore::DataTransfer::setDragImage):

  • dom/DataTransfer.h:
  • dom/DataTransfer.idl:
  • page/EventHandler.cpp:

(WebCore::EventHandler::handleDrag):

LayoutTests:

Add test to verify DataTransfer.setDragImage throws if a null
is passed for the Element parameter.

  • fast/events/setDragImage-element-non-nullable-expected.txt: Added.
  • fast/events/setDragImage-element-non-nullable.html: Added.
  • platform/ios/TestExpectations:
9:40 PM Changeset in webkit [267955] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][Floats] Do not assert when right aligned float overflows the containing block on the left
https://bugs.webkit.org/show_bug.cgi?id=217305

Reviewed by Antti Koivisto.

Source/WebCore:

It's okay for a float: right; to overflow the containing block on the left.
In such cases let's just constrain the logical right value by the logical left edge.

Test: fast/layoutformattingcontext/intrusive-floats-takes-entire-horizontal-space.html

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::constraintsForLine):

LayoutTests:

  • fast/layoutformattingcontext/intrusive-floats-takes-entire-horizontal-space-expected.html: Added.
  • fast/layoutformattingcontext/intrusive-floats-takes-entire-horizontal-space.html: Added.
9:19 PM Changeset in webkit [267954] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

[curl] WebSocket tests are failing since r267931
https://bugs.webkit.org/show_bug.cgi?id=217298

Reviewed by Darin Adler.

"http:" is a invalid URL since r267931. Change the way how to
construct a URL for libcurl.

  • platform/network/curl/CurlStream.cpp:

(WebCore::CurlStream::CurlStream): Construct the URL just by
replacing the scheme part. Removed a local variable
urlForConnection.

9:00 PM Changeset in webkit [267953] by weinig@apple.com
  • 21 edits in trunk/Source/WebCore

[WebIDL] Address consistency around [SameObject] extended attributes
https://bugs.webkit.org/show_bug.cgi?id=217303

Reviewed by Darin Adler.

There isn't any real value in keeping comments around in the IDLs saying:

FIXME: Add [SameObject] once it is supported

It's unclear what we would want the bindings generator to do with [SameObject],
perhaps for wrapper types, assert if the implementation doesn't return the same
object each time in a debug build, perhaps error out if a non-wrapper type doesn't
also have CachedAttribute or maybe just have SameObject imply it. Regardless,
in the mean time, there is no harm in just annotating the types with the attribute
and letting the generator do nothing while we think.

  • Modules/fetch/FetchRequest.idl:
  • Modules/fetch/FetchResponse.idl:
  • Modules/mediastream/MediaStreamTrackEvent.idl:
  • css/DocumentOrShadowRoot+CSSOM.idl:
  • css/ElementCSSInlineStyle.idl:
  • dom/DOMQuad.idl:
  • dom/DataTransfer.idl:
  • dom/Document+HTML.idl:
  • dom/Document+HTMLObsolete.idl:
  • dom/Document.idl:
  • dom/Element.idl:
  • dom/MutationRecord.idl:
  • dom/Node.idl:
  • dom/NodeIterator.idl:
  • dom/ParentNode.idl:
  • dom/TreeWalker.idl:
  • html/HTMLOrForeignElement.idl:
  • html/HTMLSelectElement.idl:
  • page/Location.idl:
  • svg/SVGFitToViewBox.idl:
8:25 PM Changeset in webkit [267952] by Lauro Moura
  • 3 edits in trunk/Source/WebKit

webkitpy: Update messages reference files after r267916
https://bugs.webkit.org/show_bug.cgi?id=217304

Reviewed by Simon Fraser.

Covered by existing tests.

  • Scripts/test-legacyMessageReceiver.cpp:
  • Scripts/testMessageReceiver.cpp:
5:28 PM Changeset in webkit [267951] by commit-queue@webkit.org
  • 5 edits
    7 adds in trunk

Presence of CSS variable causes a background url() to get resolved with a different base
https://bugs.webkit.org/show_bug.cgi?id=198512

Patch by Tyler Wilcock <Tyler Wilcock> on 2020-10-04
Reviewed by Darin Adler.

Source/WebCore:

Prior to this patch, url()s within CSSPendingSubstitutionValues
were resolved relative to the document root rather than the stylesheet
they were created from, which is wrong.

With this patch, when CSSPendingSubstitutionValues are created, they
now store the base URL that should be used when they are later
resolved in StyleBuilder.

Test: fast/css/variables/url-with-variable-is-sheet-relative.html

  • css/CSSPendingSubstitutionValue.h: Store baseURL for later

resolution.
(WebCore::CSSPendingSubstitutionValue::create): Add baseURL
parameter.
(WebCore::CSSPendingSubstitutionValue::baseURL const): Add m_baseURL
getter.
(WebCore::CSSPendingSubstitutionValue::CSSPendingSubstitutionValue):
Add baseURL parameter.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::parseValueStart): When creating a
CSSPendingSubstitutionValue, also pass along the baseURL from this
context for later resolution.

  • style/StyleBuilder.cpp:

(WebCore::Style::Builder::resolvedVariableValue): If the value
we are resolving is a CSSPendingSubstitutionValue, resolve it
relative to the baseURL it has stored.

LayoutTests:

Add test ensuring shorthands containing url() and CSS variable(s)
resolve the url() relative to the stylesheet the rule is present in,
not the document root.

  • fast/css/variables/support/images/600x600-green-square.png: Added.
  • fast/css/variables/support/styles/url-with-variable-is-sheet-relative.css: Added.
  • fast/css/variables/url-with-variable-is-sheet-relative-expected.html: Added.
  • fast/css/variables/url-with-variable-is-sheet-relative.html: Added.
2:47 PM Changeset in webkit [267950] by BJ Burg
  • 9 edits in trunk

[Cocoa] Add WKUIDelegate SPI to inform clients when a _WKInspector is about to close
https://bugs.webkit.org/show_bug.cgi?id=217233

Reviewed by Timothy Hatcher and Devin Rousso.

Source/WebKit:

This is complementary to _webView:didAttachLocalInspector: and works similarly.
Clients need to be careful in depending on this during teardown, because it won't
come if the UIDelegate has already been cleared out while the inspected page is being closed.

API test: WKInspectorDelegate.WillCloseLocalInspector

  • UIProcess/API/APIUIClient.h:

(API::UIClient::willCloseLocalInspector):

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::willCloseLocalInspector):

  • UIProcess/Inspector/WebInspectorProxy.h:
  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::closeFrontendPageAndWindow):
Add a guard for reentrant calls to close().

Tools:

Add new test case for -_webView:willCloseLocalInspector:.

  • TestWebKitAPI/Tests/WebKitCocoa/WKInspectorDelegate.mm:

(-[InspectorDelegate inspectorDidEnableBrowserDomain:]):
(-[UIDelegate _webView:didAttachLocalInspector:]):
(-[UIDelegate _webView:willCloseLocalInspector:]):
(TEST):
Clean up how the other test case works so we don't call close from
inside a delegate callback. Let's keep our tests structured the same way.

2:09 PM Changeset in webkit [267949] by commit-queue@webkit.org
  • 10 edits in trunk

Submission failure with "make: * No rule to make target `installsrc'. Stop"
https://bugs.webkit.org/show_bug.cgi?id=214696
<rdar://problem/62268104>

Patch by Ryan Hostetler <rhost@apple.com> on 2020-10-04
Reviewed by Darin Adler.

.:

Add installsrc phase to support xbs submitproject for WebKit repository.
This change allows internal tools to submit and build in a single step.

  • Makefile:
  • Makefile.shared:
  • Source/Makefile:

Source/ThirdParty:

Add installsrc phase to support xbs submitproject for WebKit repository.
This change allows internal tools to submit and build in a single step.

  • Makefile:

Tools:

Add support for XBS single base project build for WebKit repository.
This change allows internal tools to submit and build from the repository root in a single step.

  • Makefile:

Tools does not need to be submitted, so we stub out the installsrc phase.

WebKitLibraries:

Add support for XBS single base project build for WebKit repository.
This change allows internal tools to submit and build from the repository root in a single step.

  • Makefile:

WebKitLibraries do not need to be submitted, so we stub out the installsrc phase.

10:06 AM Changeset in webkit [267948] by Alan Bujtas
  • 4 edits
    1 add
    2 deletes in trunk

[LFC][Integration] Enable soft hyphen
https://bugs.webkit.org/show_bug.cgi?id=217293

Reviewed by Antti Koivisto.

Source/WebCore:

Let's expand IFC coverage with soft hyphen rendering.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForText):

LayoutTests:

  • fast/parser/entities-in-html-expected.txt: Progression? Now soft hyphen "renders".
  • fast/text/softHyphen-expected.html: Added. Text-dumping soft hyphens seems defective in some cases.

In this test case there should not be any hyphenation triggered by soft hyphens,
so let's use a reftest instead (which should have been used the first place).

  • platform/mac/fast/text/softHyphen-expected.png: Removed.
  • platform/mac/fast/text/softHyphen-expected.txt: Removed.
9:12 AM Changeset in webkit [267947] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC][Soft hyphen] Fix the case when the first content overflows with hyphen
https://bugs.webkit.org/show_bug.cgi?id=217295

Reviewed by Antti Koivisto.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::rebuildLineForTrailingSoftHyphen):

5:23 AM Changeset in webkit [267946] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC][IFC] Remove Line::appendPartialTrailingTextItem special case
https://bugs.webkit.org/show_bug.cgi?id=217287

Reviewed by Antti Koivisto.

Use the newly added Line::addTrailingHyphen to display hyphen for partial content.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::append):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::Run::Run):
(WebCore::Layout::Line::appendPartialTrailingTextItem): Deleted.
(WebCore::Layout::Line::appendWith): Deleted.

  • layout/inlineformatting/InlineLine.h:
  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::commitPartialContent):

  • layout/inlineformatting/InlineLineRun.h:

(WebCore::Layout::LineRun::Text::Text):

5:22 AM Changeset in webkit [267945] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC][Soft hyphen] Reset Line::m_trailingSoftHyphenWidth when the text content does not end with a soft hyphen
https://bugs.webkit.org/show_bug.cgi?id=217292

Reviewed by Antti Koivisto.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::appendTextContent):

5:13 AM Changeset in webkit [267944] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC][Soft hyphen] endsWithSoftWrapOpportunity should check if hyphenation is disabled
https://bugs.webkit.org/show_bug.cgi?id=217288

Reviewed by Antti Koivisto.

This is very similar InlineTextItem::createAndAppendTextItems where we
also construct a LazyLineBreakIterator to check for word wrap opportunities.

  • layout/inlineformatting/InlineContentBreaker.cpp:

(WebCore::Layout::isTextContent): The trailing "only" is misleading since we can't have a mixture of text and non-text content
within a continuous content (there's always a word wrap opportunity between a text and a non-text content).
(WebCore::Layout::isVisuallyEmptyWhitespaceContent):
(WebCore::Layout::InlineContentBreaker::processInlineContent):
(WebCore::Layout::InlineContentBreaker::processOverflowingContent const):
(WebCore::Layout::isTextContentOnly): Deleted.
(WebCore::Layout::isVisuallyEmptyWhitespaceContentOnly): Deleted.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::endsWithSoftWrapOpportunity):

4:37 AM Changeset in webkit [267943] by Adrian Perez de Castro
  • 19 edits in releases/WebKitGTK/webkit-2.30/Source/WebCore

Merge r267934 - [GTK] Build broken with ENABLE_MEDIA_STREAM enabled and ENABLE_WEB_RTC_DISABLED
https://bugs.webkit.org/show_bug.cgi?id=217128

Remove USE(LIBWEBRTC) guards from media stream code, as it does not actually
depend on libwebrtc and can be built by itself. This allows using e.g. live
audio recording inputs with WebAudio.

Reviewed by Philippe Normand.

No new tests needed.

  • platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
  • platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:
  • platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp:

(WebCore::GStreamerAudioCapturer::GStreamerAudioCapturer):

  • platform/mediastream/gstreamer/GStreamerAudioCapturer.h:
  • platform/mediastream/gstreamer/GStreamerAudioStreamDescription.h:
  • platform/mediastream/gstreamer/GStreamerCapturer.cpp:
  • platform/mediastream/gstreamer/GStreamerCapturer.h:
  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
  • platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:
  • platform/mediastream/gstreamer/GStreamerVideoCapturer.h:
  • platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.cpp:
  • platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.h:
  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:
  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h:
  • platform/mediastream/gstreamer/RealtimeMediaSourceCenterLibWebRTC.cpp:
  • platform/mock/MockRealtimeAudioSource.cpp:
  • platform/mock/MockRealtimeVideoSource.cpp:
4:37 AM WebKitGTK/2.30.x edited by Adrian Perez de Castro
(diff)
4:37 AM Changeset in webkit [267942] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.30

Merge r267882 - [GTK] Build broken with ENABLE_MEDIA_STREAM enabled and ENABLE_WEB_RTC_DISABLED
https://bugs.webkit.org/show_bug.cgi?id=217128

Reviewed by Philippe Normand.

.:

  • Source/cmake/GStreamerChecks.cmake: Only enable USE_LIBWEBRTC when both

ENABLE_MEDIA_STREAM and ENABLE_WEB_RTC is defined. This prevents trying to
build code that uses libwebrtc types when ENABLE_WEB_RTC is disabled but
ENABLE_MEDIA_STREAM is enabled.

Source/WebCore:

No new tests needed.

  • platform/mediastream/gstreamer/GStreamerAudioData.h: Remove USE(LIBWEBRTC) guard, as

there is nothing specific to WebRTC in this file, and it is needed when building with
ENABLE_MEDIA_STREAM enabled.

4:34 AM WebKitGTK/2.30.x edited by Adrian Perez de Castro
(diff)
1:16 AM Changeset in webkit [267941] by youenn@apple.com
  • 10 edits in trunk

Make sure MediaRecorder does not call fetchData until the last fetchData is completed
https://bugs.webkit.org/show_bug.cgi?id=217276

Reviewed by Darin Adler.

Source/WebCore:

When fetchData is called while an existing fetchData is inflight, enqueue the callback in a deque.
When the inflight fetchData completes, call the enqueued callbacks in order with a null blob.

Add ASSERT in MediaRecorderPrivateWriter to make sure we do not call requestMediaDataWhenReadyOnQueue too many times.

Covered by updated http/wpt/mediarecorder/MediaRecorder-dataavailable.html.

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::stopRecording):
(WebCore::MediaRecorder::requestData):
Do not enable the timer if MediaRecorder is not active as a small optimization.
(WebCore::MediaRecorder::fetchData):

  • Modules/mediarecorder/MediaRecorder.h:
  • platform/mediarecorder/MediaRecorderPrivateMock.cpp:

(WebCore::MediaRecorderPrivateMock::fetchData):

  • platform/mediarecorder/MediaRecorderPrivateMock.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers):

LayoutTests:

Add test to cover patch
Update some test expectations according bot results.

  • http/wpt/mediarecorder/MediaRecorder-dataavailable-expected.txt:
  • http/wpt/mediarecorder/MediaRecorder-dataavailable.html:
  • platform/mac/TestExpectations:

Oct 3, 2020:

6:58 PM Changeset in webkit [267940] by Oriol Brufau
  • 25 edits
    2 adds
    2 deletes in trunk

[css-lists] Implement list-style-type: <string>
https://bugs.webkit.org/show_bug.cgi?id=167729

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update test expectations, and await document.fonts.ready in a test with Ahem.

  • web-platform-tests/css/css-lists/parsing/list-style-type-computed-expected.txt:
  • web-platform-tests/css/css-lists/parsing/list-style-type-valid-expected.txt:
  • web-platform-tests/css/css-pseudo/marker-hit-testing-expected.txt:
  • web-platform-tests/css/css-pseudo/marker-intrinsic-contribution-001-expected.txt:
  • web-platform-tests/css/css-pseudo/marker-intrinsic-contribution-001.html:

Source/WebCore:

This patch extends the syntax of the list-style-type property to accept
arbitrary string values in order to customize the marker contents.
When a string is specified for list-style-type, the patch sets it to a
special ListStyleType::String, and the string value is stored in an
extra field.

It's a reland of r252076, which got reverted because in some platform
the number of bitfields in GreaterThanOrSameSizeAsStyleRareInheritedData
was actually smaller than in StyleRareInheritedData, due to padding
differences. Hopefully this will no longer be an issue.

Tests: imported/w3c/web-platform-tests/css/css-lists/list-style-type-string-001a.html

imported/w3c/web-platform-tests/css/css-lists/list-style-type-string-001b.html
imported/w3c/web-platform-tests/css/css-lists/list-style-type-string-002.html
imported/w3c/web-platform-tests/css/css-lists/list-style-type-string-003.html
imported/w3c/web-platform-tests/css/css-lists/list-style-type-string-007.html
imported/w3c/web-platform-tests/css/css-lists/parsing/list-style-type-computed.html
imported/w3c/web-platform-tests/css/css-lists/parsing/list-style-type-valid.html
imported/w3c/web-platform-tests/css/css-pseudo/marker-hit-testing.html
imported/w3c/web-platform-tests/css/css-pseudo/marker-intrinsic-contribution-001.html

Some tests fail because mixed-bidi is not supported in markers
(https://bugs.webkit.org/show_bug.cgi?id=202849).

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):

  • css/CSSProperties.json:
  • css/parser/CSSParserFastPaths.cpp:

(WebCore::CSSParserFastPaths::isPartialKeywordPropertyID):

  • css/parser/CSSParserFastPaths.h:
  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::parseSingleValue):

  • rendering/RenderListMarker.cpp:

(WebCore::effectiveListMarkerType):
(WebCore::listMarkerSuffix):
(WebCore::listMarkerText):
(WebCore::RenderListMarker::styleDidChange):
(WebCore::RenderListMarker::paint):
(WebCore::RenderListMarker::updateContent):
(WebCore::RenderListMarker::computePreferredLogicalWidths):
(WebCore::RenderListMarker::updateMargins):
(WebCore::RenderListMarker::suffix const):
(WebCore::RenderListMarker::getRelativeMarkerRect):

  • rendering/style/CounterContent.h:

(WebCore::CounterContent::CounterContent):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::listStyleStringValue const):
(WebCore::RenderStyle::setListStyleStringValue):
(WebCore::RenderStyle::initialListStyleStringValue):

  • rendering/style/RenderStyleConstants.cpp:

(WebCore::operator<<):

  • rendering/style/RenderStyleConstants.h:
  • rendering/style/StyleRareInheritedData.cpp:

(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator== const):

  • rendering/style/StyleRareInheritedData.h:
  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyInheritListStyleType):
(WebCore::Style::BuilderCustom::applyInitialListStyleType):
(WebCore::Style::BuilderCustom::applyValueListStyleType):

LayoutTests:

Most tests for 'list-style-type: <string>' pass now, but some still fail
because mixed-bidi is not supported in markers
(https://bugs.webkit.org/show_bug.cgi?id=202849).

Various tests for the 'content' property in ::marker fail now. This is
expected because they were only passing by chance, since ::marker does
not support 'content' (https://bugs.webkit.org/show_bug.cgi?id=204163).

iOS and Mac have some extra failures due to subpixel differences for the
marker position.

  • TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/css/css-pseudo/marker-intrinsic-contribution-001-expected.txt: Removed.
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/mac/imported/w3c/web-platform-tests/css/css-pseudo/text-selection-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-pseudo/marker-intrinsic-contribution-001-expected.txt: Removed.
5:34 PM Changeset in webkit [267939] by commit-queue@webkit.org
  • 21 edits in trunk

Add onslotchange on ShadowRoot and GlobalEventHandlers
https://bugs.webkit.org/show_bug.cgi?id=191310

Patch by Tetsuharu Ohzeki <Tetsuharu Ohzeki> on 2020-10-03
Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaselined tests to pass more test cases.

  • web-platform-tests/dom/idlharness.window-expected.txt:
  • web-platform-tests/html/webappapis/scripting/events/event-handler-all-global-events-expected.txt:
  • web-platform-tests/html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt:
  • web-platform-tests/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt:
  • web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:

Source/WebCore:

onslotchange attribute has been added to ShadowRoot and
GlobalEventHandlers by https://github.com/whatwg/html/issues/3487

This patch supports it.

Tests: imported/w3c/web-platform-tests/dom/idlharness.window.html:

imported/w3c/web-platform-tests/html/webappapis/scripting/events/event-handler-all-global-events.html
imported/w3c/web-platform-tests/html/webappapis/scripting/events/event-handler-attributes-body-window.html
imported/w3c/web-platform-tests/html/webappapis/scripting/events/event-handler-attributes-windowless-body.html
imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html

  • dom/GlobalEventHandlers.idl:
  • dom/ShadowRoot.idl:
  • html/HTMLAttributeNames.in:
  • html/HTMLElement.cpp:

(WebCore::HTMLElement::createEventHandlerNameMap):

LayoutTests:

Rebaselined tests to pass more test cases.

  • platform/glib/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
4:51 PM Changeset in webkit [267938] by ysuzuki@apple.com
  • 60 edits
    4 copies
    2 adds in trunk/Source

[JSC] Introduce JITOperationList to validate JIT-caged pointers
https://bugs.webkit.org/show_bug.cgi?id=217261

Reviewed by Saam Barati.

Source/JavaScriptCore:

This patch adds JITOperationList, which manages all the host-function & jit-operation pointers.
And we can now query whether the given pointer is registered in this table.
Currently, as a test, we are verifying that host-function is registered in this table when creating NativeExecutable in debug build.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • assembler/JITOperationList.cpp: Added.

(JSC::JITOperationList::initialize):
(JSC::addPointers):
(JSC::JITOperationList::populatePointersInJavaScriptCore):
(JSC::JITOperationList::populatePointersInEmbedder):

  • assembler/JITOperationList.h: Added.

(JSC::JITOperationList::contains const):
(JSC::JITOperationList::assertIsHostFunction):
(JSC::JITOperationList::assertIsJITOperation):
(JSC::JITOperationList::instance):

  • assembler/MacroAssemblerARM64.cpp:
  • assembler/MacroAssemblerARMv7.cpp:
  • assembler/MacroAssemblerMIPS.cpp:
  • assembler/MacroAssemblerX86Common.cpp:
  • jsc.cpp:

(jscmain):

  • runtime/InitializeThreading.cpp:

(JSC::initialize):

  • runtime/JSGenericTypedArrayViewPrototypeFunctions.h:

(JSC::genericTypedArrayViewProtoFuncSet):
(JSC::genericTypedArrayViewProtoFuncCopyWithin):
(JSC::genericTypedArrayViewProtoFuncIncludes):
(JSC::genericTypedArrayViewProtoFuncIndexOf):
(JSC::genericTypedArrayViewProtoFuncJoin):
(JSC::genericTypedArrayViewProtoFuncLastIndexOf):
(JSC::genericTypedArrayViewProtoGetterFuncBuffer):
(JSC::genericTypedArrayViewProtoGetterFuncLength):
(JSC::genericTypedArrayViewProtoGetterFuncByteLength):
(JSC::genericTypedArrayViewProtoGetterFuncByteOffset):
(JSC::genericTypedArrayViewProtoFuncReverse):
(JSC::genericTypedArrayViewPrivateFuncSort):
(JSC::genericTypedArrayViewProtoFuncSlice):
(JSC::genericTypedArrayViewPrivateFuncSubarrayCreate):
(JSC::JSC_DEFINE_HOST_FUNCTION): Deleted.

  • runtime/VM.cpp:

(JSC::VM::getHostFunction):

Source/WebCore:

We should have WebCore::initialize(). It is filed in https://bugs.webkit.org/show_bug.cgi?id=217270.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMBuiltinConstructor.h:
  • bindings/js/JSDOMConstructor.h:
  • bindings/js/JSDOMLegacyFactoryFunction.h:
  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::initializeMainThread):

  • bindings/js/WebCoreJITOperations.cpp: Copied from Source/WebKit/Shared/WebKit2Initialize.cpp.

(WebCore::populateJITOperations):

  • bindings/js/WebCoreJITOperations.h: Copied from Source/WebKit/Shared/WebKit2Initialize.cpp.
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateConstructorDefinitions):

  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
  • bridge/objc/WebScriptObject.mm:

(+[WebScriptObject initialize]):

  • domjit/JSDocumentDOMJIT.cpp:
  • platform/cocoa/SharedBufferCocoa.mm:

(+[WebCoreSharedBufferData initialize]):

  • platform/ios/wak/WebCoreThread.mm:

(RunWebThread):

Source/WebKit:

  • Shared/API/c/WKString.cpp:

(WKStringCopyJSString):

  • Shared/Cocoa/WebKit2InitializeCocoa.mm:

(WebKit::runInitializationCode):

  • Shared/WebKit2Initialize.cpp:

(WebKit::InitializeWebKit2):

  • Shared/WebKitJITOperations.cpp: Copied from Source/WebKit/Shared/WebKit2Initialize.cpp.

(WebKit::populateJITOperations):

  • Shared/WebKitJITOperations.h: Copied from Source/WebKit/Shared/WebKit2Initialize.cpp.
  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:

Source/WebKitLegacy/mac:

  • History/WebBackForwardList.mm:

(+[WebBackForwardList initialize]):

  • History/WebHistoryItem.mm:

(+[WebHistoryItem initialize]):

  • Misc/WebCache.mm:

(+[WebCache initialize]):

  • Misc/WebElementDictionary.mm:

(+[WebElementDictionary initialize]):

  • Misc/WebIconDatabase.mm:
  • Misc/WebStringTruncator.mm:

(+[WebStringTruncator initialize]):

  • Plugins/Hosted/WebHostedNetscapePluginView.mm:

(+[WebHostedNetscapePluginView initialize]):

  • Plugins/WebBaseNetscapePluginView.mm:
  • Plugins/WebBasePluginPackage.mm:

(+[WebBasePluginPackage initialize]):

  • Plugins/WebNetscapePluginView.mm:

(+[WebNetscapePluginView initialize]):

  • WebCoreSupport/WebEditorClient.mm:

(+[WebUndoStep initialize]):

  • WebCoreSupport/WebFrameLoaderClient.mm:

(+[WebFramePolicyListener initialize]):

  • WebView/WebArchive.mm:

(+[WebArchivePrivate initialize]):

  • WebView/WebDataSource.mm:

(+[WebDataSource initialize]):

  • WebView/WebHTMLView.mm:

(+[WebHTMLViewPrivate initialize]):
(+[WebHTMLView initialize]):

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):

  • WebView/WebResource.mm:

(+[WebResourcePrivate initialize]):

  • WebView/WebTextIterator.mm:

(+[WebTextIteratorPrivate initialize]):

  • WebView/WebView.mm:

(+[WebView initialize]):

  • WebView/WebViewData.mm:

(+[WebViewPrivate initialize]):

Source/WebKitLegacy/win:

  • WebKitClassFactory.cpp:

(WebKitClassFactory::WebKitClassFactory):

  • WebView.cpp:

(WebView::WebView):

Source/WTF:

  • wtf/PlatformCallingConventions.h:
  • wtf/PlatformEnable.h:
3:07 PM Changeset in webkit [267937] by graouts@webkit.org
  • 28 edits
    10 adds in trunk

Add non-animated support for the CSS translate property
https://bugs.webkit.org/show_bug.cgi?id=216997
<rdar://problem/69597083>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

WPT progressions showing the correct parsing and computed style output of a non-animated "translate" property.
We are also adding some more tests to the invalid "translate" parsing to check that we bail once we get junk
for optional values after valid values.

  • web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • web-platform-tests/css/css-transforms/animation/translate-composition-expected.txt:
  • web-platform-tests/css/css-transforms/animation/translate-interpolation-expected.txt:
  • web-platform-tests/css/css-transforms/parsing/translate-parsing-invalid-expected.txt:
  • web-platform-tests/css/css-transforms/parsing/translate-parsing-invalid.html:
  • web-platform-tests/css/css-transforms/parsing/translate-parsing-valid-expected.txt:
  • web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:

Source/WebCore:

We add non-animated support for the CSS "translate" property as specifed in by the CSS Transforms Level 2
specification (​https://drafts.csswg.org/css-transforms-2/#propdef-translate).

Tests: transforms/2d/translate-and-transform-attribute-in-svg-expected.svg

transforms/2d/translate-and-transform-attribute-in-svg.svg
transforms/2d/translate-and-transform-css-property-in-svg-expected.svg
transforms/2d/translate-and-transform-css-property-in-svg.svg
transforms/2d/translate-in-svg-expected.svg
transforms/2d/translate-in-svg.svg
transforms/2d/translate-transform-order.html
transforms/2d/translate-transform-origin-order.html

  • Headers.cmake:
  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::rendererCanBeTransformed):
(WebCore::computedTransform):
(WebCore::computedTranslate): Create a CSSValueList to print out the computed value for the "translate" property.
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json: Define the "translate" property with the condition that the runtime setting for individual

CSS transform properties is set.

  • css/TransformFunctions.cpp:

(WebCore::translateForValue): Convert a CSSValue to a TranslateTransformOperation when parsing a "translate" property value.

  • css/TransformFunctions.h:
  • css/parser/CSSParserContext.cpp:

(WebCore::CSSParserContext::CSSParserContext): Add a new flag indicating whether the runtime setting for individual
CSS transform properties is set.
(WebCore::operator==):

  • css/parser/CSSParserContext.h:

(WebCore::CSSParserContextHash::hash):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeTranslate): Create a CSSValueList when parsing a "translate" property value.
(WebCore::CSSPropertyParser::parseSingleValue):

  • platform/graphics/transforms/TranslateTransformOperation.h: Promote the apply() method to be public so that it can be called

from Style::ComputedStyleExtractor::valueForPropertyInStyle().

  • rendering/RenderObject.h:

(WebCore::RenderObject::hasTransform const): Consider that having the "translate" property is akin to having a "transform" property
in the render tree.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::setTranslate):
(WebCore::RenderStyle::applyTransform const): Account for the RenderStyle::translate() value in the right order, after applying the
transform origin, but before applying the main transform.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::translate const):
(WebCore::RenderStyle::hasTransformRelatedProperty const):
(WebCore::RenderStyle::initialTranslate):

  • rendering/style/StyleRareNonInheritedData.h:
  • rendering/style/WillChangeData.cpp:

(WebCore::WillChangeData::propertyCreatesStackingContext):

  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertTranslate):

  • svg/SVGGraphicsElement.cpp:

(WebCore::SVGGraphicsElement::animatedLocalTransform const): Account for the RenderStyle::translate() value when rendering SVG, ensuring
that it is applied before the transform specified by either the "transform" CSS property or SVG attribute.

LayoutTests:

Add tests checking that the "translate" CSS property is applied in the correct order related to
"transform-origin" and "transform" and that it is applied in SVG as well.

  • platform/ios-13/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • transforms/2d/translate-and-transform-attribute-in-svg-expected.svg: Added.
  • transforms/2d/translate-and-transform-attribute-in-svg.svg: Added.
  • transforms/2d/translate-and-transform-css-property-in-svg-expected.svg: Added.
  • transforms/2d/translate-and-transform-css-property-in-svg.svg: Added.
  • transforms/2d/translate-in-svg-expected.svg: Added.
  • transforms/2d/translate-in-svg.svg: Added.
  • transforms/2d/translate-transform-order-expected.html: Added.
  • transforms/2d/translate-transform-order.html: Added.
  • transforms/2d/translate-transform-origin-order-expected.html: Added.
  • transforms/2d/translate-transform-origin-order.html: Added.
3:05 PM Changeset in webkit [267936] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC] showLayoutTree should group line runs under individual lines
https://bugs.webkit.org/show_bug.cgi?id=217282

Reviewed by Simon Fraser.

Let's improve inline run output by grouping runs:

line at (0.00,0.00) size 0.00x18.00 baseline at (14.00)

text run at (0.00,0.00) size 15.10x18.00 run(0, 2)
text run at (15.10,0.00) size 0.00x18.00 run(0, 1)

line at (0.00,18.00) size 0.00x18.00 baseline at (14.00)

text run at (0.00,0.00) size 39.09x18.00 run(0, 5)

instead of:

line at (0.00,0.00) size 0.00x18.00 baseline at (14.00)
line at (0.00,18.00) size 0.00x18.00 baseline at (14.00)

text run at (0.00,0.00) size 15.10x18.00 run(0, 2)
text run at (15.10,0.00) size 0.00x18.00 run(0, 1)
text run at (0.00,0.00) size 39.09x18.00 run(0, 5)

So that we can tell which run belongs to which line.

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::outputInlineRuns):

2:54 PM Changeset in webkit [267935] by weinig@apple.com
  • 15 edits
    1 move
    20 adds
    2 deletes in trunk/Source/WebCore

[WebIDL] Split more IDL files by spec
https://bugs.webkit.org/show_bug.cgi?id=217279

Reviewed by Darin Adler.

  • Splits out more partial and mixin interfaces from Element, Range, HTMLBodyElement, HTMLImageElement and DOMWindow.
  • Renames HTMLMediaElementAudioOutput.idl to HTMLMediaElement+AudioOutput.idl for consistency with all other partial interfaces.
  • Replace GlobalCrypto and GlobalPerformance with WindowOrWorkerGlobalScope partials as currently speced.
  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.idl:
  • dom/Element+CSSOMView.idl: Added.
  • dom/Element+Fullscreen.idl: Added.
  • dom/Element+PointerEvents.idl: Added.
  • dom/Element+PointerLock.idl: Added.
  • dom/Element.idl:
  • dom/Range+CSSOMView.idl: Added.
  • dom/Range+DOMParsing.idl: Added.
  • dom/Range.idl:
  • html/HTMLBodyElement+Compat.idl: Added.
  • html/HTMLBodyElement.idl:
  • html/HTMLImageElement+CSSOMView.idl: Added.
  • html/HTMLImageElement.idl:
  • html/HTMLMediaElement+AudioOutput.idl: Added.
  • html/HTMLMediaElementAudioOutput.idl: Removed.
  • page/DOMWindow+CSSOM.idl: Added.
  • page/DOMWindow+CSSOMView.idl: Added.
  • page/DOMWindow+Compat.idl: Added.
  • page/DOMWindow+DeviceMotion.idl: Added.
  • page/DOMWindow+DeviceOrientation.idl: Added.
  • page/DOMWindow+RequestIdleCallback.idl: Added.
  • page/DOMWindow+Selection.idl: Added.
  • page/DOMWindow+VisualViewport.idl: Added.
  • page/DOMWindow.idl:
  • page/GlobalCrypto.idl: Removed.
  • page/GlobalPerformance.idl: Removed.
  • page/WindowEventHandlers.idl:
  • page/WindowLocalStorage.idl: Added.
  • page/WindowOrWorkerGlobalScope+Crypto.idl: Added.
  • page/WindowOrWorkerGlobalScope+Performance.idl: Added.
  • page/WindowSessionStorage.idl: Added.
  • workers/WorkerGlobalScope.idl:
2:32 PM Changeset in webkit [267934] by Adrian Perez de Castro
  • 19 edits in trunk/Source/WebCore

[GTK] Build broken with ENABLE_MEDIA_STREAM enabled and ENABLE_WEB_RTC_DISABLED
https://bugs.webkit.org/show_bug.cgi?id=217128

Remove USE(LIBWEBRTC) guards from media stream code, as it does not actually
depend on libwebrtc and can be built by itself. This allows using e.g. live
audio recording inputs with WebAudio.

Reviewed by Philippe Normand.

No new tests needed.

  • platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
  • platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:
  • platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp:

(WebCore::GStreamerAudioCapturer::GStreamerAudioCapturer):

  • platform/mediastream/gstreamer/GStreamerAudioCapturer.h:
  • platform/mediastream/gstreamer/GStreamerAudioStreamDescription.h:
  • platform/mediastream/gstreamer/GStreamerCapturer.cpp:
  • platform/mediastream/gstreamer/GStreamerCapturer.h:
  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
  • platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:
  • platform/mediastream/gstreamer/GStreamerVideoCapturer.h:
  • platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.cpp:
  • platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.h:
  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:
  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h:
  • platform/mediastream/gstreamer/RealtimeMediaSourceCenterLibWebRTC.cpp:
  • platform/mock/MockRealtimeAudioSource.cpp:
  • platform/mock/MockRealtimeVideoSource.cpp:
2:17 PM Changeset in webkit [267933] by achristensen@apple.com
  • 8 edits in trunk

Add extra slash after empty host copied from base URL if path is also empty
https://bugs.webkit.org/show_bug.cgi?id=217278

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/url-constructor-expected.txt:

Source/WTF:

  • wtf/URLParser.cpp:

(WTF::URLParser::parse):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm:
2:14 PM Changeset in webkit [267932] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC][Soft hyphen] Mark the last run on the line when hyphenation is required.
https://bugs.webkit.org/show_bug.cgi?id=217281

Reviewed by Antti Koivisto.

In this patch we turn the trailing soft hyphen into an "real" hyphen when the content requires it.

  • layout/inlineformatting/InlineContentBreaker.cpp:

(WebCore::Layout::InlineContentBreaker::processInlineContent):

  • layout/inlineformatting/InlineContentBreaker.h:
  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::addTrailingHyphen):

  • layout/inlineformatting/InlineLine.h:
  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):
(WebCore::Layout::LineBuilder::rebuildLineForTrailingSoftHyphen):

11:39 AM Changeset in webkit [267931] by achristensen@apple.com
  • 12 edits
    1 delete in trunk

"http:" should not be a valid URL
https://bugs.webkit.org/show_bug.cgi?id=217250

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/url-constructor-expected.txt:

Source/WebCore:

  • workers/service/context/ServiceWorkerThreadProxy.cpp:

(WebCore::topOriginURL):
Fix strange code written in r226257 that relied on the ability to assemble URLs starting with the protocol only.

Source/WTF:

Same with https, ws, wss, and for some reason ftp.
This matches the URL specification and Chrome and Firefox.

  • wtf/URLParser.cpp:

(WTF::URLParser::parse):

Tools:

  • TestWebKitAPI/Tests/WTF/URLParser.cpp:

(TestWebKitAPI::TEST_F):

LayoutTests:

  • platform/mac-wk1/imported/w3c/web-platform-tests/url/failure-expected.txt: Removed.
10:31 AM Changeset in webkit [267930] by mmaxfield@apple.com
  • 18 edits
    5 adds in trunk

[GPU Process] Support drawing text in 2D canvas with font features
https://bugs.webkit.org/show_bug.cgi?id=206118

Reviewed by Wenson Hsieh.

Source/WebCore:

This patch simply serializes all the non-derived data in Font and FontPlatformData.

Serializing a CTFont involves serializing its font descriptor's attributes. However,
there's an extra step for web fonts, since the font descriptor's attributes don't include
the raw bytes of the font file. This was previously being saved in Font, but this patch
moves that into FontPlatformData because of layering, and adds the SharedBuffer to the
serialization routine for web fonts.

Test: fast/canvas/fill-text-with-font-features.html

  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSFontFace.cpp:

(WebCore::CSSFontFace::font): Fonts and FontPlatformDatas are supposed to be immutable, so
having a setter for the FontFaceData is incorrect. This object is moved into the constructor
instead.

  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::font): Deleting dead code.

  • platform/graphics/Font.cpp:

(WebCore::Font::setFontFaceData): Deleted.

  • platform/graphics/Font.h:

(WebCore::Font::fontFaceData const): Deleted. Moved to FontPlatformData

  • platform/graphics/FontPlatformData.cpp:

(WebCore::FontPlatformData::FontPlatformData):

  • platform/graphics/FontPlatformData.h:

(WebCore::FontPlatformData::creationData const): Moved from Font.

  • platform/graphics/coretext/FontPlatformDataCoreText.cpp:

(WebCore::FontPlatformData::FontPlatformData):

  • platform/graphics/mac/FontCustomPlatformData.cpp:

(WebCore::FontCustomPlatformData::fontPlatformData): FontCustomPlatformData is a struct, so
there's no need for the m_ prefixes.
(WebCore::createFontCustomPlatformData):

  • platform/graphics/mac/FontCustomPlatformData.h:

(WebCore::FontCustomPlatformData::FontCustomPlatformData): Ditto.

Source/WebKit:

Simply serialize and deserialize all the non-derived data in Font and PlatformFontData.

  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

(IPC::ArgumentCoder<Ref<Font>>::encodePlatformData):
(IPC::ArgumentCoder<Ref<Font>>::decodePlatformData):

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Ref<Font>>::encode):
(IPC::ArgumentCoder<Ref<Font>>::decode):

  • Shared/WebCoreArgumentCoders.h:

LayoutTests:

  • fast/canvas/fill-text-with-font-features-expected.html: Added.
  • fast/canvas/fill-text-with-font-features.html: Added.
  • fast/canvas/resources/FontWithFeatures.ttf: Added.
10:26 AM Changeset in webkit [267929] by Peng Liu
  • 6 edits in trunk/Source/WebKit

[Media in GPU Process] Web process is not allowed to set the AudioSession category
https://bugs.webkit.org/show_bug.cgi?id=217236

Reviewed by Eric Carlson.

We disabled setting the audio session category in the Web process when media is playing
in the GPU Process (r257367). But since RemoteAudioSession and RemoteAudioSessionProxy
are working now in the Web process and GPU process, we need to allow setting the audio
session category in the Web process.

This patch also includes an optimization to reduce the IPC traffic of the audio session
category changes.

  • GPUProcess/media/RemoteAudioSessionProxy.cpp:

(WebKit::RemoteAudioSessionProxy::setCategory):

  • GPUProcess/media/RemoteAudioSessionProxyManager.cpp:

(WebKit::RemoteAudioSessionProxyManager::setCategoryForProcess):
We need to check the category and policy in RemoteAudioSessionProxy instead of
RemoteAudioSessionProxyManager. Otherwise, the change will be ignored.

  • WebProcess/GPU/media/RemoteAudioSession.cpp:

(WebKit::RemoteAudioSession::setCategory):
Only send RemoteAudioSessionProxy::SetCategory message if the category or the policy
is changed.

  • WebProcess/GPU/media/RemoteAudioSession.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_limitsNavigationsToAppBoundDomains):
Revert the change in r257367.

10:02 AM Changeset in webkit [267928] by weinig@apple.com
  • 2 edits in trunk/Source/WebCore

Simplify and harden idl_files.tmp generation
https://bugs.webkit.org/show_bug.cgi?id=217247

Reviewed by Darin Adler.

We sometimes see idl_files.tmp not getting deleted and on the next
compile things failing. Instead of relying on the delete happening,
we now just completely regenerate the file, now renamed to
IDLFileNamesList.txt, each time in one shot.

  • DerivedSources.make:
9:51 AM Changeset in webkit [267927] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Rename InlineContentBreaker::Result::Action::Push to Wrap
https://bugs.webkit.org/show_bug.cgi?id=217273

Reviewed by Antti Koivisto.

"Wrap" is a more suitable name in this context.

  • layout/inlineformatting/InlineContentBreaker.cpp:

(WebCore::Layout::isWrappingAllowed):
(WebCore::Layout::InlineContentBreaker::processInlineContent):
(WebCore::Layout::InlineContentBreaker::processOverflowingContent const):

  • layout/inlineformatting/InlineContentBreaker.h:
  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):

9:21 AM Changeset in webkit [267926] by Aditya Keerthi
  • 4 edits in trunk

[macOS] Enable date, time, and datetime-local input types
https://bugs.webkit.org/show_bug.cgi?id=217229
<rdar://problem/69882757>

Reviewed by Sam Weinig.

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:

Tools:

Update test expectations now that these input types no longer fallback
to text fields. Also removed the test for input type=datetime, as it
has been removed from the spec.

  • TestWebKitAPI/Tests/WebKitCocoa/InjectedBundleNodeHandleIsTextField.mm:

(-[InjectedBundleNodeHandleIsTextField webProcessPlugIn:didCreateBrowserContextController:]):

9:12 AM Changeset in webkit [267925] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC][Soft hyphen] Rebuild the line when need to revert to a previous wrap opportunity due to soft hyphens
https://bugs.webkit.org/show_bug.cgi?id=217272

Reviewed by Antti Koivisto.

This patch reverts the line to a previous wrap opportunity where

  1. the trailing soft hyphen fits or
  2. no need for soft hyphen (we reverted back to a non-text inline content, where we don't need a hyphen) or
  3. reverted all the way back to the beginning of the line.

(We still don't paint hyphens at the soft hyphen locations.)

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):
(WebCore::Layout::LineBuilder::rebuildLine):
(WebCore::Layout::LineBuilder::rebuildLineForTrailingSoftHyphen):

  • layout/inlineformatting/InlineLineBuilder.h:
8:12 AM Changeset in webkit [267924] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC][Soft hyphen] InlineContentBreaker should return Action::Revert when the trailing soft hyphen does not fit
https://bugs.webkit.org/show_bug.cgi?id=217269

Reviewed by Antti Koivisto.

A trailing soft hyphen turns action "Push" to action "Revert" when the hyphen overflows.
e.g <div>1&shy;2&shy;3&shy;4</div>
line has: 123&shy; and when '4' overflows InlineContentBreaker normally returns with Action::Push ('4' is pushed over to the next line).
However Action::Push turns the trailing soft hyphen into a visible hyphen and now we need to check if 'Push' is actually a 'Revert' instead.

  • layout/inlineformatting/InlineContentBreaker.cpp:

(WebCore::Layout::InlineContentBreaker::processInlineContent):
(WebCore::Layout::InlineContentBreaker::processOverflowingContent const):
(WebCore::Layout::InlineContentBreaker::tryBreakingTextRun const):

  • layout/inlineformatting/InlineContentBreaker.h:
  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::initialize):
(WebCore::Layout::Line::appendWith):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendLineBreak):

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::trailingSoftHyphenWidth const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):

8:02 AM Changeset in webkit [267923] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Floating-point math causes shrink-wrapped content to line wrap sometimes
https://bugs.webkit.org/show_bug.cgi?id=217136
<rdar://problem/69801790>

Reviewed by Antti Koivisto.

Since the preferred width computation and the actual inline layout run though different codepaths,
they may compute slightly different content width due to the limited floating point precision.
Use WTF::areEssentiallyEqual when deciding if the content overflows the current line.

  • rendering/line/LineWidth.cpp:

(WebCore::LineWidth::fitsOnLineIncludingExtraWidth const):
(WebCore::LineWidth::fitsOnLineExcludingTrailingWhitespace const):
(WebCore::LineWidth::fitsOnLineExcludingTrailingCollapsedWhitespace const):

7:39 AM Changeset in webkit [267922] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC][Soft hyphen] Do not split InlineItems at soft hyphens when hyphenations is disabled
https://bugs.webkit.org/show_bug.cgi?id=217266

Reviewed by Antti Koivisto.

-webkit-hyphens: none; disables hyphenation. Soft hyphens are not wrap opportunities anymore.
<div>1&shy;2&shy;3&shy;4</div> generates one InlineTextItem: [1&shy;2&shy;3&shy;4].

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::createAndAppendTextItems):

7:01 AM Changeset in webkit [267921] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC][Soft hyphen] LineBuilder should hold on to all the wrap opportunities
https://bugs.webkit.org/show_bug.cgi?id=217265

Reviewed by Antti Koivisto.

This is in preparation for adding support for reverting content when the soft hyphen
overflows the line so as the last wrap opportunity InlineTextItem.
In such cases we need to go further back(front) on the line and revert even more content.
e.g <div>1&shy;2&shy;3&shy;4</div>
Depending on the horizontal constraint the first line may be:
1-
12-
123-
1234
If character '4' overflows the line, we would go with '123-' by reverting to the last wrap opportunity.
However in case of a wide hyphen, '123-' may overflow the line as well and we have to revert
the content further back to e.g. '12-' or even '1-'.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::initialize):
(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):
(WebCore::Layout::LineBuilder::rebuildLine):

  • layout/inlineformatting/InlineLineBuilder.h:
6:22 AM Changeset in webkit [267920] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC][Soft hyphen] Soft hyphen is always the trailing character
https://bugs.webkit.org/show_bug.cgi?id=217264

Reviewed by Antti Koivisto.

Soft hyphen is a word wrap opportunity. An InlineTextItem can only have one trailing soft hyphen.
e.g <span>before&shy;after</span> generates 2 separate InlineTextItems: [before-][after].

InlineTextItem should be able to tell if it ends with a soft hyphen.

  • layout/inlineformatting/InlineItem.cpp:
  • layout/inlineformatting/InlineItem.h:
  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::createAndAppendTextItems):

  • layout/inlineformatting/InlineTextItem.h:

(WebCore::Layout::InlineTextItem::hasTrailingSoftHyphen const):
(WebCore::Layout::InlineTextItem::createWhitespaceItem):
(WebCore::Layout::InlineTextItem::createNonWhitespaceItem):
(WebCore::Layout::InlineTextItem::InlineTextItem):
(WebCore::Layout::InlineTextItem::left const):
(WebCore::Layout::InlineTextItem::right const):

Oct 2, 2020:

11:28 PM Changeset in webkit [267919] by Carlos Garcia Campos
  • 7 edits in trunk/Source

WebDriver: add support for same site cookies
https://bugs.webkit.org/show_bug.cgi?id=217222

Reviewed by Brian Burg.

Source/WebDriver:

  • Session.cpp:

(WebDriver::parseAutomationCookie): Parse sameSite.
(WebDriver::builtAutomationCookie): Add sameSite to cookie.
(WebDriver::serializeCookie): Serialize sameSite.

  • Session.h:
  • WebDriverService.cpp:

(WebDriver::deserializeCookie): Deserialize sameSite.

Source/WebKit:

  • UIProcess/Automation/Automation.json: Add CookieSameSitePolicy enum and sameSite member to Cookie object.
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::toProtocolSameSitePolicy): Convert WebCore same site policy to inspector protocol value.
(WebKit::toWebCoreSameSitePolicy): Convert inspector protocol same site policy to WebCore value.
(WebKit::buildObjectForCookie): Add sameSite.
(WebKit::WebAutomationSession::addSingleCookie): Set sameSite policy to cookie.

11:26 PM Changeset in webkit [267918] by Carlos Garcia Campos
  • 7 edits in trunk/Source

WebDriver: several issues when switching to new browser context
https://bugs.webkit.org/show_bug.cgi?id=217217

Reviewed by Brian Burg.

Source/WebDriver:

There are several issues to fix when switching to a browser context:

1- The spec has changed and now we should always keep the current parent browsing context.
2- The spec says we should focus the new frame after switching to a frame or parent frame, but we are just

resolving the frame and updating the handle internally.

3- We are keeping stale frame handles and ids in the automation session, they should be removed when frames

are destroyed.

4- We are clearing all frame references in the automation session when a navigation happens in any main

frame. We should only clear the frames of the page that completed the navigation.

All theses cases are covered by new tests added to imported/w3c/webdriver/tests/switch_to_parent_frame/

  • Session.cpp:

(WebDriver::Session::close): Close the current parent browsing context too.
(WebDriver::Session::switchToTopLevelBrowsingContext): Initialize the current parent browsing context too.
(WebDriver::Session::switchToBrowsingContext): Resolve the parent frame handle and set the current parent browsing context.
(WebDriver::Session::go): Pass completion handler to switchToBrowsingContext().
(WebDriver::Session::back): Ditto.
(WebDriver::Session::forward): Ditto.
(WebDriver::Session::refresh): Ditto.
(WebDriver::Session::closeWindow): Close the current parent browsing context too.
(WebDriver::Session::switchToBrowsingContext): Send switchToBrowsingContext message to the browser.
(WebDriver::Session::switchToWindow): Use switchToBrowsingContext() to send the message to the browser.
(WebDriver::Session::switchToFrame): Call switchToBrowsingContext() after the child frame handle is resolved.
(WebDriver::Session::switchToParentFrame): Check current parent browsing context is still open and call
switchToBrowsingContext() to switch to the current parent browsing context.
(WebDriver::Session::waitForNavigationToComplete): Close the current parent browsing context too when the window
is closed due to the navigation.

  • Session.h: Add m_currentParentBrowsingContext.

Source/WebKit:

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::didDestroyFrame): Remove the frame references from maps.
(WebKit::WebAutomationSession::navigationOccurredForFrame): Only clear the frame references from the maps for
the frames in the given frame's page.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didDestroyFrame): Notify automation session about frame being destroyed.

11:00 PM Changeset in webkit [267917] by ysuzuki@apple.com
  • 5 edits in trunk

std::once_flag must be allocated in static storage
https://bugs.webkit.org/show_bug.cgi?id=217271

Reviewed by Mark Lam.

Source/WebCore:

If the std::once_flag is a non-static variable, it will not prevent us from calling it multiple times.

  • platform/text/TextCodecSingleByte.cpp:

(WebCore::tableForEncoding):

Tools:

Added cpplint rule for non-static std::once_flag / dispatch_once_t.

  • Scripts/webkitpy/style/checkers/cpp.py:

(check_once_flag):
(check_style):
(CppChecker):

  • Scripts/webkitpy/style/checkers/cpp_unittest.py:

(WebKitStyleTest.test_once_flag):

8:55 PM Changeset in webkit [267916] by Simon Fraser
  • 48 edits
    4 adds in trunk/Source/WebKit

Move WebEvent subclass declarations to their own files
https://bugs.webkit.org/show_bug.cgi?id=217259

Reviewed by Tim Horton.

Make new header files for WebMouseEvent, WebKeyboardEvent, WebWheelEvent, WebTouchEvent and
fix the fallout.

  • Scripts/webkit/messages.py:
  • Shared/API/c/WKSharedAPICast.h:
  • Shared/NativeWebGestureEvent.h:
  • Shared/NativeWebKeyboardEvent.h:
  • Shared/NativeWebMouseEvent.h:
  • Shared/NativeWebTouchEvent.h:
  • Shared/NativeWebWheelEvent.h:
  • Shared/NavigationActionData.h:
  • Shared/WebEvent.cpp:

(WebKit::WebTouchEvent::allTouchPointsAreReleased const): Deleted.

  • Shared/WebEvent.h:

(WebKit::WebMouseEvent::button const): Deleted.
(WebKit::WebMouseEvent::buttons const): Deleted.
(WebKit::WebMouseEvent::position const): Deleted.
(WebKit::WebMouseEvent::globalPosition const): Deleted.
(WebKit::WebMouseEvent::deltaX const): Deleted.
(WebKit::WebMouseEvent::deltaY const): Deleted.
(WebKit::WebMouseEvent::deltaZ const): Deleted.
(WebKit::WebMouseEvent::clickCount const): Deleted.
(WebKit::WebMouseEvent::eventNumber const): Deleted.
(WebKit::WebMouseEvent::menuTypeForEvent const): Deleted.
(WebKit::WebMouseEvent::force const): Deleted.
(WebKit::WebMouseEvent::syntheticClickType const): Deleted.
(WebKit::WebWheelEvent::position const): Deleted.
(WebKit::WebWheelEvent::globalPosition const): Deleted.
(WebKit::WebWheelEvent::delta const): Deleted.
(WebKit::WebWheelEvent::wheelTicks const): Deleted.
(WebKit::WebWheelEvent::granularity const): Deleted.
(WebKit::WebWheelEvent::directionInvertedFromDevice const): Deleted.
(WebKit::WebWheelEvent::phase const): Deleted.
(WebKit::WebWheelEvent::momentumPhase const): Deleted.
(WebKit::WebWheelEvent::hasPreciseScrollingDeltas const): Deleted.
(WebKit::WebWheelEvent::scrollCount const): Deleted.
(WebKit::WebWheelEvent::unacceleratedScrollingDelta const): Deleted.
(WebKit::WebKeyboardEvent::text const): Deleted.
(WebKit::WebKeyboardEvent::unmodifiedText const): Deleted.
(WebKit::WebKeyboardEvent::key const): Deleted.
(WebKit::WebKeyboardEvent::code const): Deleted.
(WebKit::WebKeyboardEvent::keyIdentifier const): Deleted.
(WebKit::WebKeyboardEvent::windowsVirtualKeyCode const): Deleted.
(WebKit::WebKeyboardEvent::nativeVirtualKeyCode const): Deleted.
(WebKit::WebKeyboardEvent::macCharCode const): Deleted.
(WebKit::WebKeyboardEvent::handledByInputMethod const): Deleted.
(WebKit::WebKeyboardEvent::preeditUnderlines const): Deleted.
(WebKit::WebKeyboardEvent::preeditSelectionRange const): Deleted.
(WebKit::WebKeyboardEvent::commands const): Deleted.
(WebKit::WebKeyboardEvent::isAutoRepeat const): Deleted.
(WebKit::WebKeyboardEvent::isKeypad const): Deleted.
(WebKit::WebKeyboardEvent::isSystemKey const): Deleted.
(WebKit::WebPlatformTouchPoint::WebPlatformTouchPoint): Deleted.
(WebKit::WebPlatformTouchPoint::identifier const): Deleted.
(WebKit::WebPlatformTouchPoint::location const): Deleted.
(WebKit::WebPlatformTouchPoint::phase const): Deleted.
(WebKit::WebPlatformTouchPoint::state const): Deleted.
(WebKit::WebPlatformTouchPoint::setRadiusX): Deleted.
(WebKit::WebPlatformTouchPoint::radiusX const): Deleted.
(WebKit::WebPlatformTouchPoint::setRadiusY): Deleted.
(WebKit::WebPlatformTouchPoint::radiusY const): Deleted.
(WebKit::WebPlatformTouchPoint::setRotationAngle): Deleted.
(WebKit::WebPlatformTouchPoint::rotationAngle const): Deleted.
(WebKit::WebPlatformTouchPoint::setForce): Deleted.
(WebKit::WebPlatformTouchPoint::force const): Deleted.
(WebKit::WebPlatformTouchPoint::setAltitudeAngle): Deleted.
(WebKit::WebPlatformTouchPoint::altitudeAngle const): Deleted.
(WebKit::WebPlatformTouchPoint::setAzimuthAngle): Deleted.
(WebKit::WebPlatformTouchPoint::azimuthAngle const): Deleted.
(WebKit::WebPlatformTouchPoint::setTouchType): Deleted.
(WebKit::WebPlatformTouchPoint::touchType const): Deleted.
(WebKit::WebTouchEvent::WebTouchEvent): Deleted.
(WebKit::WebTouchEvent::touchPoints const): Deleted.
(WebKit::WebTouchEvent::position const): Deleted.
(WebKit::WebTouchEvent::isPotentialTap const): Deleted.
(WebKit::WebTouchEvent::isGesture const): Deleted.
(WebKit::WebTouchEvent::gestureScale const): Deleted.
(WebKit::WebTouchEvent::gestureRotation const): Deleted.
(WebKit::WebTouchEvent::canPreventNativeGestures const): Deleted.
(WebKit::WebTouchEvent::setCanPreventNativeGestures): Deleted.
(WebKit::WebPlatformTouchPoint::id const): Deleted.
(WebKit::WebPlatformTouchPoint::screenPosition const): Deleted.
(WebKit::WebPlatformTouchPoint::position const): Deleted.
(WebKit::WebPlatformTouchPoint::radius const): Deleted.
(WebKit::WebPlatformTouchPoint::setState): Deleted.

  • Shared/WebEventConversion.cpp:
  • Shared/WebKeyboardEvent.cpp:
  • Shared/WebKeyboardEvent.h: Added.

(WebKit::WebKeyboardEvent::text const):
(WebKit::WebKeyboardEvent::unmodifiedText const):
(WebKit::WebKeyboardEvent::key const):
(WebKit::WebKeyboardEvent::code const):
(WebKit::WebKeyboardEvent::keyIdentifier const):
(WebKit::WebKeyboardEvent::windowsVirtualKeyCode const):
(WebKit::WebKeyboardEvent::nativeVirtualKeyCode const):
(WebKit::WebKeyboardEvent::macCharCode const):
(WebKit::WebKeyboardEvent::handledByInputMethod const):
(WebKit::WebKeyboardEvent::preeditUnderlines const):
(WebKit::WebKeyboardEvent::preeditSelectionRange const):
(WebKit::WebKeyboardEvent::commands const):
(WebKit::WebKeyboardEvent::isAutoRepeat const):
(WebKit::WebKeyboardEvent::isKeypad const):
(WebKit::WebKeyboardEvent::isSystemKey const):

  • Shared/WebMouseEvent.cpp:
  • Shared/WebMouseEvent.h: Added.

(WebKit::WebMouseEvent::button const):
(WebKit::WebMouseEvent::buttons const):
(WebKit::WebMouseEvent::position const):
(WebKit::WebMouseEvent::globalPosition const):
(WebKit::WebMouseEvent::deltaX const):
(WebKit::WebMouseEvent::deltaY const):
(WebKit::WebMouseEvent::deltaZ const):
(WebKit::WebMouseEvent::clickCount const):
(WebKit::WebMouseEvent::eventNumber const):
(WebKit::WebMouseEvent::menuTypeForEvent const):
(WebKit::WebMouseEvent::force const):
(WebKit::WebMouseEvent::syntheticClickType const):

  • Shared/WebTouchEvent.cpp:

(WebKit::WebTouchEvent::allTouchPointsAreReleased const):

  • Shared/WebTouchEvent.h: Added.

(WebKit::WebPlatformTouchPoint::WebPlatformTouchPoint):
(WebKit::WebPlatformTouchPoint::identifier const):
(WebKit::WebPlatformTouchPoint::location const):
(WebKit::WebPlatformTouchPoint::phase const):
(WebKit::WebPlatformTouchPoint::state const):
(WebKit::WebPlatformTouchPoint::setRadiusX):
(WebKit::WebPlatformTouchPoint::radiusX const):
(WebKit::WebPlatformTouchPoint::setRadiusY):
(WebKit::WebPlatformTouchPoint::radiusY const):
(WebKit::WebPlatformTouchPoint::setRotationAngle):
(WebKit::WebPlatformTouchPoint::rotationAngle const):
(WebKit::WebPlatformTouchPoint::setForce):
(WebKit::WebPlatformTouchPoint::force const):
(WebKit::WebPlatformTouchPoint::setAltitudeAngle):
(WebKit::WebPlatformTouchPoint::altitudeAngle const):
(WebKit::WebPlatformTouchPoint::setAzimuthAngle):
(WebKit::WebPlatformTouchPoint::azimuthAngle const):
(WebKit::WebPlatformTouchPoint::setTouchType):
(WebKit::WebPlatformTouchPoint::touchType const):
(WebKit::WebTouchEvent::WebTouchEvent):
(WebKit::WebTouchEvent::touchPoints const):
(WebKit::WebTouchEvent::position const):
(WebKit::WebTouchEvent::isPotentialTap const):
(WebKit::WebTouchEvent::isGesture const):
(WebKit::WebTouchEvent::gestureScale const):
(WebKit::WebTouchEvent::gestureRotation const):
(WebKit::WebTouchEvent::canPreventNativeGestures const):
(WebKit::WebTouchEvent::setCanPreventNativeGestures):
(WebKit::WebPlatformTouchPoint::id const):
(WebKit::WebPlatformTouchPoint::screenPosition const):
(WebKit::WebPlatformTouchPoint::position const):
(WebKit::WebPlatformTouchPoint::radius const):
(WebKit::WebPlatformTouchPoint::setState):

  • Shared/WebWheelEvent.cpp:

(WebKit::WebWheelEvent::WebWheelEvent):

  • Shared/WebWheelEvent.h: Added.

(WebKit::WebWheelEvent::position const):
(WebKit::WebWheelEvent::globalPosition const):
(WebKit::WebWheelEvent::delta const):
(WebKit::WebWheelEvent::wheelTicks const):
(WebKit::WebWheelEvent::granularity const):
(WebKit::WebWheelEvent::directionInvertedFromDevice const):
(WebKit::WebWheelEvent::phase const):
(WebKit::WebWheelEvent::momentumPhase const):
(WebKit::WebWheelEvent::hasPreciseScrollingDeltas const):
(WebKit::WebWheelEvent::scrollCount const):
(WebKit::WebWheelEvent::unacceleratedScrollingDelta const):

  • Shared/ios/WebIOSEventFactory.h:
  • Shared/ios/WebPlatformTouchPointIOS.cpp:
  • Shared/ios/WebTouchEventIOS.cpp:
  • Shared/mac/NativeWebGestureEventMac.mm:
  • Shared/mac/WebEventFactory.h:
  • Shared/mac/WebGestureEvent.h:
  • UIProcess/API/APINavigationClient.h:
  • UIProcess/API/APIPolicyClient.h:
  • UIProcess/Automation/SimulatedInputDispatcher.h:
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/ios/WKMouseGestureRecognizer.mm:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:
  • WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
  • WebProcess/Plugins/PDF/PDFPlugin.mm:
  • WebProcess/Plugins/PluginProxy.cpp:
  • WebProcess/Plugins/PluginView.cpp:
  • WebProcess/WebPage/EventDispatcher.cpp:
  • WebProcess/WebPage/EventDispatcher.h:
  • WebProcess/WebPage/PageBanner.h:
  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebPage/ios/WebPageIOS.mm:
  • WebProcess/WebPage/mac/WebPageMac.mm:
8:23 PM Changeset in webkit [267915] by Wenson Hsieh
  • 5 edits in trunk/Source

[ iOS ] ASSERTION FAILED: ScriptDisallowedScope::InMainThread::isEventDispatchAllowedInSubtree
https://bugs.webkit.org/show_bug.cgi?id=217203
<rdar://problem/69864747>

Reviewed by Tim Horton.

Source/WebCore:

  • page/DragController.cpp:

(WebCore::DragController::finalizeDroppedImagePlaceholder):

Instead of immediately removing dropped image placeholder attributes, schedule an async task to remove the
placeholder and invoke the given completion handler. See WebKit/ChangeLog for more details.

  • page/DragController.h:

Source/WebKit:

Refactor logic that removes drop placeholder attributes such that it runs as an asynchronously task rather than
underneath the scope of didFinishLoadingImageForElement. This is because the image load client call may occur
in the middle of a rendering update, during which it is not safe to change element attribute values, since that
may trigger script execution.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::didFinishLoadingImageForElement):

7:17 PM Changeset in webkit [267914] by Lauro Moura
  • 5 edits in trunk/LayoutTests

[GLIB] Gardening some failures and flakies

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/glib/fast/mediacapturefromelement/CanvasCaptureMediaStream-offscreencanvas-expected.txt: Rebaselined after r267825.
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
6:59 PM Changeset in webkit [267913] by Hector Lopez
  • 2 edits in trunk/LayoutTests

REGRESSION(iOS 14): 2 imported/w3c/web-platform-tests/mathml/ tests are constant failures
https://bugs.webkit.org/show_bug.cgi?id=217268

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
6:46 PM Changeset in webkit [267912] by Ross Kirsling
  • 7 edits in trunk

[JSC] Add Array#item to @@unscopables
https://bugs.webkit.org/show_bug.cgi?id=217243

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/unscopables.js:

Update test.

Source/JavaScriptCore:

ES2015+ Array methods must be listed in Array.prototype[@@unscopables] per the note here:
https://tc39.es/ecma262/#sec-array.prototype-@@unscopables

The Array#item spec doesn't currently make this explicit, but I created an issue to ensure it isn't overlooked:
https://github.com/tc39/proposal-item-method/issues/30

  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation):

LayoutTests:

  • js/array-unscopables-properties-expected.txt:
  • js/script-tests/array-unscopables-properties.js:

Update test.

6:26 PM Changeset in webkit [267911] by Chris Dumez
  • 5 edits
    2 adds in trunk

Calling suspend() on audio context with no node does not prevent auto transition to running when first node is created
https://bugs.webkit.org/show_bug.cgi?id=216972
<rdar://problem/69878834>

Reviewed by Darin Adler.

Source/WebCore:

Add support for the suspended by user? flag in the WebAudio specification:

We set this flag when the script calls AudioContext.suspend():

We clear this flag when the script calls AudioContext.resume():

We then prevent automated transition of the AudioContext to "rendering" when this
flag is set:

Test: webaudio/suspend-context-before-first-node-creation.html

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::startRendering):
(WebCore::BaseAudioContext::suspendRendering):
(WebCore::BaseAudioContext::resumeRendering):

  • Modules/webaudio/BaseAudioContext.h:

LayoutTests:

Add layout test coverage.

  • webaudio/suspend-context-before-first-node-creation-expected.txt: Added.
  • webaudio/suspend-context-before-first-node-creation.html: Added.
6:23 PM Changeset in webkit [267910] by Alan Coon
  • 2 edits in branches/safari-610-branch/Source/WebKit

Cherry-pick r267792. rdar://problem/69904383

REGRESSION (r265009): Web Share API can no longer be invoked if a previous invocation was dismissed using the close button
https://bugs.webkit.org/show_bug.cgi?id=216913
<rdar://problem/69659878>

Reviewed by Darin Adler.

No new tests; not able to test without UI tests that actually use UIActivityViewController.

  • UIProcess/Cocoa/WKShareSheet.mm: (-[WKShareSheet presentWithShareDataArray:inRect:]): -presentationControllerDidDismiss is not called if the UIActivityViewController is programmatically dismissed, so we need to revert to observing completion via UIActivityViewController's -completionWithItemsHandler.

In order to avoid regressing bug 214894 by doing so, we also need to
make sure that we're actually not presented anymore, as -completionWithItemsHandler
can be called multiple times before the share sheet is actually dismissed.

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

6:23 PM Changeset in webkit [267909] by Alan Coon
  • 8 edits
    3 adds in branches/safari-610-branch

Cherry-pick r267753. rdar://problem/69904353

IndexedDB Index Corruption after upgrade from iOS 13 to iOS 14
https://bugs.webkit.org/show_bug.cgi?id=216962
<rdar://problem/69587004>

Reviewed by Brady Eidson.

Source/WebCore:

There is an implementation error in r255318, which updated index ID in database IndexInfo and IndexRecords
tables: it made changes to original table while iterating records of it. This means modified records can
be modified again, which leads to that two indices have the same index ID. As index ID is supposed to be unique,
some indices and index records cannot be populated and clients will find some indices are missing.

To fix this, we need to change the implementation of ID update and deal with already corrupted tables. For index
ID update, now we create a temporary table for storing the updated records, and replace the original table with
temporary table at the end of iteration. For the corruption issue, we check if IndexInfo table has duplicate
index IDs. If it has, we try recovering IndexInfo and IndexRecords table by removing records with duplicate
index IDs, assigning new IDs to duplicate indices, and adding records with updated index IDs.

API tests: IndexedDB.IndexUpgradeToV2WithMultipleIndices

IndexedDB.IndexUpgradeToV2WithMultipleIndicesHaveSameID

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp: (WebCore::IDBServer::indexInfoTableSchema): (WebCore::IDBServer::SQLiteIDBBackingStore::createAndPopulateInitialDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::migrateIndexInfoTableForIDUpdate): (WebCore::IDBServer::SQLiteIDBBackingStore::migrateIndexRecordsTableForIDUpdate): (WebCore::IDBServer::SQLiteIDBBackingStore::removeExistingIndex): (WebCore::IDBServer::SQLiteIDBBackingStore::addExistingIndex): (WebCore::IDBServer::SQLiteIDBBackingStore::handleDuplicateIndexIDs): (WebCore::IDBServer::SQLiteIDBBackingStore::extractExistingDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::createIndex): (WebCore::IDBServer::SQLiteIDBBackingStore::updateOneIndexForAddRecord):
  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:
  • Modules/indexeddb/shared/IDBIndexInfo.h: (WebCore::IDBIndexInfo::setIdentifier):
  • Modules/indexeddb/shared/IDBObjectStoreInfo.cpp: (WebCore::IDBObjectStoreInfo::addExistingIndex):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/IDBIndexUpgradeToV2.mm: (runMultipleIndicesTestWithDatabase): (TEST):
  • TestWebKitAPI/Tests/WebKitCocoa/IDBIndexUpgradeToV2WithMultipleIndices.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/IndexUpgradeWithMultipleIndices.sqlite3: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/IndexUpgradeWithMultipleIndicesHaveSameID.sqlite3: Added.

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

6:23 PM Changeset in webkit [267908] by Alan Coon
  • 5 edits in branches/safari-610-branch/Source

Cherry-pick r267612. rdar://problem/69904365

Crunchyroll playback controls do not work on iPad with trackpad
https://bugs.webkit.org/show_bug.cgi?id=217000
<rdar://problem/66362029>

Reviewed by Wenson Hsieh.

Source/WebCore:

  • platform/RuntimeApplicationChecks.h:
  • platform/cocoa/RuntimeApplicationChecksCocoa.mm: (WebCore::IOSApplication::isCrunchyroll):

Source/WebKit:

  • UIProcess/ios/WKContentViewInteraction.mm: (applicationIsKnownToIgnoreMouseEvents): Add it to the list.

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

6:23 PM Changeset in webkit [267907] by Alan Coon
  • 24 edits in branches/safari-610-branch

Cherry-pick r266028. rdar://problem/69904377

Move node geometry functions from Range to RenderObject
https://bugs.webkit.org/show_bug.cgi?id=215677

Reviewed by Zalan Bujtas.

Source/WebCore:

Moved functions that return quads and rectangles out of Range into RenderObject.
We could find another home for them, but for now they make sense as static member
functions there since RenderObject has the non-static member functions that they
call on multiple nodes. Mostly did not change the design of these functions much,
and was careful not to change behavior at all. But did change a few things:

  • Got rid of the functions that return a single unioned rectangle. Instead callers call unionRect at each call site.
  • Changed the "use selection height" boolean to a BoundingRectBehavior flag.
  • accessibility/AccessibilityRenderObject.cpp: (WebCore::boundsForRects): Call unionRect(RenderObject::absoluteTextRects) instead of Range::absoluteBoundingBox.
  • dom/DocumentMarkerController.cpp: (WebCore::updateRenderedRectsForMarker): Instead of passing "true", pass "RenderObject::BoundingRectBehavior::UseSelectionHeight".
  • dom/Range.cpp: (WebCore::Range::absoluteBoundingBox const): Deleted. (WebCore::Range::absoluteRectsForRangeInText const): Deleted. (WebCore::Range::absoluteTextRects const): Deleted. (WebCore::Range::getClientRects const): Call RenderObject::clientBorderAndTextRects. (WebCore::Range::getBoundingClientRect const): Call unionRect(RenderObject::clientBorderAndTextRects). (WebCore::Range::borderAndTextRects const): Deleted. (WebCore::Range::boundingRect const): Deleted. (WebCore::Range::absoluteBoundingRect const): Deleted.
  • dom/Range.h: Updated for above.
  • dom/SimpleRange.cpp: (WebCore::IntersectingNodeIterator::IntersectingNodeIterator): Fix bug affecting empty ranges by calling enforceEndInvariant. (WebCore::IntersectingNodeIterator::advance): Refactor to call enforceEndInvariant. (WebCore::IntersectingNodeIterator::advanceSkippingChildren): Ditto. (WebCore::IntersectingNodeIterator::enforceEndInvariant): Added.
  • dom/SimpleRange.h: Added enforceEndInvariant.
  • editing/FrameSelection.cpp: (WebCore::FrameSelection::getClippedVisibleTextRectangles const): Instead of passing a useSelectionHeight boolean, pass BoundingRectBehavior.
  • page/TextIndicator.cpp: (WebCore::absoluteBoundingRectForRange): Call unionRectIgnoringZeroRects(RenderObject::absoluteBorderAndTextRects). (WebCore::initializeIndicator): Call RenderObject::absoluteTextRects.
  • platform/graphics/GeometryUtilities.cpp: (WebCore::unionRectIgnoringZeroRects): Added.
  • platform/graphics/GeometryUtilities.h: Updated for above.
  • rendering/RenderLineBreak.h: Marked a lot of functions final. Added a default value for the absoluteQuads out argument.
  • rendering/RenderObject.cpp: (WebCore::RenderObject::addPDFURLRect): Tweaked code style a bit. (WebCore::RenderObject::absoluteTextQuads): Replaced boolean useSelectionHeight argument with a BoundingRectBehavior argument. Also added a downcast so the call to RenderLineBreak::absoluteQuads is a non-virtual function call. (WebCore::absoluteRectsForRangeInText): Added. (WebCore::RenderObject::absoluteTextRects): Replaced boolean useSelectionHeight argument with a BoundingRectBehavior argument. (WebCore::nodeBefore): Added. (WebCore::borderAndTextRects): Added. (WebCore::RenderObject::absoluteBorderAndTextRects): Added. (WebCore::RenderObject::clientBorderAndTextRects): Added.
  • rendering/RenderObject.h: Updated for above.

Source/WebKit:

  • WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp: (WebKit::InjectedBundleRangeHandle::boundingRectInWindowCoordinates const): Call unionRectIgnoringZeroRects(RenderObject::absoluteBorderAndTextRects). (WebKit::InjectedBundleRangeHandle::renderedImage): Call unionRectIgnoringZeroRects(RenderObject::absoluteBorderAndTextRects).
  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::requestEvasionRectsAboveSelection): Call unionRect(RenderObject::absoluteTextRects). (WebKit::WebPage::requestDocumentEditingContext): Call unionRect(RenderObject::absoluteTextRects).

Source/WebKitLegacy/mac:

  • DOM/DOM.mm: (-[DOMRange boundingBox]): Call unionRect(RenderObject::absoluteTextRects).

Source/WebKitLegacy/win:

  • AccessibleTextImpl.cpp: (AccessibleText::scrollSubstringTo): Call unionRect(RenderObject::absoluteTextRects) instead of Range::absoluteBoundingBox.

LayoutTests:

  • fast/dom/Range/scale-page-bounding-client-rect.html: Fix this test that accidentally depended on getting rects for an empty range (the contents of a div element with no text inside it) to instead get rects for a non-empty element (the div element, not just its contents). Test now works correctly, but results don't need to change.
  • fast/dom/Range/scale-page-client-rects.html: Ditto.

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

6:19 PM Changeset in webkit [267906] by Alan Coon
  • 8 edits in branches/safari-610-branch/Source

Versioning.

WebKit-7610.2.9

6:16 PM Changeset in webkit [267905] by Hector Lopez
  • 2 edits in trunk/LayoutTests

[ iOS ] 2 mediacapture-record tests are a constant failure
https://bugs.webkit.org/show_bug.cgi?id=217263

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
6:02 PM Changeset in webkit [267904] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION: [ Catalina wk2 ] imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-peerconnection.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217262

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
5:53 PM Changeset in webkit [267903] by Alan Coon
  • 1 copy in tags/Safari-610.2.8

Tag Safari-610.2.8.

5:18 PM Changeset in webkit [267902] by Keith Rollin
  • 2 edits in trunk

Seeing "usage: basename string [suffix]" spam when using make to build
https://bugs.webkit.org/show_bug.cgi?id=217231
<rdar://problem/69889138>

Reviewed by Darin Adler.

The name of the project being built is no longer displayed when using
XCBuild. Therefore, https://bugs.webkit.org/show_bug.cgi?id=216865
taught the Makefile to perform this logging. The approach took
advantage of a make variable (PATH_FROM_ROOT) that tracks the
relative path from the root of the build hierarchy to the current
project. However, that variable may not be initialized if the build is
not initiated from the root. Therefore, don't count on that variable,
and get the name of the current project by invoking pwd.

  • Makefile.shared:
4:28 PM Changeset in webkit [267901] by Hector Lopez
  • 2 edits in trunk/LayoutTests

REGRESSION(iOS 14): svg/W3C-I18N/tspan-direction-rtl.svg is a constant failure
https://bugs.webkit.org/show_bug.cgi?id=217258

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
4:24 PM Changeset in webkit [267900] by Hector Lopez
  • 2 edits in trunk/LayoutTests

REGRESSION(iOS 14): webgl/1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-video.html is a constant failure
https://bugs.webkit.org/show_bug.cgi?id=217257

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
4:15 PM Changeset in webkit [267899] by Kate Cheney
  • 7 edits in trunk

Multiple calls to suspend media playback for the same page may result in resuming media playback too soon
https://bugs.webkit.org/show_bug.cgi?id=217228
rdar://problem/69709346

Reviewed by Eric Carlson.

Source/WebKit:

Calls to suspend/resume media playback should always be called in
pairs. The current implementation resumes media playback on the first
call to resumeAllMediaPlayback even if multiple calls to suspendAllMediaPlayback
have been made. This patch adds a counter to track how many calls to
suspendAllMediaPlayback have occurred, and only resumes once the
counter reaches 0.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _suspendMediaPlaybackCounter]):
SPI for test purposes.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::suspendAllMediaPlayback):
(WebKit::WebPageProxy::resumeAllMediaPlayback):
Never let the counter get below 0.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::suspendMediaPlaybackCounter):

Tools:

Add API test coverage. Fix the existing SuspendResumeAllMediaPlayback
test which had a small JavaScript bug, and was missing a call to
TestWebKitAPI::Util::run(&didReject) which allowed the bug to go
unnoticed.

  • TestWebKitAPI/Tests/WebKitCocoa/StopSuspendResumeAllMedia.mm:

(TestWebKitAPI::TEST):

3:25 PM Changeset in webkit [267898] by Truitt Savell
  • 28 edits
    10 deletes in trunk

Unreviewed, reverting r267887.

Broke two tests on iOS and Mac

Reverted changeset:

"Add non-animated support for the CSS translate property"
https://bugs.webkit.org/show_bug.cgi?id=216997
https://trac.webkit.org/changeset/267887

2:53 PM Changeset in webkit [267897] by Truitt Savell
  • 12 edits in trunk

Unreviewed, reverting r267817.

Broke two tests on Mac

Reverted changeset:

"Storage Access API: Enable per-page storage access scope and
align test cases"
https://bugs.webkit.org/show_bug.cgi?id=217077
https://trac.webkit.org/changeset/267817

2:26 PM WebKitGTK/2.30.x edited by Adrian Perez de Castro
(diff)
1:59 PM Changeset in webkit [267896] by achristensen@apple.com
  • 7 edits in trunk

Copy host from base file URL
https://bugs.webkit.org/show_bug.cgi?id=217170

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/resources/urltestdata.json:
  • web-platform-tests/url/url-constructor-expected.txt:

Source/WTF:

This matches Chrome and the URL specification.
Covered by newly passing web platform tests.

I also updated the web platform tests from https://github.com/web-platform-tests/wpt/pull/25716
which aligns with Safari in cases except copying of the host from base file URLs.

The implementation pushes copying from the base URL downstream in the parsing process to where it is in the URL specification
so that we can properly decide how much of the base URL to copy and so we can copy it into the right place in the result URL.

I also updated an assertion that makes sure that we re-use the input String if possible because there are cases where we copy
part of the parent URL, which is a "syntax violation" (meaning we copy the string parts and assemble a new one), then re-assemble
a new String that is equal to the input string. This is not a problem, it just needed to be reflected in the assertion.

  • wtf/URLParser.cpp:

(WTF::URLParser::URLParser):
(WTF::URLParser::parse):

1:44 PM Changeset in webkit [267895] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitscmpy] Remove "i" from canonical identifier
https://bugs.webkit.org/show_bug.cgi?id=217238
<rdar://problem/69888017>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/webkitscmpy/commit.py:

(Commit):
(Commit.pretty_print): Remove "i" from canonical identifier, add branch point.
(Commit.repr): Remove "i" from canonical identifier.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/commit_unittest.py:

(TestCommit.test_parse_revision):
(TestCommit.test_parse_identifier):
(TestCommit.test_parse):
(TestCommit.test_pretty_print):

1:35 PM Changeset in webkit [267894] by Peng Liu
  • 2 edits in trunk/Source/WebKit

[Media in GPU Process] Remove requiresTextTrackRepresentation in RemoteMediaPlayerState
https://bugs.webkit.org/show_bug.cgi?id=217230

Reviewed by Jer Noble.

A Web process can figure out whether the fullscreen/picture-in-picture subtitle
layer (for text track representation) is required by itself, so it does not need
to get the information from the GPU process.

  • WebProcess/GPU/media/RemoteMediaPlayerState.h:

(WebKit::RemoteMediaPlayerState::encode const):
(WebKit::RemoteMediaPlayerState::decode):

1:30 PM Changeset in webkit [267893] by weinig@apple.com
  • 24 edits
    2 adds in trunk

Re-align HTMLElement with the HTML spec
https://bugs.webkit.org/show_bug.cgi?id=217202

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/html/dom/idlharness.https-expected.txt:
  • web-platform-tests/svg/types/scripted/event-handler-all-document-element-events-expected.txt:

Update more now passing results.

Source/WebCore:

  • Stops including DocumentAndElementEventHandlers in Element, and instead matches spec and other browsers by having HTMLElement, SVGElement and MathMLElement include it.
  • Splits out ElementContentEditable from HTMLElement and has HTMLElement include it.
  • Splits CSSOM View parts of HTMLElement out into HTMLElement+CSSOMView.idl
  • Re-orders includes to more closely match spec'd order. Has no real effect but made me happy.

Updates results to existing tests that are now passing, all due to the change to
include DocumentAndElementEventHandlers in the Element subclasses, not Element itself.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Element.idl:
  • dom/ElementContentEditable.idl: Added.
  • html/HTMLBodyElement.idl:
  • html/HTMLElement+CSSOMView.idl: Added.
  • html/HTMLElement.idl:
  • html/HTMLFrameSetElement.idl:
  • html/HTMLMediaElement+AudioOutput.idl: Added.
  • html/HTMLMediaElementAudioOutput.idl: Removed.
  • mathml/MathMLElement.idl:
  • svg/SVGElement.idl:

LayoutTests:

  • fast/events/DocumentAndElementEventHandlers-expected.txt:
  • fast/events/DocumentAndElementEventHandlers.html:

Update test to match spec by checking on the HTMLElement prototype, not the
Element prototype.

  • fast/dom/event-handler-attributes-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:

Update more now passing results.

12:23 PM Changeset in webkit [267892] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

[CMake] unused variable warning spam in UIScriptController.h
https://bugs.webkit.org/show_bug.cgi?id=217176

Patch by Philippe Normand <pnormand@igalia.com> on 2020-10-02
Reviewed by Adrian Perez de Castro.

  • DumpRenderTree/Bindings/CodeGeneratorDumpRenderTree.pm:

(_generateImplementationFile): Generate macros for unused variables.

  • TestRunnerShared/UIScriptContext/UIScriptController.h: Remove unused variable names declarations.

(WTR::UIScriptController::doAsyncTask):
(WTR::UIScriptController::ensurePositionInformationIsUpToDateAt):
(WTR::UIScriptController::overridePreference):
(WTR::UIScriptController::zoomToScale):
(WTR::UIScriptController::immediateZoomToScale):
(WTR::UIScriptController::setSafeAreaInsets):
(WTR::UIScriptController::propertiesOfLayerWithID const):
(WTR::UIScriptController::scrollToOffset):
(WTR::UIScriptController::immediateScrollToOffset):
(WTR::UIScriptController::immediateScrollElementAtContentPointToOffset):
(WTR::UIScriptController::touchDownAtPoint):
(WTR::UIScriptController::liftUpAtPoint):
(WTR::UIScriptController::singleTapAtPoint):
(WTR::UIScriptController::singleTapAtPointWithModifiers):
(WTR::UIScriptController::twoFingerSingleTapAtPoint):
(WTR::UIScriptController::doubleTapAtPoint):
(WTR::UIScriptController::dragFromPointToPoint):
(WTR::UIScriptController::longPressAtPoint):
(WTR::UIScriptController::activateAtPoint):
(WTR::UIScriptController::typeCharacterUsingHardwareKeyboard):
(WTR::UIScriptController::keyDown):
(WTR::UIScriptController::toggleCapsLock):
(WTR::UIScriptController::applyAutocorrection):
(WTR::UIScriptController::replaceTextAtRange):
(WTR::UIScriptController::stylusDownAtPoint):
(WTR::UIScriptController::stylusMoveToPoint):
(WTR::UIScriptController::stylusUpAtPoint):
(WTR::UIScriptController::stylusTapAtPoint):
(WTR::UIScriptController::stylusTapAtPointWithModifiers):
(WTR::UIScriptController::sendEventStream):
(WTR::UIScriptController::playBackEventStream):
(WTR::UIScriptController::dismissFilePicker):
(WTR::UIScriptController::setTimePickerValue):
(WTR::UIScriptController::setDefaultCalendarType):
(WTR::UIScriptController::findString):
(WTR::UIScriptController::simulateAccessibilitySettingsChangeNotification):
(WTR::UIScriptController::beginBackSwipe):
(WTR::UIScriptController::completeBackSwipe):
(WTR::UIScriptController::rectForMenuAction const):
(WTR::UIScriptController::attachmentInfo):
(WTR::UIScriptController::insertAttachmentForFilePath):

12:21 PM Changeset in webkit [267891] by Chris Dumez
  • 91 edits
    5 copies in trunk/Source/WebCore

Add stubs for AudioWorkletProcessor and AudioWorkletGlobalScope
https://bugs.webkit.org/show_bug.cgi?id=217194

Reviewed by Sam Weinig.

Add stubs for AudioWorkletProcessor and AudioWorkletGlobalScope:

I had to make some changes to the generated bindings to avoid a naming conflict because there was already a class
named JSAudioWorkletProcessorConstructor (the DOM constructor for JSAudioWorkletProcessor) before I introduced
AudioWorkletProcessorConstructor.idl. We now use "DOMConstructor" suffix in the generated bindings instead of
"Constructor" to avoid the naming conflict.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::registerProcessor):

  • Modules/webaudio/AudioWorkletGlobalScope.h:

(WebCore::AudioWorkletGlobalScope::currentFrame):
(WebCore::AudioWorkletGlobalScope::currentTime const):
(WebCore::AudioWorkletGlobalScope::sampleRate const):

  • Modules/webaudio/AudioWorkletGlobalScope.idl:
  • Modules/webaudio/AudioWorkletProcessor.cpp: Copied from Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.idl.

(WebCore::AudioWorkletProcessor::AudioWorkletProcessor):

  • Modules/webaudio/AudioWorkletProcessor.h: Copied from Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.idl.

(WebCore::AudioWorkletProcessor::create):
(WebCore::AudioWorkletProcessor::port):

  • Modules/webaudio/AudioWorkletProcessor.idl: Copied from Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.idl.
  • Modules/webaudio/AudioWorkletProcessorConstructor.h: Copied from Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.cpp.
  • Modules/webaudio/AudioWorkletProcessorConstructor.idl: Copied from Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.idl.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateRuntimeEnableConditionalStringForExposed):
(GenerateImplementation):
(GenerateCallbackImplementationContent):
(GenerateConstructorDeclaration):
(GenerateConstructorDefinitions):
(GenerateConstructorDefinition):
(GenerateConstructorHelperMethods):

12:12 PM Changeset in webkit [267890] by Russell Epstein
  • 12 edits
    1 delete in branches/safari-611.1.2-branch/Source

Revert r267539. rdar://problem/69891393

10:57 AM Changeset in webkit [267889] by BJ Burg
  • 2 edits in trunk/Source/WebKit

[Cocoa] Web Inspector: add an ObjC protocol for extension support
https://bugs.webkit.org/show_bug.cgi?id=217191
<rdar://problem/69797960>

Reviewed by Timothy Hatcher.

  • UIProcess/API/Cocoa/_WKInspector.h:
10:47 AM Changeset in webkit [267888] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

[GPU Process] fast/canvas/canvas-createPattern-video-loading.html times out
https://bugs.webkit.org/show_bug.cgi?id=217227

Reviewed by Eric Carlson.

Even after supporting createPattern with video elements using the GPU process for both media and canvas
rendering, we still fail this test due to a security error that is thrown when consulting
CanvasRenderingContext::wouldTaintOrigin. This, in turn, is due to the fact that we never attempt to update
cached wouldTaintDocumentSecurityOrigin state on MediaPlayerPrivateRemote, so it remains true.

This change will be covered by fast/canvas/canvas-createPattern-video-loading.html, which should now fail with a
text diff instead of timing out due to lack of support for creating a CanvasPattern out of a video element.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::updateCachedState):

10:26 AM Changeset in webkit [267887] by graouts@webkit.org
  • 28 edits
    10 adds in trunk

Add non-animated support for the CSS translate property
https://bugs.webkit.org/show_bug.cgi?id=216997
<rdar://problem/69597083>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

WPT progressions showing the correct parsing and computed style output of a non-animated "translate" property.
We are also adding some more tests to the invalid "translate" parsing to check that we bail once we get junk
for optional values after valid values.

  • web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • web-platform-tests/css/css-transforms/animation/translate-composition-expected.txt:
  • web-platform-tests/css/css-transforms/animation/translate-interpolation-expected.txt:
  • web-platform-tests/css/css-transforms/parsing/translate-parsing-invalid-expected.txt:
  • web-platform-tests/css/css-transforms/parsing/translate-parsing-invalid.html:
  • web-platform-tests/css/css-transforms/parsing/translate-parsing-valid-expected.txt:
  • web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:

Source/WebCore:

We add non-animated support for the CSS "translate" property as specifed in by the CSS Transforms Level 2
specification (https://drafts.csswg.org/css-transforms-2/#propdef-translate).

Tests: transforms/2d/translate-and-transform-attribute-in-svg.svg

transforms/2d/translate-and-transform-css-property-in-svg.svg
transforms/2d/translate-in-svg.svg
transforms/2d/translate-transform-order.html
transforms/2d/translate-transform-origin-order.html

  • Headers.cmake:
  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::computedTranslate): Create a CSSValueList to print out the computed value for the "translate" property.
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json: Define the "translate" property with the condition that the runtime setting for individual

CSS transform properties is set.

  • css/TransformFunctions.cpp:

(WebCore::translateForValue): Convert a CSSValue to a TranslateTransformOperation when parsing a "translate" property value.

  • css/TransformFunctions.h:
  • css/parser/CSSParserContext.cpp:

(WebCore::CSSParserContext::CSSParserContext): Add a new flag indicating whether the runtime setting for individual
CSS transform properties is set.
(WebCore::operator==):

  • css/parser/CSSParserContext.h:

(WebCore::CSSParserContextHash::hash):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeTranslate): Create a CSSValueList when parsing a "translate" property value.
(WebCore::CSSPropertyParser::parseSingleValue):

  • platform/graphics/transforms/TranslateTransformOperation.h: Promote the apply() method to be public so that it can be called

from Style::ComputedStyleExtractor::valueForPropertyInStyle().

  • rendering/RenderObject.h:

(WebCore::RenderObject::hasTransform const): Consider that having the "translate" property is akin to having a "transform" property
in the render tree.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::setTranslate):
(WebCore::RenderStyle::applyTransform const): Account for the RenderStyle::translate() value in the right order, after applying the
transform origin, but before applying the main transform.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::translate const):
(WebCore::RenderStyle::hasTransformRelatedProperty const):
(WebCore::RenderStyle::initialTranslate):

  • rendering/style/StyleRareNonInheritedData.h:
  • rendering/style/WillChangeData.cpp:

(WebCore::WillChangeData::propertyCreatesStackingContext):

  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertTranslate):

  • svg/SVGGraphicsElement.cpp:

(WebCore::SVGGraphicsElement::animatedLocalTransform const): Account for the RenderStyle::translate() value when rendering SVG, ensuring
that it is applied before the transform specified by either the "transform" CSS property or SVG attribute.

LayoutTests:

Add tests checking that the "translate" CSS property is applied in the correct order related to
"transform-origin" and "transform" and that it is applied in SVG as well.

  • imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/ios-13/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • transforms/2d/translate-and-transform-attribute-in-svg-expected.svg: Added.
  • transforms/2d/translate-and-transform-attribute-in-svg.svg: Added.
  • transforms/2d/translate-and-transform-css-property-in-svg-expected.svg: Added.
  • transforms/2d/translate-and-transform-css-property-in-svg.svg: Added.
  • transforms/2d/translate-in-svg-expected.svg: Added.
  • transforms/2d/translate-in-svg.svg: Added.
  • transforms/2d/translate-transform-order-expected.html: Added.
  • transforms/2d/translate-transform-order.html: Added.
  • transforms/2d/translate-transform-origin-order-expected.html: Added.
  • transforms/2d/translate-transform-origin-order.html: Added.
10:24 AM Changeset in webkit [267886] by Jonathan Bedard
  • 2 edits in trunk/Tools

Update my information in contributors.json

Unreviewed.

  • Scripts/webkitpy/common/config/contributors.json:
9:39 AM Changeset in webkit [267885] by weinig@apple.com
  • 57 edits
    4 copies
    13 deletes in trunk

Remove code behind ENABLE(MEDIA_SESSION), no ports enable it
https://bugs.webkit.org/show_bug.cgi?id=216831

Reviewed by Alex Christensen.

.:

  • Source/cmake/OptionsFTW.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Remove option to build with MEDIA_SESSION, no one was doing it.

Source/WebCore:

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Remove media session related files.

  • Modules/airplay/PlaybackTargetClientContextIdentifier.h: Added.
  • Modules/airplay/WebMediaSessionManager.cpp: Added.
  • Modules/airplay/WebMediaSessionManager.h: Added.
  • Modules/airplay/WebMediaSessionManagerClient.h: Added.
  • Modules/mediasession: Removed.
  • platform/mediasession: Removed.

Delete Modules/mediasession and platform/mediasession. Move files that
were actually used for the WIRELESS_PLAYBACK_TARGET feature to
Modules/airplay where other parts of that feature are implemented.

  • dom/Document.cpp:
  • dom/Document.h:
  • dom/EventTargetFactory.in:
  • html/HTMLMediaElement.cpp:
  • html/HTMLMediaElement.h:
  • page/ChromeClient.h:
  • page/Page.cpp:
  • page/Page.h:
  • testing/Internals.cpp:
  • testing/Internals.h:
  • testing/Internals.idl:

Remove all code inside ENABLE(MEDIA_SESSION).

Source/WebKit:

Removes all code in ENABLE(MEDIA_SESSION) and all media session
related SPI. It was never enabled and nothing ever adopted it.

  • Sources.txt:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:

Remove media session related files.

  • Shared/API/APIObject.h:
  • Shared/API/c/WKBase.h:
  • Shared/WebCoreArgumentCoders.cpp:
  • Shared/WebCoreArgumentCoders.h:
  • Shared/WebMediaSessionMetadata.cpp: Removed.
  • Shared/WebMediaSessionMetadata.h: Removed.
  • UIProcess/API/APIUIClient.h:
  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKContext.cpp:
  • UIProcess/API/C/WKContext.h:
  • UIProcess/API/C/WKMediaSessionFocusManager.cpp: Removed.
  • UIProcess/API/C/WKMediaSessionFocusManager.h: Removed.
  • UIProcess/API/C/WKMediaSessionMetadata.cpp: Removed.
  • UIProcess/API/C/WKMediaSessionMetadata.h: Removed.
  • UIProcess/API/C/WKPage.cpp:
  • UIProcess/API/C/WKPagePrivate.h:
  • UIProcess/API/C/WKPageUIClient.h:
  • UIProcess/WebMediaSessionFocusManager.cpp: Removed.
  • UIProcess/WebMediaSessionFocusManager.h: Removed.
  • UIProcess/WebMediaSessionFocusManagerClient.cpp: Removed.
  • UIProcess/WebMediaSessionFocusManagerClient.h: Removed.
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebProcessPool.cpp:
  • UIProcess/WebProcessPool.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:
  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Remove all code in ENABLE(MEDIA_SESSION).

Tools:

  • Scripts/webkitperl/FeatureList.pm:

Remove support for building with MEDIA_SESSION enabled.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::createOtherPage):
(WTR::TestController::createWebViewWithOptions):
Update names to new 'unused' naming.

LayoutTests:

Remove always skipped Media Session tests.

9:36 AM commit-identifiers edited by Jonathan Bedard
(diff)
9:31 AM commit-identifiers edited by Jonathan Bedard
(diff)
9:30 AM commit-identifiers edited by Jonathan Bedard
(diff)
9:01 AM Changeset in webkit [267884] by weinig@apple.com
  • 5 edits
    7 deletes in trunk/LayoutTests

Remove unhelpful dom-static-property-for-in-iteration.html test
https://bugs.webkit.org/show_bug.cgi?id=217204

Reviewed by Chris Dumez.

Iteration order for builtin attributes, operations and constants of WebIDL
objects is not currently defined, so the test dom-static-property-for-in-iteration.html,
is just testing what we happen to currently do. This is largely unhelpful
and frustrating to maintain as different ports enabling/disabling features
means each port needed a seperate result, and any time something was added, removed
or moved, all the results need to be updated. There are plenty of other tests
that ensure we have these properties, so removing this is not a loss.

  • js/dom/dom-static-property-for-in-iteration-expected.txt: Removed.
  • js/dom/dom-static-property-for-in-iteration.html: Removed.
  • platform/gtk/js/dom/dom-static-property-for-in-iteration-expected.txt: Removed.
  • platform/ios-wk2/TestExpectations:
  • platform/ios-wk2/js/dom/dom-static-property-for-in-iteration-expected.txt: Removed.
  • platform/ios/TestExpectations:
  • platform/mac-wk2/js/dom/dom-static-property-for-in-iteration-expected.txt: Removed.
  • platform/win/TestExpectations:
  • platform/win/js/dom/dom-static-property-for-in-iteration-expected.txt: Removed.
  • platform/wincairo/TestExpectations:
  • platform/wpe/js/dom/dom-static-property-for-in-iteration-expected.txt: Removed.
9:00 AM Changeset in webkit [267883] by Karl Rackler
  • 57 edits
    10 copies
    4 moves
    49 adds in trunk

Unreviewed, reverting r267796.

This change is breaking the build on AzulE debug bots.

Reverted changeset:

"Remove code behind ENABLE(MEDIA_SESSION), no ports enable it"
https://bugs.webkit.org/show_bug.cgi?id=216831
https://trac.webkit.org/changeset/267796

8:58 AM commit-identifiers created by Jonathan Bedard
8:58 AM WikiStart edited by Jonathan Bedard
(diff)
8:57 AM WikiStart edited by Jonathan Bedard
Add link to Commit Identifiers (diff)
8:54 AM Changeset in webkit [267882] by Adrian Perez de Castro
  • 4 edits in trunk

[GTK] Build broken with ENABLE_MEDIA_STREAM enabled and ENABLE_WEB_RTC_DISABLED
https://bugs.webkit.org/show_bug.cgi?id=217128

Reviewed by Philippe Normand.

.:

  • Source/cmake/GStreamerChecks.cmake: Only enable USE_LIBWEBRTC when both

ENABLE_MEDIA_STREAM and ENABLE_WEB_RTC is defined. This prevents trying to
build code that uses libwebrtc types when ENABLE_WEB_RTC is disabled but
ENABLE_MEDIA_STREAM is enabled.

Source/WebCore:

No new tests needed.

  • platform/mediastream/gstreamer/GStreamerAudioData.h: Remove USE(LIBWEBRTC) guard, as

there is nothing specific to WebRTC in this file, and it is needed when building with
ENABLE_MEDIA_STREAM enabled.

8:48 AM Changeset in webkit [267881] by Megan Gardner
  • 4 edits in trunk/Source/WebCore

Rename repaint to repaintSelection in HighlightData for clarity
https://bugs.webkit.org/show_bug.cgi?id=217205

Reviewed by Tim Horton.

No behavior change, covered by existing tests.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::focusedOrActiveStateChanged):

  • rendering/HighlightData.cpp:

(WebCore::HighlightData::repaintSelection const):
(WebCore::HighlightData::repaint const): Deleted.

  • rendering/HighlightData.h:
8:45 AM Changeset in webkit [267880] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Do not use simplified text measuring when soft hyphen is present
https://bugs.webkit.org/show_bug.cgi?id=217224

Reviewed by Antti Koivisto.

Specifically the monospaced fast codepath computes incorrect widht value when soft hyphens are present.

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::canUseSimplifiedTextMeasuring):

  • rendering/RenderText.cpp:

(WebCore::RenderText::computeCanUseSimplifiedTextMeasuring const):

8:29 AM Changeset in webkit [267879] by Adrian Perez de Castro
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed. [GTK] Add missing locale.h header needed for setlocale()

  • jsc.cpp: Add missing locale.h header for the GTK port, which is needed to get the

definition for setlocale() in scope.

8:27 AM Changeset in webkit [267878] by Andres Gonzalez
  • 10 edits in trunk

Layout Test accessibility/mac/html5-input-number.html is flaky.
https://bugs.webkit.org/show_bug.cgi?id=180560
<rdar://problem/36029379>

Reviewed by Chris Fleizach.

Source/WebCore:

Fix for this test in both isolated tree mode on and off.

  • accessibility/AccessibilitySpinButton.h:

AccessibilitySpinButtonPart::roleValue now returns SpinButtonPart role
as it should.

  • accessibility/mac/AccessibilityObjectMac.mm:

(WebCore::Accessibility::createPlatformRoleMap):
Appropriate platform role string for SpinButtonPart role.

Tools:

Dispatch the computation of the role and subrole to secondary AX thread in isolated tree mode = 2.

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::role):
(WTR::AccessibilityUIElement::subrole):

LayoutTests:

SpinButtonPart platform role string is "AXIncrementorArrow".

  • accessibility/mac/html5-input-number-expected.txt:
  • accessibility/mac/html5-input-number.html:

Eliminated flakiness by making test deterministic using Promises. Works
in both isolated tree mode on and off.

  • accessibility/spinbutton-crash-expected.txt:
  • platform/mac/TestExpectations: Test no longer flaky.
7:27 AM Changeset in webkit [267877] by Antti Koivisto
  • 7 edits in trunk/Source/WebCore

[LFC][Integration] Convert rest of Position::inlineBoxAndOffset to use iterator
https://bugs.webkit.org/show_bug.cgi?id=217214

Reviewed by Zalan Bujtas.

Progress towards allowing Position construction in all cases without forcing legacy inline layout.

  • dom/Position.cpp:

(WebCore::InlineBoxAndOffset::InlineBoxAndOffset):
(WebCore::Position::inlineBoxAndOffset const):

  • dom/Position.h:
  • layout/integration/LayoutIntegrationRunIterator.cpp:

(WebCore::LayoutIntegration::RunIterator::setAtEnd):
(WebCore::LayoutIntegration::RunIterator::previousOnLine const):
(WebCore::LayoutIntegration::RunIterator::nextOnLineIgnoringLineBreak const):
(WebCore::LayoutIntegration::RunIterator::previousOnLineIgnoringLineBreak const):
(WebCore::LayoutIntegration::LineRunIterator::traversePreviousOnLine):
(WebCore::LayoutIntegration::LineRunIterator::traverseNextOnLineIgnoringLineBreak):
(WebCore::LayoutIntegration::LineRunIterator::traversePreviousOnLineIgnoringLineBreak):

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::Run::leftmostCaretOffset const):
(WebCore::LayoutIntegration::Run::rightmostCaretOffset const):
(WebCore::LayoutIntegration::Run::direction const):
(WebCore::LayoutIntegration::Run::isLeftToRightDirection const):
(WebCore::LayoutIntegration::Run::bidiLevel const):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LegacyPath::bidiLevel const):
(WebCore::LayoutIntegration::LegacyPath::traversePreviousOnLine):
(WebCore::LayoutIntegration::LegacyPath::setAtEnd):
(WebCore::LayoutIntegration::LegacyPath::isLeftToRightDirection const): Deleted.

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::ModernPath::bidiLevel const):
(WebCore::LayoutIntegration::ModernPath::traverseNextOnLine):
(WebCore::LayoutIntegration::ModernPath::traversePreviousOnLine):
(WebCore::LayoutIntegration::ModernPath::setAtEnd):
(WebCore::LayoutIntegration::ModernPath::line const):
(WebCore::LayoutIntegration::ModernPath::isLeftToRightDirection const): Deleted.

6:51 AM Changeset in webkit [267876] by Adrian Perez de Castro
  • 3 edits in trunk/Source/WebCore

Unreviewed non-unified build fix.

No new tests needed.

  • Modules/webaudio/AudioWorkletMessagingProxy.cpp: Add missing AudioWorkletGlobalScope.h header.
  • worklets/WorkletPendingTasks.cpp: Add missing Worklet.h header.
6:35 AM Changeset in webkit [267875] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK] WPE and backend versions are mixed up in webkit://gpu
https://bugs.webkit.org/show_bug.cgi?id=217210

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2020-10-02
Reviewed by Adrian Perez de Castro.

  • UIProcess/API/glib/WebKitProtocolHandler.cpp:

(WebKit::WebKitProtocolHandler::handleGPU):

6:08 AM WikiStart edited by aakash_jain@apple.com
Updated link to EWS (diff)
5:25 AM Changeset in webkit [267874] by commit-queue@webkit.org
  • 18 edits
    5 deletes in trunk

Unreviewed, reverting r267864.
https://bugs.webkit.org/show_bug.cgi?id=217220

Added broken tests

Reverted changeset:

"[GPU Process] Support drawing text in 2D canvas with font
features"
https://bugs.webkit.org/show_bug.cgi?id=206118
https://trac.webkit.org/changeset/267864

5:03 AM Changeset in webkit [267873] by Carlos Garcia Campos
  • 2 edits in trunk/WebDriverTests

Unreviewed Gardening. Remove expectations for tests fixed in r267872

4:54 AM Changeset in webkit [267872] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebDriver

WebDriver: check the right browser context is open in all commands
https://bugs.webkit.org/show_bug.cgi?id=217177

Reviewed by Carlos Alberto Lopez Perez.

We currently check the top level browsing context for all commands, but the current browsing context should be
checked instead in some of them. New tests added to check this are now failing. This patch changes the way we
were handling the current browsing context, considering nullopt to be the main frame of the current top level
browsing context. Now the null string is used for that, matching what automation expects in the browser and
nullopt means the browser context is closed. That way we can check if the current browser context has been
closed.

  • Session.cpp:

(WebDriver::Session::close): Also close the current browsing context.
(WebDriver::Session::switchToTopLevelBrowsingContext): Initialize the current browsing context to null string.
(WebDriver::Session::switchToBrowsingContext): Just set the given context now.
(WebDriver::Session::go): Pass null string to switchToBrowsingContext().
(WebDriver::Session::back): Ditto.
(WebDriver::Session::forward): Ditto.
(WebDriver::Session::refresh): Ditto.
(WebDriver::Session::closeWindow): Close the current browsing context too.
(WebDriver::Session::switchToFrame): If frame is null check top level browsing context is open, otherwise check
current browsing context.
(WebDriver::Session::findElements): Check current browsing context is open instead of toplevel one.
(WebDriver::Session::getActiveElement): Ditto.
(WebDriver::Session::isElementSelected): Ditto.
(WebDriver::Session::getElementText): Ditto.
(WebDriver::Session::getElementTagName): Ditto.
(WebDriver::Session::getElementRect): Ditto.
(WebDriver::Session::isElementEnabled): Ditto.
(WebDriver::Session::getElementAttribute): Ditto.
(WebDriver::Session::getElementProperty): Ditto.
(WebDriver::Session::getElementCSSValue): Ditto.
(WebDriver::Session::waitForNavigationToComplete): Ditto. Also close the current browsing context when the
window or the frame are closed to do the navigation.
(WebDriver::Session::elementClick): Check current browsing context is open instead of toplevel one.
(WebDriver::Session::elementClear): Ditto.
(WebDriver::Session::elementSendKeys): Ditto.
(WebDriver::Session::getPageSource): Ditto.
(WebDriver::Session::executeScript): Ditto.
(WebDriver::Session::getAllCookies): Ditto.
(WebDriver::Session::addCookie): Ditto.
(WebDriver::Session::deleteCookie): Ditto.
(WebDriver::Session::deleteAllCookies): Ditto.
(WebDriver::Session::performActions): Ditto.
(WebDriver::Session::takeScreenshot): Check current browsing context is open instead of toplevel one when an
element is given.

  • Session.h:
4:44 AM Changeset in webkit [267871] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

[GTK] Fix MiniBrowser compilation warnings
https://bugs.webkit.org/show_bug.cgi?id=217208

Patch by Philippe Normand <pnormand@igalia.com> on 2020-10-02
Reviewed by Carlos Garcia Campos.

webkit_web_context_set_network_proxy_settings() is deprecated in favor of
webkit_website_data_manager_set_network_proxy_settings().
webkit_web_context_set_tls_errors_policy() is deprecated in favor of
webkit_website_data_manager_set_tls_errors_policy().

  • MiniBrowser/gtk/main.c:

(activate):

  • MiniBrowser/wpe/main.cpp:

(main):

2:38 AM Changeset in webkit [267870] by youenn@apple.com
  • 11 edits
    1 add in trunk

Add AVAssetWriter SPI header
https://bugs.webkit.org/show_bug.cgi?id=217169
<rdar://problem/69793050>

Reviewed by Eric Carlson.

Source/WebCore:

No change of behavior, include SPI header instead of private SDK header.

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cocoa/AVAssetWriterSPI.h: Added.

Source/WTF:

  • wtf/PlatformHave.h:

Remove dependency on AVAssetWriter_private.h.
Introduce HAVE_AVASSETWRITERDELEGATE_API for older OSes that only have delegate as SPI.

LayoutTests:

Enable tests by default on Catalina+, disable them on Mojave and WK1.
Disable tests for iOS13.

  • TestExpectations:
  • platform/ios-13/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/mac-wk1/TestExpectations:
12:05 AM Changeset in webkit [267869] by commit-queue@webkit.org
  • 23 edits
    3 adds in trunk

[iOS WK1] Crashes when using ANGLE WebGL from another thread
https://bugs.webkit.org/show_bug.cgi?id=216106
<rdar://problem/68602452>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-10-02
Reviewed by Kenneth Russell.

Source/ThirdParty/ANGLE:

Add two extensions for EAGL and CGL backends to declare the
underlying platform context being "volatile". It means that
the thread-global current context is being modified behind
ANGLE. If ANGLE context is marked volatile for a particular
API, it will sync the underlying context for every EGL
function that needs the context. Most intuitive use is
for the client to call eglMakeCurrent before calling any
gl function if the client knowns the platform state might
be dirty.

Implement eglReleaseThread for EAGL and CGL backends.
Releasing thread will unset the platform current context.

Fix a bug of omitting EGL_ANGLE_device_eagl from being
advertised.

  • extensions/EGL_ANGLE_platform_angle_device_context_volatile_cgl.txt: Added.
  • extensions/EGL_ANGLE_platform_angle_device_context_volatile_eagl.txt: Added.
  • include/EGL/eglext_angle.h:
  • src/libANGLE/Caps.cpp:

(egl::DeviceExtensions::getStrings const):
(egl::ClientExtensions::getStrings const):

  • src/libANGLE/Caps.h:
  • src/libANGLE/Display.cpp:

(egl::Display::prepareForCall):
(egl::Display::releaseThread):
(egl::GenerateClientExtensions):

  • src/libANGLE/Display.h:
  • src/libANGLE/renderer/DisplayImpl.cpp:

(rx::DisplayImpl::prepareForCall):
(rx::DisplayImpl::releaseThread):

  • src/libANGLE/renderer/DisplayImpl.h:
  • src/libANGLE/renderer/gl/cgl/DisplayCGL.h:
  • src/libANGLE/renderer/gl/cgl/DisplayCGL.mm:

(rx::DisplayCGL::initialize):
(rx::DisplayCGL::terminate):
(rx::DisplayCGL::prepareForCall):
(rx::DisplayCGL::releaseThread):
(rx::DisplayCGL::makeCurrent):

  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.h:
  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm:

(rx::DisplayEAGL::initialize):
(rx::DisplayEAGL::terminate):
(rx::DisplayEAGL::prepareForCall):
(rx::DisplayEAGL::releaseThread):

  • src/libANGLE/validationEGL.cpp:
  • src/libGLESv2/entry_points_egl.cpp:
  • src/libGLESv2/entry_points_egl_ext.cpp:

Source/WebCore:

Source of the bug comes from following:

  • WK1 might run WebKit code in client main thread.
  • WK1 might run Webkit code in web thread.
  • WebKit code might run WebGL payload, notably access GraphicsContextGL classes. Client is able to modify EAGL/CGL current context.

The change to ANGLE incurred two distinct behavior changes
compared to raw EAGL / CGL:
1) Before: context was set current before any GL call
After: context was set current only if EGL current context
had been changed. (Explicit code as well as ANGLE implementation
optimization.)

2) Before: context being used was able to be current in
multiple threads at the same time. (EAGL/CGL feature)
After: context cannot be current in multiple threads
at the same time. (EGL feature)

Change in behavior 1) caused ANGLE to sometimes use
the EAGL/CGL context of the client instead of
the real context that ANGLE created.
Fix this by introducing
EGL_ANGLE_platform_angle_device_context_volatile_eagl
and
EGL_ANGLE_platform_angle_device_context_volatile_cgl
which make ANGLE sync the context on each eglMakeCurrent
eglReleaseThread and eglTerminate.

Change in behavior 2) caused ANGLE to use uninitialized
context object from one thread, if the real context object
was current in another thread.
Fix this by considering "GraphicsContextGLOpenGL current context"
as part of "data that is owned by WebCoreThread lock".
The current context is set with lock held, implicitly.
The current context is released when lock is released.
When the lock is not held, GraphicsContextGLOpenGL current context
is nullptr.

Adds soft linking for EAGL for the purpose of testing this in
TestWebKitAPI. The case of Apple Silicon Mac may sometimes
use CGL and sometimes EAGL, and the test should test that
client overriding both contexts will not cause problems.

Fix ANGLE header include path:

  • Do not include ANGLE in the path, as files are included with ANGLE/
  • Add WK_ALTERNATE_FRAMEWORKS_DIR so that SDK_VARIANT=iosmac e.g. maccatalyst builds work

Previously the ANGLE was not included from ThirdParty/ANGLE, rather
"WebKit SDK".

  • Configurations/WebCore.xcconfig:
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::makeContextCurrent):
(WebCore::GraphicsContextGLOpenGL::releaseCurrentContext):
(WebCore::GraphicsContextGLOpenGL::checkGPUStatus):
(WebCore::GraphicsContextGLOpenGL::allowOfflineRenderers const):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/ios/wak/WebCoreThread.mm:

(WebThreadUnlockFromAnyThread):
(_WebThreadUnlock):

Tools:

Add a WK1 test which runs WebGL code both in
client main thread and in web thread.
This tests the case where ANGLE EGL context is
not being held current in one thread while the
other thread runs WebGL and thus ANGLE EGL code.

  • TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitLegacy/ios/WebGLNoCrashOnOtherThreadAccess.mm: Added.

(-[WebGLNoCrashOnOtherThreadAccessWebViewDelegate webViewDidFinishLoad:]):
(-[WebGLNoCrashOnOtherThreadAccessWebViewDelegate webView:shouldStartLoadWithRequest:navigationType:]):
(TestWebKitAPI::TEST):

Oct 1, 2020:

11:47 PM Changeset in webkit [267868] by Lauro Moura
  • 2 edits in trunk/WebDriverTests

[WebDriver] Gardening no_browsing_context failures.

Unreviewed test gardening.

11:14 PM Changeset in webkit [267867] by ysuzuki@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] Masm probe should invoke JIT operation function
https://bugs.webkit.org/show_bug.cgi?id=217199

Reviewed by Mark Lam.

Masm probe function should be invoked via OperationPtrTag since it is invoked from JIT code, and it is native code.
And we should register probe trampoline as JIT operation.

  • assembler/MacroAssemblerARM64.cpp:

(JSC::MacroAssembler::probe):

  • assembler/MacroAssemblerARMv7.cpp:
  • assembler/MacroAssemblerMIPS.cpp:
  • assembler/MacroAssemblerX86Common.cpp:
  • runtime/JSCPtrTag.h:
11:06 PM Changeset in webkit [267866] by commit-queue@webkit.org
  • 4 edits in trunk

update FormData to latest spec webidl
https://bugs.webkit.org/show_bug.cgi?id=171589

Patch by Rob Buis <rbuis@igalia.com> on 2020-10-01
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Update improved test result.

  • web-platform-tests/xhr/formdata-expected.txt:

Source/WebCore:

Change FormData contructor to not take optional, nullable
parameter.

Test: imported/w3c/web-platform-tests/xhr/formdata.html

  • html/DOMFormData.cpp:

(WebCore::DOMFormData::DOMFormData):

  • html/DOMFormData.h:

(WebCore::DOMFormData::create):

  • html/DOMFormData.idl:
6:42 PM Changeset in webkit [267865] by weinig@apple.com
  • 8 edits in trunk

[WebIDL] Add support for non-nullable optional wrapper type arguments to operations
https://bugs.webkit.org/show_bug.cgi?id=217162

Reviewed by Chris Dumez.
Source/WebCore:

The bindings currently treat both nullable and optional wrapper types as
having type WrapperType* (or RefPtr<WrapperType> for callbacks), whereas
non-nullable, non-optional wrapper types are treated as having type WrapperType&
(or Ref<WrapperType> for callbacks). This parallels non wrapper types
which use Optional<Type> for both nullable and optional vs Type for the
non-nullable non-optional variant. In both these cases, there is possibility
for ambiguity, should we ever need to disambiguate between nullable and
optional, but thus far it hasn't come up.

This change adds a missing case where we weren't supporting non-nullable
optional wrapper type arguments to operations. We solve this by expecting
the wrapped implementation to take the optional wrapper type argument the
same way it would take an optional wrapper type argument, with a WrapperType*,
(or RefPtr<WrapperType> for callbacks) that gets passed a nullptr if the
parameter was ommited.

Adopt this in Geolocation.idl, which has had a FIXME for this for a long
time.

  • Modules/geolocation/Geolocation.idl:
  • bindings/scripts/CodeGeneratorJS.pm:
  • bindings/scripts/test/JS/JSTestObj.cpp:
  • bindings/scripts/test/TestObj.idl:

LayoutTests:

  • fast/dom/Geolocation/argument-types.html:
  • fast/dom/Geolocation/argument-types-expected.txt:

Update tests now that the second argument to Geolocation.getCurrentPosition
and Geolocation.watchPosition are non-nullable.

6:16 PM Changeset in webkit [267864] by mmaxfield@apple.com
  • 18 edits
    5 adds in trunk

[GPU Process] Support drawing text in 2D canvas with font features
https://bugs.webkit.org/show_bug.cgi?id=206118

Reviewed by Wenson Hsieh.

Source/WebCore:

This patch simply serializes all the non-derived data in Font and FontPlatformData.

Serializing a CTFont involves serializing its font descriptor's attributes. However,
there's an extra step for web fonts, since the font descriptor's attributes don't include
the raw bytes of the font file. This was previously being saved in Font, but this patch
moves that into FontPlatformData because of layering, and adds the SharedBuffer to the
serialization routine for web fonts.

Test: fast/canvas/fill-text-with-font-features.html

  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSFontFace.cpp:

(WebCore::CSSFontFace::font): Fonts and FontPlatformDatas are supposed to be immutable, so
having a setter for the FontFaceData is incorrect. This object is moved into the constructor
instead.

  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::font): Deleting dead code.

  • platform/graphics/Font.cpp:

(WebCore::Font::setFontFaceData): Deleted.

  • platform/graphics/Font.h:

(WebCore::Font::fontFaceData const): Deleted. Moved to FontPlatformData

  • platform/graphics/FontPlatformData.cpp:

(WebCore::FontPlatformData::FontPlatformData):

  • platform/graphics/FontPlatformData.h:

(WebCore::FontPlatformData::creationData const): Moved from Font.

  • platform/graphics/coretext/FontPlatformDataCoreText.cpp:

(WebCore::FontPlatformData::FontPlatformData):

  • platform/graphics/mac/FontCustomPlatformData.cpp:

(WebCore::FontCustomPlatformData::fontPlatformData): FontCustomPlatformData is a struct, so
there's no need for the m_ prefixes.
(WebCore::createFontCustomPlatformData):

  • platform/graphics/mac/FontCustomPlatformData.h:

(WebCore::FontCustomPlatformData::FontCustomPlatformData): Ditto.

Source/WebKit:

Simply serialize and deserialize all the non-derived data in Font and PlatformFontData.

  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

(IPC::ArgumentCoder<Ref<Font>>::encodePlatformData):
(IPC::ArgumentCoder<Ref<Font>>::decodePlatformData):

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Ref<Font>>::encode):
(IPC::ArgumentCoder<Ref<Font>>::decode):

  • Shared/WebCoreArgumentCoders.h:

LayoutTests:

  • fast/canvas/fill-text-with-font-features-expected.html: Added.
  • fast/canvas/fill-text-with-font-features.html: Added.
  • fast/canvas/resources/FontWithFeatures.ttf: Added.
6:10 PM Changeset in webkit [267863] by Megan Gardner
  • 3 edits
    6 adds in trunk

Repaint as needed when adding and removing highlights
https://bugs.webkit.org/show_bug.cgi?id=217116
Source/WebCore:

<rdar://problem/59076190>

Reviewed by Simon Fraser.

When adding and removing psudo highlights, make sure that the
right areas are repainted.

Test: http/wpt/css/css-highlight-api/highlight-text-repaint.html

  • Modules/highlight/HighlightRangeGroup.cpp:

(WebCore::repaintRange):
(WebCore::HighlightRangeGroup::removeFromSetLike):
(WebCore::HighlightRangeGroup::clearFromSetLike):
(WebCore::HighlightRangeGroup::addToSetLike):

LayoutTests:

Reviewed by Simon Fraser.

  • http/wpt/css/css-highlight-api/highlight-text-repaint-expected.txt: Added.
  • http/wpt/css/css-highlight-api/highlight-text-repaint.html: Added.
  • http/wpt/css/css-highlight-api/highlight-text-replace-expected.html: Removed.
5:18 PM Changeset in webkit [267862] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Limit number of tests to log in case of large number of API test failures
https://bugs.webkit.org/show_bug.cgi?id=217181

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(AnalyzeAPITestsResults.analyzeResults):

4:56 PM Changeset in webkit [267861] by Alan Coon
  • 2 edits in branches/safari-611.1.2-branch/Source/WebCore

Cherry-pick r267848. rdar://problem/69862200

REGRESSION(r267249): Crash in WebPage::updatePreferences() when libwebrtc is not available.
https://bugs.webkit.org/show_bug.cgi?id=217186
<rdar://problem/69817170>

Reviewed by Eric Carlson.

Always check for the presence of libwebrtc before calling into it.

  • platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp: (WebCore::LibWebRTCProvider::setH264HardwareEncoderAllowed): (WebCore::LibWebRTCProviderCocoa::createDecoderFactory): (WebCore::LibWebRTCProviderCocoa::createEncoderFactory): (WebCore::LibWebRTCProviderCocoa::setActive):

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

4:41 PM Changeset in webkit [267860] by Chris Dumez
  • 2 edits in trunk/Tools

[DRT] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/active-processing.https.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=217187

Reviewed by Eric Carlson.

The test sometimes fails with DRT only because window.AudioWorkletNode does not exist. The thing is that
window.AudioWorkletNode only exists in secure contexts. DumpRenderTree::resetWebViewToConsistentState()
was calling [WebFrame globalContext] before each test, which would eagerly create the Window JS wrapper
if it did not exist yet. Because the wrapper would get created too early, its security origin upon
creation was null and we would decide NOT to expose window.AudioWorkletNode.

To address the issue, I updated DumpRenderTree::resetWebViewToConsistentState() to only call
WebCoreTestSupport::resetInternalsObject([mainFrame globalContext]) after each test, instead of doing
it both before AND after. This new behavior is also more consistent with WebKitTestRunner.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebViewToConsistentState):
(runTest):

4:21 PM Changeset in webkit [267859] by Chris Dumez
  • 61 edits
    12 copies
    4 adds in trunk

Add basic infrastructure for AudioWorklet
https://bugs.webkit.org/show_bug.cgi?id=217153

Reviewed by Sam Weinig.

Source/WebCore:

Add basic infrastructure for AudioWorklet:

In particular, this adds a partial but spec-compliant implementation of
Worklet.addModule(), as per:

When Worklet.addModule() is called, we create a AudioWorket thread and
a AudioWorkletGlobalScope with its VM. We then ask the AudioWorkletGlobalScope
to fetch and invoke the worklet script. Note that AudioWorkletGlobalScope
does NOT fetch or invoke the worklet script yet to reduce patch size.

Calling Worklet.addModule() activates the AudioWorklet and causes audio rendering
to occur on the AudioWorkletThread.

A few important things that are still missing in this patch:

  • Fetching & invoking worklet scripts
  • Pretty much all API exposed to AudioWorkletGlobalScopes
  • AudioWorkletProcessor support

No new tests, no Web-facing behavior change yet.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Add new files to projets.

  • Modules/webaudio/AudioWorklet.cpp:

(WebCore::AudioWorklet::create):
(WebCore::AudioWorklet::AudioWorklet):
(WebCore::AudioWorklet::createGlobalScopes):
(WebCore::AudioWorklet::proxy const):

  • Modules/webaudio/AudioWorklet.h:

When the Worklet needs to create a GlobalScope, AudioWorklet takes care of creating a AudioWorkletMessagingProxy.
The AudioWorkletMessagingProxy starts the AudioWorkletThread, which creates the AudioWorkletGlobalScope.
AudioWorkletMessagingProxy takes care of posting tasks from the main thread to the AudioWorkletThread as well.

  • Modules/webaudio/AudioWorkletGlobalScope.cpp: Added.
  • Modules/webaudio/AudioWorkletGlobalScope.h: Added.
  • Modules/webaudio/AudioWorkletGlobalScope.idl: Added.

Add basic implementation for AudioWorkletGlobalScope:

None of the Web API is exposed on the AudioWorkletGlobalScope yet.

  • Modules/webaudio/AudioWorkletMessagingProxy.cpp: Added.
  • Modules/webaudio/AudioWorkletMessagingProxy.h: Added.

Add new AudioWorkletMessagingProxy class (Similar to WorkerMessagingProxy) which starts to AudioWorkletThread
(which constructs the AudioWorkletGlobalScope on that thread) and takes care of posting tasks from the main
thread to the AudioWorkletThread.

  • Modules/webaudio/AudioWorkletThread.cpp: Added.
  • Modules/webaudio/AudioWorkletThread.h: Added.

Add new class which wraps the AudioThread used by AudioWorkets.

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::BaseAudioContext):
Pass document when constructing the AudioWorklet since it is now an ActiveDOMObject.

  • Modules/webaudio/DefaultAudioDestinationNode.cpp:

(WebCore::DefaultAudioDestinationNode::enableInput):
(WebCore::Function<void):
(WebCore::DefaultAudioDestinationNode::startRendering):
(WebCore::DefaultAudioDestinationNode::resume):
(WebCore::DefaultAudioDestinationNode::setChannelCount):

  • Modules/webaudio/DefaultAudioDestinationNode.h:

If AudioWorklet is active, pass a function to AudioDestination::start() that dispatches to the
AudioWorkletThread, so that the AudioDestination can do rendering on the AudioWorkletThead instead
of the device's rendering thread.

  • Modules/webaudio/OfflineAudioDestinationNode.cpp:

(WebCore::OfflineAudioDestinationNode::startRendering):
If AudioWorklet is active, use the AudioWorklet's AudioWorkletThread instead of a new audio thread
to do the offline rendering.

  • bindings/js/WebCoreBuiltinNames.h:

Add AudioWorkletGlobalScope since it is exposed conditionally at runtime to AudioWorkets.

  • bindings/js/WebCoreJSClientData.cpp:

(WebCore::JSVMClientData::JSVMClientData):

  • bindings/js/WebCoreJSClientData.h:

Add code to support AudioWorkletGlobalScope as a GlobalScope in our JS bindings.

  • bindings/js/WorkerScriptController.h:

We now subclass WorkerOrWorkletScriptController interface. This allows WorkletScriptController
to reuse WorkerRunLoop.

  • bindings/scripts/CodeGeneratorJS.pm:

(ShouldUseGlobalObjectPrototype):

  • bindings/scripts/preprocess-idls.pl:

Add support for AudioWorkletGlobalScope as global scope in our JS bindings.

  • css/DOMCSSPaintWorklet.cpp:

(WebCore::PaintWorklet::addModule):
(WebCore::PaintWorklet::createGlobalScopes):

  • css/DOMCSSPaintWorklet.h:
  • dom/Document.cpp:

(WebCore::Document::ensurePaintWorklet):
Update PaintWorklet code so that it keeps building.

  • platform/MediaStrategy.h:
  • platform/audio/AudioDestination.h:

Make AudioDestination ThreadSafeRefCounted so that it can keep itself alive
when dispatching to the AudioWorkletThread for rendering.

  • platform/audio/cocoa/AudioDestinationCocoa.cpp:

(WebCore::AudioDestination::create):
(WebCore::AudioDestinationCocoa::start):
(WebCore::AudioDestinationCocoa::stop):
(WebCore::AudioDestinationCocoa::setIsPlaying):
(WebCore::AudioDestinationCocoa::render):
(WebCore::AudioDestinationCocoa::renderOnRenderingThead):

  • platform/audio/cocoa/AudioDestinationCocoa.h:

When we get a request to render audio, we now use the function provided by
the DefaultAudioDestinationNode to dispatch to the AudioWorkletThread when
needed (AudioWorklet is active) before doing the rendering.

  • platform/audio/gstreamer/AudioDestinationGStreamer.cpp:

(WebCore::AudioDestinationGStreamer::start):

  • platform/audio/gstreamer/AudioDestinationGStreamer.h:
  • platform/mock/MockAudioDestinationCocoa.cpp:

(WebCore::MockAudioDestinationCocoa::start):

  • platform/mock/MockAudioDestinationCocoa.h:

Update code so that it keeps building.

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::underlyingThread const):

  • workers/WorkerGlobalScope.h:
  • workers/WorkerOrWorkletGlobalScope.h: Added.
  • workers/WorkerOrWorkletScriptController.h: Added.

Add new interfaces that are subclassed by Worker and Worklet implementation
classes in order to promote code sharing.

  • workers/WorkerRunLoop.cpp:
  • workers/WorkerRunLoop.h:

Update WorkerRunLoop to use WorkerOrWorkletGlobalScope so that it can be
reused by AudioWorkletThread.

  • worklets/Worklet.cpp:

(WebCore::Worklet::Worklet):
(WebCore::Worklet::document):
(WebCore::Worklet::addModule):
(WebCore::Worklet::finishPendingTasks):
(WebCore::Worklet::activeDOMObjectName const):

  • worklets/Worklet.h:

(WebCore::Worklet::proxies const):

  • worklets/Worklet.idl:

Add initial implementation for addModule():

Make Worklet an ActiveDOMObject since it needs to resolve a JS promise asynchronously.

  • worklets/WorkletGlobalScope.cpp:

(WebCore::WorkletGlobalScope::WorkletGlobalScope):
(WebCore::WorkletGlobalScope::evaluate):
(WebCore::WorkletGlobalScope::completeURL const):
(WebCore::WorkletGlobalScope::fetchAndInvokeScript):

  • worklets/WorkletGlobalScope.h:

(WebCore::WorkletGlobalScope::isAudioWorkletGlobalScope const):

  • worklets/WorkletGlobalScope.idl:

Update WorkletGlobalScope so that it can be subclassed by AudioWorkletGlobalScope and not
be PaintWorklet-specific.

  • worklets/WorkletGlobalScopeProxy.h: Added.

Add WorkletGlobalScopeProxy interface to interact with the WorkletGlobalScope interface.
The purpose of this class is to post tasks to the WorkletGlobalScope, abstracting away
potential threading complexity. Note that AudioWorkets use threading while PaintWorklets
do not.

  • worklets/WorkletPendingTasks.cpp: Added.

(WebCore::WorkletPendingTasks::WorkletPendingTasks):
(WebCore::WorkletPendingTasks::abort):
(WebCore::WorkletPendingTasks::decrementCounter):

  • worklets/WorkletPendingTasks.h: Added.

(WebCore::WorkletPendingTasks::create):
Add implementation for:

While it is not strictly needed right for AudioWorklet (because there is always a single
WorkletGlobalScope), it will be needed once we have proper support for PaintWorklets.
PaintWorklets can have several WorkletGlobalScopes. In the mean time, it allows us to
have code that matches the specification text more closely.

  • worklets/WorkletScriptController.cpp:

(WebCore::WorkletScriptController::WorkletScriptController):
(WebCore::WorkletScriptController::initScript):
(WebCore::WorkletScriptController::releaseHeapAccess):
(WebCore::WorkletScriptController::acquireHeapAccess):
(WebCore::WorkletScriptController::addTimerSetNotification):
(WebCore::WorkletScriptController::removeTimerSetNotification):
(WebCore::WorkletScriptController::scheduleExecutionTermination):
(WebCore::WorkletScriptController::isTerminatingExecution const):

  • worklets/WorkletScriptController.h:

Update WorkletScriptController so that it can be used by AudioWorklets and not just
PaintWorklets.

Source/WebKit:

Update RemoteAudioDestinationProxy to match what was done in AudioDestinationCocoa.
RemoteAudioDestinationProxy is used when the GPU process is enabled.

  • GPUProcess/media/RemoteAudioDestinationManager.cpp:

(WebKit::RemoteAudioDestination::start):

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:

(WebKit::RemoteAudioDestinationProxy::create):
(WebKit::RemoteAudioDestinationProxy::start):
(WebKit::RemoteAudioDestinationProxy::stop):
(WebKit::RemoteAudioDestinationProxy::renderBuffer):

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.h:
  • WebProcess/GPU/media/WebMediaStrategy.cpp:

(WebKit::WebMediaStrategy::createAudioDestination):

  • WebProcess/GPU/media/WebMediaStrategy.h:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebPlatformStrategies.mm:

Source/WebKitLegacy/win:

  • WebCoreSupport/WebPlatformStrategies.cpp:
4:12 PM Changeset in webkit [267858] by don.olmstead@sony.com
  • 18 edits in trunk/Source

Non-unified build fixes, early October 2020 edition
https://bugs.webkit.org/show_bug.cgi?id=217165

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

  • llint/LLIntEntrypoint.h:
  • llint/LLIntSlowPaths.cpp:

Source/WebCore:

  • css/parser/CSSSelectorParser.cpp:
  • display/DisplayTreeBuilder.h:
  • display/DisplayView.cpp:
  • editing/TextManipulationController.cpp:
  • layout/flexformatting/FlexFormattingContext.cpp:
  • layout/flexformatting/FlexFormattingContextGeometry.cpp:
  • layout/inlineformatting/InlineLine.cpp:
  • layout/integration/LayoutIntegrationCoverage.cpp:
  • layout/integration/LayoutIntegrationCoverage.h:
  • platform/graphics/displaylists/DisplayListItems.cpp:
  • platform/graphics/displaylists/DisplayListRecorder.cpp:

Source/WebKit:

  • WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h:
  • WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.cpp:
4:10 PM Changeset in webkit [267857] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WebCore

[PlayStation] Fix build break after r267753
https://bugs.webkit.org/show_bug.cgi?id=217188

Reviewed by Fujii Hironori.

After r267753 the PlayStation builds started failing with an error around a structured
binding declaration of a tuple type.

No new tests. No change in behavior.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::handleDuplicateIndexIDs):

3:40 PM Changeset in webkit [267856] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION (r267814): [ Mojave+ release wk2 ] inspector/console/queryHolders.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217193

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:40 PM Changeset in webkit [267855] by Peng Liu
  • 2 edits in trunk/Source/WebCore

Handle deprecation warnings from libwebrtc headers
https://bugs.webkit.org/show_bug.cgi?id=217126

Reviewed by Tim Horton.

(A follow-up patch) Disable deprecation warnings coming from libwebrtc headers.

  • Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.h:
3:18 PM Changeset in webkit [267854] by msaboff@apple.com
  • 2 edits in trunk/LayoutTests

[macOS/iOS WK2] storage/indexeddb/IDBKey-create-array-buffer-view-oom.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=216960

Reviewed by Saam Barati.

Speculative fix to stop the test from timing out.

  • storage/indexeddb/IDBKey-create-array-buffer-view-oom.html:
2:52 PM Changeset in webkit [267853] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitscmpy] Support git-svn committers
https://bugs.webkit.org/show_bug.cgi?id=217151
<rdar://problem/69812996>

Rubber-stamped by Aakash Jain.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version number.
  • Scripts/libraries/webkitscmpy/webkitscmpy/contributor.py:

(Contributor):
(Contributor.from_scm_log): Handle case where a commit does not contain an author.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/contributor_unittest.py:

(TestContributor):
(TestContributor.test_git_no_author):
(TestContributor.test_git_svn_no_author):

2:20 PM Changeset in webkit [267852] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GLib] Garden webaudio/Convolver/unmmodified-buffer.html flakiness

Unreviewed test gardening.

  • platform/glib/TestExpectations:
1:47 PM Changeset in webkit [267851] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[build.webkit.org] Rename type to factory in config.json
https://bugs.webkit.org/show_bug.cgi?id=217127

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/build.webkit.org-config/config.json:
  • BuildSlaveSupport/build.webkit.org-config/loadConfig.py:

(loadBuilderConfig):

  • BuildSlaveSupport/build.webkit.org-config/loadConfig_unittest.py:
1:22 PM Changeset in webkit [267850] by weinig@apple.com
  • 2 edits in trunk/Source/WebKitLegacy/mac

Remove duplicate definitions of @property (nonatomic) BOOL CSSIndividualTransformPropertiesEnabled
https://bugs.webkit.org/show_bug.cgi?id=217182

Reviewed by Alex Christensen.

When the fix for ​https://webkit.org/b/216271 was landed, it added two definitions of
the CSSIndividualTransformPropertiesEnabled property (though one getter was misnamed), leading
to linker warnings. This removes one of them.

  • WebView/WebPreferences.mm:

(-[WebPreferences cssIndividualTransformPropertiesEnabled]): Deleted.

1:05 PM Changeset in webkit [267849] by Truitt Savell
  • 11 edits
    1 delete in trunk

Unreviewed, reverting r267841.

Broke Catalina Builds

Reverted changeset:

"Add AVAssetWriter SPI header"
https://bugs.webkit.org/show_bug.cgi?id=217169
https://trac.webkit.org/changeset/267841

1:01 PM Changeset in webkit [267848] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r267249): Crash in WebPage::updatePreferences() when libwebrtc is not available.
https://bugs.webkit.org/show_bug.cgi?id=217186
<rdar://problem/69817170>

Reviewed by Eric Carlson.

Always check for the presence of libwebrtc before calling into it.

  • platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:

(WebCore::LibWebRTCProvider::setH264HardwareEncoderAllowed):
(WebCore::LibWebRTCProviderCocoa::createDecoderFactory):
(WebCore::LibWebRTCProviderCocoa::createEncoderFactory):
(WebCore::LibWebRTCProviderCocoa::setActive):

12:59 PM Changeset in webkit [267847] by Antti Koivisto
  • 6 edits in trunk/Source/WebCore

[LFC][Integration] Partially convert Position::inlineBoxAndOffset to use iterator
https://bugs.webkit.org/show_bug.cgi?id=217180

Reviewed by Zalan Bujtas.

This still forces the legacy path as the return type currently requires it.

  • dom/Position.cpp:

(WebCore::searchAheadForBetterMatch):
(WebCore::Position::inlineBoxAndOffset const):

  • layout/integration/LayoutIntegrationRunIterator.cpp:

(WebCore::LayoutIntegration::RunIterator::nextOnLine const):
(WebCore::LayoutIntegration::TextRunIterator::traverseNextTextRun):
(WebCore::LayoutIntegration::lineLayoutSystemFlowForRenderer):
(WebCore::LayoutIntegration::runFor):
(WebCore::LayoutIntegration::TextRunIterator::traverseNextTextRunInVisualOrder): Deleted.

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::TextRunIterator::operator++):
(WebCore::LayoutIntegration::TextRunIterator::nextTextRun const):
(WebCore::LayoutIntegration::TextRunIterator::nextTextRunInTextOrder const):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LegacyPath::traverseNextTextRun):
(WebCore::LayoutIntegration::LegacyPath::traverseNextTextRunInVisualOrder): Deleted.

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::ModernPath::traverseNextTextRun):
(WebCore::LayoutIntegration::ModernPath::traverseNextTextRunInTextOrder):
(WebCore::LayoutIntegration::ModernPath::traverseNextTextRunInVisualOrder): Deleted.

11:52 AM Changeset in webkit [267846] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

stress/put-private-name-invalid-define.js.ftl-eager is getting flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217164

Reviewed by Mark Lam.

JIT operations need to use JITOperationPrologueCallFrameTracer to configure top call frame correctly.
But putById private field JIT operations miss them or use wrong frame tracer. Since we are not setting top frame correctly,
exception object creation from this JIT operations can be broken, and leading to stress/put-private-name-invalid-define.js.ftl-eager crash.
This patch configures top call frame via JITOperationPrologueCallFrameTracer appropriately.

  • jit/JITOperations.cpp:
11:32 AM Changeset in webkit [267845] by Aditya Keerthi
  • 2 edits in trunk/Source/WebKitLegacy/mac

[macCatalyst] Crash when attempting to display a select dropdown in a UIWebView
https://bugs.webkit.org/show_bug.cgi?id=217148
<rdar://problem/64004677>

Reviewed by Darin Adler.

When clicking on a select element in a Catalyst UIWebView, WebKit calls
into UIKit to present a popover. On Catalyst, UIKit popovers call
resignFirstResponder on the current first responder, when presented.
Consequently, when an attempt to display the select dropdown is made,
[WebHTMLView resignFirstResponder] is invoked. This method blurs the
currently focused element, which tells UIKit to destroy the popover.
Destroying the popover while its attempting to become first responder
is not safe, leading to a crash.

In [WebHTMLView resignFirstResponder], clearFocus is only called if
[WebView _isPerformingProgrammaticFocus] is false. UIKit can take
advantage of this to prevent blurring an element if the first
responder is being resigned due to presenting a view associated with
the same element.

However, [WebHTMLView resignFirstResponder] also clears focus on the
current page's FocusController, which can also cause the element to be
blurred. To prevent this, guard the call on the same check as
clearFocus.

Note that this approach to preventing resignFirstResponder from blurring
the focused element is similar to the approach taken in WebKit2.

This change is made for all Cocoa platforms, since _isPerformingProgrammaticFocus
is internal to WebKit and the only time it is true is within a call to
WebChromeClient::makeFirstResponder. That method calls
[WebUIDelegate webView:makeFirstResponder], which states in its
documentation: "responder will always be a view that is in the view
subhierarchy of the top-level web view for this WebView". Consequently,
nextResponderIsInWebView will be true when _isPerformingProgrammaticFocus
is true, meaning the change doesn't affect existing behavior.

No new tests as the functionality is dependent on a UIKit change.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView resignFirstResponder]):

11:28 AM Changeset in webkit [267844] by eric.carlson@apple.com
  • 10 edits
    1 add in trunk

Prevent media capture unless the application has correct data for system permission prompt
https://bugs.webkit.org/show_bug.cgi?id=217104
<rdar://problem/69761929>

Reviewed by Darin Adler.

Source/WebKit:

Tested manually with MiniBrowser.

  • SourcesCocoa.txt:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::requestAVCaptureAccessForMediaType): Renamed from requestAccessForMediaType.
(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): Deny
requests of the application is not permitted to capture. Restructure logic to
make it easier to understand.
(WebKit::requestAccessForMediaType): Deleted.

  • UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm: Added.

(WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureAudio): Check
for required Info.plist string.
(WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureVideo): Ditto.

  • UIProcess/Cocoa/WebPageProxyCocoa.mm: Update for unified build.
  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureAudio):
(WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureVideo):

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • WebKit.xcodeproj/project.pbxproj:

Tools:

  • MiniBrowser/mac/Info.plist: Add necessary entitlements and usage strings.
  • MobileMiniBrowser/MobileMiniBrowserFramework/WebViewController.m:

(-[WebViewController createWebView]): Setting the private capture preference is
not necessary because we set configuration._mediaCaptureEnabled.

11:23 AM Changeset in webkit [267843] by Karl Rackler
  • 2 edits in trunk/LayoutTests

[ iOS 13 wk2 ews ]: 2 in-app-browser-privacy and 1 WPT are constant failures slowing down ews
https://bugs.webkit.org/show_bug.cgi?id=217184

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
10:42 AM Changeset in webkit [267842] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

REGRESSION(r267781): ASSERTION FAILED: Optional.h(525) : T *WTF::Optional<WebCore::Layout::LineRun::Text>::operator->() on 16 fast/layoutformattingcontext/* tests
https://bugs.webkit.org/show_bug.cgi?id=217143

Reviewed by Zalan Bujtas.

Need to test the Optional<> text() in dumping code.

  • display/css/DisplayTextBox.cpp:

(WebCore::Display::TextBox::debugDescription const):

10:28 AM Changeset in webkit [267841] by youenn@apple.com
  • 11 edits
    1 add in trunk

Add AVAssetWriter SPI header
https://bugs.webkit.org/show_bug.cgi?id=217169
<rdar://problem/69793050>

Reviewed by Eric Carlson.

Source/WebCore:

No change of behavior, include SPI header instead of private SDK header.

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cocoa/AVAssetWriterSPI.h: Added.

Source/WTF:

  • wtf/PlatformHave.h:

Remove dependency on AVAssetWriter_private.h

LayoutTests:

Enable tests by default on Catalina+, disable them on Mojave and WK1.
Disable tests for iOS13.

  • TestExpectations:
  • platform/ios-13/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/mac-wk1/TestExpectations:
10:26 AM Changeset in webkit [267840] by Peng Liu
  • 6 edits
    1 delete in trunk/Source/WebKit

[Media in GPU Process] Enable IPC message handlers of RemoteAudioSession
https://bugs.webkit.org/show_bug.cgi?id=217144

Reviewed by Jer Noble.

This patch enables the RemoteAudioSession in the Web process to handle
IPC messages from the GPU process. It also fixes a bug preventing the
audio playback to start.

No new tests, no functional change.

  • GPUProcess/media/RemoteAudioSessionProxyManager.cpp:

(WebKit::RemoteAudioSessionProxyManager::tryToSetActiveForProcess):
Don't interrupt the audio session trying to start.

  • GPUProcess/media/RemoteAudioSessionProxyManager.messages.in: Removed.
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::dispatchMessage): Clean-up.

  • WebProcess/GPU/media/RemoteAudioSession.cpp:

(WebKit::RemoteAudioSession::RemoteAudioSession):
(WebKit::RemoteAudioSession::~RemoteAudioSession):
We need to remove the "destinationID" parameter, otherwise, RemoteAudioSession
won't receive the IPC messages.

  • WebProcess/GPU/media/RemoteAudioSession.h: Clean-up.
  • WebProcess/GPU/media/WebMediaStrategy.h: Clean-up.
10:20 AM Changeset in webkit [267839] by youenn@apple.com
  • 4 edits
    2 adds in trunk

RealtimeMediaSource should ignore ideal values outside the min/max range
https://bugs.webkit.org/show_bug.cgi?id=217178

Reviewed by Eric Carlson.

Source/WebCore:

Make valueForDiscreteCapabilityValues returns an Optional in case no valid value can be selected from the constraint.
This basically means the constraint will be ignored.
Before the patch, in case of no valid value, 0 will be set, which is a bad value for sample rate.

Test: fast/mediastream/audio-bad-sampleRate.html

  • platform/mediastream/MediaConstraints.h:

(WebCore::NumericConstraint::valueForDiscreteCapabilityValues const):

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::applyNumericConstraint):

LayoutTests:

  • fast/mediastream/audio-bad-sampleRate-expected.txt: Added.
  • fast/mediastream/audio-bad-sampleRate.html: Added.
10:07 AM Changeset in webkit [267838] by youenn@apple.com
  • 6 edits
    2 adds in trunk

getUserMedia with sampleRate constraints may fail
https://bugs.webkit.org/show_bug.cgi?id=217147
<rdar://problem/69831144>

Reviewed by Eric Carlson.

In case of new capture, make sure to reset sample rate and volume to default values.
This ensures that a sample rate that will fail the capture will not stick for other pages.
Manually tested.

  • platform/mediastream/mac/BaseAudioSharedUnit.cpp:

(WebCore::BaseAudioSharedUnit::prepareForNewCapture):

10:05 AM Changeset in webkit [267837] by achristensen@apple.com
  • 12 edits in trunk

Non-special URLs are not idempotent
https://bugs.webkit.org/show_bug.cgi?id=215762

Reviewed by Tim Horton.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/url-constructor-expected.txt:
  • web-platform-tests/url/url-setters-expected.txt:

Source/WTF:

https://github.com/whatwg/url/pull/505 added an interesting edge case to the URL serialization:
"If url’s host is null, url’s path’s size is greater than 1, and url’s path[0] is the empty string, then append U+002F (/) followed by U+002E (.) to output."
The problem was that URLs like "a:/a/..//a" would be parsed into "a://a" with a pathname of "a" and an empty host. If "a://a" was then reparsed, it would again have an href of "a://a"
but its host would be "a" and it would have an empty path. There is consensus that URL parsing should be idempotent, so we need to do something different here.
According to https://github.com/whatwg/url/issues/415#issuecomment-419197290 this follows what Edge did (and then subsequently abandoned when they switched to Chromium)
to make URL parsing idempotent by adding "/." before the path in the edge case of a URL with a non-special scheme (not http, https, wss, etc.) and a null host and a non-empty path that
has an empty first segment. All the members of the URL remain unchanged except the full serialization (href). This is not important in practice, but important in theory.

Our URL parser tries very hard to use the exact same WTF::String object given as input if it can. However, this step is better implemented as a post-processing step that will almost never happen
because otherwise we would have to parse the entire path twice to find out if we need to add "./" or if the "./" that may have already been there needs to stay. This is illustrated with the test URL
"t:/.//p/../../../..//x" which does need the "./".

In the common case, this adds one well-predicted branch to URL parsing, so I expect performance to be unaffected. Since this is such a rare edge case of URLs, I expect no compatibility problems.

  • wtf/URL.cpp:

(WTF::URL::pathStart const):

  • wtf/URL.h:

(WTF::URL::pathStart const): Deleted.

  • wtf/URLParser.cpp:

(WTF::URLParser::copyURLPartsUntil):
(WTF::URLParser::URLParser):
(WTF::URLParser::needsNonSpecialDotSlash const):
(WTF::URLParser::addNonSpecialDotSlash):

  • wtf/URLParser.h:

Tools:

  • TestWebKitAPI/Tests/WTF/URLParser.cpp:

(TestWebKitAPI::TEST_F):

10:03 AM Changeset in webkit [267836] by youenn@apple.com
  • 3 edits in trunk/LayoutTests

http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=217171
<rdar://problem/65085139>

Reviewed by Eric Carlson.

  • http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html:

Setting the video currentTime too close to the end makes it render transparent frames.
Make it so that we try using the middle of the video content where we expect green content.

8:29 AM EarlyWarningSystem edited by aakash_jain@apple.com
(diff)
8:05 AM Changeset in webkit [267835] by Adrian Perez de Castro
  • 3 edits in trunk/Source/WebCore

Unreviewed. Add missing guard around ModernPath usage.

No new tests needed.

  • layout/integration/LayoutIntegrationRunIterator.cpp: Add ENABLE(LAYOUT_FORMATTING_CONTEXT)

guard around usage of the ModernPath type.

  • layout/integration/LayoutIntegrationRunIterator.h: Ditto.
7:41 AM Changeset in webkit [267834] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Remove redundant "needs hyphen" flag from LineContent::PartialContent
https://bugs.webkit.org/show_bug.cgi?id=217155

Reviewed by Antti Koivisto.

The last run already had this information. This is also in preparation for adding support for soft-hyphen where
the run with the hyphen is not partial at all.
(This patch also changes Optional<size_t> partialContentLength to just size_t. Optional<> may suggest that 0 is a valid overflow length.)

  • display/css/DisplayTextBox.cpp:

(WebCore::Display::TextBox::debugDescription const):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::layoutInlineContent):
(WebCore::Layout::LineBuilder::placeInlineContent):
(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::nextContentForLine):
(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):

  • layout/inlineformatting/InlineLineBuilder.h:
7:09 AM Changeset in webkit [267833] by youenn@apple.com
  • 15 edits in trunk

MediaRecorder should support MediaRecorderOptions.mimeType
https://bugs.webkit.org/show_bug.cgi?id=215018
<rdar://problem/66681508>

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/mediacapture-record/MediaRecorder-mimetype-expected.txt:

Source/WebCore:

Instead of setting mime type right away, set it just before firing start event as per spec.
This will allow in the future to populate exact codec parameters if proven useful.

Covered by rebased and updated tests.

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::create):
(WebCore::MediaRecorder::startRecording):

  • platform/mediarecorder/MediaRecorderPrivate.h:

(WebCore::MediaRecorderPrivate::startRecording):

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:

Source/WebKit:

Update code to pass mimeType as part of startRecording callback.

  • GPUProcess/webrtc/RemoteMediaRecorder.h:

(WebKit::RemoteMediaRecorder::mimeType const):

  • GPUProcess/webrtc/RemoteMediaRecorderManager.cpp:

(WebKit::RemoteMediaRecorderManager::createRecorder):

  • GPUProcess/webrtc/RemoteMediaRecorderManager.h:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.messages.in:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:

(WebKit::MediaRecorderPrivate::startRecording):

  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:

LayoutTests:

Update test to expect setting of the mime type after start event.

  • http/wpt/mediarecorder/mimeType.html:
5:33 AM Changeset in webkit [267832] by Andres Gonzalez
  • 8 edits in trunk

Make AXLoadingEvent notifications asynchronous.
https://bugs.webkit.org/show_bug.cgi?id=217157

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/loading-iframe-sends-notification-expected.html.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::frameLoadingEventNotification):
Removed the isolated tree update from the frame loading notification
handler. This avoids updating the isolated tree synchronously.

  • accessibility/AXObjectCache.h:

Added AXNotification::AXFrameLoadComplete.

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::updateChildren):

  • accessibility/mac/AXObjectCacheMac.mm:

(WebCore::AXPostNotificationWithUserInfo):
Do not ignore AXLoadCompleteNotifications during LayoutTest.

(WebCore::AXObjectCache::postPlatformNotification):
Handle AXFrameLoadComplete notification as a AXLoadComplete notification.

(WebCore::AXObjectCache::frameLoadingEventPlatformNotification):
Loading finished event is now mapped to either AXLoadComplete or AXFrameLoadComplete.

LayoutTests:

  • accessibility/loading-iframe-sends-notification-expected.txt:
  • accessibility/loading-iframe-sends-notification.html:
5:17 AM Changeset in webkit [267831] by Carlos Garcia Campos
  • 175 edits
    1 copy
    2 moves
    22 adds
    2 deletes in trunk

Unreviewed. Update W3C WebDriver imported tests.

Tools:

  • Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py:

(WebKitDriverProtocol):
(WebDriverW3CExecutor.init):
(WebDriverW3CExecutor.setup):

WebDriverTests:

  • TestExpectations.json:
  • imported/w3c/importer.json:
  • imported/w3c/tools/webdriver/:
  • imported/w3c/tools/wptrunner/:
  • imported/w3c/webdriver/:
5:16 AM Changeset in webkit [267830] by Antti Koivisto
  • 7 edits in trunk/Source/WebCore

[LFC][Integration] Add LineRunIterator
https://bugs.webkit.org/show_bug.cgi?id=217125

Reviewed by Zalan Bujtas.

Add LineRunIterator iterating line content.
Also remove end offset from modern path, instead set index to the content end position
in traversal functions.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::textRunsFor const):
(WebCore::LayoutIntegration::LineLayout::runFor const):

  • layout/integration/LayoutIntegrationRunIterator.cpp:

(WebCore::LayoutIntegration::TextRunIterator::traverseNextTextRunInVisualOrder):
(WebCore::LayoutIntegration::TextRunIterator::traverseNextTextRunInTextOrder):
(WebCore::LayoutIntegration::LineRunIterator::LineRunIterator):
(WebCore::LayoutIntegration::LineRunIterator::traverseNextOnLine):
(WebCore::LayoutIntegration::lineRun):
(WebCore::LayoutIntegration::RunIterator::traverseNextTextRunInVisualOrder): Deleted.
(WebCore::LayoutIntegration::RunIterator::traverseNextTextRunInTextOrder): Deleted.

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::TextRun::legacyInlineBox const):
(WebCore::LayoutIntegration::LineRunIterator::LineRunIterator):
(WebCore::LayoutIntegration::LineRunIterator::operator++):
(WebCore::LayoutIntegration::Run::legacyInlineBox const):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LegacyPath::traverseNextOnLine):
(WebCore::LayoutIntegration::LegacyPath::legacyInlineBox const):

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::ModernPath::ModernPath):
(WebCore::LayoutIntegration::ModernPath::isLastTextRunOnLine const):
(WebCore::LayoutIntegration::ModernPath::isLastTextRun const):
(WebCore::LayoutIntegration::ModernPath::traverseNextTextRunInVisualOrder):
(WebCore::LayoutIntegration::ModernPath::traverseNextTextRunInTextOrder):
(WebCore::LayoutIntegration::ModernPath::traverseNextOnLine):
(WebCore::LayoutIntegration::ModernPath::atEnd const):
(WebCore::LayoutIntegration::ModernPath::legacyInlineBox const):
(WebCore::LayoutIntegration::ModernPath::setAtEnd):

4:32 AM Changeset in webkit [267829] by svillar@igalia.com
  • 9 edits in trunk

[css-flexbox] Implement row-gap and column-gap for flex layout
https://bugs.webkit.org/show_bug.cgi?id=206767

Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-flexbox/gap-017-expected.txt: Replaced FAIL by PASS expectation.

Source/WebCore:

Implement row/column-gap for flexboxes which allow authors to define gutters between flex items and also between flex lines.

Inspired by Blink's crrev.com/c/2162149 and crrev.com/c/2172758 by <dgrogan@chromium.org>

  • rendering/FlexibleBoxAlgorithm.cpp:

(WebCore::FlexLayoutAlgorithm::FlexLayoutAlgorithm): Takes two new parameters with row/column gap lengths.
(WebCore::FlexLayoutAlgorithm::computeNextFlexLine): Add gaps to hypothetical and flex base sizes in between items.

  • rendering/FlexibleBoxAlgorithm.h: Added two new attributes to store gaps.
  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::computeIntrinsicLogicalWidths const): Add gaps to the intrinsic width.
(WebCore::RenderFlexibleBox::repositionLogicalHeightDependentFlexItems): Take gap between lines as argument.
(WebCore::RenderFlexibleBox::layoutFlexItems): Take gap between lines as argument.
(WebCore::RenderFlexibleBox::layoutAndPlaceChildren): Compute gaps to reduce the remaining free space.
(WebCore::RenderFlexibleBox::alignFlexLines): Add gap between lines to the line offset.
(WebCore::RenderFlexibleBox::computeGap const): Returns either the row-gap or the column-gap depending on the flex direction.

  • rendering/RenderFlexibleBox.h:

LayoutTests:

4:25 AM Changeset in webkit [267828] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

[iOS] MediaRecorder incorrect screen orientation handling
https://bugs.webkit.org/show_bug.cgi?id=198912
<rdar://problem/51802521>

Reviewed by Eric Carlson.

We were setting the transform to the writer input too soon.
Buffer the transform when receiving the first frame and set it at creation of the writer input.

Covered by http/wpt/mediarecorder/video-rotation.html now actually passing.

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(WebCore::MediaRecorderPrivateWriter::startAssetWriter):
(WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):

4:03 AM Changeset in webkit [267827] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Define Array#sort's implementation functions as globalPrivate
https://bugs.webkit.org/show_bug.cgi?id=217168

Reviewed by Ross Kirsling.

Now, these Array#sort's implementation functions are not capturing any heap variables. So we can make them @globalPrivate,
this avoids function allocations in LLInt / Baseline / DFG in Array#sort.

  • builtins/ArrayPrototype.js:

(globalPrivate.sortMin):
(globalPrivate.sortStringComparator):
(globalPrivate.sortCompact):
(globalPrivate.sortCommit):
(globalPrivate.sortMerge):
(globalPrivate.sortMergeSort):
(globalPrivate.sortBucketSort):
(sort):
(sort.min): Deleted.
(sort.stringComparator): Deleted.
(sort.compact): Deleted.
(sort.commit): Deleted.
(sort.merge): Deleted.
(sort.mergeSort): Deleted.
(sort.bucketSort): Deleted.

3:51 AM Changeset in webkit [267826] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Do not use std::function in setPrivateField and definePrivateField
https://bugs.webkit.org/show_bug.cgi?id=217167

Reviewed by Ross Kirsling.

std::function can potentially allocate an object in heap. We should should just pass lambda with a templatized parameter instead.

  • jit/JITOperations.cpp:

(JSC::setPrivateField):
(JSC::definePrivateField):

3:38 AM Changeset in webkit [267825] by youenn@apple.com
  • 27 edits
    2 adds in trunk

MediaRecorder should support isTypeSupported
https://bugs.webkit.org/show_bug.cgi?id=216856
LayoutTests/imported/w3c:

Reviewed by Darin Adler.

  • web-platform-tests/mediacapture-record/MediaRecorder-mimetype-expected.txt:
  • web-platform-tests/mediacapture-record/MediaRecorder-peerconnection.https-expected.txt:
  • web-platform-tests/mediacapture-record/idlharness.window-expected.txt:
  • web-platform-tests/mediacapture-record/passthrough/MediaRecorder-passthrough.https-expected.txt:
  • web-platform-tests/mediacapture-record/passthrough/MediaRecorder-passthrough.https.html:

Remove JS console log error line.

Source/WebCore:

<rdar://problem/69767695>

Reviewed by Darin Adler.

Introduce MediaRecorder::isMimeTypeSupported whose result is exposed as MediaRecoder.isTypeSupported.
Cocoa port allows mp4 audio and video mime types, with H264 and AAC codecs.
Add a routine to get the mime type from the MediaRecorderPrivate.
Store it in MediaRecorder and add a mimeType getter.

Test: http/wpt/mediarecorder/mimeType.html

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::isTypeSupported):
(WebCore::MediaRecorder::create):

  • Modules/mediarecorder/MediaRecorder.h:
  • Modules/mediarecorder/MediaRecorder.idl:
  • Modules/mediarecorder/MediaRecorderProvider.cpp:

(WebCore::MediaRecorderProvider::isSupported):

  • Modules/mediarecorder/MediaRecorderProvider.h:
  • platform/mediarecorder/MediaRecorderPrivate.h:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::mimeType const):

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
  • platform/mediarecorder/MediaRecorderPrivateMock.cpp:

(WebCore::MediaRecorderPrivateMock::mimeType const):

  • platform/mediarecorder/MediaRecorderPrivateMock.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(WebCore::MediaRecorderPrivateWriter::mimeType const):

  • platform/mediastream/MediaStreamPrivate.h:

Source/WebKit:

<rdar://problem/69767695>

Reviewed by Darin Adler.

Stop passing mimeType for each data blob.
Instead, compute it on WebProcess side.

  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:

(WebKit::RemoteMediaRecorder::fetchData):

  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.messages.in:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:

(WebKit::MediaRecorderPrivate::MediaRecorderPrivate):
(WebKit::MediaRecorderPrivate::fetchData):
(WebKit::MediaRecorderPrivate::mimeType const):

  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:

LayoutTests:

Reviewed by Darin Adler.

  • http/wpt/mediarecorder/mimeType-expected.txt: Added.
  • http/wpt/mediarecorder/mimeType.html: Added.
1:10 AM Changeset in webkit [267824] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[Flatpak] Nightly runner requires user interaction
https://bugs.webkit.org/show_bug.cgi?id=217092

Patch by Philippe Normand <pnormand@igalia.com> on 2020-10-01
Reviewed by Carlos Alberto Lopez Perez.

  • Scripts/webkit-flatpak-run-nightly: The most recent version is 0.3 currently, this is the

branch that should be installed. At some point we could add a new option to override this
though.

12:53 AM Changeset in webkit [267823] by sihui_liu@apple.com
  • 5 edits in trunk/Source/WebCore

Drop some unnecessary code in SQLiteIDBBackingStore and IDBServer
https://bugs.webkit.org/show_bug.cgi?id=214992
<rdar://problem/66648514>

Reviewed by Brady Eidson.

No behavior change. Paths of SQLiteIDBBackingStore and IDBServer are only accessed from one thread now, so we
don't need to make isolated copy.

  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::createBackingStore):
(WebCore::IDBServer::IDBServer::getAllDatabaseNamesAndVersions):
(WebCore::IDBServer::IDBServer::removeDatabasesModifiedSinceForVersion):
(WebCore::IDBServer::IDBServer::removeDatabasesWithOriginsForVersion):
(WebCore::IDBServer::IDBServer::renameOrigin):
(WebCore::IDBServer::IDBServer::upgradeFilesIfNecessary):

  • Modules/indexeddb/server/IDBServer.h:

(WebCore::IDBServer::IDBServer::databaseDirectoryPathIsolatedCopy const): Deleted.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::fullDatabaseDirectoryWithUpgrade):
(WebCore::IDBServer::SQLiteIDBBackingStore::deleteBackingStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::databaseNameFromEncodedFilename): Deleted.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:
12:34 AM Changeset in webkit [267822] by youenn@apple.com
  • 5 edits in trunk

MediaRecorder should allow setting low bit rates for audio
https://bugs.webkit.org/show_bug.cgi?id=216688
<rdar://problem/69129142>

Reviewed by Eric Carlson.

Source/WebCore:

When setting the bitrate provided by the web app fails, we now use default bit rate values that are expected to work properly.
Covered by updated tests.

  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.h:
  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:

(WebCore::AudioSampleBufferCompressor::setBitsPerSecond):
(WebCore::AudioSampleBufferCompressor::defaultOutputBitRate const):
(WebCore::AudioSampleBufferCompressor::initAudioConverterForSourceFormatDescription):

LayoutTests:

Add more bitrate tests.

  • http/wpt/mediarecorder/MediaRecorder-audio-bitrate.html:

Sep 30, 2020:

11:48 PM Changeset in webkit [267821] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Remove responseIsXML
https://bugs.webkit.org/show_bug.cgi?id=217133

Patch by Rob Buis <rbuis@igalia.com> on 2020-09-30
Reviewed by Darin Adler.

Remove responseIsXML method, it can be inlined and is still readable, also
it in one case this avoids calling the non trivial responseMIMEType.

No new tests. No change in behavior.

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::createDecoder const):
(WebCore::XMLHttpRequest::responseIsXML const): Deleted.

  • xml/XMLHttpRequest.h:
10:15 PM Changeset in webkit [267820] by ysuzuki@apple.com
  • 22 edits
    3 deletes in trunk/Source/JavaScriptCore

[JSC] We should not tag C function with JIT code related ptr tag
https://bugs.webkit.org/show_bug.cgi?id=217150

Reviewed by Mark Lam.

We are tagging getHostCallReturnValue function with JIT related PtrTag. As a part of JIT-caging effort, we are restricting our
PtrTag usage more for code types (e.g. JIT code should be tagged with JIT related PtrTag). So, we should not tag getHostCallReturnValue
with that. This patch implements getHostCallReturnValue in JIT code if JIT is enabled. If not, it is implemented by LLInt.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • bytecode/BytecodeList.rb:
  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::Footer::offsetOfVM):

  • heap/PreciseAllocation.h:

(JSC::PreciseAllocation::offsetOfWeakSet):

  • heap/WeakSet.h:

(JSC::WeakSet::offsetOfVM):

  • jit/HostCallReturnValue.cpp: Removed.
  • jit/HostCallReturnValue.h: Removed.
  • jit/JITOperations.cpp:
  • jit/JITOperationsMSVC64.cpp: Removed.
  • jit/JITStubsMSVC64.asm:
  • llint/LLIntEntrypoint.cpp:

(JSC::LLInt::getHostCallReturnValueEntrypoint):

  • llint/LLIntEntrypoint.h:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::handleHostCall):
(JSC::LLInt::commonCallEval):

  • llint/LLIntThunks.cpp:

(JSC::LLInt::getHostCallReturnValueThunk):

  • llint/LLIntThunks.h:
  • llint/LowLevelInterpreter.cpp:

(JSC::CLoop::execute):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSCellInlines.h:

(JSC::tryAllocateCellHelper):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::offsetOfVM):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:

(JSC::VM::offsetOfEncodedHostCallReturnValue):

9:44 PM Changeset in webkit [267819] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GLIB] Missing bits from last gardening

Unreviewed test gardening.

  • platform/gtk/TestExpectations:
9:35 PM Changeset in webkit [267818] by Peng Liu
  • 3 edits in trunk/Source/WebKit

[Media in GPU Process] Enable IPC message handlers of RemoteMediaSessionHelper
https://bugs.webkit.org/show_bug.cgi?id=217152

Reviewed by Eric Carlson.

  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::dispatchMessage):

  • WebProcess/GPU/media/ios/RemoteMediaSessionHelper.cpp:

(WebKit::RemoteMediaSessionHelper::RemoteMediaSessionHelper):

8:21 PM Changeset in webkit [267817] by wilander@apple.com
  • 12 edits in trunk

Storage Access API: Enable per-page storage access scope and align test cases
https://bugs.webkit.org/show_bug.cgi?id=217077
<rdar://problem/69017878>

Reviewed by Brent Fulgham.

It was decided in https://github.com/privacycg/storage-access/issues/3 that
browsers should grant storage access for all same-site resources on the whole
page, not just the requesting iframe.

Source/WebCore:

No new tests. Existing tests aligned, including
LayoutTests/http/tests/storageAccess/request-and-grant-access-with-per-page-scope-access-from-another-frame.html
which no longer calls
internals.settings.setStorageAccessAPIPerPageScopeEnabled(true)
to opt in to the setting that is now the default.

  • dom/DocumentStorageAccess.cpp:

(WebCore::DocumentStorageAccess::requestStorageAccess):

Changed the settings check to do the reverse, i.e. assume
per-page access by default and per-frame access as the
exception.

  • dom/DocumentStorageAccess.h:

Changed the default setting for m_storageAccessScope to per-page.

  • page/Settings.yaml:

Changed the default to true for
storageAccessAPIPerPageScopeEnabled.

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::hasStorageAccess):

Added a call to WebPage::hasPageLevelStorageAccess()
and an early return if it returns true.

LayoutTests:

  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-and-access-from-right-frame.html:
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-but-access-from-wrong-frame.html:
  • http/tests/storageAccess/request-and-grant-access-then-detach-should-not-have-access.html:
  • http/tests/storageAccess/request-and-grant-access-then-navigate-cross-site-should-not-have-access.html:

All of the above now explicitly call
internals.settings.setStorageAccessAPIPerPageScopeEnabled(false)
to opt out of the new default setting.

  • http/tests/storageAccess/request-and-grant-access-with-per-page-scope-access-from-another-frame.html:

Changed to assume per-page is the default.

8:06 PM Changeset in webkit [267816] by Lauro Moura
  • 6 edits
    3 adds in trunk/LayoutTests

[GLIB] Gardening some failures

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/glib/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-computed-value-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads.sub.tentative-expected.txt:
  • platform/gtk-wayland/TestExpectations:
  • platform/gtk/TestExpectations:
5:45 PM Changeset in webkit [267815] by Jonathan Bedard
  • 2 edits
    2 adds in trunk/Tools

[webkitscmpy] Add Commit object
https://bugs.webkit.org/show_bug.cgi?id=216403
<rdar://problem/68702779>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version number.
  • Scripts/libraries/webkitscmpy/webkitscmpy/commit.py: Added.

(Commit):
(Commit._parse_hash): Given a hash, verify that the provided argument is
Actually a git hash.
(Commit._parse_revision): Given a string or integer, verify the provided
argument is a valid SVN revision and return the revision as an integer.
(Commit._parse_identifier): Given a string or integer, verify the provided
argument is a valid identifier and return the identifier and branch.
(Commit.parse): Given a string representing a commit hash, svn revision or
identifier, return a commit object.
(Commit.init):
(Commit.pretty_print): Return a long string displaying the metadata for the commit
(Commit.repr): Return a one-line representation of the commit.
(Commit.hash):
(Commit.cmp): Compare two commit objects.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/commit_unittest.py: Added.

(TestCommit):
(TestCommit.test_parse_hash):
(TestCommit.test_parse_revision):
(TestCommit.test_parse_identifier):
(TestCommit.test_parse):
(TestCommit.test_pretty_print):

5:40 PM Changeset in webkit [267814] by Ross Kirsling
  • 13 edits
    1 add in trunk

[JSC] Implement item method proposal
https://bugs.webkit.org/show_bug.cgi?id=217115

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/item-method.js: Added.
  • test262/config.yaml: Unskip tests.

Source/JavaScriptCore:

This patch implements {Array, %TypedArray%, String}.prototype.item, which reached Stage 3 at TC39 last week:
https://github.com/tc39/proposal-item-method/

This method behaves like the [] operator except:

  • it recognizes negative indices (-1 through -length, without wrapping)
  • it returns undefined *without* calling getters for out-of-bounds indices

The primary motivation for this is as a layering improvement for Web APIs (see, e.g., NodeList.prototype.item),
but the primary visible benefit for JavaScript users is negative indexation.

  • builtins/ArrayPrototype.js:

(item):

  • builtins/StringPrototype.js:

(item):

  • builtins/TypedArrayPrototype.js:

(item):

  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation):

  • runtime/JSTypedArrayViewPrototype.cpp:

(JSC::JSTypedArrayViewPrototype::finishCreation):

  • runtime/StringPrototype.cpp:

LayoutTests:

  • inspector/model/remote-object-get-properties-expected.txt:
  • js/Object-getOwnPropertyNames-expected.txt:
  • js/script-tests/Object-getOwnPropertyNames.js:

Adjust tests.

5:15 PM Changeset in webkit [267813] by weinig@apple.com
  • 647 edits in trunk/Source/WebCore

[WebIDL] Make Exposed mandatory for IDL interfaces
https://bugs.webkit.org/show_bug.cgi?id=217101

Reviewed by Darin Adler.

Add [Exposed] to all IDL interfaces that were missing it and enforce its
requirement.

  • bindings/scripts/CodeGeneratorJS.pm:
  • bindings/scripts/preprocess-idls.pl:

Remove default "Window" exposed behavior and require it on all interfaces
and callback interfaces with constants that don't specify LegacyNoInterfaceObject.

  • Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.idl:
  • Modules/applepay/ApplePayError.idl:
  • Modules/applepay/ApplePaySession.idl:
  • Modules/applepay/ApplePaySetup.idl:
  • Modules/applepay/ApplePaySetupFeature.idl:
  • Modules/encryptedmedia/MediaKeyEncryptionScheme.idl:
  • Modules/encryptedmedia/MediaKeyMessageEvent.idl:
  • Modules/encryptedmedia/MediaKeySession.idl:
  • Modules/encryptedmedia/MediaKeySessionType.idl:
  • Modules/encryptedmedia/MediaKeyStatusMap.idl:
  • Modules/encryptedmedia/MediaKeySystemAccess.idl:
  • Modules/encryptedmedia/MediaKeys.idl:
  • Modules/encryptedmedia/MediaKeysRequirement.idl:
  • Modules/encryptedmedia/legacy/WebKitMediaKeyMessageEvent.idl:
  • Modules/encryptedmedia/legacy/WebKitMediaKeyNeededEvent.idl:
  • Modules/encryptedmedia/legacy/WebKitMediaKeySession.idl:
  • Modules/encryptedmedia/legacy/WebKitMediaKeys.idl:
  • Modules/entriesapi/DOMFileSystem.idl:
  • Modules/entriesapi/FileSystemDirectoryEntry.idl:
  • Modules/entriesapi/FileSystemDirectoryReader.idl:
  • Modules/entriesapi/FileSystemEntry.idl:
  • Modules/entriesapi/FileSystemFileEntry.idl:
  • Modules/gamepad/Gamepad.idl:
  • Modules/gamepad/GamepadButton.idl:
  • Modules/gamepad/GamepadEvent.idl:
  • Modules/geolocation/Geolocation.idl:
  • Modules/geolocation/GeolocationCoordinates.idl:
  • Modules/geolocation/GeolocationPosition.idl:
  • Modules/geolocation/GeolocationPositionError.idl:
  • Modules/geolocation/PositionOptions.idl:
  • Modules/highlight/HighlightMap.idl:
  • Modules/highlight/HighlightRangeGroup.idl:
  • Modules/mediacapabilities/AudioConfiguration.idl:
  • Modules/mediacapabilities/MediaCapabilities.idl:
  • Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl:
  • Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl:
  • Modules/mediacapabilities/MediaCapabilitiesInfo.idl:
  • Modules/mediacapabilities/MediaDecodingConfiguration.idl:
  • Modules/mediacapabilities/MediaEncodingConfiguration.idl:
  • Modules/mediacapabilities/VideoConfiguration.idl:
  • Modules/mediasource/MediaSource.idl:
  • Modules/mediasource/SourceBuffer.idl:
  • Modules/mediasource/SourceBufferList.idl:
  • Modules/mediastream/CanvasCaptureMediaStreamTrack.idl:
  • Modules/mediastream/MediaDeviceInfo.idl:
  • Modules/mediastream/MediaDevices.idl:
  • Modules/mediastream/MediaStream.idl:
  • Modules/mediastream/MediaStreamTrack.idl:
  • Modules/mediastream/MediaStreamTrackEvent.idl:
  • Modules/mediastream/OverconstrainedError.idl:
  • Modules/mediastream/OverconstrainedErrorEvent.idl:
  • Modules/mediastream/RTCCertificate.idl:
  • Modules/mediastream/RTCConfiguration.idl:
  • Modules/mediastream/RTCDTMFSender.idl:
  • Modules/mediastream/RTCDTMFToneChangeEvent.idl:
  • Modules/mediastream/RTCDataChannel.idl:
  • Modules/mediastream/RTCDataChannelEvent.idl:
  • Modules/mediastream/RTCIceCandidate.idl:
  • Modules/mediastream/RTCIceTransport.idl:
  • Modules/mediastream/RTCPeerConnection.idl:
  • Modules/mediastream/RTCPeerConnectionIceEvent.idl:
  • Modules/mediastream/RTCRtpReceiver.idl:
  • Modules/mediastream/RTCRtpSender.idl:
  • Modules/mediastream/RTCRtpTransceiver.idl:
  • Modules/mediastream/RTCSessionDescription.idl:
  • Modules/mediastream/RTCStatsReport.idl:
  • Modules/mediastream/RTCTrackEvent.idl:
  • Modules/notifications/Notification.idl:
  • Modules/paymentrequest/PaymentRequest.idl:
  • Modules/remoteplayback/RemotePlayback.idl:
  • Modules/speech/SpeechSynthesis.idl:
  • Modules/speech/SpeechSynthesisEvent.idl:
  • Modules/speech/SpeechSynthesisUtterance.idl:
  • Modules/speech/SpeechSynthesisVoice.idl:
  • Modules/webaudio/AnalyserNode.idl:
  • Modules/webaudio/AudioBuffer.idl:
  • Modules/webaudio/AudioBufferSourceNode.idl:
  • Modules/webaudio/AudioContext.idl:
  • Modules/webaudio/AudioDestinationNode.idl:
  • Modules/webaudio/AudioListener.idl:
  • Modules/webaudio/AudioNode.idl:
  • Modules/webaudio/AudioParam.idl:
  • Modules/webaudio/AudioParamMap.idl:
  • Modules/webaudio/AudioProcessingEvent.idl:
  • Modules/webaudio/AudioScheduledSourceNode.idl:
  • Modules/webaudio/BaseAudioContext.idl:
  • Modules/webaudio/BiquadFilterNode.idl:
  • Modules/webaudio/ChannelMergerNode.idl:
  • Modules/webaudio/ChannelSplitterNode.idl:
  • Modules/webaudio/ConstantSourceNode.idl:
  • Modules/webaudio/ConvolverNode.idl:
  • Modules/webaudio/DelayNode.idl:
  • Modules/webaudio/DynamicsCompressorNode.idl:
  • Modules/webaudio/GainNode.idl:
  • Modules/webaudio/IIRFilterNode.idl:
  • Modules/webaudio/MediaElementAudioSourceNode.idl:
  • Modules/webaudio/MediaStreamAudioDestinationNode.idl:
  • Modules/webaudio/MediaStreamAudioSourceNode.idl:
  • Modules/webaudio/OfflineAudioCompletionEvent.idl:
  • Modules/webaudio/OfflineAudioContext.idl:
  • Modules/webaudio/OscillatorNode.idl:
  • Modules/webaudio/PannerNode.idl:
  • Modules/webaudio/PeriodicWave.idl:
  • Modules/webaudio/ScriptProcessorNode.idl:
  • Modules/webaudio/StereoPannerNode.idl:
  • Modules/webaudio/WaveShaperNode.idl:
  • Modules/webaudio/WebKitAudioContext.idl:
  • Modules/webaudio/WebKitAudioPannerNode.idl:
  • Modules/webaudio/WebKitOfflineAudioContext.idl:
  • Modules/webdatabase/Database.idl:
  • Modules/webdatabase/SQLError.idl:
  • Modules/webdatabase/SQLResultSet.idl:
  • Modules/webdatabase/SQLResultSetRowList.idl:
  • Modules/webdatabase/SQLTransaction.idl:
  • Modules/webgpu/GPUBufferUsage.idl:
  • Modules/webgpu/GPUCanvasContext.idl:
  • Modules/webgpu/GPUColorWrite.idl:
  • Modules/webgpu/GPUOutOfMemoryError.idl:
  • Modules/webgpu/GPUShaderStage.idl:
  • Modules/webgpu/GPUTextureUsage.idl:
  • Modules/webgpu/GPUValidationError.idl:
  • Modules/webgpu/Navigator+GPU.idl:
  • Modules/webgpu/WebGPU.idl:
  • Modules/webgpu/WebGPUAdapter.idl:
  • Modules/webgpu/WebGPUBindGroup.idl:
  • Modules/webgpu/WebGPUBindGroupLayout.idl:
  • Modules/webgpu/WebGPUBuffer.idl:
  • Modules/webgpu/WebGPUCommandBuffer.idl:
  • Modules/webgpu/WebGPUCommandEncoder.idl:
  • Modules/webgpu/WebGPUComputePassEncoder.idl:
  • Modules/webgpu/WebGPUComputePipeline.idl:
  • Modules/webgpu/WebGPUDevice.idl:
  • Modules/webgpu/WebGPUPipelineLayout.idl:
  • Modules/webgpu/WebGPUProgrammablePassEncoder.idl:
  • Modules/webgpu/WebGPUQueue.idl:
  • Modules/webgpu/WebGPURenderPassEncoder.idl:
  • Modules/webgpu/WebGPURenderPipeline.idl:
  • Modules/webgpu/WebGPUSampler.idl:
  • Modules/webgpu/WebGPUShaderModule.idl:
  • Modules/webgpu/WebGPUSwapChain.idl:
  • Modules/webgpu/WebGPUTexture.idl:
  • Modules/webgpu/WebGPUTextureView.idl:
  • Modules/webxr/XRInputSourceEvent.idl:
  • Modules/webxr/XRInputSourcesChangeEvent.idl:
  • Modules/webxr/XRReferenceSpaceEvent.idl:
  • Modules/webxr/XRSessionEvent.idl:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/AnimationPlaybackEvent.idl:
  • animation/AnimationTimeline.idl:
  • animation/DocumentTimeline.idl:
  • animation/WebAnimation.idl:
  • css/CSSConditionRule.idl:
  • css/CSSFontFaceRule.idl:
  • css/CSSGroupingRule.idl:
  • css/CSSImportRule.idl:
  • css/CSSKeyframeRule.idl:
  • css/CSSKeyframesRule.idl:
  • css/CSSMediaRule.idl:
  • css/CSSNamespaceRule.idl:
  • css/CSSPageRule.idl:
  • css/CSSRuleList.idl:
  • css/CSSStyleDeclaration.idl:
  • css/CSSStyleRule.idl:
  • css/CSSStyleSheet.idl:
  • css/CSSSupportsRule.idl:
  • css/DOMCSSNamespace.idl:
  • css/DeprecatedCSSOMCounter.idl:
  • css/DeprecatedCSSOMPrimitiveValue.idl:
  • css/DeprecatedCSSOMRGBColor.idl:
  • css/DeprecatedCSSOMRect.idl:
  • css/DeprecatedCSSOMValue.idl:
  • css/DeprecatedCSSOMValueList.idl:
  • css/FontFace.idl:
  • css/FontFaceSet.idl:
  • css/MediaQueryListEvent.idl:
  • css/typedom/StylePropertyMap.idl:
  • dom/AbortAlgorithm.idl:
  • dom/AnimationEvent.idl:
  • dom/Attr.idl:
  • dom/BeforeLoadEvent.idl:
  • dom/BeforeUnloadEvent.idl:
  • dom/CDATASection.idl:
  • dom/CharacterData.idl:
  • dom/ClipboardEvent.idl:
  • dom/Comment.idl:
  • dom/CompositionEvent.idl:
  • dom/CustomElementRegistry.idl:
  • dom/DOMImplementation.idl:
  • dom/DOMRectList.idl:
  • dom/DOMStringList.idl:
  • dom/DOMStringMap.idl:
  • dom/DataTransfer.idl:
  • dom/DataTransferItem.idl:
  • dom/DataTransferItemList.idl:
  • dom/DeviceMotionEvent.idl:
  • dom/DeviceOrientationEvent.idl:
  • dom/Document.idl:
  • dom/DocumentFragment.idl:
  • dom/DocumentType.idl:
  • dom/DragEvent.idl:
  • dom/Element.idl:
  • dom/FocusEvent.idl:
  • dom/HashChangeEvent.idl:
  • dom/IdleDeadline.idl:
  • dom/InputEvent.idl:
  • dom/KeyboardEvent.idl:
  • dom/MouseEvent.idl:
  • dom/MutationEvent.idl:
  • dom/MutationObserver.idl:
  • dom/MutationRecord.idl:
  • dom/NamedNodeMap.idl:
  • dom/Node.idl:
  • dom/NodeFilter.idl:
  • dom/NodeIterator.idl:
  • dom/NodeList.idl:
  • dom/OverflowEvent.idl:
  • dom/PageTransitionEvent.idl:
  • dom/PopStateEvent.idl:
  • dom/ProcessingInstruction.idl:
  • dom/Range.idl:
  • dom/SecurityPolicyViolationEvent.idl:
  • dom/ShadowRoot.idl:
  • dom/StaticRange.idl:
  • dom/Text.idl:
  • dom/TextEvent.idl:
  • dom/Touch.idl:
  • dom/TouchEvent.idl:
  • dom/TouchList.idl:
  • dom/TransitionEvent.idl:
  • dom/TreeWalker.idl:
  • dom/UIEvent.idl:
  • dom/WebKitAnimationEvent.idl:
  • dom/WebKitTransitionEvent.idl:
  • dom/WheelEvent.idl:
  • dom/XMLDocument.idl:
  • html/DOMTokenList.idl:
  • html/HTMLAllCollection.idl:
  • html/HTMLAnchorElement.idl:
  • html/HTMLAppletElement.idl:
  • html/HTMLAreaElement.idl:
  • html/HTMLAttachmentElement.idl:
  • html/HTMLAudioElement.idl:
  • html/HTMLBRElement.idl:
  • html/HTMLBaseElement.idl:
  • html/HTMLBodyElement.idl:
  • html/HTMLButtonElement.idl:
  • html/HTMLCanvasElement.idl:
  • html/HTMLCollection.idl:
  • html/HTMLDListElement.idl:
  • html/HTMLDataElement.idl:
  • html/HTMLDataListElement.idl:
  • html/HTMLDetailsElement.idl:
  • html/HTMLDirectoryElement.idl:
  • html/HTMLDivElement.idl:
  • html/HTMLDocument.idl:
  • html/HTMLElement.idl:
  • html/HTMLEmbedElement.idl:
  • html/HTMLFieldSetElement.idl:
  • html/HTMLFontElement.idl:
  • html/HTMLFormControlsCollection.idl:
  • html/HTMLFormElement.idl:
  • html/HTMLFrameElement.idl:
  • html/HTMLFrameSetElement.idl:
  • html/HTMLHRElement.idl:
  • html/HTMLHeadElement.idl:
  • html/HTMLHeadingElement.idl:
  • html/HTMLHtmlElement.idl:
  • html/HTMLIFrameElement.idl:
  • html/HTMLImageElement.idl:
  • html/HTMLInputElement.idl:
  • html/HTMLKeygenElement.idl:
  • html/HTMLLIElement.idl:
  • html/HTMLLabelElement.idl:
  • html/HTMLLegendElement.idl:
  • html/HTMLLinkElement.idl:
  • html/HTMLMapElement.idl:
  • html/HTMLMarqueeElement.idl:
  • html/HTMLMediaElement.idl:
  • html/HTMLMenuElement.idl:
  • html/HTMLMenuItemElement.idl:
  • html/HTMLMetaElement.idl:
  • html/HTMLMeterElement.idl:
  • html/HTMLModElement.idl:
  • html/HTMLOListElement.idl:
  • html/HTMLObjectElement.idl:
  • html/HTMLOptGroupElement.idl:
  • html/HTMLOptionElement.idl:
  • html/HTMLOptionsCollection.idl:
  • html/HTMLOutputElement.idl:
  • html/HTMLParagraphElement.idl:
  • html/HTMLParamElement.idl:
  • html/HTMLPictureElement.idl:
  • html/HTMLPreElement.idl:
  • html/HTMLProgressElement.idl:
  • html/HTMLQuoteElement.idl:
  • html/HTMLScriptElement.idl:
  • html/HTMLSelectElement.idl:
  • html/HTMLSlotElement.idl:
  • html/HTMLSourceElement.idl:
  • html/HTMLSpanElement.idl:
  • html/HTMLStyleElement.idl:
  • html/HTMLTableCaptionElement.idl:
  • html/HTMLTableCellElement.idl:
  • html/HTMLTableColElement.idl:
  • html/HTMLTableElement.idl:
  • html/HTMLTableRowElement.idl:
  • html/HTMLTableSectionElement.idl:
  • html/HTMLTemplateElement.idl:
  • html/HTMLTextAreaElement.idl:
  • html/HTMLTimeElement.idl:
  • html/HTMLTitleElement.idl:
  • html/HTMLTrackElement.idl:
  • html/HTMLUListElement.idl:
  • html/HTMLUnknownElement.idl:
  • html/HTMLVideoElement.idl:
  • html/MediaController.idl:
  • html/MediaEncryptedEvent.idl:
  • html/MediaError.idl:
  • html/RadioNodeList.idl:
  • html/TimeRanges.idl:
  • html/ValidityState.idl:
  • html/WebKitMediaKeyError.idl:
  • html/canvas/CanvasCompositing.idl:
  • html/canvas/CanvasDrawImage.idl:
  • html/canvas/CanvasDrawPath.idl:
  • html/canvas/CanvasFillStrokeStyles.idl:
  • html/canvas/CanvasFilters.idl:
  • html/canvas/CanvasImageData.idl:
  • html/canvas/CanvasImageSmoothing.idl:
  • html/canvas/CanvasPath.idl:
  • html/canvas/CanvasPathDrawingStyles.idl:
  • html/canvas/CanvasRect.idl:
  • html/canvas/CanvasRenderingContext2D.idl:
  • html/canvas/CanvasShadowStyles.idl:
  • html/canvas/CanvasState.idl:
  • html/canvas/CanvasText.idl:
  • html/canvas/CanvasTextDrawingStyles.idl:
  • html/canvas/CanvasTransform.idl:
  • html/canvas/CanvasUserInterface.idl:
  • html/canvas/PaintRenderingContext2D.idl:
  • html/canvas/WebGLActiveInfo.idl:
  • html/canvas/WebGLBuffer.idl:
  • html/canvas/WebGLContextEvent.idl:
  • html/canvas/WebGLFramebuffer.idl:
  • html/canvas/WebGLProgram.idl:
  • html/canvas/WebGLQuery.idl:
  • html/canvas/WebGLRenderbuffer.idl:
  • html/canvas/WebGLSampler.idl:
  • html/canvas/WebGLShader.idl:
  • html/canvas/WebGLShaderPrecisionFormat.idl:
  • html/canvas/WebGLSync.idl:
  • html/canvas/WebGLTexture.idl:
  • html/canvas/WebGLTransformFeedback.idl:
  • html/canvas/WebGLUniformLocation.idl:
  • html/canvas/WebGLVertexArrayObject.idl:
  • html/track/AudioTrack.idl:
  • html/track/AudioTrackList.idl:
  • html/track/DataCue.idl:
  • html/track/TextTrack.idl:
  • html/track/TextTrackCue.idl:
  • html/track/TextTrackCueGeneric.idl:
  • html/track/TextTrackCueList.idl:
  • html/track/TextTrackList.idl:
  • html/track/TrackEvent.idl:
  • html/track/VTTCue.idl:
  • html/track/VTTRegion.idl:
  • html/track/VTTRegionList.idl:
  • html/track/VideoTrack.idl:
  • html/track/VideoTrackList.idl:
  • loader/appcache/DOMApplicationCache.idl:
  • mathml/MathMLElement.idl:
  • mathml/MathMLMathElement.idl:
  • page/BarProp.idl:
  • page/Crypto.idl:
  • page/DOMSelection.idl:
  • page/DOMWindow.idl:
  • page/GlobalCrypto.idl:
  • page/GlobalPerformance.idl:
  • page/History.idl:
  • page/IntersectionObserver.idl:
  • page/IntersectionObserverEntry.idl:
  • page/Location.idl:
  • page/Navigator+IsLoggedIn.idl:
  • page/Navigator.idl:
  • page/PerformanceNavigation.idl:
  • page/PerformancePaintTiming.idl:
  • page/PerformanceTiming.idl:
  • page/RemoteDOMWindow.idl:
  • page/ResizeObserver.idl:
  • page/ResizeObserverEntry.idl:
  • page/Screen.idl:
  • page/UndoItem.idl:
  • page/UndoManager.idl:
  • page/UserMessageHandler.idl:
  • page/UserMessageHandlersNamespace.idl:
  • page/VisualViewport.idl:
  • page/WebKitNamespace.idl:
  • page/WebKitPoint.idl:
  • plugins/DOMMimeType.idl:
  • plugins/DOMMimeTypeArray.idl:
  • plugins/DOMPlugin.idl:
  • plugins/DOMPluginArray.idl:
  • storage/Storage.idl:
  • storage/StorageEvent.idl:
  • svg/SVGAElement.idl:
  • svg/SVGAltGlyphDefElement.idl:
  • svg/SVGAltGlyphElement.idl:
  • svg/SVGAltGlyphItemElement.idl:
  • svg/SVGAngle.idl:
  • svg/SVGAnimateColorElement.idl:
  • svg/SVGAnimateElement.idl:
  • svg/SVGAnimateMotionElement.idl:
  • svg/SVGAnimateTransformElement.idl:
  • svg/SVGAnimatedAngle.idl:
  • svg/SVGAnimatedBoolean.idl:
  • svg/SVGAnimatedEnumeration.idl:
  • svg/SVGAnimatedInteger.idl:
  • svg/SVGAnimatedLength.idl:
  • svg/SVGAnimatedLengthList.idl:
  • svg/SVGAnimatedNumber.idl:
  • svg/SVGAnimatedNumberList.idl:
  • svg/SVGAnimatedPreserveAspectRatio.idl:
  • svg/SVGAnimatedRect.idl:
  • svg/SVGAnimatedString.idl:
  • svg/SVGAnimatedTransformList.idl:
  • svg/SVGAnimationElement.idl:
  • svg/SVGCircleElement.idl:
  • svg/SVGClipPathElement.idl:
  • svg/SVGComponentTransferFunctionElement.idl:
  • svg/SVGCursorElement.idl:
  • svg/SVGDefsElement.idl:
  • svg/SVGDescElement.idl:
  • svg/SVGElement.idl:
  • svg/SVGEllipseElement.idl:
  • svg/SVGFEBlendElement.idl:
  • svg/SVGFEColorMatrixElement.idl:
  • svg/SVGFEComponentTransferElement.idl:
  • svg/SVGFECompositeElement.idl:
  • svg/SVGFEConvolveMatrixElement.idl:
  • svg/SVGFEDiffuseLightingElement.idl:
  • svg/SVGFEDisplacementMapElement.idl:
  • svg/SVGFEDistantLightElement.idl:
  • svg/SVGFEDropShadowElement.idl:
  • svg/SVGFEFloodElement.idl:
  • svg/SVGFEFuncAElement.idl:
  • svg/SVGFEFuncBElement.idl:
  • svg/SVGFEFuncGElement.idl:
  • svg/SVGFEFuncRElement.idl:
  • svg/SVGFEGaussianBlurElement.idl:
  • svg/SVGFEImageElement.idl:
  • svg/SVGFEMergeElement.idl:
  • svg/SVGFEMergeNodeElement.idl:
  • svg/SVGFEMorphologyElement.idl:
  • svg/SVGFEOffsetElement.idl:
  • svg/SVGFEPointLightElement.idl:
  • svg/SVGFESpecularLightingElement.idl:
  • svg/SVGFESpotLightElement.idl:
  • svg/SVGFETileElement.idl:
  • svg/SVGFETurbulenceElement.idl:
  • svg/SVGFilterElement.idl:
  • svg/SVGFontElement.idl:
  • svg/SVGFontFaceElement.idl:
  • svg/SVGFontFaceFormatElement.idl:
  • svg/SVGFontFaceNameElement.idl:
  • svg/SVGFontFaceSrcElement.idl:
  • svg/SVGFontFaceUriElement.idl:
  • svg/SVGForeignObjectElement.idl:
  • svg/SVGGElement.idl:
  • svg/SVGGeometryElement.idl:
  • svg/SVGGlyphElement.idl:
  • svg/SVGGlyphRefElement.idl:
  • svg/SVGGradientElement.idl:
  • svg/SVGGraphicsElement.idl:
  • svg/SVGHKernElement.idl:
  • svg/SVGImageElement.idl:
  • svg/SVGLength.idl:
  • svg/SVGLengthList.idl:
  • svg/SVGLineElement.idl:
  • svg/SVGLinearGradientElement.idl:
  • svg/SVGMPathElement.idl:
  • svg/SVGMarkerElement.idl:
  • svg/SVGMaskElement.idl:
  • svg/SVGMatrix.idl:
  • svg/SVGMetadataElement.idl:
  • svg/SVGMissingGlyphElement.idl:
  • svg/SVGNumber.idl:
  • svg/SVGNumberList.idl:
  • svg/SVGPathElement.idl:
  • svg/SVGPathSeg.idl:
  • svg/SVGPathSegArcAbs.idl:
  • svg/SVGPathSegArcRel.idl:
  • svg/SVGPathSegClosePath.idl:
  • svg/SVGPathSegCurvetoCubicAbs.idl:
  • svg/SVGPathSegCurvetoCubicRel.idl:
  • svg/SVGPathSegCurvetoCubicSmoothAbs.idl:
  • svg/SVGPathSegCurvetoCubicSmoothRel.idl:
  • svg/SVGPathSegCurvetoQuadraticAbs.idl:
  • svg/SVGPathSegCurvetoQuadraticRel.idl:
  • svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl:
  • svg/SVGPathSegCurvetoQuadraticSmoothRel.idl:
  • svg/SVGPathSegLinetoAbs.idl:
  • svg/SVGPathSegLinetoHorizontalAbs.idl:
  • svg/SVGPathSegLinetoHorizontalRel.idl:
  • svg/SVGPathSegLinetoRel.idl:
  • svg/SVGPathSegLinetoVerticalAbs.idl:
  • svg/SVGPathSegLinetoVerticalRel.idl:
  • svg/SVGPathSegList.idl:
  • svg/SVGPathSegMovetoAbs.idl:
  • svg/SVGPathSegMovetoRel.idl:
  • svg/SVGPatternElement.idl:
  • svg/SVGPoint.idl:
  • svg/SVGPointList.idl:
  • svg/SVGPolygonElement.idl:
  • svg/SVGPolylineElement.idl:
  • svg/SVGPreserveAspectRatio.idl:
  • svg/SVGRadialGradientElement.idl:
  • svg/SVGRect.idl:
  • svg/SVGRectElement.idl:
  • svg/SVGRenderingIntent.idl:
  • svg/SVGSVGElement.idl:
  • svg/SVGScriptElement.idl:
  • svg/SVGSetElement.idl:
  • svg/SVGStopElement.idl:
  • svg/SVGStringList.idl:
  • svg/SVGStyleElement.idl:
  • svg/SVGSwitchElement.idl:
  • svg/SVGSymbolElement.idl:
  • svg/SVGTRefElement.idl:
  • svg/SVGTSpanElement.idl:
  • svg/SVGTextContentElement.idl:
  • svg/SVGTextElement.idl:
  • svg/SVGTextPathElement.idl:
  • svg/SVGTextPositioningElement.idl:
  • svg/SVGTitleElement.idl:
  • svg/SVGTransform.idl:
  • svg/SVGTransformList.idl:
  • svg/SVGUnitTypes.idl:
  • svg/SVGUseElement.idl:
  • svg/SVGVKernElement.idl:
  • svg/SVGViewElement.idl:
  • svg/SVGViewSpec.idl:
  • svg/SVGZoomEvent.idl:
  • workers/Worker.idl:
  • workers/service/ExtendableEvent.idl:
  • workers/service/ExtendableEventInit.idl:
  • workers/service/FetchEvent.idl:
  • worklets/Worklet.idl:
  • xml/DOMParser.idl:
  • xml/XMLHttpRequestProgressEvent.idl:
  • xml/XMLSerializer.idl:
  • xml/XPathEvaluator.idl:
  • xml/XPathExpression.idl:
  • xml/XPathResult.idl:
  • xml/XSLTProcessor.idl:
5:13 PM Changeset in webkit [267812] by keith_miller@apple.com
  • 6 edits in trunk

CSS Selector an-plus-b serialization is incorrect
https://bugs.webkit.org/show_bug.cgi?id=217108

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebasline tests for correct an-plus-b serialization

  • web-platform-tests/css/cssom/selectorSerialize-expected.txt:
  • web-platform-tests/css/selectors/anplusb-selector-parsing-expected.txt:

Source/WebCore:

Right now we don't differentiate our CSS serialization for
an-plus-b expressions from any other CSS sytnax. This is
incorrect, according to the CSS spec an-plus-b expressions have
custom serialization rules. See:
https://www.w3.org/TR/css-syntax-3/#serializing-anb

One thing of note is for constant an-plus-b expressions (i.e. a is
zero so the resulting string is just a number), we get the string
from JSC::VM's numeric string cache.

  • css/parser/CSSSelectorParser.cpp:

(WebCore::CSSSelectorParser::consumePseudo):
(WebCore::serializeANPlusB):

5:01 PM Changeset in webkit [267811] by James Darpinian
  • 4 edits in trunk

Expose pvrtc extension without vendor prefix and remove redundant WebGL 2 extensions
https://bugs.webkit.org/show_bug.cgi?id=217110

Reviewed by Kenneth Russell.

Extensions are tested in LayoutTests/webgl

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::getExtension):
(WebCore::WebGL2RenderingContext::getSupportedExtensions):

  • html/canvas/WebGLRenderingContext.cpp:

(WebCore::WebGLRenderingContext::getExtension):
(WebCore::WebGLRenderingContext::getSupportedExtensions):

4:51 PM Changeset in webkit [267810] by Jonathan Bedard
  • 8 edits in trunk/Tools

[webkitscmpy] Check if a git checkout is linked to an SVN checkout
https://bugs.webkit.org/show_bug.cgi?id=216888
<rdar://problem/69446322>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Increment library version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git.info): Run git svn info if in a Git-SVN checkout.
(Git.is_svn): Check if in a Git-SVN checkout.
(Git.is_git): Return True.

  • Scripts/libraries/webkitscmpy/webkitscmpy/local/scm.py:

(Scm.is_svn): Return False.
(Scm.is_git): Ditto.

  • Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:

(Svn.is_svn): Return True.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:

(Git.init): Add git svn commands.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/git_unittest.py:

(TestGit.test_scm_type):
(TestGit.test_info):

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/svn_unittest.py:

(TestSvn.test_scm_type):

4:23 PM Changeset in webkit [267809] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Adjuster::computeEventListenerRegionTypes() should use ENABLE(WHEEL_EVENT_REGIONS) not a platform #ifdef
https://bugs.webkit.org/show_bug.cgi?id=217146

Reviewed by Tim Horton.

Use ENABLE(WHEEL_EVENT_REGIONS) instead of !PLATFORM(IOS_FAMILY).

  • style/StyleAdjuster.cpp:

(WebCore::Style::Adjuster::computeEventListenerRegionTypes):

3:28 PM Changeset in webkit [267808] by ysuzuki@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] Common slow paths should be JIT operations
https://bugs.webkit.org/show_bug.cgi?id=217141

Reviewed by Saam Barati.

Unlike LLInt slow paths, common (common means common between LLInt and Baseline) slow paths can be called from baseline JIT code. Thus, they should be JIT operations.

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::llint_slow_path_checkpoint_osr_exit_from_inlined_call):
(JSC::LLInt::llint_slow_path_checkpoint_osr_exit):
(JSC::LLInt::slow_path_checkpoint_osr_exit_from_inlined_call): Deleted.
(JSC::LLInt::slow_path_checkpoint_osr_exit): Deleted.

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::JSC_DEFINE_COMMON_SLOW_PATH):
(JSC::iteratorOpenTryFastImpl):
(JSC::iteratorNextTryFastImpl):
(JSC::SLOW_PATH_DECL): Deleted.
(JSC::iterator_open_try_fast): Deleted.
(JSC::iterator_next_try_fast): Deleted.

  • runtime/CommonSlowPaths.h:
2:22 PM Changeset in webkit [267807] by basuke.suzuki@sony.com
  • 18 edits
    4 copies
    3 adds in trunk/Source

[PlayStation][WinCairo] Enable WebDriver target on PlayStation and client for WinCairo
https://bugs.webkit.org/show_bug.cgi?id=216908

Reviewed by Don Olmstead.

Source/JavaScriptCore:

Implement automation session correctly for PlayStation and WinCairo.

  • inspector/remote/RemoteInspector.h:
  • inspector/remote/socket/RemoteInspectorConnectionClient.cpp:

(Inspector::RemoteInspectorConnectionClient::parseTargetListJSON):

  • inspector/remote/socket/RemoteInspectorConnectionClient.h:
  • inspector/remote/socket/RemoteInspectorSocket.cpp:

(Inspector::RemoteInspector::stopInternal):
(Inspector::RemoteInspector::requestAutomationSession):
(Inspector::RemoteInspector::startAutomationSession):

Source/WebDriver:

Extend WebDriver client binary to support connection to remote device for both PlayStation
and WinCairo. We've implemented a simple web server to accept WebDriver request natively and bypass them
to RemoteInspector.

  • Capabilities.h:
  • HTTPServer.h:
  • PlatformPlayStation.cmake: Added.
  • PlatformWin.cmake:
  • SessionHost.h:

(WebDriver::SessionHost::setHostAddress):

  • WebDriverMain.cpp:

(main):
(dllLauncherEntryPoint):

  • WebDriverService.cpp:

(WebDriver::printUsageStatement):
(WebDriver::WebDriverService::run):
(WebDriver::WebDriverService::connectToBrowser):

  • WebDriverService.h:
  • gtk/WebDriverServiceGtk.cpp:

(WebDriver::WebDriverService::platformInit):

  • playstation/WebDriverServicePlayStation.cpp: Copied from Source\WebDriver\win\WebDriverServiceWin.cpp.

(WebDriver::WebDriverService::platformInit):
(WebDriver::WebDriverService::platformCapabilities):
(WebDriver::WebDriverService::platformCompareBrowserVersions):
(WebDriver::WebDriverService::platformValidateCapability const):
(WebDriver::WebDriverService::platformMatchCapability const):
(WebDriver::WebDriverService::platformParseCapabilities const):
(WebDriver::WebDriverService::platformSupportProxyType const):

  • socket/CapabilitiesSocket.cpp: Copied from Source\WebDriver\socket\SessionHostSocket.cpp.

(WebDriver::CapabilitiesSocket::parseCapabilities):

  • socket/CapabilitiesSocket.h: Copied from Source\WebDriver\socket\HTTPServerSocket.cpp.
  • socket/HTTPParser.cpp: Added.

(WebDriver::HTTPParser::parse):
(WebDriver::HTTPParser::handlePhase):
(WebDriver::HTTPParser::abortProcess):
(WebDriver::HTTPParser::parseFirstLine):
(WebDriver::HTTPParser::readLine):
(WebDriver::HTTPParser::expectedBodyLength const):

  • socket/HTTPParser.h: Copied from Source\WebDriver\HTTPServer.h.

(WebDriver::HTTPParser::pullMessage):

  • socket/HTTPServerSocket.cpp:

(WebDriver::HTTPServer::listen):
(WebDriver::HTTPServer::disconnect):
(WebDriver::HTTPServer::doAccept):
(WebDriver::HTTPServer::didClose):
(WebDriver::HTTPRequestHandler::connect):
(WebDriver::HTTPRequestHandler::reset):
(WebDriver::HTTPRequestHandler::didReceive):
(WebDriver::HTTPRequestHandler::sendResponse):
(WebDriver::HTTPRequestHandler::packHTTPMessage const):
(WebDriver::HTTPRequestHandler::didClose):

  • socket/SessionHostSocket.cpp:

(WebDriver::SessionHost::dispatchMap):
(WebDriver::SessionHost::sendWebInspectorEvent):
(WebDriver::SessionHost::connectToBrowser):
(WebDriver::SessionHost::isConnected const):
(WebDriver::SessionHost::didClose):
(WebDriver::SessionHost::parseTargetList):
(WebDriver::SessionHost::receivedSetTargetList):
(WebDriver::SessionHost::receivedSendMessageToFrontend):
(WebDriver::SessionHost::startAutomationSession):
(WebDriver::SessionHost::setTargetList):
(WebDriver::SessionHost::sendMessageToBackend):

  • win/WebDriverServiceWin.cpp:

(WebDriver::WebDriverService::platformInit):
(WebDriver::WebDriverService::platformParseCapabilities const):

  • wpe/WebDriverServiceWPE.cpp:

(WebDriver::WebDriverService::platformInit):

1:54 PM Changeset in webkit [267806] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

[GPU Process] Canvas layout tests occasionally crash the web process under PutImageData::apply
https://bugs.webkit.org/show_bug.cgi?id=217140

Reviewed by Tim Horton.

When destroying a RemoteImageBuffer, logic exists in the superclass (DisplayList::ImageBuffer) that attempts
to flush any remaining display list items. However, this currently doesn't work as intended, since we've already
finished destroying the subclass, so the superclass' call to flushDrawingContext() calls `DisplayList::
ImageBuffer::flushDrawingContext() rather than RemoteImageBuffer::flushDrawingContext()`. Rather than flushing
display list items to the GPU process, this has the effect of attempting to replay these display list items to
the drawing context (which is backed by a DisplayList anyways), so this ends up having no tangible effect.

However, if one of these display list items happens to be PutImageData, we'll end up hitting an assertion due
to being unable to apply it without a Delegate. To fix this, hoist the call to flushDrawingContext() out to
~RemoteImageBuffer(), rather than ~DisplayList::ImageBuffer().

  • WebProcess/GPU/graphics/RemoteImageBuffer.h:

(WebKit::RemoteImageBuffer::~RemoteImageBuffer):

1:53 PM Changeset in webkit [267805] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitpy] Use webkitcorepy's auto installer for html5lib
https://bugs.webkit.org/show_bug.cgi?id=217130
<rdar://problem/69798724>

Rubber-stamped by Aakash Jain.

  • Scripts/webkitpy/init.py: Add html5lib, webencodings and genshi.
  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook.find_module): Remove html5lib.
(AutoinstallImportHook._install_mechanize):Ditto.
(AutoinstallImportHook._install_beautifulsoup): Ditto.
(AutoinstallImportHook._install_html5lib): Deleted.

1:51 PM Changeset in webkit [267804] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[macOS] Deny mach-lookup to the analytics service in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=217137
<rdar://problem/69019193>

Reviewed by Brent Fulgham.

Only internal OS variants should have access to the 'com.apple.analyticsd' service.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::diagnosticServices):

  • WebProcess/com.apple.WebProcess.sb.in:
1:29 PM Changeset in webkit [267803] by Alan Coon
  • 1 copy in tags/Safari-610.1.28.1.10

Tag Safari-610.1.28.1.10.

1:27 PM Changeset in webkit [267802] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION[267763] RELEASE_ASSERT in allNetworkProcesses hit when registering legacy protocol handlers before instantiating any WebKit objects
https://bugs.webkit.org/show_bug.cgi?id=217142
<rdar://problem/69778879>

Reviewed by Brady Eidson.

RELEASE_ASSERT(RunLoop::isMain()) was crashing because WTF::initializeMainThread hadn't been called.
This wasn't a problem before r267763 because the assertion did not exist. Rather than remove the assertion (which I think is important to have)
let's just initialize WebKit threading at these SPI entry points.
This unfortunately can't be tested with our current infrastructure because TestsController's constructor calls initializeMainThread.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::registerGlobalURLSchemeAsHavingCustomProtocolHandlers):
(WebKit::WebProcessPool::unregisterGlobalURLSchemeAsHavingCustomProtocolHandlers):

1:27 PM Changeset in webkit [267801] by Alan Coon
  • 8 edits in branches/safari-610.1.28.1-branch/Source

Versioning.

WebKit-7610.1.28.1.10

12:24 PM Changeset in webkit [267800] by Alan Bujtas
  • 4 edits
    2 adds in trunk

[LFC][Integration] Enable <wbr> content
https://bugs.webkit.org/show_bug.cgi?id=217065

Reviewed by Antti Koivisto.

Source/WebCore:

Enable <wbr> content now that IFC fully supports it.

Test: fast/text/wbr-simple.html

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

LayoutTests:

  • fast/text/wbr-simple-expected.html: Added.
  • fast/text/wbr-simple.html: Added.
12:06 PM Changeset in webkit [267799] by youenn@apple.com
  • 7 edits in trunk/Source/WebCore

Handle deprecation warnings from libwebrtc headers
https://bugs.webkit.org/show_bug.cgi?id=217126
<rdar://problem/69747375>

Reviewed by Tim Horton.

Disable deprecation warnings coming from libwebrtc headers.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
  • Modules/mediastream/libwebrtc/LibWebRTCObservers.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransceiverBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:
  • testing/MockLibWebRTCPeerConnection.h:
11:37 AM Changeset in webkit [267798] by Ryan Haddad
  • 26 edits
    2 deletes in trunk

Unreviewed, reverting r267788.

Broke internal builds.

Reverted changeset:

"MediaRecorder should support isTypeSupported"
https://bugs.webkit.org/show_bug.cgi?id=216856
https://trac.webkit.org/changeset/267788

11:20 AM Changeset in webkit [267797] by commit-queue@webkit.org
  • 4 edits in trunk/Source

Unreviewed, reverting r267795.
https://bugs.webkit.org/show_bug.cgi?id=217135

Incorrect fix.

Reverted changeset:

"REGRESSION(r259582): Build fails on aarch64 Linux with WebKit
2.30.1 on LLIntOffsetsExtractor.cpp.o"
https://bugs.webkit.org/show_bug.cgi?id=217079
https://trac.webkit.org/changeset/267795

10:45 AM WebKitGTK/2.30.x edited by Michael Catanzaro
(diff)
10:12 AM WebKitGTK/2.30.x edited by Michael Catanzaro
(diff)
10:10 AM Changeset in webkit [267796] by weinig@apple.com
  • 57 edits
    4 copies
    13 deletes in trunk

Remove code behind ENABLE(MEDIA_SESSION), no ports enable it
https://bugs.webkit.org/show_bug.cgi?id=216831

Reviewed by Alex Christensen.

.:

  • Source/cmake/OptionsFTW.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Remove option to build with MEDIA_SESSION, no one was doing it.

Source/WebCore:

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Remove media session related files.

  • Modules/airplay/PlaybackTargetClientContextIdentifier.h: Added.
  • Modules/airplay/WebMediaSessionManager.cpp: Added.
  • Modules/airplay/WebMediaSessionManager.h: Added.
  • Modules/airplay/WebMediaSessionManagerClient.h: Added.
  • Modules/mediasession: Removed.
  • platform/mediasession: Removed.

Delete Modules/mediasession and platform/mediasession. Move files that
were actually used for the WIRELESS_PLAYBACK_TARGET feature to
Modules/airplay where other parts of that feature are implemented.

  • dom/Document.cpp:
  • dom/Document.h:
  • dom/EventTargetFactory.in:
  • html/HTMLMediaElement.cpp:
  • html/HTMLMediaElement.h:
  • page/ChromeClient.h:
  • page/Page.cpp:
  • page/Page.h:
  • testing/Internals.cpp:
  • testing/Internals.h:
  • testing/Internals.idl:

Remove all code inside ENABLE(MEDIA_SESSION).

Source/WebKit:

Removes all code in ENABLE(MEDIA_SESSION) and all media session
related SPI. It was never enabled and nothing ever adopted it.

  • Sources.txt:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:

Remove media session related files.

  • Shared/API/APIObject.h:
  • Shared/API/c/WKBase.h:
  • Shared/WebCoreArgumentCoders.cpp:
  • Shared/WebCoreArgumentCoders.h:
  • Shared/WebMediaSessionMetadata.cpp: Removed.
  • Shared/WebMediaSessionMetadata.h: Removed.
  • UIProcess/API/APIUIClient.h:
  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKContext.cpp:
  • UIProcess/API/C/WKContext.h:
  • UIProcess/API/C/WKMediaSessionFocusManager.cpp: Removed.
  • UIProcess/API/C/WKMediaSessionFocusManager.h: Removed.
  • UIProcess/API/C/WKMediaSessionMetadata.cpp: Removed.
  • UIProcess/API/C/WKMediaSessionMetadata.h: Removed.
  • UIProcess/API/C/WKPage.cpp:
  • UIProcess/API/C/WKPagePrivate.h:
  • UIProcess/API/C/WKPageUIClient.h:
  • UIProcess/WebMediaSessionFocusManager.cpp: Removed.
  • UIProcess/WebMediaSessionFocusManager.h: Removed.
  • UIProcess/WebMediaSessionFocusManagerClient.cpp: Removed.
  • UIProcess/WebMediaSessionFocusManagerClient.h: Removed.
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebProcessPool.cpp:
  • UIProcess/WebProcessPool.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:
  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Remove all code in ENABLE(MEDIA_SESSION).

Tools:

  • Scripts/webkitperl/FeatureList.pm:

Remove support for building with MEDIA_SESSION enabled.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::createOtherPage):
(WTR::TestController::createWebViewWithOptions):
Update names to new 'unused' naming.

LayoutTests:

Remove always skipped Media Session tests.

10:07 AM Changeset in webkit [267795] by commit-queue@webkit.org
  • 4 edits in trunk/Source

REGRESSION(r259582): Build fails on aarch64 Linux with WebKit 2.30.1 on LLIntOffsetsExtractor.cpp.o
https://bugs.webkit.org/show_bug.cgi?id=217079

Patch by Mike Gorse <mgorse@suse.com> on 2020-09-30
Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

  • assembler/LinkBuffer.cpp:

(JSC::LinkBuffer::copyCompactAndLinkCode): DOn't compile in a call to
dumpJITMemory if JIT is disabled; leads to a build failure.

Source/WTF:

  • wtf/PlatformEnable.h: Only define USE_JUMP_ISLANDS if JIT is enabled.
9:40 AM Changeset in webkit [267794] by Andres Gonzalez
  • 6 edits in trunk/Source/WebCore

Fix for multiple layout tests in accessibility isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=217093

Reviewed by Chris Fleizach and Darin Adler.

Fix for the following layout tests in accessibility isolated tree mode:
accessibility/aria-menubar-menuitems.html
accessibility/aria-orientation.html
accessibility/set-selected-editable.html
accessibility/removed-continuation-element-causes-crash.html

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::handleAttributeChange):
Update the isolated tree when the id attribute is modified. This is
needed for all tests that assign an id attribute to an element in JS,
in order to retrieve its accessibility object via AccessibilityController::accessibleElementById.
In addition, changed the handling of the lang attribute to just update
the isolated tree instead of posting a notification which is not used.

(WebCore::AXObjectCache::updateIsolatedTree):
Update the AXIsolatedObject IdentifierAttribute property.
Replaced the updateNodeCheckedState method with the more general updateNodeProperty.

  • accessibility/AXObjectCache.h:
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):
The ComputedRoleString property needs to be isolatedCopied.

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::generateSubtree):
Instead of having an out parameter in createSubtree to collect the NodeChanges
that need to be added to the tree, we now add each individual pending
append as the live tree is traversed. This solves the issue manifest in
some tests where during the creation of the subtree, applyPendingChanges
was called and node properties were not updated because the nodes were
not added to the tree yet.

(WebCore::AXIsolatedTree::createSubtree): See above comment for generateSubtree.
(WebCore::AXIsolatedTree::updateNode):
(WebCore::AXIsolatedTree::updateNodeProperty):
Replaces updateNodeCheckedState to allow update of any individual property.

(WebCore::AXIsolatedTree::removeNode): Also remove the entry from m_nodeMap.
(WebCore::AXIsolatedTree::removeSubtree):
(WebCore::AXIsolatedTree::applyPendingChanges):
(WebCore::AXIsolatedTree::NodeChange::NodeChange):
Deleted, using aggregate initialization.

(WebCore::AXIsolatedTree::updateNodeCheckedState): Became updateNodeProperty.
(WebCore::AXIsolatedTree::appendNodeChanges): Deleted, not needed any longer.

  • accessibility/isolatedtree/AXIsolatedTree.h:
9:34 AM Changeset in webkit [267793] by BJ Burg
  • 2 edits in trunk/Source/WebKit

Web Inspector: exempt API::SharedJSContext from remote inspection and automatic inspection
https://bugs.webkit.org/show_bug.cgi?id=217109
<rdar://problem/69386559>

Reviewed by Mark Lam.

We have seen occasional unexpected spins underneath pauseWaitingForRemoteInspection() waiting
for this JSContext. Since it does not evaluate JavaScript and is WebKit-internal, simply disable
remote inspection for the JSContext.

  • UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm:

(API::SharedJSContext::ensureContext):

9:30 AM Changeset in webkit [267792] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r265009): Web Share API can no longer be invoked if a previous invocation was dismissed using the close button
https://bugs.webkit.org/show_bug.cgi?id=216913
<rdar://problem/69659878>

Reviewed by Darin Adler.

No new tests; not able to test without UI tests that actually use UIActivityViewController.

  • UIProcess/Cocoa/WKShareSheet.mm:

(-[WKShareSheet presentWithShareDataArray:inRect:]):
-presentationControllerDidDismiss is not called if the UIActivityViewController is
programmatically dismissed, so we need to revert to observing completion via
UIActivityViewController's -completionWithItemsHandler.

In order to avoid regressing bug 214894 by doing so, we also need to
make sure that we're actually not presented anymore, as -completionWithItemsHandler
can be called multiple times before the share sheet is actually dismissed.

9:04 AM Changeset in webkit [267791] by weinig@apple.com
  • 29 edits in trunk

Re-align DocumentAndElementEventHandlers.idl, GlobalEventHandlers.idl and WindowEventHandlers.idl with the HTML spec
https://bugs.webkit.org/show_bug.cgi?id=217088

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update results for more passing tests.

  • web-platform-tests/html/dom/idlharness.https-expected.txt:
  • web-platform-tests/html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt:
  • web-platform-tests/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt:
  • web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:

Source/WebCore:

Re-align DocumentAndElementEventHandlers.idl, GlobalEventHandlers.idl and WindowEventHandlers.idl with
the HTML spec, adding commented out variants of properties we don't yet support. The actual changes are:

  • onwebkitanimation* handlers moved from DocumentAndElementEventHandlers to GlobalEventHandlers (and were removed from DOMWindow as they are now redundant).
  • onrejectionhandled/onunhandledrejection handlers move from GlobalEventHandlers to WindowEventHandlers

Updated results for more existing tests that now pass.

  • dom/DocumentAndElementEventHandlers.idl:
  • dom/GlobalEventHandlers.idl:
  • page/DOMWindow.idl:
  • page/WindowEventHandlers.idl:
  • workers/WorkerGlobalScope.idl:

LayoutTests:

Update results for more passing tests.

  • fast/dom/event-handler-attributes-expected.txt:
  • js/dom/dom-static-property-for-in-iteration-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/gtk/js/dom/dom-static-property-for-in-iteration-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/ios-wk2/js/dom/dom-static-property-for-in-iteration-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/mac-wk2/js/dom/dom-static-property-for-in-iteration-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/wpe/js/dom/dom-static-property-for-in-iteration-expected.txt:
8:00 AM Changeset in webkit [267790] by Alan Bujtas
  • 5 edits
    2 moves in trunk/Source/WebCore

[LFC][IFC] Rename LineBreaker to InlineContentBreaker
https://bugs.webkit.org/show_bug.cgi?id=217119

Reviewed by Antti Koivisto.

This class is responsible for breaking inline content.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/inlineformatting/InlineContentBreaker.cpp: Renamed from Source/WebCore/layout/inlineformatting/InlineLineBreaker.cpp.

(WebCore::Layout::isTextContentOnly):
(WebCore::Layout::isVisuallyEmptyWhitespaceContentOnly):
(WebCore::Layout::isNonContentRunsOnly):
(WebCore::Layout::firstTextRunIndex):
(WebCore::Layout::lastContentRunIndex):
(WebCore::Layout::isWrappingAllowed):
(WebCore::Layout::shouldKeepBeginningOfLineWhitespace):
(WebCore::Layout::lastWrapOpportunityIndex):
(WebCore::Layout::InlineContentBreaker::isContentWrappingAllowed const):
(WebCore::Layout::InlineContentBreaker::shouldKeepEndOfLineWhitespace const):
(WebCore::Layout::InlineContentBreaker::processInlineContent):
(WebCore::Layout::InlineContentBreaker::processOverflowingContent const):
(WebCore::Layout::InlineContentBreaker::processOverflowingTextContent const):
(WebCore::Layout::InlineContentBreaker::wordBreakBehavior const):
(WebCore::Layout::InlineContentBreaker::tryBreakingTextRun const):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::append):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::reset):

  • layout/inlineformatting/InlineContentBreaker.h: Renamed from Source/WebCore/layout/inlineformatting/InlineLineBreaker.h.

(WebCore::Layout::InlineContentBreaker::ContinuousContent::logicalWidth const):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::logicalLeft const):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::collapsibleLogicalWidth const):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::nonCollapsibleLogicalWidth const):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::hasTrailingCollapsibleContent const):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::isFullyCollapsible const):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::runs const):
(WebCore::Layout::InlineContentBreaker::setHyphenationDisabled):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::Run::Run):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineCandidate::InlineContent::continuousContent const):
(WebCore::Layout::LineBuilder::placeInlineContent):
(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):
(WebCore::Layout::LineBuilder::commitPartialContent):

  • layout/inlineformatting/InlineLineBuilder.h:
7:18 AM Changeset in webkit [267789] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

[GTK] Chassis type check fails if the value is quoted
https://bugs.webkit.org/show_bug.cgi?id=217123

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2020-09-30
Reviewed by Carlos Garcia Campos.

Sometimes the chassis type can be quoted, in this case we'll fail to
parse it and fall back to desktop type. Unquote the string before
attempting to parse it.

  • wtf/glib/ChassisType.cpp:

(WTF::readMachineInfoChassisType):

7:12 AM Changeset in webkit [267788] by youenn@apple.com
  • 26 edits
    2 adds in trunk

MediaRecorder should support isTypeSupported
https://bugs.webkit.org/show_bug.cgi?id=216856

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/mediacapture-record/MediaRecorder-mimetype-expected.txt:
  • web-platform-tests/mediacapture-record/MediaRecorder-peerconnection.https-expected.txt:
  • web-platform-tests/mediacapture-record/idlharness.window-expected.txt:
  • web-platform-tests/mediacapture-record/passthrough/MediaRecorder-passthrough.https-expected.txt:
  • web-platform-tests/mediacapture-record/passthrough/MediaRecorder-passthrough.https.html:

Remove JS console log error line.

Source/WebCore:

Introduce MediaRecorder::isMimeTypeSupported whose result is exposed as MediaRecoder.isTypeSupported.
Cocoa port allows mp4 audio and video mime types, with H264 and AAC codecs.
Add a routine to get the mime type from the MediaRecorderPrivate.
Store it in MediaRecorder and add a mimeType getter.

Test: http/wpt/mediarecorder/mimeType.html

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::isTypeSupported):
(WebCore::MediaRecorder::create):

  • Modules/mediarecorder/MediaRecorder.h:
  • Modules/mediarecorder/MediaRecorder.idl:
  • Modules/mediarecorder/MediaRecorderProvider.cpp:

(WebCore::MediaRecorderProvider::isSupported):

  • Modules/mediarecorder/MediaRecorderProvider.h:
  • platform/mediarecorder/MediaRecorderPrivate.cpp:

(WebCore::MediaRecorderPrivate::mimeType const):

  • platform/mediarecorder/MediaRecorderPrivate.h:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::fetchData):

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
  • platform/mediarecorder/MediaRecorderPrivateMock.cpp:

(WebCore::MediaRecorderPrivateMock::mimeType const):

  • platform/mediarecorder/MediaRecorderPrivateMock.h:
  • platform/mediastream/MediaStreamPrivate.h:

Source/WebKit:

Stop passing mimeType for each data blob.
Instead, compute it on WebProcess side.

  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:

(WebKit::RemoteMediaRecorder::fetchData):

  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.messages.in:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:

(WebKit::MediaRecorderPrivate::MediaRecorderPrivate):
(WebKit::MediaRecorderPrivate::fetchData):
(WebKit::MediaRecorderPrivate::mimeType const):

  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:

LayoutTests:

  • http/wpt/mediarecorder/mimeType-expected.txt: Added.
  • http/wpt/mediarecorder/mimeType.html: Added.
7:10 AM Changeset in webkit [267787] by Philippe Normand
  • 17 edits
    4 adds in trunk

[GStreamer] Internal audio rendering support
https://bugs.webkit.org/show_bug.cgi?id=207634

Reviewed by Xabier Rodriguez-Calvar.

.:

  • Source/cmake/FindWPEBackend_fdo.cmake: Check for the audio extension header initially

shipped in the 1.8.0 release.

  • Source/cmake/GStreamerChecks.cmake: Check and enable external audio rendering support if

the WPEBackend-FDO audio extension was found.

Source/WebCore:

This patch introduces two features regarding audio rendering:

  1. Internal audio mixing enabled at runtime with the WEBKIT_GST_ENABLE_AUDIO_MIXER=1

environment variable. When this is enabled, the WebProcess will have its GStreamer backends
render to dedicated WebKit audio sinks. Those will forward buffers to a singleton audio
mixer. The resulting audio stream will then be rendered through the default audio sink
(PulseAudio in most cases). Using this approach, applications will maintain a single
connection to the audio daemon.

  1. For WPE, external audio pass-through. To enable this, the application has to register an

audio receiver using the WPEBackend-FDO wpe_audio_register_receiver() API. When this is
enabled, the WebKit audio sinks running in the WebProcess will forward audio samples to the
UIProcess, using a Wayland protocol defined in the WPEBackend-FDO backend and exposed
through its audio extension. This client-side rendering support allows applications to have
full control on the audio samples rendering.

The Internal mode should be considered a technology preview and can't be enabled by default
yet, because audiomixer lacks some features such as reverse playback support. External audio
rendering policy is covered by a new WPE API test.

  • platform/GStreamer.cmake:
  • platform/audio/gstreamer/AudioDestinationGStreamer.cpp:

(WebCore::AudioDestinationGStreamer::AudioDestinationGStreamer): Create sink depending on
selected audio rendering policy and probe platform for a working audio output device only
when the WebKit custom audio sink hasn't been selected. This is needed only for the
autoaudiosink case.

  • platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:

(WebCore::AudioSourceProviderGStreamer::configureAudioBin): Instead of creating a new sink,
embed the one provided by the player into the audio bin. The resulting bin becomes the
player audio sink and it's able to render both to the WebAudio provider and the usual sink, as before.

  • platform/audio/gstreamer/AudioSourceProviderGStreamer.h:
  • platform/graphics/gstreamer/GStreamerAudioMixer.cpp: Added.

(WebCore::GStreamerAudioMixer::isAllowed): The mixer requires a recent GStreamer version and
the inter plugin (shipped in gst-plugins-bad until version 1.20 at least).
(WebCore::GStreamerAudioMixer::singleton): Entry point for the mixer. This is where the
singleton is created.
(WebCore::GStreamerAudioMixer::GStreamerAudioMixer): Configure the standalone mixer
pipeline.
(WebCore::GStreamerAudioMixer::~GStreamerAudioMixer):
(WebCore::GStreamerAudioMixer::ensureState): Lazily start/stop the mixer, depending on the
number of incoming streams. The pipeline starts when the first incoming stream is connected,
and stops when the last stream disappears.
(WebCore::GStreamerAudioMixer::registerProducer): Client pipelines require an interaudiosink, they
will render to that sink, which internally forwards data to a twin interaudiosrc element,
connected to the audiomixer.
(WebCore::GStreamerAudioMixer::unregisterProducer): Get rid of an interaudiosink and its interaudiosrc.
This is called by the WebKit audio sink when the element is being disposed.

  • platform/graphics/gstreamer/GStreamerAudioMixer.h: Added.
  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::initializeGStreamerAndRegisterWebKitElements): Register new audio sink element.
(WebCore::createPlatformAudioSink): New utility function to create an audio sink based on
the desired and implied runtime rendering policy.
(WebCore::initializeGStreamerAndRegisterWebKitElements):

  • platform/graphics/gstreamer/GStreamerCommon.h:
  • platform/graphics/gstreamer/GUniquePtrGStreamer.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer):
(WebCore::MediaPlayerPrivateGStreamer::seek): Drive-by clean-up, no need to create the seek
Mediatime before the early return checking this is a live stream.
(WebCore::setSyncOnClock): Fixup code style in this method.
(WebCore::MediaPlayerPrivateGStreamer::createAudioSink):
(WebCore::MediaPlayerPrivateGStreamer::audioSink const):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp: Added. This sink can either

forward incoming samples to the shared audiomixer running in its own pipeline, or forward
samples to the UIProcess using the WPEBackend-FDO audio extension.
(AudioPacketHolder::AudioPacketHolder): Wrapper around audio buffers, in charge of creating
the corresponding memfd descriptor and also keeping track of the corresponding
wpe_audio_packet_export.
(AudioPacketHolder::~AudioPacketHolder):
(AudioPacketHolder::map): Create the memfd descriptor and return it along with the buffer size.
(webKitAudioSinkHandleSample): Forward incoming samples using the WPEBackend-FDO audio
extension. The wpe_audio_source start is synchronized with the buffer flow.
(webKitAudioSinkConfigure): When internal mixing has been requested, create an
interaudiosink to which samples will be sent. Internally the interaudiosink will forward
data to its interaudiosrc which is connected to the audiomixer. Otherwise, if external
rendering has been requested, create an appsink in order to relay samples to the UIProcess.
(webKitAudioSinkDispose):
(getInternalVolumeObject): When internal mixing is enabled, volume and mute states are
tracked within the audiomixer sink pads. Otherwise our audio sink manages this using a volume
element.
(webKitAudioSinkSetProperty): Proxy volume and mute properties from the internal volume proxy.
(webKitAudioSinkGetProperty): Ditto.
(webKitAudioSinkChangeState): Keep the WPE audio source state synchronized with the element
state, in order to know when the pause/resume notifications should be sent to the UIProcess.
This is also where maintain the relationship between the interaudiosink and the audiomixer, when
it's enabled.
(webkit_audio_sink_class_init):
(webkitAudioSinkNew):

  • platform/graphics/gstreamer/WebKitAudioSinkGStreamer.h: Added.

Tools:

  • Scripts/webkitpy/style/checker.py: White-list the new audio sink from the style checker.
  • TestWebKitAPI/Tests/WebKit/file-with-video.html: New utility functions to pause and seek in the video.
  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp: WPE test for external audio

rendering support. A video file is loaded through the webview and the test receives
notifications during playback. In order to reduce timeout risks, a seek near the end of the
video is performed early on.
(AudioRenderingWebViewTest::setup):
(AudioRenderingWebViewTest::teardown):
(AudioRenderingWebViewTest::AudioRenderingWebViewTest):
(AudioRenderingWebViewTest::handleStart):
(AudioRenderingWebViewTest::handleStop):
(AudioRenderingWebViewTest::handlePause):
(AudioRenderingWebViewTest::handleResume):
(AudioRenderingWebViewTest::handlePacket):
(AudioRenderingWebViewTest::waitUntilPaused):
(AudioRenderingWebViewTest::waitUntilEOS):
(AudioRenderingWebViewTest::state const):
(beforeAll):

6:38 AM Changeset in webkit [267786] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Merge LineBreaker::CandidateContent and ContinuousContent
https://bugs.webkit.org/show_bug.cgi?id=217113

Reviewed by Antti Koivisto.

This patch simplifies the connection between the LineBuilder and the LineBreaker by using the same structure to track candidate runs.
LineBreaker::CandidateContent is also a continuous content (it has to be) so we can just use this structure in LineCandidate::InlineContent (m_continuousContent)
and pass it in to the LineBreaker when we hit a wrapping opportunity.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::isTextContentOnly):
(WebCore::Layout::isVisuallyEmptyWhitespaceContentOnly):
(WebCore::Layout::isNonContentRunsOnly):
(WebCore::Layout::firstTextRunIndex):
(WebCore::Layout::lastContentRunIndex):
(WebCore::Layout::lastWrapOpportunityIndex):
(WebCore::Layout::LineBreaker::isContentWrappingAllowed const):
(WebCore::Layout::LineBreaker::shouldKeepEndOfLineWhitespace const):
(WebCore::Layout::LineBreaker::processInlineContent):
(WebCore::Layout::LineBreaker::processOverflowingContent const):
(WebCore::Layout::LineBreaker::tryBreakingTextRun const):
(WebCore::Layout::LineBreaker::ContinuousContent::append):
(WebCore::Layout::LineBreaker::ContinuousContent::reset):
(WebCore::Layout::ContinuousContent::runs const): Deleted.
(WebCore::Layout::ContinuousContent::isEmpty const): Deleted.
(WebCore::Layout::ContinuousContent::logicalWidth const): Deleted.
(WebCore::Layout::ContinuousContent::logicalLeft const): Deleted.
(WebCore::Layout::ContinuousContent::hasTrailingCollapsibleContent const): Deleted.
(WebCore::Layout::ContinuousContent::isFullyCollapsible const): Deleted.
(WebCore::Layout::ContinuousContent::ContinuousContent): Deleted.
(WebCore::Layout::ContinuousContent::nonCollapsibleLogicalWidth const): Deleted.
(WebCore::Layout::ContinuousContent::hasTextContentOnly const): Deleted.
(WebCore::Layout::ContinuousContent::isVisuallyEmptyWhitespaceContentOnly const): Deleted.
(WebCore::Layout::ContinuousContent::firstTextRunIndex const): Deleted.
(WebCore::Layout::ContinuousContent::lastContentRunIndex const): Deleted.
(WebCore::Layout::ContinuousContent::hasNonContentRunsOnly const): Deleted.

  • layout/inlineformatting/InlineLineBreaker.h:

(WebCore::Layout::LineBreaker::ContinuousContent::logicalWidth const):
(WebCore::Layout::LineBreaker::ContinuousContent::logicalLeft const):
(WebCore::Layout::LineBreaker::ContinuousContent::collapsibleLogicalWidth const):
(WebCore::Layout::LineBreaker::ContinuousContent::nonCollapsibleLogicalWidth const):
(WebCore::Layout::LineBreaker::ContinuousContent::hasTrailingCollapsibleContent const):
(WebCore::Layout::LineBreaker::ContinuousContent::isFullyCollapsible const):
(WebCore::Layout::LineBreaker::ContinuousContent::runs const):
(WebCore::Layout::LineBreaker::ContinuousContent::Run::Run):
(WebCore::Layout::LineBreaker::Run::Run): Deleted.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineCandidate::InlineContent::continuousContent const):
(WebCore::Layout::LineCandidate::InlineContent::appendInlineItem):
(WebCore::Layout::LineCandidate::InlineContent::reset):
(WebCore::Layout::LineCandidate::reset):
(WebCore::Layout::LineBuilder::placeInlineContent):
(WebCore::Layout::LineBuilder::nextContentForLine):
(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):
(WebCore::Layout::LineBuilder::commitPartialContent):
(WebCore::Layout::LineCandidate::InlineContent::runs const): Deleted.
(WebCore::Layout::LineCandidate::InlineContent::logicalWidth const): Deleted.
(WebCore::Layout::LineCandidate::InlineContent::collapsibleTrailingWidth const): Deleted.

  • layout/inlineformatting/InlineLineBuilder.h:
5:00 AM Changeset in webkit [267785] by Philippe Normand
  • 3 edits in trunk/Tools

[Flatpak SDK] Bump libwpe and wpebackend-fdo
https://bugs.webkit.org/show_bug.cgi?id=217122

Reviewed by Carlos Garcia Campos.

  • buildstream/elements/sdk/libwpe.bst: Bump to 1.8.0 and switch to Meson build system.
  • buildstream/elements/sdk/wpebackend-fdo.bst: Bump to 1.9.0 development version and switch

to Meson build system.

3:00 AM Changeset in webkit [267784] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Fix assertion in linux_get_crash_log.py using Python 2.7
https://bugs.webkit.org/show_bug.cgi?id=217121

Patch by Nikolas Zimmermann <nzimmermann@igalia.com> on 2020-09-30
Reviewed by Philippe Normand.

Fix assertion in linux_get_crash_log.py using Python 2.7:
worker/6: UnicodeEncodeError(ascii' codec can't encode character u'\u201c' in position 85: ordinal not in range(128)') raised:

Encode data as utf-8 before passing on to communicate().

  • Scripts/webkitpy/port/linux_get_crash_log.py:

(GDBCrashLogGenerator.generate_crash_log):

12:19 AM Changeset in webkit [267783] by ysuzuki@apple.com
  • 26 edits in trunk/Source

Always use OperationPtrTag for all operations and annotate operations in CSS JIT
https://bugs.webkit.org/show_bug.cgi?id=217117

Reviewed by Mark Lam.

Source/JavaScriptCore:

For JIT-caging, we would like to annotate all operations consistently with OperationPtrTag.
This patch replaces B3CCallPtrTag and CSSOperationPtrTag with OperationPtrTag and handle these
operations as Operation in JIT-caging.

We also collect and annotate all the operations called in CSS JIT and define them with JSC_DEFINE_JIT_OPERATION.

  • b3/B3LowerMacros.cpp:
  • b3/B3LowerMacrosAfterOptimizations.cpp:
  • b3/B3MathExtras.cpp:
  • b3/B3ReduceLoopStrength.cpp:

(JSC::B3::ReduceLoopStrength::reduceByteCopyLoopsToMemcpy):

  • b3/B3ReduceStrength.cpp:
  • b3/air/AirCCallSpecial.cpp:

(JSC::B3::Air::CCallSpecial::generate):

  • b3/testb3_5.cpp:

(testCallSimple):
(testCallRare):
(testCallRareLive):
(testCallSimplePure):
(testCallFunctionWithHellaArguments):
(testCallFunctionWithHellaArguments2):
(testCallFunctionWithHellaArguments3):
(testCallSimpleDouble):
(testCallSimpleFloat):
(testCallFunctionWithHellaDoubleArguments):
(testCallFunctionWithHellaFloatArguments):
(testLinearScanWithCalleeOnStack):

  • b3/testb3_6.cpp:

(testInterpreter):

  • b3/testb3_7.cpp:

(testLICMPure):
(testLICMPureSideExits):
(testLICMPureWritesPinned):
(testLICMPureWrites):
(testLICMReadsLocalState):
(testLICMReadsPinned):
(testLICMReads):
(testLICMPureNotBackwardsDominant):
(testLICMPureFoiledByChild):
(testLICMPureNotBackwardsDominantFoiledByChild):
(testLICMExitsSideways):
(testLICMWritesLocalState):
(testLICMWrites):
(testLICMFence):
(testLICMWritesPinned):
(testLICMControlDependent):
(testLICMControlDependentNotBackwardsDominant):
(testLICMControlDependentSideExits):
(testLICMReadsPinnedWritesPinned):
(testLICMReadsWritesDifferentHeaps):
(testLICMReadsWritesOverlappingHeaps):
(testLICMDefaultCall):
(testShuffleDoesntTrashCalleeSaves):

  • ftl/FTLOutput.h:

(JSC::FTL::Output::callWithoutSideEffects):
(JSC::FTL::Output::operation):

  • runtime/JSCPtrTag.h:
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::emitCCall):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addTableGet):
(JSC::Wasm::B3IRGenerator::addTableSet):
(JSC::Wasm::B3IRGenerator::addRefFunc):
(JSC::Wasm::B3IRGenerator::addTableSize):
(JSC::Wasm::B3IRGenerator::addTableGrow):
(JSC::Wasm::B3IRGenerator::addTableFill):
(JSC::Wasm::B3IRGenerator::addGrowMemory):
(JSC::Wasm::B3IRGenerator::setGlobal):
(JSC::Wasm::B3IRGenerator::emitWriteBarrierForJSWrapper):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I32Popcnt>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I64Popcnt>):

Source/WebCore:

  • css/SelectorChecker.cpp:

(WebCore::isFrameFocused): Deleted.
(WebCore::doesShadowTreeContainFocusedElement): Deleted.
(WebCore::SelectorChecker::matchesFocusPseudoClass): Deleted.
(WebCore::SelectorChecker::matchesDirectFocusPseudoClass): Deleted.

  • css/SelectorChecker.h:
  • css/SelectorCheckerTestFunctions.h:

(WebCore::isFrameFocused):
(WebCore::matchesDirectFocusPseudoClass):
(WebCore::doesShadowTreeContainFocusedElement):
(WebCore::matchesFocusPseudoClass):

  • cssjit/CSSPtrTag.h:
  • cssjit/FunctionCall.h:

(WebCore::FunctionCall::FunctionCall):
(WebCore::FunctionCall::setFunctionAddress):
(WebCore::FunctionCall::prepareAndCall):

  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::JSC_DEFINE_JIT_OPERATION):
(WebCore::SelectorCompiler::addPseudoClassType):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateAddStyleRelation):
(WebCore::SelectorCompiler::SelectorCodeGenerator::modulo):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementMatching):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateSynchronizeStyleAttribute):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateSynchronizeAllAnimatedSVGAttribute):
(WebCore::SelectorCompiler::attributeValueSpaceSeparatedListContains):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementAttributeValueMatching):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementAttributeValueExactMatching):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementAttributeFunctionCallValueMatching):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementFunctionCallTest):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsActive):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsHovered):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsInLanguage):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementHasPlaceholderShown):
(WebCore::SelectorCompiler::SelectorFragment::appendUnoptimizedPseudoClassWithContext): Deleted.
(WebCore::SelectorCompiler::addStyleRelationFunction): Deleted.
(WebCore::SelectorCompiler::moduloHelper): Deleted.
(WebCore::SelectorCompiler::attributeValueSpaceSeparetedListContains): Deleted.
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateContextFunctionCallTest): Deleted.
(WebCore::SelectorCompiler::elementIsActive): Deleted.
(WebCore::SelectorCompiler::elementIsHovered): Deleted.
(WebCore::SelectorCompiler::makeContextStyleUniqueIfNecessaryAndTestIsPlaceholderShown): Deleted.
(WebCore::SelectorCompiler::isPlaceholderShown): Deleted.

  • dom/StyledElement.cpp:

(WebCore::StyledElement::synchronizeStyleAttributeInternalImpl):
(WebCore::StyledElement::synchronizeStyleAttributeInternal): Deleted.

  • dom/StyledElement.h:

(WebCore::StyledElement::synchronizeStyleAttributeInternal const):

  • style/ElementRuleCollector.cpp:

(WebCore::Style::ElementRuleCollector::collectMatchingRules):

  • svg/SVGElement.cpp:

(WebCore::SVGElement::synchronizeAllAnimatedSVGAttribute): Deleted.

  • svg/SVGElement.h:
12:02 AM Changeset in webkit [267782] by mmaxfield@apple.com
  • 10 edits in trunk/Source

[GPU Process] Remove FontHandle
https://bugs.webkit.org/show_bug.cgi?id=217076

Reviewed by Wenson Hsieh.

Source/WebCore:

The only reason FontHandle exists is to be an internally-nullable wrapper around WebCore::Font.
However, this codepath is only ever invoked with non-null fonts, so there's no point in having
this wrapper. This patch replaces it with just Ref<Font>.

No new tests because there is no behavior change.

  • WebCore.xcodeproj/project.pbxproj:
  • loader/cache/CachedFont.h:
  • platform/graphics/Font.cpp:

(WebCore::FontHandle::FontHandle): Deleted.

  • platform/graphics/Font.h:
  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::DrawGlyphs::encode const):
(WebCore::DisplayList::DrawGlyphs::decode):

  • platform/graphics/mac/FontCustomPlatformData.h:

Source/WebKit:

  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

(IPC::ArgumentCoder<Ref<Font>>::encodePlatformData):
(IPC::ArgumentCoder<Ref<Font>>::decodePlatformData):
(IPC::ArgumentCoder<FontHandle>::encodePlatformData): Deleted.
(IPC::ArgumentCoder<FontHandle>::decodePlatformData): Deleted.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Ref<Font>>::encode):
(IPC::createFont):
(IPC::ArgumentCoder<Ref<Font>>::decode):
(IPC::ArgumentCoder<FontHandle>::encode): Deleted.
(IPC::ArgumentCoder<FontHandle>::decode): Deleted.

  • Shared/WebCoreArgumentCoders.h:
Note: See TracTimeline for information about the timeline view.