Timeline



Dec 17, 2020:

11:05 PM Changeset in webkit [270964] by commit-queue@webkit.org
  • 28 edits in trunk/Source

REGRESSION (r268386): Snapshots of WebGL content in the tab picker don't work (black map on Google Maps)
https://bugs.webkit.org/show_bug.cgi?id=219946
<rdar://problem/72013784>

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

Source/WebCore:

Fix case where WebGL would first be displayed with hardware code path
and then displayed with software code path (painting from the paint
tree). Former happens when user looks at the page and latter happens
when printing or when Safari takes a snapshot.

This is not a real regression of r268386. Prior to that, the software
display would have used uninitialized IOSurface contents or contents of
1-2 frames prior and would leave the hardware display buffer not
updated.

CanvasRenderingContext::paintRenderingResultsToCanvas() is used for two
purposes:

1) Image extraction uses, such as toData() or

constructing an Image out of the contents.

2) Painting the rendering to the document during software display.

The 1) case uses always the drawing buffer.

The 2) case presents the drawing buffer as the new display buffer if
there are changes to the drawing buffer and uses the potentially new
display buffer to display.

For 2D canvas, these two cases are the same case. For WebGL they are
different.

The display is destructive for WebGL drawing buffer when
preserveDrawingBuffer == false. This means that if hardware display has
happened, we must read the display buffer during case 2. This code was
missing, so the scenario could not have ever worked.

The previous code tried to workaround this by the
WebGLGraphicsContextBase to detect what the owner intended with the
paintRenderingResultsToCanvas, then skip the potential drawing buffer
clear, read the drawing buffer and put that data to the "presentation
copy" of the HTMLElement. This is not ok, as the uncleared drawing
buffer has non-deterministic contents in case the context has displayed
and the client has not drawn new content to the drawing buffer.

Fix by removing the "presentation copy" of the HTMLCanvas. The
presentation image can always be drawn to the CanvasBase::buffer():

  • The current contents of the buffer is the presentation image if the context has not changed since updating the buffer with either drawing buffer or previous display buffer.
  • If the context has changed, we must present and put the new display buffer to the CanvasBase::buffer()
  • This is also correct contents for the potential next image extraction uses, up to a point when context changes.
  • If the context changes before an image extraction use, CanvasBase::buffer() is updated with the normal logic, the same as what happens when CanvasBase::buffer() is updated between two image extraction uses.

Prior to this, there was an unneeded and incorrectly implemented
GPUCanvasContext::markLayerComposited(). The sequence would be:

HTMLCanvasElement::paint():

canvasContext().paintRenderingResultsToCanvas(buffer());
context().drawImageBuffer(buffer());
canvasContext().markLayerComposited();

The markLayerComposited() would incorrectly mark the WebGL context compositing
being done, but there was no compositing actually happening. The GPU-side
display buffer would be incorrect. Also, there is nothing to be done at
this stage, as the compositing of WebGL context itself is already
finished at WebGL context paintRenderingResultsToCanvas() return.

Instead, add CanvasRenderingContext::prepareForDisplayWithPaint() which signals that next
paintRenderingResultsToCanvas() is a display operation. This can be used to to detect the
paintRenderingResultsToCanvas() in which we must present the drawing buffer as
display buffer.

Implement the display buffer read with OpenGL.

Refactor the drawing buffer read code to be able to reuse the read code
for the display buffer read. The refactored code reduces redundant the
allocations of full-screen malloc buffers and ensures allocation results are
checked instead of crashing with nullptr derefs when OOM happens. Fixes
errors such as rdar://67553531 (CrashTracer: com.apple.WebKit.WebContent at
WebCore: WebCore::GraphicsContextGLOpenGL::paintRenderingResultsToCanvas).
Removes RGBA->BGRA->RGBA conversions from
GraphicsContextGLOpenGL::paintRenderingResultsToImageData().
Removes manual alpha premultiplication and makes CG draw with unpremultiplied
alpha.
Changes Cairo variant of GraphicsContextGLOpenGL to convert manually RGBA->BGRA
instead of (big) OpenGL driver doing it in case of non-NVIDIA platforms.

No new tests, the snapshot / sw+hw drawing is not testable at the moment.

  • Modules/webgpu/GPUCanvasContext.cpp:

(WebCore::GPUCanvasContext::configureSwapChain):
(WebCore::GPUCanvasContext::prepareForDisplayWithPaint):
(WebCore::GPUCanvasContext::paintRenderingResultsToCanvas):

  • Modules/webgpu/GPUCanvasContext.h:
  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::paint):

  • html/HTMLCanvasElement.h:
  • html/canvas/CanvasRenderingContext.h:

(WebCore::CanvasRenderingContext::prepareForDisplayWithPaint):

  • html/canvas/GPUBasedCanvasRenderingContext.h:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::initializeNewContext):
(WebCore::WebGLRenderingContextBase::prepareForDisplayWithPaint):
(WebCore::WebGLRenderingContextBase::paintRenderingResultsToCanvas):
(WebCore::WebGLRenderingContextBase::validateElementArraySize):
(WebCore::WebGLRenderingContextBase::validateIndexArrayPrecise):
(WebCore::WebGLRenderingContextBase::validateDrawElements):
(WebCore::WebGLRenderingContextBase::vertexAttribfvImpl):
(WebCore::WebGLRenderingContextBase::initVertexAttrib0):

  • html/canvas/WebGLRenderingContextBase.h:
  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/RemoteGraphicsContextGLProxyBase.cpp:
  • platform/graphics/RemoteGraphicsContextGLProxyBase.h:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::readPixelsForPaintResults):
(WebCore::GraphicsContextGLOpenGL::readRenderingResults):
(WebCore::GraphicsContextGLOpenGL::reshape):
(WebCore::GraphicsContextGLOpenGL::getProgramInfoLog):
(WebCore::GraphicsContextGLOpenGL::getShaderInfoLog):

  • platform/graphics/angle/GraphicsContextGLANGLEUtilities.h:

(WebCore::ScopedRestoreTextureBinding::ScopedRestoreTextureBinding):
(WebCore::ScopedBufferBinding::ScopedBufferBinding):
(WebCore::ScopedBufferBinding::~ScopedBufferBinding):
(WebCore::ScopedBufferBinding::query):
(WebCore::ScopedRestoreReadFramebufferBinding::ScopedRestoreReadFramebufferBinding):
(WebCore::ScopedRestoreReadFramebufferBinding::markBindingChanged):
(WebCore::ScopedRestoreReadFramebufferBinding::bindFramebuffer):
(WebCore::ScopedRestoreReadFramebufferBinding::~ScopedRestoreReadFramebufferBinding):
(WebCore::ScopedPixelStorageMode::ScopedPixelStorageMode):
(WebCore::ScopedPixelStorageMode::~ScopedPixelStorageMode):
(WebCore::ScopedPixelStorageMode::pixelStore):
(WebCore::ScopedPixelStorageMode::operator GLint const):
(WebCore::ScopedTexture::ScopedTexture):
(WebCore::ScopedTexture::~ScopedTexture):
(WebCore::ScopedTexture::operator GLuint const):
(WebCore::ScopedFramebuffer::ScopedFramebuffer):
(WebCore::ScopedFramebuffer::~ScopedFramebuffer):
(WebCore::ScopedFramebuffer::operator GLuint const):

  • platform/graphics/cairo/GraphicsContextGLCairo.cpp:

(WebCore::GraphicsContextGLOpenGL::paintToCanvas):

  • platform/graphics/cg/GraphicsContextGLCG.cpp:

(WebCore::releaseImageData):
(WebCore::GraphicsContextGLOpenGL::paintToCanvas):

  • platform/graphics/cocoa/GraphicsContextGLIOSurfaceSwapChain.h:
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::GraphicsContextGLOpenGL::allowOfflineRenderers const):
(WebCore::GraphicsContextGLOpenGL::readCompositedResults):

  • platform/graphics/cocoa/WebGLLayer.mm:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:

(WebCore::GraphicsContextGLOpenGL::paintRenderingResultsToCanvas):
(WebCore::GraphicsContextGLOpenGL::paintCompositedResultsToCanvas):
(WebCore::GraphicsContextGLOpenGL::paintRenderingResultsToImageData):
(WebCore::GraphicsContextGLOpenGL::readCompositedResults):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:

(WebCore::GraphicsContextGLOpenGL::readPixelsForPaintResults):

  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:

(WebCore::GraphicsContextGLOpenGL::readRenderingResults):
(WebCore::GraphicsContextGLOpenGL::reshape):
(WebCore::GraphicsContextGLOpenGL::blendFunc):
(WebCore::GraphicsContextGLOpenGL::compileShader):
(WebCore::GraphicsContextGLOpenGL::getActiveAttribImpl):
(WebCore::GraphicsContextGLOpenGL::getActiveAttrib):
(WebCore::GraphicsContextGLOpenGL::getActiveUniformImpl):
(WebCore::GraphicsContextGLOpenGL::getActiveUniform):
(WebCore::GraphicsContextGLOpenGL::originalSymbolName):
(WebCore::GraphicsContextGLOpenGL::mappedSymbolName):
(WebCore::GraphicsContextGLOpenGL::deleteVertexArray):
(WebCore::GraphicsContextGLOpenGL::isVertexArray):
(WebCore::GraphicsContextGLOpenGL::getNonBuiltInActiveSymbolCount):
(WebCore::GraphicsContextGLOpenGL::getUnmangledInfoLog):
(WebCore::GraphicsContextGLOpenGL::getShaderi):
(WebCore::GraphicsContextGLOpenGL::getShaderInfoLog):
(WebCore::GraphicsContextGLOpenGL::getShaderSource):

  • platform/graphics/opengl/GraphicsContextGLOpenGLES.cpp:

(WebCore::GraphicsContextGLOpenGL::readPixelsForPaintResults):

Source/WebKit:

Add dummy implementations of GraphicsContextGL::paintCompositedResultsToCanvas.
Painting to canvas is not implemented yet for the remote GraphicsContextGL implementation.

  • GPUProcess/graphics/RemoteGraphicsContextGLCocoa.cpp:

(WebKit::RemoteGraphicsContextGLCocoa::displayBuffer const):

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:

(WebKit::RemoteGraphicsContextGLProxy::paintCompositedResultsToCanvas):

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:
8:45 PM Changeset in webkit [270963] by jer.noble@apple.com
  • 6 edits in trunk/Tools

REGRESSION: [ BigSur ] 3 PictureInPicture related API tests timing out
https://bugs.webkit.org/show_bug.cgi?id=219999

Reviewed by Eric Carlson.

Not a fix for the timeout itself, but a change which will allow us to see the Util::run() statement which
is timing out. Rather than just get a generic TIMEOUT result with no clue to the cause, a Util::run() statement
which takes longer than the specified amount of time will generate an ASSERT() error with the line number
which caused the timeout.

  • TestWebKitAPI/Tests/WebKitCocoa/ExitFullscreenOnEnterPiP.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/ExitPiPOnSuspendVideoElement.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewCloseAllMediaPresentations.mm:

(TEST):

  • TestWebKitAPI/Utilities.h:
  • TestWebKitAPI/cocoa/UtilitiesCocoa.mm:

(TestWebKitAPI::Util::runFor):

7:24 PM Changeset in webkit [270962] by achristensen@apple.com
  • 4 edits in trunk

REGRESSION(r270638) decidePolicyForNewWindowAction should have non-null request
https://bugs.webkit.org/show_bug.cgi?id=220001
Source/WebKit:

<rdar://72436824>

Reviewed by Tim Horton.

A ResourceRequest was used after being moved in the super old C SPI that we need to remove,
but to keep our client functioning correctly until they do we copy the ResourceRequest instead of moving it.
Covered by an API test.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::decidePolicyForNewWindowAction):

Tools:

Reviewed by Tim Horton.

  • TestWebKitAPI/Tests/WebKitCocoa/DecidePolicyForNavigationAction.mm:

(TEST):

5:21 PM Changeset in webkit [270961] by Chris Dumez
  • 23 edits in trunk/Source

[GPUProcess] https://www.waveplayer.info/createmediaelementsource-test/ demo is flaky
https://bugs.webkit.org/show_bug.cgi?id=219951

Reviewed by Geoff Garen.

The issue was with the following line in AudioSourceProviderAVFObjC::prepare:
m_ringBuffer = m_ringBufferCallback(description, capacity).moveToUniquePtr();

In the case where m_ringBuffer was non-null before the assignment, we would have
2 RingBuffers that would coexist for a very small period of time. When the new
one was created, we would send an IPC to the remote process with the shared
memory handle of the new RingBuffer. However, very shortly after, the old
ring buffer would get destroyed, causing us to send another IPC to the remote
process with a null handle (since the shared memory associated with the old
ring buffer is getting destroyed). As a result, of this ordering issue, the
remote process would end up with a RingBuffer with a null shared memory handle
and no audio would be rendered.

We could have addressed the issue like so:
`
m_ringBuffer = nullptr;
m_ringBuffer = m_ringBufferCallback(description, capacity).moveToUniquePtr();
`
However, this would be super fragile. Instead, I have made the following changes:

  1. If there is already a ringBuffer, reuse it instead of reconstructing it. Calling allocate() with the new parameters on the existing ring buffer is sufficient in this case.
  2. Because of 1, the ring buffer creation callback no longer needs to call CARingBuffer::allocate().

I also made the following changes to make the code simpler and to reduce code
duplication:

  • The storage change handler passed to SharedRingBufferStorage is now given as parameter the CAAudioStreamDescription & frameCount. What the handler always does is send an IPC to the remote process to tell it that the storage changed and in all cases, it needs to provide these 2 parameters as well. This is because the remote process will need to call CARingBuffer::allocate(), which requires those 2 parameters. This simplifies our code in some cases since we no longer need a mechanism to retrieve those 2 parameters from inside the storage change handler.
  • The logic of the StorageChange IPC recipient to update its ringbuffer with the new shared memory handle is complicated and was duplicated in a LOT of places. To address this, I introduced a new SharedRingBufferStorage::updateReadOnlyStorage() function which does exactly what we need.

Source/WebCore:

  • platform/audio/cocoa/CARingBuffer.cpp:

(WebCore::CARingBuffer::allocate):

  • platform/audio/cocoa/CARingBuffer.h:
  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.h:
  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:

(WebCore::AudioSourceProviderAVFObjC::AudioSourceProviderAVFObjC):
(WebCore::AudioSourceProviderAVFObjC::prepare):
(WebCore::AudioSourceProviderAVFObjC::setRingBufferCreationCallback):

Source/WebKit:

  • GPUProcess/media/RemoteAudioDestinationManager.cpp:

(WebKit::RemoteAudioDestination::audioSamplesStorageChanged):

  • GPUProcess/media/RemoteAudioSourceProviderProxy.cpp:

(WebKit::RemoteAudioSourceProviderProxy::create):
(WebKit::RemoteAudioSourceProviderProxy::createRingBuffer):
(WebKit::RemoteAudioSourceProviderProxy::storageChanged):

  • GPUProcess/media/RemoteAudioSourceProviderProxy.h:
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.cpp:

(WebKit::RemoteAudioMediaStreamTrackRenderer::audioSamplesStorageChanged):

  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:

(WebKit::RemoteMediaRecorder::audioSamplesStorageChanged):

  • Shared/Cocoa/SharedRingBufferStorage.cpp:

(WebKit::SharedRingBufferStorage::setStorage):
(WebKit::SharedRingBufferStorage::updateReadOnlyStorage):
(WebKit::SharedRingBufferStorage::allocate):
(WebKit::SharedRingBufferStorage::deallocate):

  • Shared/Cocoa/SharedRingBufferStorage.h:

(WebKit::SharedRingBufferStorage::SharedRingBufferStorage):
(WebKit::SharedRingBufferStorage::storage const):

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::SourceProxy::SourceProxy):
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::storageChanged):

  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp:

(WebKit::SpeechRecognitionRemoteRealtimeMediaSource::setStorage):

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:

(WebKit::RemoteAudioDestinationProxy::RemoteAudioDestinationProxy):
(WebKit::RemoteAudioDestinationProxy::storageChanged):

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

(WebKit::RemoteAudioSourceProviderManager::RemoteAudio::setStorage):

  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.cpp:

(WebKit::AudioMediaStreamTrackRenderer::AudioMediaStreamTrackRenderer):
(WebKit::AudioMediaStreamTrackRenderer::storageChanged):

  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.h:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:

(WebKit::MediaRecorderPrivate::startRecording):
(WebKit::MediaRecorderPrivate::storageChanged):

  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:
  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:

(WebKit::RemoteCaptureSampleManager::RemoteAudio::setStorage):

3:47 PM Changeset in webkit [270960] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Big Sur ] imported/w3c/web-platform-tests/fetch/content-type/script.window.html is failing
https://bugs.webkit.org/show_bug.cgi?id=219965

unreviewed test gardening.

  • platform/mac/TestExpectations:
3:43 PM Changeset in webkit [270959] by Said Abou-Hallawa
  • 3 edits in trunk/PerformanceTests

[MotionMark] Increase the warm-up time for each sub-test from 100ms to 1000ms
https://bugs.webkit.org/show_bug.cgi?id=219984

Reviewed by Jon Lee.

Ensure the warm-up time is enough for the system to finish any initialization
work which may be triggered by the sub-test before starting the sampling.
This should prevent bi-modality in the score of the sub-tests since the
initial frame rate is crucial in deciding how much the complexity can grow.

  • MotionMark/developer.html:
  • MotionMark/resources/runner/motionmark.js:

(this.clear):

3:34 PM Changeset in webkit [270958] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] Reserve vector capacity for inline runs and line boxes
https://bugs.webkit.org/show_bug.cgi?id=219985

Reviewed by Simon Fraser.

...and some of the predefined vector capacities got lost at r267325.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::build):

  • layout/inlineformatting/InlineFormattingState.h:
  • layout/inlineformatting/InlineLineBox.cpp:

(WebCore::Layout::LineBox::InlineLevelBox::InlineLevelBox):
(WebCore::Layout::LineBox::LineBox):
(WebCore::Layout::m_isConsideredEmpty):

  • layout/inlineformatting/InlineLineBox.h:
3:31 PM Changeset in webkit [270957] by Alan Coon
  • 1 copy in tags/Safari-611.1.9

Tag Safari-611.1.9.

3:30 PM Changeset in webkit [270956] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitscmpy] Correct mock git log call in standard git repositories
https://bugs.webkit.org/show_bug.cgi?id=219992
<rdar://problem/72436380>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py: git_svn flag should only

control the final line of the message, not the existence of the entire message.

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

(TestFind.test_basic_git):
(TestFind.test_identifier_git):
(TestFind.test_identifier_git_svn):
(TestFind.test_hash):

3:21 PM Changeset in webkit [270955] by Manuel Rego Casasnovas
  • 5 edits in trunk

[selectors] Default namespace gets ignored inside non-type selectors for :is() and :not()
https://bugs.webkit.org/show_bug.cgi?id=219950

Reviewed by Antti Koivisto.

Source/WebCore:

Based on Blink r820500 and r820557 by <andruud@chromium.org>.

Default namespace declarations do not affect the compound selector
representing the subject of any selector within a :is() or :not() pseudo-class,
unless that compound selector contains an explicit universal selector or type selector.
Spec: https://drafts.csswg.org/selectors-4/#matches

This patch aligns WebKit implementation with Chromium and Firefox, so two WPT tests pass now.

  • css/parser/CSSSelectorParser.cpp:

(WebCore::atEndIgnoringWhitespace):
(WebCore::CSSSelectorParser::consumeCompoundSelector):
(WebCore::CSSSelectorParser::consumePseudo):
(WebCore::CSSSelectorParser::defaultNamespace const):

  • css/parser/CSSSelectorParser.h:

LayoutTests:

3:19 PM Changeset in webkit [270954] by commit-queue@webkit.org
  • 5 edits in trunk/Tools

Stop parsing reftest.list files
https://bugs.webkit.org/show_bug.cgi?id=203783

Patch by Sam Sneddon <Sam Sneddon> on 2020-12-17
Reviewed by Jonathan Bedard.

This has only been used by the webkitpy integration tests in recent years. Needless to say,
this is Not Useful.

We do still have one reftest.list file,
media/track/opera/track/webvtt/rendering/reftest/reftest.list, but as this is in a reftest
directory we don't run any of the tests in it (and never have). See the above bug for more
detail about that history.

  • Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:

(RebaselineTest.assertBaselines): docstring fix
(RunTest.test_reftest_should_not_use_naming_convention_if_not_listed_in_reftestlist): Deleted.
(EndToEndTest): Deleted.
(EndToEndTest.test_reftest_with_two_notrefs): Deleted.

  • Scripts/webkitpy/port/base.py:

(Port.init): remove Port._reftest_list
(Port.reference_files): don't use reftest.list as source of truth
(Port._get_reftest_list): Deleted.
(Port._parse_reftest_list): Deleted.

  • Scripts/webkitpy/port/base_unittest.py:

(PortTest.test_parse_reftest_list): Deleted.

  • Scripts/webkitpy/port/test.py:

(unit_test_list): remove tests used to test reftest.list

3:17 PM Changeset in webkit [270953] by Jonathan Bedard
  • 4 edits in trunk/Tools

[run-webkit-tests] Replace FailureNotTested with FailureNoOutput
https://bugs.webkit.org/show_bug.cgi?id=219994
<rdar://problem/72440201>

Reviewed by Geoffrey Garen.

  • Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:

(SingleTestRunner._compare_text): Replace FailureNotTest with FailureNoOutput.

  • Scripts/webkitpy/layout_tests/models/test_failures.py:

(determine_result_type): Replace FailureNotTest with FailureNoOutput.
(FailureNoOutput): Renamed from FailureNotTested.
(FailureNotTested): Renamed to FailureNoOutput.

  • Scripts/webkitpy/layout_tests/models/test_failures_unittest.py:

(TestFailuresTest.test_all_failure_classes): Replace FailureNotTest with FailureNoOutput.

3:14 PM Changeset in webkit [270952] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[Cocoa] WebM format reader doesn't work with a url in a <source> element
https://bugs.webkit.org/show_bug.cgi?id=219961
<rdar://problem/72399014>

Unreviewed, address post-review comments after r270939.

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::canLoadFormatReader): Use an #elif so we don’t compile multiple
return statements.

2:39 PM Changeset in webkit [270951] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed build fix after r270938.

Add missing include.

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:
2:27 PM Changeset in webkit [270950] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Rebase http/tests/navigation/javascriptlink-frames.html for Big Sur
https://bugs.webkit.org/show_bug.cgi?id=219186

Unreviewed test gardening

  • platform/mac/http/tests/navigation/javascriptlink-frames-expected.txt:
2:26 PM Changeset in webkit [270949] by Chris Dumez
  • 2 edits in trunk/Source/WTF

Unreviewed, drop unnecessary forward declaration added in r270938.

  • wtf/cocoa/MachSemaphore.h:
2:25 PM Changeset in webkit [270948] by commit-queue@webkit.org
  • 26 edits
    1 move
    4 adds in trunk

[WASM-References] Add support for memory.copy, memory.init and data.drop
https://bugs.webkit.org/show_bug.cgi?id=219943

Patch by Dmitry Bezhetskov <dbezhetskov> on 2020-12-17
Reviewed by Yusuke Suzuki.

JSTests:

Added ref-types spec tests for memory.copy, memory.init and data.drop:
https://github.com/WebAssembly/reference-types/tree/master/test/core.
Renamed table_instructions_parse_unreachable test into just
parse_unreachable to prevent confusion.

  • wasm.yaml:
  • wasm/references-spec-tests/memory_copy.wast.js: Added.
  • wasm/references-spec-tests/memory_init.wast.js: Added.
  • wasm/references/memory_copy.js: Added.

(async test):

  • wasm/references/memory_copy_shared.js: Added.

(async test):

  • wasm/references/parse_unreachable.js: Renamed from JSTests/wasm/references/table_instructions_parse_unreachable.js.

(invalidMemoryCopyUnreachable):
(invalidMemoryInitUnreachable):
(invalidDataDropUnreachable):

  • wasm/wasm.json:

Source/JavaScriptCore:

Add support for memory.copy [dstAddress, srcAddress, length] -> []
that copies one memory segment to another memory segment.
The memory.copy calls C memcpy function to utilize all possible optimization for copy.
This instruction speedup copying data segments in wasm because without it we need to use a lot
load/store instructions with loops in wasm.

Add support for memory.init data_segment_index [dstAddress, srcAddress, length] -> []
that copies data from a passive data segment into a memory segment.
This instruction is the same as memory.copy but for read-only data segments.
It also utilize C memcpy under the hood.

Add support for data.drop data_segment_index [] -> []
that resize given data segment to zero.
Data.drop makes redundant data segment and prevents usage of it in the next.
BTW, it is just a hint for the host runtime so we don't have to change data segment.

Add support for Data count section.
This section just stores the number of data segments.
We need this to validate memory.init instruction's data index because
Code section comes before Data section.

These instructions are needed to support reference types proposal and bulk proposal.

  • bytecode/BytecodeList.rb:
  • llint/WebAssembly.asm:
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::addMemoryCopy):
(JSC::Wasm::AirIRGenerator::addMemoryInit):
(JSC::Wasm::AirIRGenerator::addDataDrop):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addMemoryInit):
(JSC::Wasm::B3IRGenerator::addMemoryCopy):
(JSC::Wasm::B3IRGenerator::addDataDrop):

  • wasm/WasmFormat.cpp:

(JSC::Wasm::Segment::create):

  • wasm/WasmFormat.h:

(JSC::Wasm::Segment::isActive const):
(JSC::Wasm::Segment::isPassive const):

  • wasm/WasmFunctionParser.h:

(JSC::Wasm::FunctionParser<Context>::parseDataSegmentIndex):
(JSC::Wasm::FunctionParser<Context>::parseMemoryCopyImmediates):
(JSC::Wasm::FunctionParser<Context>::parseMemoryInitImmediates):
(JSC::Wasm::FunctionParser<Context>::parseExpression):
(JSC::Wasm::FunctionParser<Context>::parseUnreachableExpression):

  • wasm/WasmInstance.cpp:

(JSC::Wasm::Instance::Instance):
(JSC::Wasm::Instance::memoryInit):
(JSC::Wasm::Instance::dataDrop):

  • wasm/WasmInstance.h:
  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::addMemoryInit):
(JSC::Wasm::LLIntGenerator::addDataDrop):
(JSC::Wasm::LLIntGenerator::addMemoryCopy):

  • wasm/WasmMemory.cpp:

(JSC::Wasm::Memory::copy):
(JSC::Wasm::Memory::init):

  • wasm/WasmMemory.h:
  • wasm/WasmModuleInformation.h:

(JSC::Wasm::ModuleInformation::dataSegmentsCount const):

  • wasm/WasmOperations.cpp:

(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

  • wasm/WasmOperations.h:
  • wasm/WasmSectionParser.cpp:

(JSC::Wasm::SectionParser::parseElement):
(JSC::Wasm::SectionParser::parseI32InitExpr):
(JSC::Wasm::SectionParser::parseI32InitExprForElementSection):
(JSC::Wasm::SectionParser::parseI32InitExprForDataSection):
(JSC::Wasm::SectionParser::parseDataSegmentCoreSpec):
(JSC::Wasm::SectionParser::parseDataSegmentReferenceTypesSpec):
(JSC::Wasm::SectionParser::parseGlobalType):
(JSC::Wasm::SectionParser::parseData):
(JSC::Wasm::SectionParser::parseDataCount):

  • wasm/WasmSectionParser.h:
  • wasm/WasmSections.h:

(JSC::Wasm::validateOrder):

  • wasm/WasmSlowPaths.cpp:

(JSC::LLInt::WASM_SLOW_PATH_DECL):

  • wasm/WasmSlowPaths.h:
  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::evaluate):

  • wasm/wasm.json:
2:23 PM Changeset in webkit [270947] by Chris Dumez
  • 12 edits in trunk/Source

[WebAudio] Simplify code related to dispatchToRenderThread
https://bugs.webkit.org/show_bug.cgi?id=219990

Reviewed by Geoffrey Garen.

Simplify code related to dispatchToRenderThread in WebAudio:

  1. AudioDestination::start() now always gets called with a non-null dispatchToRenderThread lambda. In the case where there is no AudioWorkletThread to dispatch to, the lambda simply calls its task synchronously.
  2. For Cocoa ports, make it so that only AudioDestinationCocoa needs to worry about the dispatchToRenderThread lambda. The dispatchToRenderThread lambda is no longer exposed to subclasses such as MockAudioDestinationCocoa & RemoteAudioDestinationProxy.

Source/WebCore:

  • Modules/webaudio/DefaultAudioDestinationNode.cpp:

(WebCore::Function<void):

  • platform/audio/cocoa/AudioDestinationCocoa.cpp:

(WebCore::AudioDestinationCocoa::start):
(WebCore::AudioDestinationCocoa::startRendering):
(WebCore::AudioDestinationCocoa::stop):
(WebCore::AudioDestinationCocoa::stopRendering):
(WebCore::AudioDestinationCocoa::render):

  • platform/audio/cocoa/AudioDestinationCocoa.h:
  • platform/audio/gstreamer/AudioDestinationGStreamer.cpp:

(WebCore::AudioDestinationGStreamer::start):

  • platform/mock/MockAudioDestinationCocoa.cpp:

(WebCore::MockAudioDestinationCocoa::startRendering):
(WebCore::MockAudioDestinationCocoa::stopRendering):
(WebCore::MockAudioDestinationCocoa::tick):

  • platform/mock/MockAudioDestinationCocoa.h:

Source/WebKit:

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:

(WebKit::RemoteAudioDestinationProxy::startRenderingThread):
(WebKit::RemoteAudioDestinationProxy::startRendering):
(WebKit::RemoteAudioDestinationProxy::stopRendering):
(WebKit::RemoteAudioDestinationProxy::gpuProcessConnectionDidClose):

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.h:
2:21 PM Changeset in webkit [270946] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebKit

Fix "Open with Preview" menu item in PDF context menus on Big Sur
https://bugs.webkit.org/show_bug.cgi?id=219986
<rdar://problem/72406073>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-17
Reviewed by Geoffrey Garen.

In r266654 I removed the ability for the web process to open a PDF in Preview on Big Sur.
I overlooked the fact that context menus also allow you to open a PDF in Preview,
which this fixes by having the UI process initiate the Preview opening if the user clicks on
the context menu item with the correct index.

  • Shared/mac/PDFContextMenu.h:

(WebKit::PDFContextMenu::encode const):
(WebKit::PDFContextMenu::decode):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::showPDFContextMenu):

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::handleContextMenuEvent):

2:07 PM Changeset in webkit [270945] by Truitt Savell
  • 4 edits in trunk/LayoutTests

Rebase 3 tests for Big Sur
https://bugs.webkit.org/show_bug.cgi?id=219184

unreviewed test gardening

  • platform/mac/fast/forms/listbox-width-change-expected.txt:
  • platform/mac/fast/forms/search-rtl-expected.txt:
  • platform/mac/fast/forms/search/search-size-with-decorations-expected.txt:
1:35 PM Changeset in webkit [270944] by Jonathan Bedard
  • 5 edits in trunk/Tools

[webkitscmpy] Capture Mock process logging during tests
https://bugs.webkit.org/show_bug.cgi?id=219989
<rdar://problem/72435662>

Reviewed by Dewei Zhu.

When declaring two mock local repositories, we need to ensure that logs are captured when
Instantiating the second repository so that "Mock process # send signal 9" is not logged
to the user's terminal.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/test/checkout_unittest.py:

(TestCheckout):

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

(TestFind):

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

(TestGit):

1:33 PM Changeset in webkit [270943] by jer.noble@apple.com
  • 5 edits in trunk/Source/WebCore

[macOS] Use low-power audio buffer sizes for more output devices
https://bugs.webkit.org/show_bug.cgi?id=219975
<rdar://problem/72391280>

Reviewed by Eric Carlson.

In r171069, we limited setting the preferred buffer duration to a "low power", high-duration value to
built-in hardware, as some external audio devices would report supporting those high-duration values
only to have audible glitches when that value was set. Since then, external, wireless audio devices have
become vastly more prevalent. To enable "low power" buffer durations on those devices, allow these larger
durations to be set on external devices so long as they claim to support that larger duration.

  • platform/audio/AudioHardwareListener.cpp:

(WebCore::AudioHardwareListener::AudioHardwareListener):

  • platform/audio/AudioHardwareListener.h:

(WebCore::AudioHardwareListener::BufferSizeRange::operator bool const):
(WebCore::AudioHardwareListener::BufferSizeRange::nearest const):
(WebCore::AudioHardwareListener::supportedBufferSizes const):
(WebCore::AudioHardwareListener::setSupportedBufferSizes):
(WebCore::AudioHardwareListener::outputDeviceSupportsLowPowerMode const): Deleted.
(WebCore::AudioHardwareListener::setOutputDeviceSupportsLowPowerMode): Deleted.

  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(WebCore::MediaSessionManagerCocoa::updateSessionState):

  • platform/audio/mac/AudioHardwareListenerMac.cpp:

(WebCore::currentDeviceSupportedBufferSizes):
(WebCore::AudioHardwareListenerMac::AudioHardwareListenerMac):
(WebCore::AudioHardwareListenerMac::outputDeviceChanged):
(WebCore::currentDeviceSupportsLowPowerBufferSize): Deleted.

1:22 PM Changeset in webkit [270942] by Kate Cheney
  • 6 edits in trunk/Source

Followup patch: Still can't login to my.playstation.com
https://bugs.webkit.org/show_bug.cgi?id=219900
<rdar://problem/72062985>

Reviewed by Darin Adler.

Source/WebCore:

  • en.lproj/Localizable.strings:

Source/WebKit:

Using curly quotes when constructing the Storage Access prompt message
may create issues with localizable strings. We should make a separate
localizable string for this quirk case and remove it when Sony
migrates away from third party cookies in their login flow.

  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::UIClient::requestStorageAccessConfirm):
(WebKit::buildListForStorageAccessPrompt): Deleted.

  • UIProcess/Cocoa/WKStorageAccessAlert.h:
  • UIProcess/Cocoa/WKStorageAccessAlert.mm:

(WebKit::presentStorageAccessAlert):
(WebKit::presentStorageAccessAlertQuirk):
(WebKit::displayStorageAccessAlert):

12:30 PM Changeset in webkit [270941] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitscmpy] Remove branches argument from mock Git
https://bugs.webkit.org/show_bug.cgi?id=219988
<rdar://problem/72434657>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:

(Git.init): Remote branches argument.

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

(TestGit.test_branches):

12:30 PM Changeset in webkit [270940] by Fujii Hironori
  • 12 edits in trunk/Source/WebCore

[CMake] Unify WebGL source files into the common WebCore/CMakeLists.txt
https://bugs.webkit.org/show_bug.cgi?id=219970

Reviewed by Don Olmstead.

CMake build scripts should have a single place to list WebGL
source files to ease WebGL devs.

After all ports will switch to use GraphicsContextGLANGLE.cpp,
those files can be added to the common Sources.txt.

GraphicsContextGLOpenGLPrivate is used only by AppleWin port.
Enclosed by #if PLATFORM(WIN) && USE(CA).

  • CMakeLists.txt:
  • PlatformFTW.cmake:
  • PlatformGTK.cmake:
  • PlatformPlayStation.cmake:
  • PlatformWin.cmake:
  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGLPrivate.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGLPrivate.h:
  • platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:
12:14 PM Changeset in webkit [270939] by eric.carlson@apple.com
  • 9 edits in trunk/Source

[Cocoa] WebM format reader doesn't work with a url in a <source> element
https://bugs.webkit.org/show_bug.cgi?id=219961
<rdar://problem/72399014>

Reviewed by Andy Estes.

Source/WebCore:

Work around a bug that makes the format reader fail to load when the AVURLAssetOutOfBandMIMETypeKey
is included in the AVURLAsset options dictionary. Also include some cleanup:

  • Move the code to check for WebM MIME types from MediaPlayerPrivateAVFoundationObjC to AVAssetMIMETypeCache.
  • Don't use RuntimeEnabledFeatures in MediaPlayerPrivateAVFoundationObjC.
  • Register the WebM format reader when creating an AVURLAsset for a WebM url instead of when checking the MIME type.
  • Cleanup WebM "codecs" parameter parsing.
  • platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.h:
  • platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm:

(WebCore::AVAssetMIMETypeCache::canDecodeExtendedType):
(WebCore::AVAssetMIMETypeCache::staticContainerTypeList):
(WebCore::AVAssetMIMETypeCache::setWebMFormatReaderEnabled):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::registerFormatReaderIfNecessary):
(WebCore::shouldAdvertiseOutOfBandMIMEType):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):
(WebCore::MediaPlayerPrivateAVFoundationObjC::supportsTypeAndCodecs):
(WebCore::ensureFormatReaderIsRegistered): Deleted.
(WebCore::isFormatReaderAvailable): Deleted.

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::setWebMFormatReaderEnabled):
(WebCore::SourceBufferParserWebM::webmMIMETypes):
(WebCore::SourceBufferParserWebM::isWebMFormatReaderAvailable):
(WebCore::SourceBufferParserWebM::isContentTypeSupported):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

11:10 AM Changeset in webkit [270938] by Chris Dumez
  • 14 edits
    2 adds in trunk/Source

[GPUProcess] Replace WebAudio rendering timer with a cross-process semaphore
https://bugs.webkit.org/show_bug.cgi?id=219964

Reviewed by Geoff Garen.

Source/WebCore:

Revert changes to CARingBuffer from r270907. These are no longer needed
with this new approach so we might as well remove the complexity from
our ring buffer implementation.

  • platform/audio/cocoa/CARingBuffer.cpp:

(WebCore::CARingBufferStorageVector::flush):
(WebCore::CARingBuffer::fetchIfHasEnoughData):
(WebCore::CARingBuffer::fetch):

  • platform/audio/cocoa/CARingBuffer.h:

Source/WebKit:

r270907 replaced the per-rendering quantum IPC from the GPUProcess to the
WebProcess with a very high-frequency timer in the WebProcess to trigger
the rendering. While this works, this seemed a bit fragile and it also
adds some latency to avoid missed frames.

In this patch, I am replacing the high-frequency timer introduced in r270907
with a cross-process semaphore. When the WebProcess asks the GPU process
to create an audio device, the GPUProcess sends it back a MachSendRight
to the "rendering" semaphore. The WebProcess then starts a high-priority
AudioThread which waits this semaphore to be signaled to render a quantum.
Whenever render() gets called on the GPUProcess side, the GPUProcess
simply signals the "rendering" semaphore, causing the WebProcess to do
the rendering of a quantum. As was the case before, the WebProcess stores
rendered buffers into the RingBuffer it shares with the GPUProcess and
the GPUProcess fetches from the RingBuffer as needed.

  • GPUProcess/media/RemoteAudioDestinationManager.cpp:

(WebKit::RemoteAudioDestination::createRenderSemaphoreSendRight):
(WebKit::RemoteAudioDestination::audioSamplesStorageChanged):
(WebKit::RemoteAudioDestination::render):
(WebKit::RemoteAudioDestinationManager::createAudioDestination):

  • GPUProcess/media/RemoteAudioDestinationManager.h:
  • GPUProcess/media/RemoteAudioDestinationManager.messages.in:
  • Shared/Cocoa/SharedRingBufferStorage.cpp:
  • Shared/Cocoa/SharedRingBufferStorage.h:
  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:

(WebKit::RemoteAudioDestinationProxy::RemoteAudioDestinationProxy):
(WebKit::RemoteAudioDestinationProxy::startRenderingThread):
(WebKit::RemoteAudioDestinationProxy::stopRenderingThread):
(WebKit::RemoteAudioDestinationProxy::connectToGPUProcess):
(WebKit::RemoteAudioDestinationProxy::~RemoteAudioDestinationProxy):
(WebKit::RemoteAudioDestinationProxy::start):
(WebKit::RemoteAudioDestinationProxy::stop):
(WebKit::RemoteAudioDestinationProxy::renderQuantum):
(WebKit::RemoteAudioDestinationProxy::storageChanged):
(WebKit::RemoteAudioDestinationProxy::gpuProcessConnectionDidClose):

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.h:

Source/WTF:

Introduce MachSemaphore class, which is a C++ wrapper around a low-level
mach semaphore. This semaphore can be used cross-process and sent via
IPC as a MachSendRight.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/PlatformMac.cmake:
  • wtf/cocoa/MachSemaphore.cpp: Added.

(WTF::MachSemaphore::MachSemaphore):
(WTF::MachSemaphore::~MachSemaphore):
(WTF::MachSemaphore::signal):
(WTF::MachSemaphore::wait):
(WTF::MachSemaphore::createSendRight):

  • wtf/cocoa/MachSemaphore.h: Added.
10:26 AM Changeset in webkit [270937] by Patrick Angle
  • 13 edits in trunk

Web Inspector: REGRESSION(r266467): viewing a WebSocket created before Web Inspector was opened doesn't show any message frames
https://bugs.webkit.org/show_bug.cgi?id=219510

Reviewed by Youenn Fablet.

Source/WebCore:

Updated test: http/tests/websocket/tests/hybi/inspector/before-load.html

Restored functionality prior to r266467 so that the progressIdentifier (previously channelIdentifier) is
available from WebSocketChannel.

  • Modules/websockets/ThreadableWebSocketChannel.h:
  • Modules/websockets/WebSocketChannel.cpp:

(WebCore::WebSocketChannel::WebSocketChannel):
(WebCore::WebSocketChannel::connect):
(WebCore::WebSocketChannel::fail):
(WebCore::WebSocketChannel::disconnect):
(WebCore::WebSocketChannel::didOpenSocketStream):
(WebCore::WebSocketChannel::didCloseSocketStream):
(WebCore::WebSocketChannel::didFailSocketStream):
(WebCore::WebSocketChannel::processBuffer):
(WebCore::WebSocketChannel::processFrame):
(WebCore::WebSocketChannel::sendFrame):

  • Modules/websockets/WebSocketChannel.h:
  • Reinstate a separate progress identifier for inspection
  • Modules/websockets/WebSocketChannelInspector.cpp:

(WebCore::progressIdentifier const):

  • Modules/websockets/WebSocketChannelInspector.h:
  • Support getting the progress identifier.
  • Modules/websockets/WorkerThreadableWebSocketChannel.h:
  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::enable):
(WebCore::InspectorNetworkAgent::webSocketForRequestId):

Source/WebKit:

Restored functionality prior to r266467 so that the progressIdentifier (previously channelIdentifier) is
available from WebSocketChannel.

  • WebProcess/Network/WebSocketChannel.h:

LayoutTests:

Updated test to check that sent and received frames are correctly associated with WebSockets that were open
before the Web Inspector was opened.

  • http/tests/websocket/tests/hybi/inspector/before-load-expected.txt:
  • http/tests/websocket/tests/hybi/inspector/before-load.html:
10:21 AM Changeset in webkit [270936] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Rebase fast/css/text-overflow-input.html
https://bugs.webkit.org/show_bug.cgi?id=219959

Unreviewed test gardening

  • platform/mac/fast/css/text-overflow-input-expected.txt:
9:17 AM Changeset in webkit [270935] by zandobersek@gmail.com
  • 2 edits in trunk/Tools

Unreviewed, reordering associated email addresses in
preparation for the GitHub migration.

  • Scripts/webkitpy/common/config/contributors.json:
6:55 AM Changeset in webkit [270934] by aestes@apple.com
  • 1 edit
    3 deletes in trunk/LayoutTests

Unreviewed test gardening.

  • platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType-expected.txt: Removed.
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-video-element/resize-during-playback-expected.txt: Removed.
  • platform/mac-wk2/media/media-can-play-webm-expected.txt: Removed.
5:41 AM Changeset in webkit [270933] by Manuel Rego Casasnovas
  • 9 edits
    52 adds in trunk/LayoutTests

[selectors] Update WPT test suite
https://bugs.webkit.org/show_bug.cgi?id=219958

Reviewed by Carlos Alberto Lopez Perez.

LayoutTests/imported/w3c:

  • web-platform-tests/css/selectors/focus-visible-001-expected.txt: Added.
  • web-platform-tests/css/selectors/focus-visible-001.html: Added.
  • web-platform-tests/css/selectors/focus-visible-002-expected.txt: Added.
  • web-platform-tests/css/selectors/focus-visible-002.html: Added.
  • web-platform-tests/css/selectors/focus-visible-003-expected.txt: Added.
  • web-platform-tests/css/selectors/focus-visible-003.html: Added.
  • web-platform-tests/css/selectors/focus-visible-004-expected.txt: Added.
  • web-platform-tests/css/selectors/focus-visible-004.html: Added.
  • web-platform-tests/css/selectors/focus-visible-012-expected.txt: Added.
  • web-platform-tests/css/selectors/focus-visible-012.html: Added.
  • web-platform-tests/css/selectors/hover-002-expected.txt: Added.
  • web-platform-tests/css/selectors/hover-002.html: Added.
  • web-platform-tests/css/selectors/invalidation/not-001-expected.txt: Added.
  • web-platform-tests/css/selectors/invalidation/not-001.html: Added.
  • web-platform-tests/css/selectors/invalidation/not-002-expected.txt: Added.
  • web-platform-tests/css/selectors/invalidation/not-002.html: Added.
  • web-platform-tests/css/selectors/invalidation/w3c-import.log:
  • web-platform-tests/css/selectors/is-default-ns-001-expected.html: Added.
  • web-platform-tests/css/selectors/is-default-ns-001.html: Added.
  • web-platform-tests/css/selectors/is-default-ns-002-expected.html: Added.
  • web-platform-tests/css/selectors/is-default-ns-002.html: Added.
  • web-platform-tests/css/selectors/is-default-ns-003-expected.html: Added.
  • web-platform-tests/css/selectors/is-default-ns-003.html: Added.
  • web-platform-tests/css/selectors/is-specificity-shadow-expected.txt: Added.
  • web-platform-tests/css/selectors/is-specificity-shadow.html: Added.
  • web-platform-tests/css/selectors/not-complex-expected.txt: Added.
  • web-platform-tests/css/selectors/not-complex.html: Added.
  • web-platform-tests/css/selectors/not-default-ns-001-expected.html: Added.
  • web-platform-tests/css/selectors/not-default-ns-001.html: Added.
  • web-platform-tests/css/selectors/not-default-ns-002-expected.html: Added.
  • web-platform-tests/css/selectors/not-default-ns-002.html: Added.
  • web-platform-tests/css/selectors/not-default-ns-003-expected.html: Added.
  • web-platform-tests/css/selectors/not-default-ns-003.html: Added.
  • web-platform-tests/css/selectors/not-specificity-expected.txt: Added.
  • web-platform-tests/css/selectors/not-specificity.html: Added.
  • web-platform-tests/css/selectors/parsing/parse-not-expected.txt:
  • web-platform-tests/css/selectors/parsing/parse-not.html:
  • web-platform-tests/css/selectors/selectors-dir-selector-auto-expected.txt: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-auto.html: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-change-001-expected.html: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-change-001.html: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-change-002-expected.xht: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-change-002.html: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-change-003-expected.html: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-change-003.html: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-change-004-expected.html: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-change-004.html: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-ltr-002-expected.xht: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-ltr-002.html: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-ltr-003-expected.xht: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-ltr-003.html: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-querySelector-expected.txt: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-querySelector.html: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-white-space-001-expected.html: Added.
  • web-platform-tests/css/selectors/selectors-dir-selector-white-space-001.html: Added.
  • web-platform-tests/css/selectors/w3c-import.log:

LayoutTests:

  • TestExpectations: Mark failures associated with the relevant bugs. Two focus-visible tests are skipped, as the only test they have is failing with different messages in each platform because the outline color varies.
  • platform/ios/TestExpectations: Skip 2 tests that don't work in iOS.
  • tests-options.json:
3:18 AM Changeset in webkit [270932] by commit-queue@webkit.org
  • 13 edits in trunk/Source

Make FontCascade::CodePath an enum class
https://bugs.webkit.org/show_bug.cgi?id=219947

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

Source/WebCore:

Make FontCascade::CodePath an enum class. Besides the
usual enum class benefits, one additional nice thing
is that it removed the need for the "Complex" ifdef.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForFontAndText):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::canUseSimplifiedTextMeasuring):

  • platform/graphics/ComplexTextController.cpp:

(WebCore::TextLayout::isNeeded):

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::layoutText const):
(WebCore::FontCascade::displayListForTextRun const):
(WebCore::FontCascade::widthOfTextRange const):
(WebCore::FontCascade::width const):
(WebCore::FontCascade::widthForSimpleText const):
(WebCore::FontCascade::adjustSelectionRectForText const):
(WebCore::FontCascade::offsetForPosition const):
(WebCore::FontCascade::codePath const):
(WebCore::FontCascade::characterRangeCodePath):

  • platform/graphics/FontCascade.h:

(WebCore::FontCascade::characterRangeCodePath):

  • platform/win/WebCoreTextRenderer.cpp:

(WebCore::WebCoreSetAlwaysUsesComplexTextCodePath):
(WebCore::WebCoreAlwaysUsesComplexTextCodePath):

  • rendering/RenderText.cpp:

(WebCore::RenderText::computeCanUseSimplifiedTextMeasuring const):
(WebCore::RenderText::computeCanUseSimpleFontCodePath const):

  • rendering/svg/SVGTextMetricsBuilder.cpp:

(WebCore::SVGTextMetricsBuilder::initializeMeasurementWithTextRenderer):

Source/WebKit:

Adapt to enum class change.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::setAlwaysUsesComplexTextCodePath):

Source/WebKitLegacy/mac:

Adapt to enum class change.

  • WebView/WebView.mm:

(+[WebView _setAlwaysUsesComplexTextCodePath:]):

3:13 AM Changeset in webkit [270931] by commit-queue@webkit.org
  • 13 edits in trunk/Source/WebCore

Make MixedContentChecker stateless
https://bugs.webkit.org/show_bug.cgi?id=219771

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

Make MixedContentChecker stateless, it only needs the frame
in a few cased which we can just pass as a parameter. Making
MixedContentChecker stateless means that FrameLoader does
not have to know it.

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::connect):

  • Modules/websockets/WorkerThreadableWebSocketChannel.cpp:

(WebCore::WorkerThreadableWebSocketChannel::Bridge::connect):

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::parseAttribute):

  • html/parser/XSSAuditor.cpp:
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::willSendRequest):

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::loadRequest):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::FrameLoader):

  • loader/FrameLoader.h:
  • loader/MixedContentChecker.cpp:

(WebCore::logWarning):
(WebCore::MixedContentChecker::canDisplayInsecureContent):
(WebCore::MixedContentChecker::canRunInsecureContent):
(WebCore::MixedContentChecker::checkFormForMixedContent):
(WebCore::MixedContentChecker::checkForMixedContentInFrameTree):
(WebCore::MixedContentChecker::MixedContentChecker): Deleted.
(WebCore::MixedContentChecker::client const): Deleted.
(WebCore::MixedContentChecker::canDisplayInsecureContent const): Deleted.
(WebCore::MixedContentChecker::canRunInsecureContent const): Deleted.
(WebCore::MixedContentChecker::checkFormForMixedContent const): Deleted.
(WebCore::MixedContentChecker::logWarning const): Deleted.

  • loader/MixedContentChecker.h:
  • loader/SubframeLoader.cpp:

(WebCore::FrameLoader::SubframeLoader::pluginIsLoadable):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::checkInsecureContent const):

1:41 AM Changeset in webkit [270930] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Move service workers failures to GLIB.

Some of flaky failures have been passing consistently for the last
4000 revisions, so they're actually removed from test expectations.

  • platform/glib/TestExpectations:
  • platform/wpe/TestExpectations:

Dec 16, 2020:

11:28 PM Changeset in webkit [270929] by Diego Pino Garcia
  • 4 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening. Gardened several flaky failures.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
11:20 PM Changeset in webkit [270928] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] Not using JITCage trampoline for non JITCage JSC
https://bugs.webkit.org/show_bug.cgi?id=219974

Reviewed by Tadeu Zagallo.

We avoid using JITCage trampoline in YarrJIT if JSC is not using JITCage.

  • llint/LowLevelInterpreter.asm:
  • yarr/YarrJIT.cpp:
  • yarr/YarrJIT.h:

(JSC::Yarr::YarrCodeBlock::execute):

10:08 PM Changeset in webkit [270927] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[WPE] Unreviewed test gardening. fast/text/simple-line-wordspacing.html is an image failure.

  • platform/wpe/TestExpectations:
8:48 PM Changeset in webkit [270926] by Diego Pino Garcia
  • 5 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening. Update several baselines of tests failing and update expectations.

  • platform/glib/http/tests/websocket/tests/hybi/close-code-and-reason-expected.txt: Update after r270882.
  • platform/glib/http/tests/websocket/tests/hybi/workers/close-code-and-reason-expected.txt: Update after r270882.
  • platform/gtk/imported/w3c/web-platform-tests/css/css-color/animation/opacity-interpolation-expected.txt: Update after r270837.
  • platform/gtk/TestExpectations:
7:30 PM Changeset in webkit [270925] by Diego Pino Garcia
  • 1 edit
    2 adds in trunk/LayoutTests

[GTK] Unreviewed test gardening. Add baseline after r270823.

  • platform/gtk/fast/media/mq-prefers-contrast-forced-value-expected.html: Added.
7:16 PM Changeset in webkit [270924] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Flaky crash under AudioBuffer::channelData() when running layout tests
https://bugs.webkit.org/show_bug.cgi?id=219914

Reviewed by Geoffrey Garen.

The issue was that AudioBuffer::channelData() returns a RefPtr<Float32Array>,
Float32Array not being ThreadSafeRefCounted. The AudioBuffers in ScriptProcessorNode
are constructed on the main thread but ScriptProcessorNode::process() was calling
AudioBuffer::channelData() on the audio rendering thread. This would do some
non-thread-safe refcounting churn which would cause the crashes.

To address the issue, I introduced AudioBuffer::rawChannelData() which returns
the data as a float*, without any refcounting. I ported ScriptProcessorNode::process()
to use AudioBuffer::rawChannelData() instead of AudioBuffer::channelData().

No new tests, covered by existing layout tests that are flakily crashing.

  • Modules/webaudio/AudioBuffer.cpp:

(WebCore::AudioBuffer::rawChannelData):

  • Modules/webaudio/AudioBuffer.h:
  • Modules/webaudio/ScriptProcessorNode.cpp:

(WebCore::ScriptProcessorNode::process):

6:46 PM Changeset in webkit [270923] by ysuzuki@apple.com
  • 10 edits
    4 adds in trunk

[JSC] Accept arbitrary module namespace identifier names
https://bugs.webkit.org/show_bug.cgi?id=217576
JSTests:

<rdar://problem/70416104>

Reviewed by Darin Adler.

  • modules/arbitrary-module-names.js: Added.
  • modules/arbitrary-module-names/export.js: Added.
  • modules/arbitrary-module-names/export2.js: Added.
  • stress/modules-syntax-error.js:
  • test262/config.yaml:

Source/JavaScriptCore:

<rdar://problem/70416104>

Reviewed by Darin Adler.

This patch implements arbitrary module namespace identifier names[1].
After this, we can export and import arbitrary module export names which are not valid as a variable identifier.
For example,

import { "delete" as deletedValue } from "./ok.js";

...

export {

deletedValue as "delete"

};

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

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseImportClauseItem):
(JSC::Parser<LexerType>::parseImportDeclaration):
(JSC::Parser<LexerType>::parseExportSpecifier):
(JSC::Parser<LexerType>::parseExportDeclaration):

  • parser/Parser.h:

Source/WebCore:

Reviewed by Darin Adler.

  • bindings/js/JSDOMConvertStrings.cpp:

(WebCore::hasUnpairedSurrogate): Deleted.

Source/WTF:

Reviewed by Darin Adler.

  • wtf/text/StringView.h:

(WTF::hasUnpairedSurrogate):

6:20 PM Changeset in webkit [270922] by Russell Epstein
  • 4 edits in branches/safari-611.1.9-branch

Revert r270664. rdar://problem/72408033

6:19 PM Changeset in webkit [270921] by Russell Epstein
  • 6 edits in branches/safari-611.1.9-branch

Revert r270665. rdar://problem/72408033

6:19 PM Changeset in webkit [270920] by Russell Epstein
  • 2 edits in branches/safari-611.1.9-branch/Source/JavaScriptCore

Revert r270700. rdar://problem/72408033

6:19 PM Changeset in webkit [270919] by Peng Liu
  • 34 edits in trunk

[Media in GPU Process][MSE] Add an IPC message BufferedSamplesForTrackId for testing purposes
https://bugs.webkit.org/show_bug.cgi?id=219956

Reviewed by Eric Carlson.

Source/WebCore:

No new tests, fix a layout test failure.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::bufferedSamplesForTrackId):
(WebCore::SourceBuffer::bufferedSamplesForTrackID): Deleted.

  • Modules/mediasource/SourceBuffer.h:
  • platform/graphics/SourceBufferPrivate.cpp:

(WebCore::SourceBufferPrivate::bufferedSamplesForTrackId):
(WebCore::SourceBufferPrivate::bufferedSamplesForTrackID): Deleted.

  • platform/graphics/SourceBufferPrivate.h:

(WebCore::SourceBufferPrivate::enqueuedSamplesForTrackID):

  • testing/Internals.cpp:

(WebCore::Internals::bufferedSamplesForTrackId):
(WebCore::Internals::bufferedSamplesForTrackID): Deleted.

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit:

Implement SourceBufferPrivateRemote::bufferedSamplesForTrackId() with a new IPC message.

  • GPUProcess/media/RemoteSourceBufferProxy.cpp:

(WebKit::RemoteSourceBufferProxy::bufferedSamplesForTrackId):

  • GPUProcess/media/RemoteSourceBufferProxy.h:
  • GPUProcess/media/RemoteSourceBufferProxy.messages.in:
  • WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:

(WebKit::SourceBufferPrivateRemote::bufferedSamplesForTrackId):

  • WebProcess/GPU/media/SourceBufferPrivateRemote.h:

LayoutTests:

The tests using internals.bufferedSamplesForTrackID() need to be updated since the function
is asynchronous now.

  • gpu-process/TestExpectations:
  • media/media-source/media-source-append-acb-no-frame-lost.html:
  • media/media-source/media-source-append-acb-tolerance.html:
  • media/media-source/media-source-append-overlapping-dts.html:
  • media/media-source/media-source-append-presentation-durations.html:
  • media/media-source/media-source-append-twice-overlapping-sync-frame.html:
  • media/media-source/media-source-append-variable-frame-lengths-with-matching-durations.html:
  • media/media-source/media-source-dropped-iframe.html:
  • media/media-source/media-source-overlapping-append.html:
  • media/media-source/media-source-overlapping-decodetime.html:
  • media/media-source/media-source-range-end-frame-not-removed.html:
  • media/media-source/media-source-range-start-frame-replaced.html:
  • media/media-source/media-source-remove-b-frame.html:
  • media/media-source/media-source-samples-out-of-order.html:
  • media/media-source/media-source-samples-resolution-change.html:
  • media/media-source/media-source-sequence-timestamps.html:
  • media/media-source/media-source-timeoffset.html:
  • media/media-source/media-source-timestampoffset-rounding-error.html:
  • media/media-source/media-source-timestampoffset-then-zero.html:
6:18 PM Changeset in webkit [270918] by Russell Epstein
  • 2 edits in branches/safari-611.1.9-branch/Source/JavaScriptCore

Revert r270719. rdar://problem/72408033

5:32 PM Changeset in webkit [270917] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed, a build fix for the latest Internal SDK

  • Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h:
4:26 PM Changeset in webkit [270916] by Truitt Savell
  • 1 edit
    6 copies
    8 adds
    1 delete in trunk/LayoutTests

Remove LayoutTests/platform/mac-bigsur-wk1
https://bugs.webkit.org/show_bug.cgi?id=218359

Unreviewed test gardening

  • platform/mac-catalina-wk1/editing/selection/select-across-readonly-input-4-expected.txt: Copied from LayoutTests/platform/mac-bigsur-wk1/editing/selection/select-across-readonly-input-4-expected.txt.
  • platform/mac-catalina-wk1/editing/selection/select-across-readonly-input-5-expected.txt: Copied from LayoutTests/platform/mac-bigsur-wk1/editing/selection/select-across-readonly-input-5-expected.txt.
  • platform/mac-catalina-wk1/http/tests/cookies/js-get-and-set-http-only-cookie-expected.txt: Copied from LayoutTests/platform/mac-bigsur-wk1/http/tests/cookies/js-get-and-set-http-only-cookie-expected.txt.
  • platform/mac-wk1/editing/selection/select-across-readonly-input-4-expected.txt: Renamed from LayoutTests/platform/mac-bigsur-wk1/editing/selection/select-across-readonly-input-4-expected.txt.
  • platform/mac-wk1/editing/selection/select-across-readonly-input-5-expected.txt: Renamed from LayoutTests/platform/mac-bigsur-wk1/editing/selection/select-across-readonly-input-5-expected.txt.
  • platform/mac-wk1/http/tests/cookies/js-get-and-set-http-only-cookie-expected.txt: Renamed from LayoutTests/platform/mac-bigsur-wk1/http/tests/cookies/js-get-and-set-http-only-cookie-expected.txt.
4:11 PM Changeset in webkit [270915] by Alan Coon
  • 2 edits in branches/safari-610-branch/Source/WTF

Cherry-pick r269930. rdar://problem/72298580

Build fails on internal simulator builds due to missing enum kCVPixelFormatType_AGX_420YpCbCr8BiPlanarVideoRange
https://bugs.webkit.org/show_bug.cgi?id=219030

Unreviewed build fix for macCatalyst.

  • wtf/PlatformHave.h:

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

4:11 PM Changeset in webkit [270914] by Alan Coon
  • 6 edits in branches/safari-610-branch/Source

Cherry-pick r269900. rdar://problem/72298580

Build fails on internal simulator builds due to missing enum kCVPixelFormatType_AGX_420YpCbCr8BiPlanarVideoRange
https://bugs.webkit.org/show_bug.cgi?id=219030

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-11-17
Reviewed by Antti Koivisto.

Fix compile for simulator builds.
Rename HAVE_CV_AGX_420_PIXEL_FORMAT_TYPES to
HAVE_COREVIDEO_COMPRESSED_PIXEL_FORMAT_TYPES to better reflect what the ifdef does.

Source/WebCore:

  • platform/graphics/cv/GraphicsContextGLCVANGLE.cpp: (WebCore::pixelRangeFromPixelFormat): (WebCore::GraphicsContextGLCVANGLE::copyPixelBufferToTexture):

Source/WebCore/PAL:

  • pal/spi/cf/CoreVideoSPI.h:

Source/WTF:

  • wtf/PlatformHave.h:

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

4:10 PM Changeset in webkit [270913] by Alan Coon
  • 4 edits in branches/safari-610-branch/Source

Cherry-pick r269898. rdar://problem/72298580

Build fails on internal Catalina due to missing enum kCVPixelFormatType_AGX_420YpCbCr8BiPlanarVideoRange
https://bugs.webkit.org/show_bug.cgi?id=219026

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-11-17
Reviewed by Antti Koivisto.

Fix compile for macOS versions before Big Sur.

On macOS, only use the private header on Big Sur. On Catalina, use the
manual enums.

Regressed in:
Textures Fail to Render in WebGL from HLS Stream on iPhone 12 [iOS 14.2]

  • pal/spi/cf/CoreVideoSPI.h:

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

3:14 PM Changeset in webkit [270912] by Kate Cheney
  • 13 edits in trunk/Source

Still can't login to my.playstation.com
https://bugs.webkit.org/show_bug.cgi?id=219900
<rdar://problem/72062985>

Reviewed by John Wilander.

Adapted from an original patch by John Wilander.

This is a temporary quirk to assist a high-traffic website while they
complete the large task of migrating away from login flows that
require third party cookies. This quirk will be removed when the site
is updated.

Source/WebCore:

Create a quirk to call the Storage Access API on behalf of Sony. This
case is unique because playstation.com requires storage access for 2
login domains: sony.com and sonyentertainmentnetwork.com. This patch
handles this by requesting storage access for both domains if either
domain is requested to avoid massive changes to the Storage Access
code to handle multiple domains at once.

This patch adjusts the quirk code in NetworkStorageSession to handle
multiple login domains for a single first party domain.

No new tests, site specific quirk.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::responseReceived):

  • page/Quirks.cpp:

(WebCore::isPlaystationLoginElement):
(WebCore::Quirks::hasStorageAccessForAllLoginDomains):
(WebCore::Quirks::triggerOptionalStorageAccessQuirk const):
Adjust the existing quirks to handle the new format of a HashSet of
login domains, and add the new playstation.com case.

  • page/Quirks.h:
  • platform/network/NetworkStorageSession.cpp:

(WebCore::NetworkStorageSession::grantCrossPageStorageAccess):
(WebCore::NetworkStorageSession::hasStorageAccess const):
(WebCore::NetworkStorageSession::storageAccessQuirks):
(WebCore::NetworkStorageSession::loginDomainMatchesRequestingDomain):
(WebCore::NetworkStorageSession::loginDomainsForFirstParty):
(WebCore::NetworkStorageSession::findAdditionalLoginDomain):
Function to match up Sony login domains with one another at storage
endpoints and for prompting so we don't need to thread them through
all of the existing storage access code.

(WebCore::NetworkStorageSession::loginDomainForFirstParty): Renamed to be plural.

  • platform/network/NetworkStorageSession.h:

Adjusted existing quirk code to handle a HashSet of login domains
instead of a single domain.

Source/WebKit:

Create a quirk to call the Storage Access API on behalf of Sony.

  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::buildList):
(WebKit::UIDelegate::UIClient::requestStorageAccessConfirm):

  • UIProcess/Cocoa/WKStorageAccessAlert.mm:

(WebKit::presentStorageAccessAlert):
Prompt for multiple domains if site-specific quirks are enabled and
either Sony login domain is being requested.

  • WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp:

(WebKit::WebResourceLoadObserver::hasCrossPageStorageAccess const):
(WebKit::WebResourceLoadObserver::setDomainsWithCrossPageStorageAccess):

  • WebProcess/WebCoreSupport/WebResourceLoadObserver.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::addDomainWithPageLevelStorageAccess):
Store both Sony login domains as having page level storage access if
quirks are enabled and the domain passed is one of the Sony login
domains. In this case we know that both login domains were prompted
for.

1:35 PM Changeset in webkit [270911] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.30.4

WPE WebKit 2.30.4

1:33 PM Changeset in webkit [270910] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.30

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.30.4 release

.:

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.30.4.
1:21 PM Changeset in webkit [270909] by Russell Epstein
  • 2 edits in branches/safari-611.1.9-branch/Source/WebKit

Cherry-pick r270900. rdar://problem/72396877

REGRESSION (r270657) [AS Only] GGE: Netflix, YouTube, Amazon Prime, and Hulu fail to playback
https://bugs.webkit.org/show_bug.cgi?id=219954
<rdar://problem/72325887>

Reviewed by Per Arne Vollan.

Correct a syntax error in a sandbox rule added in r270657.

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

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

1:20 PM Changeset in webkit [270908] by Russell Epstein
  • 7 edits in branches/safari-611.1.9-branch/Source

Cherry-pick r270872. rdar://problem/72396884

[Cocoa] Adopt -externalContentProtectionStatus
https://bugs.webkit.org/show_bug.cgi?id=219911

Reviewed by Eric Carlson.

Source/WebCore:

Adopt a new AVContentKeyRequest API which provides a "pending" status (in addition to usable/unusable).

  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm: (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::keyStatuses const): (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::protectionStatusForDisplayID const): (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::keyRequestHasInsufficientProtectionForDisplayID const): Deleted.

Source/WebCore/PAL:

  • pal/spi/cocoa/AVFoundationSPI.h:

Source/WTF:

  • wtf/PlatformHave.h:

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

1:07 PM Changeset in webkit [270907] by Chris Dumez
  • 17 edits
    1 delete in trunk/Source

[GPUProcess] Avoid doing an IPC per rendering quantum when using WebAudio
https://bugs.webkit.org/show_bug.cgi?id=219818

Reviewed by Geoff Garen.

Source/WebCore:

  • platform/audio/AudioDestination.h:

Make sure AudioDestination always gets destroyed on the main thread.

  • platform/audio/cocoa/CARingBuffer.cpp:

(WebCore::CARingBuffer::lastReadFrame const):
(WebCore::CARingBufferStorageVector::setLastReadFrame):
(WebCore::CARingBufferStorageVector::lastReadFrame const):
(WebCore::CARingBuffer::fetchIfHasEnoughData):
(WebCore::CARingBuffer::fetch):

  • platform/audio/cocoa/CARingBuffer.h:

Add API to CARingBuffer to query the last frame that the reader attempted to
read. This is helpful to make sure the writer keeps up with the reader and
does not stray too far ahead.

Source/WebKit:

Previously, the GPUProcess was sending an IPC to the WebProcess to request to rendering
of each quantum, which was very inefficient and a big regression compared to when we
do not use a GPUProcess.

To address the issue, we now start a rendering timer on the WebProcess side when rendering
starts, so that the WebProcess renders each quantum as needed, without needing an IPC from
the GPUProcess. Whenever a quantum is rendered, the WebProcess adds it to the RingBuffer
it shares with the GPUProcess.

To make sure that the WebProcess' writer keeps up with the GPUProcess' reader and that it
does not stray too far ahead, the writer keeps track of the last frame that the reader
attempted to read. It uses this information to try and stay a few rendering quantums ahead
of the GPUProcess, to avoid missed frames.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • GPUProcess/media/RemoteAudioDestinationManager.cpp:

(WebKit::RemoteAudioDestination::audioSamplesStorageChanged):
(WebKit::RemoteAudioDestination::RemoteAudioDestination):
(WebKit::RemoteAudioDestination::render):

  • Platform/SharedMemory.h:

(WebKit::SharedMemory::protection const):

  • Shared/Cocoa/SharedRingBufferStorage.cpp:

(WebKit::SharedRingBufferStorage::sharedFrameBounds const):
(WebKit::SharedRingBufferStorage::setCurrentFrameBounds):
(WebKit::SharedRingBufferStorage::setLastReadFrame):
(WebKit::SharedRingBufferStorage::lastReadFrame const):

  • Shared/Cocoa/SharedRingBufferStorage.h:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:

(WebKit::RemoteAudioDestinationProxy::RemoteAudioDestinationProxy):
(WebKit::RemoteAudioDestinationProxy::startRenderingThread):
(WebKit::RemoteAudioDestinationProxy::stopRenderingThreadIfNecessary):
(WebKit::RemoteAudioDestinationProxy::connectToGPUProcess):
(WebKit::RemoteAudioDestinationProxy::~RemoteAudioDestinationProxy):
(WebKit::RemoteAudioDestinationProxy::start):
(WebKit::RemoteAudioDestinationProxy::startRendering):
(WebKit::RemoteAudioDestinationProxy::stop):
(WebKit::RemoteAudioDestinationProxy::stopRenderingIfNecessary):
(WebKit::RemoteAudioDestinationProxy::renderQuantum):
(WebKit::RemoteAudioDestinationProxy::storageChanged):

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.h:

(WebKit::RemoteAudioDestinationProxy::stopRenderingIfNecessary):

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.messages.in: Removed.
12:57 PM Changeset in webkit [270906] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[Debug][GStreamer] Crash in fast/mediastream/change-tracks-media-stream-being-played.html
https://bugs.webkit.org/show_bug.cgi?id=219437

Patch by Víctor Manuel Jáquez Leal <vjaquez@igalia.com> on 2020-12-16
Reviewed by Philippe Normand.

The crash was a product of a race condition where a new sample, either video or audio,
appeared after the track was already removed from the stream and the GStreamer's source was
already removed. The result was a segmentation fault when the sample observer is called,
since the observer is coupled with the GStreamer's source.

This fix consists of removing the observers as soon as the track is removed from the stream.

No new tests needed since it fix one.

  • platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:

(webkitMediaStreamSrcRemoveTrackObserver): New function.
(stopObservingTracks): Use new function.
(webkitMediaStreamSrcSetupSrc): Use track's type method rather than source's.

12:52 PM Changeset in webkit [270905] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION [iOS] Flaky GPU Process crash under -[RTCVideoEncoderH264 destroyCompressionSession]
https://bugs.webkit.org/show_bug.cgi?id=219899
<rdar://problem/72347652>

Reviewed by Alex Christensen.

We can no longer get the connection when needed as we are now operating in a background thread.
For that reason, capture the IPC connection in the lambda to make sure we have a valid IPC connection.
Remove LibWebRTCCodecsProxy when being closed instead of when being destroyed as well.

Covered by existing tests.

  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:

(WebKit::LibWebRTCCodecsProxy::~LibWebRTCCodecsProxy):
(WebKit::LibWebRTCCodecsProxy::close):
(WebKit::LibWebRTCCodecsProxy::createH264Decoder):
(WebKit::LibWebRTCCodecsProxy::createH265Decoder):
(WebKit::LibWebRTCCodecsProxy::createVP9Decoder):
(WebKit::LibWebRTCCodecsProxy::createEncoder):

12:51 PM Changeset in webkit [270904] by ysuzuki@apple.com
  • 3 edits in trunk/Tools

Use python3 in Tools/Scripts/dump-class-layout
https://bugs.webkit.org/show_bug.cgi?id=219945

Reviewed by Simon Fraser.

Newer LLDB python module only contains python3 version. So Tools/Scripts/dump-class-layout does not work.
This patch makes Tools/Scripts/dump-class-layout working with python3.

  • Scripts/dump-class-layout:

(webkit_build_dir): Deleted.
(main): Deleted.
(main.or): Deleted.

  • lldb/lldb_dump_class_layout.py:

(ClassLayoutBase.dump):
(LLDBDebuggerInstance.init):
(LLDBDebuggerInstance._get_first_file_architecture):
(LLDBDebuggerInstance.layout_for_classname):

12:42 PM Changeset in webkit [270903] by Chris Dumez
  • 2 edits in trunk/LayoutTests/imported/w3c

REGRESSION (r270806): [iOS] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-distance-clamping.html is frequently failing
https://bugs.webkit.org/show_bug.cgi?id=219897
<rdar://problem/72346130>

Reviewed by Alex Christensen.

Merge https://github.com/web-platform-tests/wpt/pull/26926 to address test flakiness.

  • web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-distance-clamping.html:
12:41 PM Changeset in webkit [270902] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GPU process] Update TestExpectations to skip Layout tests crashes under encodeSingleObject()
https://bugs.webkit.org/show_bug.cgi?id=219955

Patch by Rini Patel <rini_patel@apple.com> on 2020-12-16
Reviewed by Tim Horton.

  • gpu-process/TestExpectations:
12:39 PM Changeset in webkit [270901] by Wenson Hsieh
  • 3 edits in trunk/Source/WebKit

Suppress the image extraction interaction while editing text
https://bugs.webkit.org/show_bug.cgi?id=219952
<rdar://problem/72390053>

Reviewed by Devin Rousso.

See radar and WebKitAdditions for more details.

  • UIProcess/ios/WKContentViewInteraction.h:

(WebKit::SuppressInteractionToken::SuppressInteractionToken):
(WebKit::SuppressInteractionToken::~SuppressInteractionToken):

Add a helper class to help facilitate the temporary removal of UIInteraction objects from a WKContentView.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView setIsEditable:]):

Use the above helper class to temporarily remove the image extraction interaction while the user is editing
text (and is therefore depending on editable text interaction gestures). Note that we avoid unnecessarily
clearing out and resetting this member variable when changing focus between editable text fields.

(-[WKContentView _didStartProvisionalLoadForMainFrame]):

12:33 PM Changeset in webkit [270900] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

REGRESSION (r270657) [AS Only] GGE: Netflix, YouTube, Amazon Prime, and Hulu fail to playback
https://bugs.webkit.org/show_bug.cgi?id=219954
<rdar://problem/72325887>

Reviewed by Per Arne Vollan.

Correct a syntax error in a sandbox rule added in r270657.

  • WebProcess/com.apple.WebProcess.sb.in:
12:04 PM Changeset in webkit [270899] by Fujii Hironori
  • 14 edits
    2 adds in trunk

[WinCairo] Enable USE_ANGLE
https://bugs.webkit.org/show_bug.cgi?id=219421

Reviewed by Don Olmstead.

.:

  • Source/cmake/OptionsWinCairo.cmake:

Source/ThirdParty/ANGLE:

  • CMakeLists.txt: Added entry_points_egl_ext.h to libglesv2_entry_points_headers.

Source/WebCore:

Switch GraphicsContextGLOpenGL implementation from old one
(GraphicsContextGLOpenGLES.cpp) to new one
(GraphicsContextGLANGLE.cpp), which is using ANGLE's internal API
and verification code, for WinCairo port. I will enable WebGL2 for
WinCairo in a follow-up patch.

GL_TEXTURE_RECTANGLE_ANGLE is not available for ANGLE D3D backend.
Use GL_TEXTURE_2D instead.

Add a new class WebCore::ANGLEContext by copying
Nicosia::GCGLANGLELayer::ANGLEContext. It'd be better to merge
them after GTK and WPE will also switch.

  • PlatformWin.cmake:
  • platform/TextureMapper.cmake:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::reshapeFBOs):
(WebCore::GraphicsContextGLOpenGL::compileShader):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/texmap/ANGLEContext.cpp: Added.

(WebCore::ANGLEContext::errorString):
(WebCore::ANGLEContext::lastErrorString):
(WebCore::ANGLEContext::createContext):
(WebCore::ANGLEContext::ANGLEContext):
(WebCore::ANGLEContext::~ANGLEContext):
(WebCore::ANGLEContext::makeContextCurrent):
(WebCore::ANGLEContext::platformContext const):

  • platform/graphics/texmap/ANGLEContext.h: Added.
  • platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:

(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::isGLES2Compliant const):
(WebCore::GraphicsContextGLOpenGL::drawingBufferTextureTarget):

  • platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:

(WebCore::TextureMapperGCGLPlatformLayer::TextureMapperGCGLPlatformLayer):
(WebCore::TextureMapperGCGLPlatformLayer::paintToTextureMapper):

  • platform/graphics/texmap/TextureMapperGCGLPlatformLayer.h:

LayoutTests:

  • platform/wincairo/TestExpectations:
11:14 AM Changeset in webkit [270898] by Alan Coon
  • 1 edit in branches/safari-610-branch/Source/WebCore/Modules/webaudio/StereoPannerNode.cpp

Unreviewed build fix. rdar://problem/72298523

Missing imports. Partial cherry-pick of r266061.

10:31 AM Changeset in webkit [270897] by mark.lam@apple.com
  • 10 edits in branches/safari-610-branch

Cherry-pick r270686. rdar://problem/72321615

2020-12-11 Mark Lam <mark.lam@apple.com>

Add extra validation after untagging code pointers.
https://bugs.webkit.org/show_bug.cgi?id=219765
rdar://72069920

Reviewed by Robin Morisset.

  • assembler/AbstractMacroAssembler.h: (JSC::AbstractMacroAssembler::untagReturnAddress): (JSC::AbstractMacroAssembler::validateUntaggedPtr):
  • assembler/MacroAssemblerARM64E.h: (JSC::MacroAssemblerARM64E::untagReturnAddress): (JSC::MacroAssemblerARM64E::validateUntaggedPtr):
  • dfg/DFGOSRExitCompilerCommon.cpp: (JSC::DFG::reifyInlinedCallFrames):
  • ftl/FTLThunks.cpp: (JSC::FTL::genericGenerationThunkGenerator):
  • jit/CCallHelpers.h: (JSC::CCallHelpers::prepareForTailCallSlow):
  • jit/CallFrameShuffler.cpp: (JSC::CallFrameShuffler::prepareForTailCall):
  • jit/ThunkGenerators.cpp: (JSC::emitPointerValidation): (JSC::arityFixupGenerator):
  • llint/LLIntThunks.cpp: (JSC::LLInt::createTailCallGate): (JSC::LLInt::untagGateThunk):
  • wasm/js/WebAssemblyFunction.cpp: (JSC::WebAssemblyFunction::jsCallEntrypointSlow):
10:23 AM Changeset in webkit [270896] by Chris Fleizach
  • 5 edits in trunk

AX: Update list heuristics to include linked lists inside navigation containers
https://bugs.webkit.org/show_bug.cgi?id=193382
<rdar://problem/47233475>

Reviewed by Zalan Bujtas.

Source/WebCore:

If an unstyled list is inside a <nav> or a role=navigation, it should be marked
as an accessibility list.

Updated test: accessibility/list-detection2.html

  • accessibility/AccessibilityList.cpp:

(WebCore::AccessibilityList::determineAccessibilityRole):

LayoutTests:

  • accessibility/list-detection2-expected.txt:
  • accessibility/list-detection2.html:
9:28 AM Changeset in webkit [270895] by youenn@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

Cherry-pick usrsctp 355fb576b1a9dfef70fc0e158d66692662baaddc
https://bugs.webkit.org/show_bug.cgi?id=219937

Reviewed by Alex Christensen.

  • Source/third_party/usrsctp/usrsctplib/usrsctplib/netinet/sctp_input.c:

(sctp_process_cookie_existing):

9:27 AM Changeset in webkit [270894] by youenn@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

Cherry-pick usrsctp 7dab23aa0d8db86fedd222a308067439b03fad0f
https://bugs.webkit.org/show_bug.cgi?id=219936
<rdar://problem/72304588>

Reviewed by Alex Christensen.

  • Source/third_party/usrsctp/usrsctplib/usrsctplib/netinet/sctp_input.c:

(sctp_process_cookie_existing):

9:23 AM Changeset in webkit [270893] by Jonathan Bedard
  • 3 edits in trunk/Tools

[webkitscmpy] Include remote directories when packaging
https://bugs.webkit.org/show_bug.cgi?id=219927
<rdar://problem/72362529>

Reviewed by Stephanie Lewis.

  • Scripts/libraries/webkitscmpy/setup.py: Include remote directories.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
8:16 AM Changeset in webkit [270892] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Make FrameView::m_customSizeForResizeEvent an Optional<IntSize>
https://bugs.webkit.org/show_bug.cgi?id=219931

Reviewed by Zalan Bujtas.

Replace bool + IntSize with an Optional<IntSize>.

  • page/FrameView.cpp:

(WebCore::FrameView::sizeForResizeEvent const):
(WebCore::FrameView::setCustomSizeForResizeEvent):

  • page/FrameView.h:
8:13 AM Changeset in webkit [270891] by Alan Bujtas
  • 5 edits
    2 adds in trunk

[LFC][BFC] Non-quantitative values such as auto and min-content are not influenced by the box-sizing property
https://bugs.webkit.org/show_bug.cgi?id=219944

Reviewed by Antti Koivisto.
Source/WebCore:

See https://www.w3.org/TR/css-sizing-3/#box-sizing

Test: fast/layoutformattingcontext/max-content-and-box-sizing-simple.html

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::computedWidth):

LayoutTests:

Need to fix it in RenderBox first to be able to geometry-test it (webkit.org/b/219687).

  • fast/layoutformattingcontext/max-content-and-box-sizing-simple-expected.html: Added.
  • fast/layoutformattingcontext/max-content-and-box-sizing-simple.html: Added.
  • platform/mac-wk2/TestExpectations:
8:12 AM Changeset in webkit [270890] by aestes@apple.com
  • 2 edits in trunk/Source/WebCore

[Mac] Disable the WebM format reader in configurations where the plug-in will fail to load
https://bugs.webkit.org/show_bug.cgi?id=219938

Reviewed by Eric Carlson.

The user default for loading an ad-hoc code-signed WebM format reader plug-in is not
respected in customer installs of macOS, leaving no known way to load the plug-in in an
engineering build running on a customer OS variant. Fixing this is tracked by
rdar://72320419, but for now we must disable the plug-in for this configuration.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::isFormatReaderAvailable):
(WebCore::MediaPlayerPrivateAVFoundationObjC::supportsTypeAndCodecs):

8:03 AM Changeset in webkit [270889] by Simon Fraser
  • 3 edits in trunk/Source/WebKit

Calls to setFixedLayoutSize() should not be inside ENABLE(TEXT_AUTOSIZING)
https://bugs.webkit.org/show_bug.cgi?id=219932

Reviewed by Wenson Hsieh.

We always want to call setFixedLayoutSize(), whether or not ENABLE(TEXT_AUTOSIZING) is defined.

For code simplicity, make resetTextAutosizing() an empty function when ENABLE(TEXT_AUTOSIZING)
is not defined.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::dynamicViewportSizeUpdate):
(WebKit::WebPage::resetTextAutosizing):
(WebKit::WebPage::viewportConfigurationChanged):

5:47 AM Changeset in webkit [270888] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix stale assertions
https://bugs.webkit.org/show_bug.cgi?id=219847

After r270764, HostFunctionPtrTag and CustomAccessorPtrTag are categorized as Native ones.
However, in non-JIT-caged environment, still they are used as JIT ones. Then, we are getting
stale assertions. Several other tags are showing similar things for non JIT environments etc.
Add Options::useJITCage() check since this caller/callee type is only valid in JIT Cage environment.

  • assembler/MacroAssemblerARM64E.h:

(JSC::MacroAssemblerARM64E::call):
(JSC::MacroAssemblerARM64E::farJump):

5:35 AM Changeset in webkit [270887] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[macOS] Add sandbox parameter for message filter entitlement status
https://bugs.webkit.org/show_bug.cgi?id=219852
<rdar://problem/72145560>

Reviewed by Brent Fulgham.

Add sandbox parameter to determine whether the WebContent process has message filter entitlement.
This parameter will be used in the sandbox to enable message filtering.

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::initializeSandbox):

  • WebProcess/com.apple.WebProcess.sb.in:
4:55 AM Changeset in webkit [270886] by Antti Koivisto
  • 9 edits in trunk

Remove simpleUserAgentStyleSheet (to fix flaky fast/lists/001.html and fast/lists/001-vertical.html)
https://bugs.webkit.org/show_bug.cgi?id=218995
<rdar://problem/71452387>

Reviewed by Antoine Quint.

Source/WebCore:

The simpleUserAgentStyleSheet optimization allows WebKit to load a very simple version of the user agent
stylesheet as long as the document is very simple too (mostly just <div>/<span>). It was implemented
to support certain non-web use cases a long time ago when the cost of simply parsing the main stylesheet was
significant.

It can cause problems like seen here when it is not fully in-sync with the real stylesheet. The ways it may be out
of sync can be pretty obscure.

The optimization hasn't been useful for a while now. Let's just remove it instead of continuing fix problems caused by it.

  • page/ProcessWarming.cpp:

(WebCore::ProcessWarming::prewarmGlobally):

  • style/ElementRuleCollector.cpp:

(WebCore::Style::ElementRuleCollector::matchUARules):

  • style/InspectorCSSOMWrappers.cpp:

(WebCore::Style::InspectorCSSOMWrappers::collectDocumentWrappers):

  • style/StyleResolver.cpp:

(WebCore::Style::Resolver::Resolver):

  • style/UserAgentStyle.cpp:

(WebCore::Style::UserAgentStyle::initDefaultStyleSheet):
(WebCore::Style::UserAgentStyle::ensureDefaultStyleSheetsForElement):
(WebCore::Style::elementCanUseSimpleDefaultStyle): Deleted.
(WebCore::Style::UserAgentStyle::initDefaultStyle): Deleted.
(WebCore::Style::UserAgentStyle::loadFullDefaultStyle): Deleted.
(WebCore::Style::UserAgentStyle::loadSimpleDefaultStyle): Deleted.

  • style/UserAgentStyle.h:

LayoutTests:

  • platform/mac-wk2/TestExpectations:
12:59 AM Changeset in webkit [270885] by youenn@apple.com
  • 5 edits
    2 adds in trunk

Remove ILBC audio codec as WebRTC audio codec
https://bugs.webkit.org/show_bug.cgi?id=219912
<rdar://problem/72302868>

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

  • Configurations/libwebrtc.xcconfig:
  • Configurations/libwebrtcpcrtc.xcconfig:

Compile out ILBC audio codec.

LayoutTests:

  • webrtc/audio-capabilities-expected.txt: Added.
  • webrtc/audio-capabilities.html: Added.
12:30 AM Changeset in webkit [270884] by youenn@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

Make sure to correctly initialize the vpcC configuration in RTCVideoDecoderVTBVP9
https://bugs.webkit.org/show_bug.cgi?id=219782

Reviewed by Eric Carlson.

We need to initialize the configuration record based on the frame header.
We do so for every key frame.

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderVTBVP9.mm:

(convertSubsamplingXYToChromaSubsampling):
(-[RTCVideoDecoderVTBVP9 startDecodeWithNumberOfCores:]):
(-[RTCVideoDecoderVTBVP9 decode:missingFrames:codecSpecificInfo:renderTimeMs:]):
(-[RTCVideoDecoderVTBVP9 decodeData:size:timeStamp:]):

12:28 AM Changeset in webkit [270883] by youenn@apple.com
  • 3 edits
    3 adds in trunk

Expose SFrameTransform to DedicatedWorker
https://bugs.webkit.org/show_bug.cgi?id=219890

Reviewed by Eric Carlson.

Source/WebCore:

Test: http/wpt/webrtc/sframe-transform-in-worker.html

  • Modules/mediastream/RTCRtpSFrameTransform.idl:

LayoutTests:

  • http/wpt/webrtc/sframe-transform-in-worker-expected.txt: Added.
  • http/wpt/webrtc/sframe-transform-in-worker.html: Added.
  • http/wpt/webrtc/sframe-transform.js: Added.

(SFrameRTCRtpTransformer):
(SFrameRTCRtpTransformer.prototype.start):

12:27 AM Changeset in webkit [270882] by youenn@apple.com
  • 4 edits in trunk/Source

Make sure WebKit WebSocketChannel handle suspend/resume correctly
https://bugs.webkit.org/show_bug.cgi?id=219910

Reviewed by Alex Christensen.

Source/WebCore:

Covered by http/tests/websocket/tests/hybi/closed-when-entering-page-cache.html
and http/tests/websocket/tests/hybi/stop-on-resume-in-error-handler.html with NSURLSession WebSocket code path enabled.

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::resume):
In case resume is called and there are some events to dispatch, start the timer
even if the channel is not null.

Source/WebKit:

  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::fail):
Make sure fail triggers close event if page resumes.

Dec 15, 2020:

11:33 PM Changeset in webkit [270881] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Remove FrameLoader::cancelAndClear
https://bugs.webkit.org/show_bug.cgi?id=219853

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

Since this functionality is only called at Frame destructor
time, we can move the code to that destructor.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::cancelAndClear): Deleted.

  • loader/FrameLoader.h:
  • page/Frame.cpp:

(WebCore::Frame::~Frame):

11:00 PM Changeset in webkit [270880] by Pablo Saavedra
  • 2 edits in trunk/Source/WebKit

[CMake][WPE] Add LibWPE before WPEBackend-FDO for qtwpe_INCLUDE_DIRECTORIES
https://bugs.webkit.org/show_bug.cgi?id=219920

Reviewed by Michael Catanzaro.

  • PlatformWPE.cmake:
10:57 PM Changeset in webkit [270879] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r270829.
https://bugs.webkit.org/show_bug.cgi?id=219935

Introduced crash

Reverted changeset:

"[macOS] Add sandbox parameter for message filter entitlement
status"
https://bugs.webkit.org/show_bug.cgi?id=219852
https://trac.webkit.org/changeset/270829

8:59 PM Changeset in webkit [270878] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

REGRESSION (r270839): ASSERT NOT REACHED in WebCore::Layout::InlineContentBreaker::processOverflowingContent
https://bugs.webkit.org/show_bug.cgi?id=219904
<rdar://problem/72350087>

Reviewed by Simon Fraser.

"Typo" in r270839.

  • layout/inlineformatting/InlineContentBreaker.cpp:

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

6:32 PM Changeset in webkit [270877] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

destinationFor should check for FTLJIT, not DFGJIT twice
https://bugs.webkit.org/show_bug.cgi?id=219929

Reviewed by Mark Lam.

The code was checking for DFGJIT twice instead of checking for FTLJIT.
This doesn't fix any actual bugs, since nobody passes in FTLJIT to this
function. But if we ever do in the future, it would have revealed this bug.

  • bytecode/BytecodeOperandsForCheckpoint.h:

(JSC::destinationFor):

6:02 PM Changeset in webkit [270876] by aestes@apple.com
  • 4 edits in trunk

[Mac] Numerous webgl tests continue to time out with the WebM format reader enabled
https://bugs.webkit.org/show_bug.cgi?id=219928

Reviewed by Eric Carlson.

Source/WebKit:

Covered by existing tests.

  • Shared/mac/MediaFormatReader/TrackReader.cpp:

(WebKit::MediaSampleByteRange::MediaSampleByteRange):
(WebKit::MediaSampleByteRange::trackID const):
(WebKit::TrackReader::addSample): Store MediaSampleByteRange's track ID as a uint64_t
instead of an AtomString that might've been created on another thread.

(WebKit::TrackReader::finalize): Ensure that m_sampleStorage really is destroyed on the
storage queue by explicitly settings its unique_ptr to nullptr in the lambda. Without
doing this, it's possible that the lambda will execute on the storage queue *before*
WorkQueue::dispatch returns, and since WorkQueue's BlockPtr is still holding a reference
to the block containing the lambda, it would not have been destroyed on the storage queue.

Tools:

  • Scripts/webkitpy/port/mac.py:

(MacPort.logging_patterns_to_strip): Stripped unnecessary logging during VP9 decoding.

5:05 PM Changeset in webkit [270875] by Aditya Keerthi
  • 10 edits
    2 adds in trunk

[macOS] Adjust date input placeholder color based on specified text color
https://bugs.webkit.org/show_bug.cgi?id=219875
<rdar://problem/72314705>

Reviewed by Darin Adler.

Source/WebCore:

Empty date inputs currently show the current date in dark gray text as
a placeholder.

The existing behavior results in an issue on Nike's membership registration
page, where their custom placeholder and the placeholder date are visible
at the same time. Nike uses "color: transparent" to hide the contents of
the date input and display their own placeholder. However, since the
placeholder date is always displayed in dark gray text, both placeholders
are visible.

To fix, the color of the placeholder should be adjusted based on the text
color specified by the site author. This will ensure that
"color: transparent" will hide the placeholder, and also ensures the
placeholder better matches the style of the rest of the input.

Test: fast/forms/date/date-editable-components/date-editable-components-placeholder-color.html

  • html/shadow/DateTimeFieldElement.cpp:

(WebCore::DateTimeFieldElement::resolveCustomStyle):

Moved custom style resolution out of the derived classes and into the
base class to reduce code duplication. The min-width adjustment is
preserved by calling the pure virtual method adjustMinWidth. The
new color resolution for placeholder dates is performed by obtaining
the text and background colors through the shadow host (the
HTMLInputElement) and calling into RenderTheme for the adjustment
algorithm.

  • html/shadow/DateTimeFieldElement.h:

Made setEmptyValue and setValueAsInteger pure virtual methods since
the base implementation is now empty.

Introduced adjustMinWidth as a pure virtual method to allow numeric
and symbolic field elements to set their minimum width. This replaces
the need to have the derived classes implement resolveCustomStyle.

  • html/shadow/DateTimeNumericFieldElement.cpp:

(WebCore::DateTimeNumericFieldElement::adjustMinWidth const):
(WebCore::DateTimeNumericFieldElement::setEmptyValue):
(WebCore::DateTimeNumericFieldElement::setValueAsInteger):

  • html/shadow/DateTimeNumericFieldElement.h:
  • html/shadow/DateTimeSymbolicFieldElement.cpp:

(WebCore::DateTimeSymbolicFieldElement::adjustMinWidth const):
(WebCore::DateTimeSymbolicFieldElement::setEmptyValue):
(WebCore::DateTimeSymbolicFieldElement::setValueAsInteger):

  • html/shadow/DateTimeSymbolicFieldElement.h:
  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::datePlaceholderTextColor const):

Adjust the placeholder text color based on the text and background color
specified. The adjustment is performed by changing the lightness of the
specified text color. The lightness is increased for dark text on a light
background, and is decreased for light text on a dark background. The
chosen adjustment factor ensures that a dark gray color is obtained for
both white on black, and black on white.

  • rendering/RenderTheme.h:

LayoutTests:

Added a test to verify that the color of the placeholder changes based
on the input's color property.

  • fast/forms/date/date-editable-components/date-editable-components-placeholder-color-expected.html: Added.
  • fast/forms/date/date-editable-components/date-editable-components-placeholder-color.html: Added.
4:33 PM Changeset in webkit [270874] by Alexey Shvayka
  • 50 edits
    2 adds in trunk

Non-enumerable property fails to shadow inherited enumerable property from for-in
https://bugs.webkit.org/show_bug.cgi?id=38970

Reviewed by Keith Miller.

JSTests:

  • stress/arguments-bizarre-behaviour-disable-enumerability.js:
  • stress/for-in-redefine-enumerable.js: Added.
  • stress/for-in-shadow-non-enumerable.js: Added.
  • test262/expectations.yaml: Mark 4 test cases as passing.

Source/JavaScriptCore:

While for/in was initially specified with notion of "shadowing", it wasn't clarified
until ES5 that Enumerable? attributes are ignored when determining if a property
has already been processed. Recently, for/in spec was expanded [1] to pin down common
case enumeration as it's currently implemented by V8 and SpiderMonkey.

Since keeping track of DontEnum properties is a massive slowdown for uncached runs
(with any data structure used), this patch simply adds Enumerable? check to
has_{indexed,structure,generic}_property bytecode ops and does renaming chores.

Common code is now shared between HasIndexedProperty (emitted for 0 in arr) and
HasEnumerableIndexedProperty DFG nodes via passing different slow path ops rather
than having OpInfo with PropertySlot::InternalMethodType, which is a nice refactor.

While this change aligns common case for/in enumeration with the spec and other
engines, it also introduces a few observable discrepancies from V8 and SpiderMonkey,
which are permitted by the spec [2]:
a) properties that have been redefined as DontEnum within loop body are skipped,

which matches the spec [3] and seems like expected behavior;

b) "shadowing" is broken if a DontEnum property of already visited object is

added / deleted / redefined within loop body, which (pretty much) never happens.

This patch introduces a new invariant: all properties getOwn*PropertyNames() returns
in DontEnumPropertiesMode::Exclude should be reported as Enumerable? by
getOwnPropertySlot(). JSCallbackObject and RuntimeArray are fixed to follow it.

for/in and Object.keys microbenchmarks are neutral. This change does not affect
JSPropertyNameEnumerator caching, nor fast paths of its bytecodes.

[1]: https://github.com/tc39/ecma262/pull/1791
[2]: https://tc39.es/ecma262/#sec-enumerate-object-properties (last paragraph)
[3]: https://tc39.es/ecma262/#sec-%foriniteratorprototype%.next (step 7.b.iii)

  • API/JSCallbackObjectFunctions.h:

(JSC::JSCallbackObject<Parent>::getOwnPropertySlot):

  • API/tests/testapi.c:
  • API/tests/testapiScripts/testapi.js:
  • bytecode/BytecodeList.rb:
  • bytecode/BytecodeUseDef.cpp:

(JSC::computeUsesForBytecodeIndexImpl):
(JSC::computeDefsForBytecodeIndexImpl):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):

  • bytecode/Opcode.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitHasEnumerableIndexedProperty):
(JSC::BytecodeGenerator::emitHasEnumerableStructureProperty):
(JSC::BytecodeGenerator::emitHasEnumerableProperty):
(JSC::BytecodeGenerator::emitHasGenericProperty): Deleted.
(JSC::BytecodeGenerator::emitHasIndexedProperty): Deleted.
(JSC::BytecodeGenerator::emitHasStructureProperty): Deleted.

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::ForInNode::emitBytecode):

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::convertToHasIndexedProperty):

  • dfg/DFGNode.h:

(JSC::DFG::Node::hasArrayMode):
(JSC::DFG::Node::hasInternalMethodType const): Deleted.
(JSC::DFG::Node::internalMethodType const): Deleted.
(JSC::DFG::Node::setInternalMethodType): Deleted.

  • dfg/DFGNodeType.h:
  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSSALoweringPhase.cpp:

(JSC::DFG::SSALoweringPhase::handleNode):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileHasEnumerableProperty):
(JSC::DFG::SpeculativeJIT::compileHasEnumerableStructureProperty):
(JSC::DFG::SpeculativeJIT::compileHasIndexedProperty):
(JSC::DFG::SpeculativeJIT::compileHasGenericProperty): Deleted.
(JSC::DFG::SpeculativeJIT::compileHasStructureProperty): Deleted.

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileHasIndexedProperty):
(JSC::FTL::DFG::LowerDFGToB3::compileHasEnumerableProperty):
(JSC::FTL::DFG::LowerDFGToB3::compileHasEnumerableStructureProperty):
(JSC::FTL::DFG::LowerDFGToB3::compileHasGenericProperty): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::compileHasStructureProperty): Deleted.

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):

  • jit/JIT.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_has_enumerable_structure_property):
(JSC::JIT::emit_op_has_enumerable_indexed_property):
(JSC::JIT::emitSlow_op_has_enumerable_indexed_property):
(JSC::JIT::emit_op_has_structure_property): Deleted.
(JSC::JIT::emit_op_has_indexed_property): Deleted.
(JSC::JIT::emitSlow_op_has_indexed_property): Deleted.

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_has_enumerable_structure_property):
(JSC::JIT::emit_op_has_enumerable_indexed_property):
(JSC::JIT::emitSlow_op_has_enumerable_indexed_property):
(JSC::JIT::emit_op_has_structure_property): Deleted.
(JSC::JIT::emit_op_has_indexed_property): Deleted.
(JSC::JIT::emitSlow_op_has_indexed_property): Deleted.

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

  • jit/JITOperations.h:
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::JSC_DEFINE_COMMON_SLOW_PATH):

  • runtime/CommonSlowPaths.h:
  • runtime/JSObject.cpp:

(JSC::JSObject::hasProperty const):
(JSC::JSObject::hasEnumerableProperty const):
(JSC::JSObject::hasPropertyGeneric const): Deleted.

  • runtime/JSObject.h:

Source/WebCore:

Report RuntimeArray indices as Enumerable?.

Test: platform/mac/fast/dom/wrapper-classes-objc.html

  • bridge/runtime_array.cpp:

(JSC::RuntimeArray::getOwnPropertySlot):
(JSC::RuntimeArray::getOwnPropertySlotByIndex):

LayoutTests:

  • platform/mac/fast/dom/wrapper-classes-objc-expected.txt:
  • platform/mac/fast/dom/wrapper-classes-objc.html:
4:06 PM Changeset in webkit [270873] by achristensen@apple.com
  • 3 edits in trunk/LayoutTests

REGRESSION: [macOS] http/tests/inspector/network/resource-response-service-worker.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=219625

Ignore an internal inspector error like I did in r270137

  • http/tests/inspector/network/resource-response-service-worker.html:
  • platform/mac/TestExpectations:
4:01 PM Changeset in webkit [270872] by jer.noble@apple.com
  • 7 edits in trunk/Source

[Cocoa] Adopt -externalContentProtectionStatus
https://bugs.webkit.org/show_bug.cgi?id=219911

Reviewed by Eric Carlson.

Source/WebCore:

Adopt a new AVContentKeyRequest API which provides a "pending" status (in addition to usable/unusable).

  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:

(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::keyStatuses const):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::protectionStatusForDisplayID const):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::keyRequestHasInsufficientProtectionForDisplayID const): Deleted.

Source/WebCore/PAL:

  • pal/spi/cocoa/AVFoundationSPI.h:

Source/WTF:

  • wtf/PlatformHave.h:
3:34 PM Changeset in webkit [270871] by Jonathan Bedard
  • 8 edits
    2 adds in trunk/Tools

[webkitscmpy] Support remote GitHub repository
https://bugs.webkit.org/show_bug.cgi?id=219602
<rdar://problem/72050026>

Reviewed by Stephanie Lewis.

Services often need to interact with the WebKit repository without actually downloading the
repository. In particular, it is useful to be able to retrieve commits and their identifiers.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git): Move GIT_SVN_REVISION regex to base class.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/init.py: Add GitHub class.
  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/git_hub.py: Added.

(GitHub): Mock request router for a limited subset of GitHub's API.
(GitHub.init):
(GitHub.commit): Return a commit object given a reference.
(GitHub._api_response):
(GitHub._list_refs_response):
(GitHub._commit_response):
(GitHub._compare_response):
(GitHub._branches_for_request):
(GitHub._parents_of_request):
(GitHub.request): Return a response object for the specified request.

  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/init.py: Add GitHub class.
  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py: Added.

(GitHub): Repository object representing a GitHub remote.
(GitHub.is_webserver): True if the provided URL is a GitHub webserver.
(GitHub.init): Verify the provided URL and split it into it's composite parts.
(GitHub.is_git): Return True.
(GitHub.request): Make an API request, combining pagination into a single request.
(GitHub._count_for_ref): Scrape the GitHub UI to find the number of parent commits for a specified
branch or commit.
(GitHub._difference): Compute the number of commits a specified reference is ahead of another.
(GitHub._branches_for): Scrape the GitHub UI to determine what branches a commit is on.
(GitHub.default_branch): Query GitHub to determine the default branch for a specified commit.
(GitHub.branches): Return all branches for a repository.
(GitHub.tags): Return all tags for a repository.
(GitHub.commit): Return a commit object given a revision, branch, identifier or tag.
(GitHub.find): Use git to match branches and tags to a hash instead of trying to do it ourselves.

  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/scm.py:

(Scm.from_url): Add GitHub to the set of candidate remote repositories.

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

(ScmBase): Move GIT_SVN_REVISION regex to base class.

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

(TestGitHub):
(TestGitHub.test_detection):
(TestGitHub.test_branches):
(TestGitHub.test_tags):
(TestGitHub.test_scm_type):
(TestGitHub.test_commit_revision):
(TestGitHub.test_commit_from_branch):
(TestGitHub.test_identifier):
(TestGitHub.test_non_cannonical_identifiers):
(TestGitHub.test_tag):
(TestGitHub.test_no_log):

3:18 PM Changeset in webkit [270870] by sbarati@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

Switch to using a linked list for the TDZ environment instead of a Vector
https://bugs.webkit.org/show_bug.cgi?id=219909
<rdar://71441753>

Reviewed by Tadeu Zagallo.

Before, we'd represent the TDZ stack in terms of a Vector. While the entries
in the Vector were reference counted, the spine of the Vector itself would
match the length of the TDZ scope stack. It turns out this spine itself can
use non-trivial amounts of memory. We are seeing about a 0.5% regression from
this inside RAMification. This change makes it so that we now use a tree-like
data structure for scope stack entries. The data structure is a tree with only
parent pointers. Any field that used to be a vector of entries is now a
pointer to a node in this tree. So any pointer into this tree will have a
linked-list window into the tree, where the linked-list represents the same
data as the previous vector-as-stack data structure.

Initial testing shows this might be up to a 0.5% progression on RAMification.

  • builtins/BuiltinExecutables.cpp:

(JSC::BuiltinExecutables::createExecutable):

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

  • bytecode/UnlinkedFunctionExecutable.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::popLexicalScopeInternal):
(JSC::BytecodeGenerator::needsTDZCheck):
(JSC::BytecodeGenerator::liftTDZCheckIfPossible):
(JSC::BytecodeGenerator::pushTDZVariables):
(JSC::BytecodeGenerator::getVariablesUnderTDZ):
(JSC::BytecodeGenerator::preserveTDZStack):
(JSC::BytecodeGenerator::restoreTDZStack):

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::generate):

  • parser/VariableEnvironment.h:

(JSC::TDZEnvironmentLink::TDZEnvironmentLink):
(JSC::TDZEnvironmentLink::create):
(JSC::TDZEnvironmentLink::contains const):
(JSC::TDZEnvironmentLink::parent):

  • runtime/CachedTypes.cpp:

(JSC::CachedTDZEnvironmentLink::encode):
(JSC::CachedTDZEnvironmentLink::decode const):

  • runtime/CodeCache.cpp:

(JSC::generateUnlinkedCodeBlockImpl):
(JSC::CodeCache::getUnlinkedGlobalFunctionExecutable):

3:09 PM Changeset in webkit [270869] by ysuzuki@apple.com
  • 2 edits in trunk/JSTests

Suppress noise from JSTests/stress/lars-sab-workers.js
https://bugs.webkit.org/show_bug.cgi?id=219922

Reviewed by Saam Barati.

Mark it as noisy tests.

  • stress/lars-sab-workers.js:
3:04 PM Changeset in webkit [270868] by sihui_liu@apple.com
  • 25 edits in trunk

Add webkit- prefix to SpeechRecognition
https://bugs.webkit.org/show_bug.cgi?id=219869

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Update test expectations as SpeechRecognition becomes not available.

  • web-platform-tests/speech-api/SpeechRecognition-basics.https-expected.txt:
  • web-platform-tests/speech-api/historical-expected.txt:
  • web-platform-tests/speech-api/idlharness.window-expected.txt:

Source/WebCore:

  • Modules/speech/SpeechRecognition.idl:
  • bindings/js/WebCoreBuiltinNames.h:

Tools:

Replace SpeechRecognition with webkitSpeechRecognition in test.

  • TestWebKitAPI/Tests/WebKitCocoa/speechrecognition-user-permission-persistence.html:

LayoutTests:

Replace SpeechRecognition with webkitSpeechRecognition in tests.

  • fast/speechrecognition/ios/audio-capture-expected.txt:
  • fast/speechrecognition/ios/audio-capture.html:
  • fast/speechrecognition/ios/restart-recognition-after-stop-expected.txt:
  • fast/speechrecognition/ios/restart-recognition-after-stop.html:
  • fast/speechrecognition/ios/start-recognition-then-stop-expected.txt:
  • fast/speechrecognition/ios/start-recognition-then-stop.html:
  • fast/speechrecognition/permission-error-expected.txt:
  • fast/speechrecognition/permission-error.html:
  • fast/speechrecognition/resources/removed-iframe.html:
  • fast/speechrecognition/start-recognition-then-stop-expected.txt:
  • fast/speechrecognition/start-recognition-then-stop.html:
  • fast/speechrecognition/start-recognition-twice-exception-expected.txt:
  • fast/speechrecognition/start-recognition-twice-exception.html:
  • fast/speechrecognition/start-second-recognition-expected.txt:
  • fast/speechrecognition/start-second-recognition.html:
2:58 PM Changeset in webkit [270867] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[macOS, iOS] Add required mach syscall
https://bugs.webkit.org/show_bug.cgi?id=219913
<rdar://problem/72347689>

Reviewed by Brent Fulgham.

Add required mach syscall on macOS and iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
2:48 PM Changeset in webkit [270866] by Alan Coon
  • 6 edits in branches/safari-610-branch

Cherry-pick r270559. rdar://problem/72320712

Potential crash under [WKRemoteObjectEncoder encodeObject:forKey:] when the object graph contains a cycle
https://bugs.webkit.org/show_bug.cgi?id=219620
Source/WebKit:

<rdar://71551776>

Reviewed by Geoffrey Garen.

Update WKRemoteObjectEncoder to detect cycles when encoding objects. When a cycle is detected, we
first attempt to encode a default-initialized object of the same type instead. If that fails, we
raise a NSInvalidArgumentException.

Based on crashes in the wild, we have evidence that such cycles are occuring and I suspect this is
caused by Norton Safe Web extension somehow.

  • Shared/API/Cocoa/WKRemoteObjectCoder.mm: (-[WKRemoteObjectEncoder init]): (encodeObject):

Tools:

Reviewed by Geoffrey Garen.

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.h:
  • TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.mm: (TEST):
  • TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistryPlugIn.mm: (-[RemoteObjectRegistryPlugIn takeDictionary:completionHandler:]):

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

2:48 PM Changeset in webkit [270865] by Alan Coon
  • 7 edits
    2 deletes in branches/safari-610-branch

Cherry-pick r266695. rdar://problem/72356057

[css-flexbox] min-height: auto not applied to nested flexboxes.
https://bugs.webkit.org/show_bug.cgi?id=210089

Reviewed by Daniel Bates.

Source/WebCore:

Nested flexboxes with column direction were not computing correctly min-size:auto because
we were explicitly preventing them from doing so in the code. Implemented the required bits to
make it work correctly and thus removed the retriction. The idea is to set an indefinite override
containing block size so that percentages would be resolved to auto as spec'ed. The code which
decides whether to apply min-size:auto was refactored in the shouldApplyMinSizeAutoForChild() method.

In order not to cause regressions some other two additional changes were also implemented. First we
had to adjust childHasIntrinsicMainAxisSize() so that it also takes into account the cases where
shouldApplyMinSizeAutoForChild() is true and return true. Secondly we had to add an additional case
to mainAxisLengthIsDefinite() so that it returns false for column flows where the flexBasis is intrinsic.

Inspired by Blink's crrev.com/c/1641510, crrev.com/c/1269995 & crrev.com/c/1786297 by <cbiesinger@chromium.org>

  • rendering/RenderFlexibleBox.cpp: (WebCore::RenderFlexibleBox::shouldApplyMinSizeAutoForChild const): Refactored from RenderFlexibleBox::adjustChildSizeForMinAndMax. (WebCore::RenderFlexibleBox::mainAxisLengthIsDefinite const): Additional case for column flows. (WebCore::RenderFlexibleBox::layoutFlexItems): Reset m_hasDefiniteHeight to Unknown after calling constructFlexItem() because the latter might set now an override containing block height which basically potentially makes any cached size value incorrect. (WebCore::RenderFlexibleBox::adjustChildSizeForMinAndMax): Directly call shouldApplyMinSizeAutoForChild(). (WebCore::RenderFlexibleBox::constructFlexItem): Set an indefinite override containing block size for children with percentage sizes so that they're resolved as auto. (WebCore::RenderFlexibleBox::childHasIntrinsicMainAxisSize const): Return true for those cases where the main axis length is indefinite and also when shouldApplyMinSizeAutoForChild().
  • rendering/RenderFlexibleBox.h:

LayoutTests:

Apart from enabling some tests we're removing a test which is now invalid as it was added
under the condition that we were not matching the specs wrt percentage height computation in
column flexboxes.

  • TestExpectations: Removed two test cases that are passing now.
  • fast/flexbox/nested-column-intrinsic-min-disabled-expected.html: Removed.
  • fast/flexbox/nested-column-intrinsic-min-disabled.html: Removed.
  • platform/ios/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt: Updated.
  • platform/mac/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt: Ditto.

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

2:47 PM Changeset in webkit [270864] by Alan Coon
  • 9 edits in branches/safari-610-branch

Cherry-pick r270321. rdar://problem/72298523

Update list of block ports according fetch spec
https://bugs.webkit.org/show_bug.cgi?id=219154

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/request/request-bad-port.any-expected.txt:
  • web-platform-tests/fetch/api/request/request-bad-port.any.js:
  • web-platform-tests/fetch/api/request/request-bad-port.any.worker-expected.txt:
  • web-platform-tests/websockets/Create-blocked-port.any-expected.txt:
  • web-platform-tests/websockets/Create-blocked-port.any.js:
  • web-platform-tests/websockets/Create-blocked-port.any.worker-expected.txt:

Source/WTF:

  • wtf/URL.cpp: (WTF::portAllowed):

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

2:47 PM Changeset in webkit [270863] by Alan Coon
  • 18 edits
    3 adds in branches/safari-610-branch

Cherry-pick r270101. rdar://problem/72298523

Add support for RTCPeerConnection.onicecandidateerror event
https://bugs.webkit.org/show_bug.cgi?id=169644

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/idlharness.https.window-expected.txt:

Source/WebCore:

Expose RTCPeerConnection.onicecandidateerror and use it for wrong STUN/TURN server URLs.
For that matter, add RTCPeerConnectionIceErrorEvent as per spec with a slight change to the init directory to keep the same terminology between event and init dictionary.

Covered by updated webrtc/stun-server-filtering.html test.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/mediastream/RTCPeerConnection.cpp: (WebCore::RTCPeerConnection::iceServersFromConfiguration): (WebCore::iceServersFromConfiguration): Deleted.
  • Modules/mediastream/RTCPeerConnection.h:
  • Modules/mediastream/RTCPeerConnection.idl:
  • Modules/mediastream/RTCPeerConnectionIceErrorEvent.cpp: Added. (WebCore::RTCPeerConnectionIceErrorEvent::create): (WebCore::RTCPeerConnectionIceErrorEvent::RTCPeerConnectionIceErrorEvent): (WebCore::RTCPeerConnectionIceErrorEvent::eventInterface const):
  • Modules/mediastream/RTCPeerConnectionIceErrorEvent.h: Added.
  • Modules/mediastream/RTCPeerConnectionIceErrorEvent.idl: Added.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:
  • dom/EventNames.h:
  • dom/EventNames.in:

LayoutTests:

  • webrtc/rtcpeerconnection-error-messages-expected.txt:
  • webrtc/stun-server-filtering.html:

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

2:47 PM Changeset in webkit [270862] by Alan Coon
  • 9 edits
    1 move
    4 adds
    1 delete in branches/safari-610-branch

Cherry-pick r269436. rdar://problem/72298523

Consider blocking ports 5060 and 5061
https://bugs.webkit.org/show_bug.cgi?id=218557
<rdar://problem/71031479>

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/request/request-bad-port.any-expected.txt: Added.
  • web-platform-tests/fetch/api/request/request-bad-port.any.html: Added.
  • web-platform-tests/fetch/api/request/request-bad-port.any.js: Added. (BLOCKED_PORTS_LIST.map):
  • web-platform-tests/fetch/api/request/request-bad-port.any.worker-expected.txt: Added.
  • web-platform-tests/fetch/api/request/request-bad-port.any.worker.html: Added.
  • web-platform-tests/fetch/api/request/request-bad-port.html: Removed.
  • web-platform-tests/tools/wptserve/wptserve/utils.py: (is_bad_port):
  • web-platform-tests/websockets/Create-blocked-port.any-expected.txt:
  • web-platform-tests/websockets/Create-blocked-port.any.js:
  • web-platform-tests/websockets/Create-blocked-port.any.worker-expected.txt:

Source/WTF:

  • wtf/URL.cpp: (WTF::portAllowed):

LayoutTests:

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

1:38 PM Changeset in webkit [270861] by commit-queue@webkit.org
  • 36 edits
    5 adds in trunk

Unreviewed, reverting r270860.
https://bugs.webkit.org/show_bug.cgi?id=219918

We workaround it differently, so this revert is not necessary

Reverted changeset:

"Unreviewed, reverting r269320, r269341, r269502, and
r269576."
https://bugs.webkit.org/show_bug.cgi?id=219915
https://trac.webkit.org/changeset/270860

1:21 PM Changeset in webkit [270860] by commit-queue@webkit.org
  • 36 edits
    5 deletes in trunk

Unreviewed, reverting r269320, r269341, r269502, and r269576.
https://bugs.webkit.org/show_bug.cgi?id=219915

ICU C++ internal API causes trouble

Reverted changesets:

"REGRESSION (r254038): Simple.com money transfer UI is very
laggy (multiple seconds per keypress)"
https://bugs.webkit.org/show_bug.cgi?id=218348
https://trac.webkit.org/changeset/269320

"[JSC] Obtain default timezone ID from cached icu::TimeZone"
https://bugs.webkit.org/show_bug.cgi?id=218531
https://trac.webkit.org/changeset/269341

"toLocaleDateString() resolves incorrect date for some old
dates"
https://bugs.webkit.org/show_bug.cgi?id=161623
https://trac.webkit.org/changeset/269502

"[JSC] Add TimeZone range cache over ICU TimeZone API"
https://bugs.webkit.org/show_bug.cgi?id=218681
https://trac.webkit.org/changeset/269576

12:31 PM Changeset in webkit [270859] by Peng Liu
  • 2 edits in trunk/LayoutTests

[Media in GPU Process][MSE] Enable media-source layout tests
https://bugs.webkit.org/show_bug.cgi?id=219906

Reviewed by Eric Carlson.

  • gpu-process/TestExpectations:
12:29 PM Changeset in webkit [270858] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitscmpy] Save contributors to json file
https://bugs.webkit.org/show_bug.cgi?id=219908
<rdar://problem/72351153>

Reviewed by Dewei Zhu.

The motivation for this change is not to replace contributors.json (although that could
eventually be the case), instead, the motivation for this change is to pass contributors
to git filter-branch subprocesses.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Increment version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/contributor.py:

(Contributor.Mapping):
(Contributor.Mapping.load): Load contributor mapping from a json file.
(Contributor.Mapping.save): Save contributor mapping to a json file.
(Contributor.Mapping.add):

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

(TestContributor):
(TestContributor.test_saving):

12:15 PM Changeset in webkit [270857] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

REGRESSION: [macOS] http/tests/inspector/network/resource-response-service-worker.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=219625

Unreviewed test gardening.

  • platform/mac/TestExpectations: Mark test as flaky.
11:46 AM Changeset in webkit [270856] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mac ] imported/w3c/web-platform-tests/server-timing/service_worker_idl.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=219907

Unreviewed test gardening.

  • platform/mac/TestExpectations:
11:15 AM Changeset in webkit [270855] by commit-queue@webkit.org
  • 19 edits
    2 adds in trunk

[WASM-References] Add support for memory.fill
https://bugs.webkit.org/show_bug.cgi?id=219848

Patch by Dmitry Bezhetskov <dbezhetskov> on 2020-12-15
Reviewed by Yusuke Suzuki.

JSTests:

Added spec tests and unreachable tests for memory.fill.

  • wasm.yaml:
  • wasm/references-spec-tests/memory_fill.wast.js: Added.
  • wasm/references/memory_fill_shared.js: Added.

(async test):

  • wasm/references/table_instructions_parse_unreachable.js:

(invalidMemoryFillUnreachable):

  • wasm/wasm.json:

Source/JavaScriptCore:

Add support for memory.fill from ref-types spec.
memory.fill sets all bytes in a memory region to a given byte:
https://webassembly.github.io/reference-types/core/syntax/instructions.html#memory-instructions.

  • bytecode/BytecodeList.rb:
  • llint/WebAssembly.asm:
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::addMemoryFill):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addMemoryFill):

  • wasm/WasmFunctionParser.h:

(JSC::Wasm::FunctionParser<Context>::parseMemoryFillImmediate):
(JSC::Wasm::FunctionParser<Context>::parseExpression):
(JSC::Wasm::FunctionParser<Context>::parseUnreachableExpression):

  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::addMemoryFill):

  • wasm/WasmMemory.cpp:

(JSC::Wasm::Memory::fill):
(JSC::Wasm::Memory::doMemoryFill):

  • wasm/WasmMemory.h:
  • wasm/WasmOperations.cpp:

(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

  • wasm/WasmOperations.h:
  • wasm/WasmSlowPaths.cpp:

(JSC::LLInt::WASM_SLOW_PATH_DECL):

  • wasm/WasmSlowPaths.h:
  • wasm/wasm.json:
11:12 AM Changeset in webkit [270854] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WTF

Enable SpeechRecognition by default
https://bugs.webkit.org/show_bug.cgi?id=219798

Reviewed by Youenn Fablet.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
10:53 AM Changeset in webkit [270853] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Image extraction interaction should remain active while scrolling
https://bugs.webkit.org/show_bug.cgi?id=219895
<rdar://problem/72344814>

Reviewed by Devin Rousso.

Make our image extraction interaction behave more like the rest of the system by making it persist until
explicitly dismissed via tap gesture (or any other competing interaction, such as text interactions, drag
interactions and context menu interactions, as long as the interaction location is outside of the active image
extraction interaction).

We currently just dismiss any active image extraction upon starting a new touch, which prevents scrolling from
working as expected with image extraction. See radar for more details.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _webTouchEventsRecognized:]):
(-[WKContentView hasSelectablePositionAtPoint:]):
(-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
(-[WKContentView _singleTapIdentified:]):
(-[WKContentView _dragInteraction:prepareForSession:completion:]):
(-[WKContentView _contextMenuInteraction:configurationForMenuAtLocation:completion:]):

10:27 AM Changeset in webkit [270852] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

CrashTracer: com.apple.WebKit.Networking at WebKit: WTF::Detail::CallableWrapper<WebKit::PrivateClickMeasurementManager::firePendingAttributionRequests()
https://bugs.webkit.org/show_bug.cgi?id=219860
<rdar://problem/72254207>

Reviewed by Alex Christensen.

Followup patch to add missing completion handlers. This also moves the
check for a null m_networkSession variable to the existing
PrivateClickMeasurementManager::featureEnabled() function for
simplicity.

  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::storeUnattributed):
(WebKit::PrivateClickMeasurementManager::attribute):
(WebKit::PrivateClickMeasurementManager::clearSentAttributions):
(WebKit::PrivateClickMeasurementManager::updateTimerLastFired):
(WebKit::PrivateClickMeasurementManager::firePendingAttributionRequests):
(WebKit::PrivateClickMeasurementManager::clear):
(WebKit::PrivateClickMeasurementManager::clearForRegistrableDomain):
(WebKit::PrivateClickMeasurementManager::clearExpired):
(WebKit::PrivateClickMeasurementManager::toString const):
(WebKit::PrivateClickMeasurementManager::markAllUnattributedAsExpiredForTesting):
(WebKit::PrivateClickMeasurementManager::featureEnabled const):
(WebKit::PrivateClickMeasurementManager::markAttributedPrivateClickMeasurementsAsExpiredForTesting):

10:16 AM Changeset in webkit [270851] by Simon Fraser
  • 5 edits in trunk/Source/WebKit

Add batching to WebPreferences updates
https://bugs.webkit.org/show_bug.cgi?id=219878

Reviewed by Sam Weinig.

WebPreferences::resetAllInternalDebugFeatures() and WebPreferences::enableAllExperimentalFeatures()
would trigger tens of calls to WebPageProxy::preferencesDidChange(). Fix by adding batching, and only
firing update() at the end of any prefs changed.

  • Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:
  • Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb:
  • UIProcess/WebPreferences.cpp:

(WebKit::WebPreferences::update):
(WebKit::WebPreferences::startBatchingUpdates):
(WebKit::WebPreferences::endBatchingUpdates):

  • UIProcess/WebPreferences.h:

(WebKit::WebPreferences::UpdateBatch::UpdateBatch):
(WebKit::WebPreferences::UpdateBatch::~UpdateBatch):

10:16 AM Changeset in webkit [270850] by Simon Fraser
  • 5 edits
    2 adds in trunk

REGRESSION (r259137): Clip-path rendering regression when element contains transformed child
https://bugs.webkit.org/show_bug.cgi?id=219829
Source/WebCore:

<rdar://problem/66308088>

Reviewed by Said Abou-Hallawa.

When computing the geometry for clip-path when applied to a CSS box, we should take overflow:hidden
on the box into account. It's not entirely clear what the correct geometry is
(https://github.com/w3c/csswg-drafts/issues/5786) but this avoids stretched masks.

Test: css3/masking/clip-path-overflow-hidden-bounds.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::setupClipPath):

LayoutTests:

Reviewed by Said Abou-Hallawa.

  • css3/masking/clip-path-overflow-hidden-bounds-expected.html: Added.
  • css3/masking/clip-path-overflow-hidden-bounds.html: Added.
10:00 AM Changeset in webkit [270849] by Devin Rousso
  • 4 edits
    2 adds in trunk

Toggling pointer-events on body does not re-enable scrolling on child
https://bugs.webkit.org/show_bug.cgi?id=218533
<rdar://problem/71009746>

Reviewed by Simon Fraser.

Source/WebCore:

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::changeRequiresRecompositeLayer const):
Changes to the CSS pointer-events property should also also indicate that a recomposite is
required (StyleDifference::RecompositeLayer), resulting in RenderElement::styleWillChange
being called, which invalidates the event region since the value of the CSS pointer-events
property has changed.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::layerStyleChanged):
Don't limit StyleDifference::RecompositeLayer changes to only affect RenderWidget.

LayoutTests:

  • fast/scrolling/ios/overflow-scroll-pointer-events.html: Added.
  • fast/scrolling/ios/overflow-scroll-pointer-events-expected.txt: Added.
9:47 AM Changeset in webkit [270848] by Alan Bujtas
  • 5 edits
    2 adds in trunk

[LFC][Integration] REGRESSION: Event handler region is wrong
https://bugs.webkit.org/show_bug.cgi?id=219515
<rdar://problem/71955706>

Reviewed by Antti Koivisto.

Source/WebCore:

Event regions need to include the paint offset the same way painting does.

Test: fast/scrolling/mac/event-region-is-leaking-out.html

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::paint):

LayoutTests:

  • fast/scrolling/mac/event-region-is-leaking-out-expected.txt: Added.
  • fast/scrolling/mac/event-region-is-leaking-out.html: Added.

progressions:

  • tiled-drawing/scrolling/non-fast-region/wheel-handler-in-overflow-scroll-expected.txt:
  • tiled-drawing/scrolling/non-fast-region/wheel-handler-region-basic-expected.txt:
9:40 AM Changeset in webkit [270847] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitscmpy] Contributor emails with capitalizations should be searchable as lowercase
https://bugs.webkit.org/show_bug.cgi?id=219892
<rdar://problem/72341870>

Reviewed by Stephanie Lewis.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py:
  • Scripts/libraries/webkitscmpy/webkitscmpy/contributor.py:

(Contributor.Mapping.create):

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

(TestContributor):
(TestContributor.test_upper_case_email):

9:38 AM Changeset in webkit [270846] by sihui_liu@apple.com
  • 5 edits in trunk

resultIndex of SpeechRecognitionEvent should be the first index that has change
https://bugs.webkit.org/show_bug.cgi?id=219876

Reviewed by Youenn Fablet.

Source/WebCore:

Our current resultIndex is first index of non-final result, but it should be first index of changed result
(https://wicg.github.io/speech-api/#dom-speechrecognitionevent-resultindex), which includes result with state
change (non-final to final) but no content change.

Modified existing test: fast/speechrecognition/ios/start-recognition-then-stop.html

  • Modules/speech/SpeechRecognition.cpp:

(WebCore::SpeechRecognition::didReceiveResult):

LayoutTests:

  • fast/speechrecognition/ios/start-recognition-then-stop-expected.txt:
  • fast/speechrecognition/ios/start-recognition-then-stop.html:
9:30 AM Changeset in webkit [270845] by Noam Rosenthal
  • 12 edits in trunk/Source/WebCore

REGRESSION(r268886): Page load time performance regression
https://bugs.webkit.org/show_bug.cgi?id=219677
<rdar://problem/71543823>

Reviewed by Darin Adler.

Optimize metadata fetching from images in ImageDecoderCG.
Instead of reading metadata separately for orientation and resolution,
use the partial metadata retrieved for orientation to figure out whether we need
extended metadata at all.

This will limit the expensive reading of extended metadata to images which might
have density size correction.

No new tests, this is an optimization covered by existing tests.

  • platform/graphics/ImageDecoder.h:

(WebCore::ImageDecoder::frameDensityCorrectedSizeAtIndex const): Deleted.

  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::cacheMetadataAtIndex):

  • platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.h:
  • platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:

(WebCore::ImageDecoderAVFObjC::frameMetadataAtIndex const):
(WebCore::ImageDecoderAVFObjC::frameOrientationAtIndex const): Deleted.

  • platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:

(WebCore::ImageDecoderGStreamer::frameMetadataAtIndex const):
(WebCore::ImageDecoderGStreamer::frameOrientationAtIndex const): Deleted.

  • platform/graphics/gstreamer/ImageDecoderGStreamer.h:
  • platform/graphics/win/ImageDecoderDirect2D.cpp:

(WebCore::ImageDecoderDirect2D::frameOrientationAtIndex const): Deleted.

  • platform/graphics/win/ImageDecoderDirect2D.h:
  • platform/image-decoders/ScalableImageDecoder.h:

Changed the signature to retrive metadata in one call

  • platform/graphics/cg/ImageDecoderCG.cpp:

(WebCore::mayHaveDensityCorrectedSize):
(WebCore::densityCorrectedSizeFromProperties):
(WebCore::ImageDecoderCG::frameMetadataAtIndex const):
(WebCore::ImageDecoderCG::frameOrientationAtIndex const): Deleted.
(WebCore::ImageDecoderCG::frameDensityCorrectedSizeAtIndex const): Deleted.

  • platform/graphics/cg/ImageDecoderCG.h:

Figure out whether we need to read density based on partial metadata.

9:27 AM Changeset in webkit [270844] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Fix alertMessageText regression from https://trac.webkit.org/changeset/269918
https://bugs.webkit.org/show_bug.cgi?id=219891

Reviewed by Eric Carlson.

alertMessageText was checking twice for audio while it should check once for audio and once for video.

  • UIProcess/Cocoa/MediaPermissionUtilities.mm:

(WebKit::alertMessageText):

9:12 AM Changeset in webkit [270843] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

"make clean" fails on EmptyDSTROOT target
https://bugs.webkit.org/show_bug.cgi?id=219870
rdar://72309233

Patch by Ryan Hostetler <rhost@apple.com> on 2020-12-15
Reviewed by Alexey Proskuryakov.

make clean can't find PROJECT_NAME for EmptyDSTROOT.

  • WebKit.xcodeproj/project.pbxproj:
8:45 AM Changeset in webkit [270842] by youenn@apple.com
  • 19 edits in trunk/Source/WebCore

Make worker RTC insertable streams constructs controlled by webrtc insertable streams feature setting
https://bugs.webkit.org/show_bug.cgi?id=219252
<rdar://problem/71798249>

Reviewed by Eric Carlson.

Update binding generator to use the new ScriptExecutionContext::settingsValues getter.
Enable use of EnabledBySettings outside window context.
Make use of it in RTCRtpScriptTransformer.

Covered by existing tests and rebased binding tests.

  • Modules/mediastream/RTCRtpScriptTransformer.idl:
  • bindings/js/WebCoreBuiltinNames.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateRuntimeEnableConditionalString):

  • bindings/scripts/test/JS/JSTestConditionalIncludes.cpp:

(WebCore::JSTestConditionalIncludesDOMConstructor::initializeProperties):
(WebCore::JSTestConditionalIncludesPrototype::finishCreation):

  • bindings/scripts/test/JS/JSTestConditionallyReadWrite.cpp:

(WebCore::JSTestConditionallyReadWritePrototype::finishCreation):

  • bindings/scripts/test/JS/JSTestDefaultToJSON.cpp:

(WebCore::JSTestDefaultToJSONPrototype::finishCreation):
(WebCore::jsTestDefaultToJSONPrototypeFunction_toJSONBody):

  • bindings/scripts/test/JS/JSTestDefaultToJSONInherit.cpp:

(WebCore::jsTestDefaultToJSONInheritPrototypeFunction_toJSONBody):

  • bindings/scripts/test/JS/JSTestDefaultToJSONInheritFinal.cpp:

(WebCore::jsTestDefaultToJSONInheritFinalPrototypeFunction_toJSONBody):

  • bindings/scripts/test/JS/JSTestDerivedDictionary.cpp:

(WebCore::convertDictionaryToJS):

  • bindings/scripts/test/JS/JSTestDerivedDictionary2.cpp:

(WebCore::convertDictionaryToJS):

  • bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:

(WebCore::JSTestEnabledBySettingDOMConstructor::initializeProperties):
(WebCore::JSTestEnabledBySettingPrototype::finishCreation):
(WebCore::JSTestEnabledBySetting::finishCreation):

  • bindings/scripts/test/JS/JSTestEnabledForContext.cpp:

(WebCore::JSTestEnabledForContext::finishCreation):

  • bindings/scripts/test/JS/JSTestInheritedDictionary.cpp:

(WebCore::convertDictionaryToJS):

  • bindings/scripts/test/JS/JSTestInterface.cpp:

(WebCore::JSTestInterfacePrototype::finishCreation):

  • bindings/scripts/test/JS/JSTestStandaloneDictionary.cpp:

(WebCore::convertDictionaryToJS):

8:40 AM Changeset in webkit [270841] by aestes@apple.com
  • 13 edits in trunk/Source

[Mac] Numerous webgl tests time out with WebM format reader enabled
https://bugs.webkit.org/show_bug.cgi?id=219887

Reviewed by Eric Carlson.

Source/WebCore:

Covered by existing tests.

  • platform/graphics/TrackPrivateBase.cpp:

(WebCore::TrackPrivateBase::trackUID const):

  • platform/graphics/TrackPrivateBase.h:
  • platform/graphics/cocoa/AudioTrackPrivateWebM.cpp:

(WebCore::AudioTrackPrivateWebM::id const):
(WebCore::AudioTrackPrivateWebM::trackUID const):

  • platform/graphics/cocoa/AudioTrackPrivateWebM.h:
  • platform/graphics/cocoa/VideoTrackPrivateWebM.cpp:

(WebCore::VideoTrackPrivateWebM::id const):
(WebCore::VideoTrackPrivateWebM::trackUID const):

  • platform/graphics/cocoa/VideoTrackPrivateWebM.h:

Added a way to get the track ID as an optional uint64_t.

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::callOnMainThreadCallback):
(WebCore::SourceBufferParserWebM::SourceBufferParserWebM):
(WebCore::SourceBufferParserWebM::appendData):
(WebCore::SourceBufferParserWebM::OnClusterBegin):
(WebCore::SourceBufferParserWebM::provideMediaData):
(WebCore::SourceBufferParserWebM::setCallOnClientThreadCallback):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:

Added a way for SourceBufferParserWebM clients to customize the thread on which callbacks
are invoked.

Source/WebKit:

When rendering a video frame to canvas, SampleCursor is invoked on the main thread in
order to find a sync frame to render. This triggered an ASSERT(!isMainThread()) in debug
builds, and possibly a deadlock if the cursor pointed to a sample that hadn't yet been
parsed (because SourceBufferParser calls the 'didProvideMediaData' callback on the main
thread).

Resolve this by having SourceBufferParser provide parsed samples on a background queue. To
avoid creating AtomStrings on this non-main queue, teach TrackReader to access the trackID
as a uint64_t instead.

  • Shared/mac/MediaFormatReader/FormatReader.cpp:

(WebKit::FormatReader::startOnMainThread):
(WebKit::readerQueue):
(WebKit::FormatReader::parseByteSource):
(WebKit::FormatReader::didParseTracks):
(WebKit::FormatReader::didProvideMediaData):
(WebKit::FormatReader::finishParsing):
(WebKit::FormatReader::copyTrackArray):

  • Shared/mac/MediaFormatReader/TrackReader.cpp:

(WebKit::MediaSampleByteRange::MediaSampleByteRange):
(WebKit::TrackReader::create):
(WebKit::TrackReader::storageQueue):
(WebKit::TrackReader::TrackReader):
(WebKit::TrackReader::addSample):
(WebKit::TrackReader::waitForSample const):
(WebKit::TrackReader::finishParsing):
(WebKit::TrackReader::finalize):

  • Shared/mac/MediaFormatReader/TrackReader.h:
8:36 AM Changeset in webkit [270840] by Chris Dumez
  • 11 edits in trunk/Source

[GPUProcess] Crash under AudioDestinationCocoa::setIsPlaying(bool)
https://bugs.webkit.org/show_bug.cgi?id=219809
<rdar://problem/72298420>

Reviewed by Youenn Fablet.

Source/WebCore:

The issue is that when using the GPU process, AudioDestination::stop() & start()
are asynchronous due to IPC. Those functions take completion handlers and
the AudioDestination object makes sure to ref itself to keep itself alive during
async operations. However, AudioDestination::m_callback is a raw pointer to
the AudioDestinationNode, which may itself become dead if AudioDestination
extends its lifetime by ref'ing itself.

To address the issue, AudioDestinationNode now clears AudioDestination's node
to itself before nulling out its destination. Before AudioDestination::m_callback
is used from several threads, we need to add a lock too.

No new tests, already covered by layout tests currently crashing on
bots with GPU process enabled.

  • Modules/webaudio/DefaultAudioDestinationNode.cpp:

(WebCore::DefaultAudioDestinationNode::uninitialize):
(WebCore::DefaultAudioDestinationNode::clearDestination):
(WebCore::DefaultAudioDestinationNode::createDestination):
(WebCore::DefaultAudioDestinationNode::recreateDestination):
(WebCore::DefaultAudioDestinationNode::enableInput):
(WebCore::DefaultAudioDestinationNode::setChannelCount):

  • Modules/webaudio/DefaultAudioDestinationNode.h:
  • platform/audio/AudioDestination.h:

(WebCore::AudioDestination::clearCallback):
(WebCore::AudioDestination::AudioDestination):
(WebCore::AudioDestination::callRenderCallback):

  • platform/audio/cocoa/AudioDestinationCocoa.cpp:

(WebCore::AudioDestinationCocoa::AudioDestinationCocoa):
(WebCore::AudioDestinationCocoa::setIsPlaying):
(WebCore::AudioDestinationCocoa::renderOnRenderingThead):

  • platform/audio/cocoa/AudioDestinationCocoa.h:
  • platform/audio/gstreamer/AudioDestinationGStreamer.cpp:

(WebCore::AudioDestinationGStreamer::AudioDestinationGStreamer):

  • platform/audio/gstreamer/AudioDestinationGStreamer.h:

Source/WebKit:

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:

(WebKit::RemoteAudioDestinationProxy::RemoteAudioDestinationProxy):

7:57 AM WebKitGTK/2.30.x edited by Michael Catanzaro
(diff)
7:40 AM WebKitGTK/2.30.x edited by Michael Catanzaro
(diff)
7:39 AM WebKitGTK/2.30.x edited by Michael Catanzaro
(diff)
7:07 AM Changeset in webkit [270839] by Alan Bujtas
  • 4 edits
    2 adds in trunk

REGRESSION: apple.com sign-in page footer does not wrap, "Site Map" option renders offscreen.
https://bugs.webkit.org/show_bug.cgi?id=219880
<rdar://problem/72128221>

Reviewed by Antti Koivisto.

Source/WebCore:

Do not check the inline-block's style for wrapping. It's the parent's style that drives the content wrapping.

E.g. <div style="white-space: nowrap">some text<div style="display: inline-block; white-space: pre-wrap"></div></div>.
While the inline-block has pre-wrap which allows wrapping, the content lives in a nowrap context.

Test: fast/inline/inline-block-no-wrap.html

  • layout/inlineformatting/InlineContentBreaker.cpp:

(WebCore::Layout::InlineContentBreaker::processOverflowingContent const):
(WebCore::Layout::lastContentRunIndex): Deleted.
(WebCore::Layout::InlineContentBreaker::isContentWrappingAllowed const): Deleted.

  • layout/inlineformatting/InlineContentBreaker.h:

LayoutTests:

  • fast/inline/inline-block-no-wrap-expected.html: Added.
  • fast/inline/inline-block-no-wrap.html: Added.
6:34 AM Changeset in webkit [270838] by Martin Robinson
  • 16 edits
    14 adds in trunk

CSS Scroll Snap is not in effect when the user scrolls via the keyboard
https://bugs.webkit.org/show_bug.cgi?id=198566
<rdar://problem/51488088>

Reviewed by Simon Fraser.

Add support for scroll snap for keyboard scrolling

This change adds support for the concept of directional scroll snapping,
which will never snap to a snap point that is away from the original
scroll offset in the opposite direction of the scroll direction. This
allows escaping snap points.

Source/WebCore:

Tests: tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-with-keyboard-scaled.html

tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-with-keyboard.html
tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-with-keyboard-scaled.html
tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-with-keyboard.html
tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe-horizontal-with-keyboard.html
tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe-vertical-with-keyboard.html
tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-overflow-rtl-with-keyboard.html

  • page/FrameView.cpp:

(WebCore::FrameView::pageScaleFactor const): Added.

  • page/FrameView.h: Added scale factor getter.
  • page/scrolling/ScrollSnapOffsetsInfo.cpp:

(WebCore::closestSnapOffset): Added a new optional argument that signals
directional snapping. This changes the behavior when choosing a snap offset
that is in the opposite direction as the scroll direction.

  • page/scrolling/ScrollSnapOffsetsInfo.h:
  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::scroll):

  • page/scrolling/ScrollSnapOffsetsInfo.h:

(WebCore::ScrollAnimator::scroll): No longer use the granularity argument.
(WebCore::ScrollAnimator::scrollWithoutAnimation): Remove the unused ScrollGranularity
argument and use the new positionFromStep helper.
(WebCore::ScrollAnimator::scrollWithDirectionalSnapping): Added.
(WebCore::ScrollAnimator::positionFromStep): Added this helper.
(WebCore::ScrollAnimator::handleWheelEvent): Remove the granularity argument.
(WebCore::ScrollAnimator::pageScaleFactor const): Added this implementation
of a ScrollControllerClient method.

  • platform/ScrollAnimator.h: Update method declarations.
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::scroll): Use the new argument to the scroll method.

  • platform/cocoa/ScrollController.h: Added new method.

(WebCore::ScrollableArea::pageScaleFactor const):

  • platform/cocoa/ScrollController.h:
  • platform/cocoa/ScrollController.mm:

(WebCore::ScrollController::adjustScrollDestinationForDirectionalSnapping): Added.

  • platform/mac/ScrollAnimatorMac.h:
  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::scroll): Use new positionFromStep helper.

LayoutTests:

  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-with-keyboard-expected.txt: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-with-keyboard-scaled-expected.txt: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-with-keyboard-scaled.html: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-with-keyboard.html: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-with-keyboard-expected.txt: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-with-keyboard-scaled-expected.txt: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-with-keyboard-scaled.html: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-with-keyboard.html: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe-horizontal-with-keyboard-expected.txt: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe-horizontal-with-keyboard.html: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe-vertical-with-keyboard-expected.txt: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe-vertical-with-keyboard.html: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-overflow-rtl-with-keyboard-expected.txt: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-overflow-rtl-with-keyboard.html: Added.
6:14 AM Changeset in webkit [270837] by graouts@webkit.org
  • 74 edits in trunk

[Web Animations] Implied keyframes should not account for animations on siblings
https://bugs.webkit.org/show_bug.cgi?id=188050
<rdar://problem/71330806>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Record 212 new PASS results thanks to no longer using shared style from a sibling when animating
elements with implied keyframes.

  • web-platform-tests/css/css-align/animation/column-gap-interpolation-expected.txt:
  • web-platform-tests/css/css-align/animation/row-gap-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/background-color-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/background-image-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/background-position-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/background-position-origin-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/background-position-x-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/background-position-y-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/background-size-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-color-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-radius-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-width-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/box-shadow-interpolation-expected.txt:
  • web-platform-tests/css/css-box/animation/margin-interpolation-expected.txt:
  • web-platform-tests/css/css-box/animation/padding-interpolation-expected.txt:
  • web-platform-tests/css/css-color/animation/color-interpolation-expected.txt:
  • web-platform-tests/css/css-color/animation/opacity-interpolation-expected.txt:
  • web-platform-tests/css/css-flexbox/animation/flex-basis-interpolation-expected.txt:
  • web-platform-tests/css/css-flexbox/animation/flex-grow-interpolation-expected.txt:
  • web-platform-tests/css/css-flexbox/animation/flex-shrink-interpolation-expected.txt:
  • web-platform-tests/css/css-flexbox/animation/order-interpolation-expected.txt:
  • web-platform-tests/css/css-fonts/animations/font-size-interpolation-001-expected.txt:
  • web-platform-tests/css/css-fonts/animations/font-stretch-interpolation-expected.txt:
  • web-platform-tests/css/css-fonts/animations/font-variation-settings-interpolation-expected.txt:
  • web-platform-tests/css/css-lists/animations/list-style-image-interpolation-expected.txt:
  • web-platform-tests/css/css-multicol/animation/column-count-interpolation-expected.txt:
  • web-platform-tests/css/css-multicol/animation/column-rule-color-interpolation-expected.txt:
  • web-platform-tests/css/css-multicol/animation/column-width-interpolation-expected.txt:
  • web-platform-tests/css/css-position/animations/bottom-interpolation-expected.txt:
  • web-platform-tests/css/css-position/animations/left-interpolation-expected.txt:
  • web-platform-tests/css/css-position/animations/right-interpolation-expected.txt:
  • web-platform-tests/css/css-position/animations/top-interpolation-expected.txt:
  • web-platform-tests/css/css-shapes/animation/shape-image-threshold-interpolation-expected.txt:
  • web-platform-tests/css/css-shapes/animation/shape-margin-interpolation-expected.txt:
  • web-platform-tests/css/css-shapes/animation/shape-outside-interpolation-expected.txt:
  • web-platform-tests/css/css-sizing/animation/height-interpolation-expected.txt:
  • web-platform-tests/css/css-sizing/animation/max-height-interpolation-expected.txt:
  • web-platform-tests/css/css-sizing/animation/max-width-interpolation-expected.txt:
  • web-platform-tests/css/css-sizing/animation/min-height-interpolation-expected.txt:
  • web-platform-tests/css/css-sizing/animation/min-width-interpolation-expected.txt:
  • web-platform-tests/css/css-sizing/animation/width-interpolation-expected.txt:
  • web-platform-tests/css/css-text/animations/letter-spacing-interpolation-expected.txt:
  • web-platform-tests/css/css-text/animations/text-indent-interpolation-expected.txt:
  • web-platform-tests/css/css-text/animations/word-spacing-interpolation-expected.txt:
  • web-platform-tests/css/css-transforms/animation/perspective-interpolation-expected.txt:
  • web-platform-tests/css/css-transforms/animation/rotate-interpolation-expected.txt:
  • web-platform-tests/css/css-transforms/animation/scale-interpolation-expected.txt:
  • web-platform-tests/css/css-transforms/animation/transform-interpolation-006-expected.txt:
  • web-platform-tests/css/css-transforms/animation/transform-origin-interpolation-expected.txt:
  • web-platform-tests/css/css-transforms/animation/translate-interpolation-expected.txt:
  • web-platform-tests/css/css-transitions/animations/text-shadow-interpolation-expected.txt:
  • web-platform-tests/css/css-transitions/animations/z-index-interpolation-expected.txt:
  • web-platform-tests/css/css-ui/animation/caret-color-interpolation-expected.txt:
  • web-platform-tests/css/css-ui/animation/outline-color-interpolation-expected.txt:
  • web-platform-tests/css/css-ui/animation/outline-offset-interpolation-expected.txt:
  • web-platform-tests/css/css-ui/animation/outline-width-interpolation-expected.txt:

Source/WebCore:

Sibling nodes can share styles, but we need to opt out of this behavior for elements targeted by keyframe effects
that rely on implied keyframes as, otherwise, we end up using another element's style to resolve animations with
implied keyframes.

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::hasImplicitKeyframes const):

  • animation/KeyframeEffect.h:
  • animation/KeyframeEffectStack.cpp:

(WebCore::KeyframeEffectStack::hasEffectWithImplicitKeyframes const):

  • animation/KeyframeEffectStack.h:
  • style/StyleSharingResolver.cpp:

(WebCore::Style::SharingResolver::resolve):

  • style/StyleSharingResolver.h:
  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::styleForStyleable):
(WebCore::Style::TreeResolver::resolveElement):
(WebCore::Style::TreeResolver::styleForElement): Deleted.

  • style/StyleTreeResolver.h:

LayoutTests:

Record new PASS results thanks to no longer using shared style from a sibling when animating
elements with implied keyframes.

  • platform/ios/compositing/backing/animate-into-view-expected.txt
  • platform/ios/compositing/backing/animate-into-view-with-descendant-expected.txt
  • platform/ios/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-width-interpolation-expected.txt
  • platform/mac-wk1/imported/w3c/web-platform-tests/css/css-color/animation/opacity-interpolation-expected.txt
6:01 AM Changeset in webkit [270836] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.30.4

WebKitGTK 2.30.4

6:00 AM Changeset in webkit [270835] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.30

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.30.4 release

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.30.4.
5:55 AM WebKitGTK/2.30.x edited by Michael Catanzaro
(diff)
5:44 AM Changeset in webkit [270834] by Andres Gonzalez
  • 5 edits in trunk/Source/WebCore

Add logging for Accessibility::findMatchingObjects.
https://bugs.webkit.org/show_bug.cgi?id=219883

Reviewed by Chris Fleizach.

No change in functionality, logging code.

  • Overloaded << operator for AccessibilitySearchDirection, SearchKey and

SearchCriteria.

  • Provided corresponding AXLogger::log overloads.
  • accessibility/AXLogger.cpp:

(WebCore::AXLogger::log):
(WebCore::operator<<):

  • accessibility/AXLogger.h:
  • accessibility/AccessibilityObject.cpp:

(WebCore::Accessibility::appendChildrenToArray):
Moved to the Accessibility namespace.
(WebCore::Accessibility::findMatchingObjects): Added logging.

  • accessibility/AccessibilityObjectInterface.h:
5:13 AM WebKitGTK/2.30.x edited by Carlos Garcia Campos
(diff)
5:08 AM Changeset in webkit [270833] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.30/Source/WebKit

Merge r270825 - [SOUP] WebSockets: wrong data sent in some cases with libsoup < 2.68
https://bugs.webkit.org/show_bug.cgi?id=219850

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2020-12-15
Reviewed by Michael Catanzaro.

We are using soup_websocket_connection_send_text() when libsoup < 2.68, which expects a null terminated string,
but we are receiving a IPC::DataReference that needs to be converted to a null terminated string by taking into
account its size.

  • NetworkProcess/soup/WebSocketTaskSoup.cpp:

(WebKit::WebSocketTask::sendString):

5:08 AM Changeset in webkit [270832] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.30/Source/WebCore

Merge r270675 - REGRESSION(r268923): [WPE] Nothing renders on the rpi3 using the proprietary video driver
https://bugs.webkit.org/show_bug.cgi?id=219739

Reviewed by Carlos Garcia Campos.

Rewrite the GLSL code to perform rounded rectangle clipping so it works with the limitations
of the raspberrypi3 proprietary video driver.

  • platform/graphics/texmap/TextureMapperShaderProgram.cpp:
5:07 AM Changeset in webkit [270831] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.30

Merge r270698 - [TextureMapper] REGRESION(r269570): mask layer doesn't clip descendent layers
https://bugs.webkit.org/show_bug.cgi?id=219136
<rdar://problem/71742605>

Reviewed by Carlos Garcia Campos.

Source/WebCore:

computeOverlapRegions shouldn't include the descendent layer
region for layers with a mask layer. Add a new mode Mask to
ComputeOverlapRegionMode which is like Union mode but doesn't
include descendent layers.

Test: compositing/masks/clip-path-composited-descendent-2.html

  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::computeOverlapRegions): Skip
children for the Mask mode.
(WebCore::TextureMapperLayer::paintUsingOverlapRegions): Use
ComputeOverlapRegionMode::Mask for a layer with mask layer.

  • platform/graphics/texmap/TextureMapperLayer.h (ComputeOverlapRegionMode): Added Mask.

LayoutTests:

  • compositing/masks/clip-path-composited-descendent-2-expected.html: Added.
  • compositing/masks/clip-path-composited-descendent-2.html: Added.
5:07 AM Changeset in webkit [270830] by Carlos Garcia Campos
  • 8 edits in releases/WebKitGTK/webkit-2.30/Source

Merge r269325 - [WinCairo/PlayStation] ICU 68.1 no longer exposes FALSE and TRUE macros by default
https://bugs.webkit.org/show_bug.cgi?id=218522

Reviewed by Don Olmstead.

Source/WebCore:

  • platform/text/TextCodecICU.cpp: Replace use of TRUE with true

Source/WebKit:

  • UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: Replace FALSE with false

Source/WTF:

Replace uses of FALSE and TRUE with false and true.

  • wtf/text/icu/UTextProvider.h:
  • wtf/text/icu/UTextProviderLatin1.cpp:
  • wtf/text/icu/UTextProviderUTF16.cpp:
4:53 AM Changeset in webkit [270829] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[macOS] Add sandbox parameter for message filter entitlement status
https://bugs.webkit.org/show_bug.cgi?id=219852
<rdar://problem/72145560>

Reviewed by Brent Fulgham.

Add sandbox parameter to determine whether the WebContent process has message filter entitlement.
This parameter will be used in the sandbox to enable message filtering.

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::initializeSandbox):

  • WebProcess/com.apple.WebProcess.sb.in:
3:31 AM Changeset in webkit [270828] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

generate-bundle: don't ignore --no-strip
https://bugs.webkit.org/show_bug.cgi?id=219855

Patch by Angelos Oikonomopoulos <Angelos Oikonomopoulos> on 2020-12-15
Reviewed by Jonathan Bedard.

  • Scripts/generate-bundle:
2:17 AM Changeset in webkit [270827] by commit-queue@webkit.org
  • 9 edits
    8 adds in trunk

[WASM-References] Add support for type annotated select
https://bugs.webkit.org/show_bug.cgi?id=219595

Patch by Dmitry Bezhetskov <dbezhetskov> on 2020-12-15
Reviewed by Yusuke Suzuki.
JSTests:

Added new harness for testing ref-types proposal because it has
different API with core/spec. However, a few files are actually the
same I decided to repeat them to have an independent copy.
Added ref-types spec's tests for the new type annotated select
instruction:
https://github.com/WebAssembly/reference-types/blob/master/test/core/select.wast.

  • wasm.yaml:
  • wasm/ref-spec-harness.js: Added.

(import.string_appeared_here.then):
(test):
(promise_test):
(let.assert_unreached):
(let.console.log):

  • wasm/ref-spec-harness/async_index.js: Added.

(let.testNum):
(uniqueTest):
(assertThrows):
(externref):
(is_externref):
(is_funcref):
(eq_externref):
(eq_funcref):
(binary):
(module):
(assert_invalid):
(instance):
(exports):
(then.):
(reinitializeRegistry.get promise_test):
(reinitializeRegistry):
(catch):
(assert_exhaustion):
(get const):

  • wasm/ref-spec-harness/sync_index.js: Added.

(let.testNum):
(assertThrows):
(_assert):
(ValueResult):
(ErrorResult):
(Result.prototype.isError):
(externref):
(is_externref):
(is_funcref):
(eq_externref):
(eq_funcref):
(reinitializeRegistry.let.handler.get return):
(binary):
(module):

  • wasm/ref-spec-harness/wasm-constants.js: Added.

(hostref):
(bytes):
(bytesWithHeader):
(makeSig):
(makeSig_v_x):
(makeSig_v_xx):
(makeSig_r_v):
(makeSig_r_x):
(makeSig_r_xx):
(assertTraps):
(assertWasmThrows):

  • wasm/ref-spec-harness/wasm-module-builder.js: Added.

(Binary.prototype.emit_u8):
(Binary.prototype.emit_u16):
(Binary.prototype.emit_u32):
(Binary.prototype.emit_u32v):
(Binary.prototype.emit_bytes):
(Binary.prototype.emit_string):
(Binary.prototype.emit_header):
(Binary.prototype.emit_section):
(Binary):
(WasmFunctionBuilder):
(WasmFunctionBuilder.prototype.exportAs):
(WasmFunctionBuilder.prototype.exportFunc):
(WasmFunctionBuilder.prototype.addBody):
(WasmFunctionBuilder.prototype.addLocals):
(WasmFunctionBuilder.prototype.end):
(WasmGlobalBuilder):
(WasmGlobalBuilder.prototype.exportAs):
(WasmModuleBuilder):
(WasmModuleBuilder.prototype.addStart):
(WasmModuleBuilder.prototype.addMemory):
(WasmModuleBuilder.prototype.addExplicitSection):
(WasmModuleBuilder.prototype.stringToBytes):
(WasmModuleBuilder.prototype.addCustomSection):
(WasmModuleBuilder.prototype.addType):
(WasmModuleBuilder.prototype.addGlobal):
(WasmModuleBuilder.prototype.addFunction):
(WasmModuleBuilder.prototype.addImport):
(WasmModuleBuilder.prototype.addImportedGlobal):
(WasmModuleBuilder.prototype.addImportedMemory):
(WasmModuleBuilder.prototype.addImportedTable):
(WasmModuleBuilder.prototype.addExport):
(WasmModuleBuilder.prototype.addExportOfKind):
(WasmModuleBuilder.prototype.addDataSegment):
(WasmModuleBuilder.prototype.exportMemoryAs):
(WasmModuleBuilder.prototype.addFunctionTableInit):
(WasmModuleBuilder.prototype.appendToTable):
(WasmModuleBuilder.prototype.setFunctionTableLength):
(WasmModuleBuilder.prototype.toArray):
(WasmModuleBuilder.prototype.toBuffer):
(WasmModuleBuilder.prototype.instantiate):

  • wasm/ref-spec-harness/wast.js: Added.

(normalize):
(require.else._registry.name):
(require):
(add_hex_char):
(add_char):
(string_with):
(list_of_opt):
(break_bytes.f):
(break_bytes):
(f):
(decls):
(func_type):
(limits):
(global_type):
(testop):
(relop):
(unop):
(binop):
(cvtop):
(oper):
(mem_size):
(extension):
(memop):
(storeop):
(var):
(constop):
(instr.else.switch.case.0.f):
(instr.else.switch.case.1.f.1):
(instr.else.switch.case.2.f.2):
(instr):
(func_with_name):
(func):
(start):
(table):
(memory):
(segment):
(elems):
(data):
(typedef):
(import_kind):
(import):
(export_kind):
(export):
(var_opt):
(is_func_import):
(is_table_import):
(is_memory_import):
(is_global_import):
(f.1):
(f.2):
(f.3):
(module_with_var_opt):
(module_):
(literal):
(definition):
(access):
(action):
(script):
(_registry.string_appeared_here):
(init):
(make_matrix):
(copy):
(append):
(sub):
(fill):
(blit):
(iter):
(map):
(iteri):
(mapi):
(to_list):
(list_length):
(of_list):
(fold_left):
(fold_right):
(maxson):
(trickle):
(bubble):
(trickleup):
(sort):
(merge):
(isortto):
(sortto):
(stable_sort):
(import_type):
(export_type):
(dims.n):
(dims.d.i):
(dims):
(map_file):
(create):
(of_array):
(slice_left):
(slice_right):
(slice_left_1):
(slice_right_1):
(slice_left_2):
(slice_right_2):
(array1_of_genarray):
(array2_of_genarray):
(array3_of_genarray):
(reshape_1):
(reshape_2):
(reshape_3):
(reshape):
():
(contents):
(to_bytes):
(nth):
(length):
(clear):
(reset):
(resize):
(add_substring):
(add_subbytes):
(add_string):
(add_bytes):
(add_buffer):
(add_channel):
(output_buffer):
(closing):
(advance_to_closing):
(advance_to_non_alpha):
(find_ident):
(add_substitute):
(make):
(to_string):
(of_string):
(sub_string):
(extend):
(blit_string):
(concat):
(cat):
(is_space):
(trim):
(escaped):
(uppercase):
(lowercase):
(apply1):
(capitalize):
(uncapitalize):
(index_rec):
(index):
(index_from):
(rindex_rec):
(rindex):
(rindex_from):
(contains_from):
(contains):
(rcontains_from):
(caml_array_sub):
(len):
(caml_array_concat):
(caml_make_vect):
(caml_array_blit):
(get if):
(caml_set_oo_id):
(get_id):
(caml_int32_float_of_bits):
(caml_int32_bits_of_float):
(caml_classify_float):
(caml_modf_float):
(caml_ldexp_float):
(caml_frexp_float):
(caml_copysign_float):
(caml_expm1_float):
(caml_hypot_float):
(caml_log10_float):
(caml_failwith):
(parse_digit):
(int_of_string_base):
(parse_sign_and_base):
(caml_int_of_string.aux):
(caml_int_of_string):
(caml_int64_of_string.aux):
(caml_int64_of_string):
(int_of_base):
(parse_format):
(finish_formatting):
(caml_format_int):
(caml_int64_format):
(caml_format_float):
(float_of_string):
(div):
(mod_):
(caml_bswap16):
(caml_int32_bswap):
(imul):
(neg_signed):
(not):
(eq):
(neg):
(lsl_):
(lsr_):
(asr_):
(is_zero):
(mul):
(swap):
(xor):
(or_):
(and_):
(ge):
(lt):
(gt):
(le):
(to_float):
(of_float):
(div_mod):
(compare):
(of_int32):
(to_int32):
(to_hex.aux):
(to_hex):
(discard_sign):
(float_of_bits):
(bits_of_float.to_nat):
(bits_of_float):
(get64):
(erase_rel):
(concat_fmtty):
(concat_fmt):
(create_char_set):
(add_in_char_set):
(rev_char_set):
(is_in_char_set):
(prec_of_prec_opt):
(param_format_of_ignored_format):
(buffer_check_size):
(buffer_add_char):
(buffer_add_string):
(buffer_contents):
(char_of_iconv):
(char_of_fconv):
(char_of_counter):
(print_char):
(set while.set var):
(set while.set else):
(set var):
(set else):
(set print_char):
(set if):
(bprint_padty):
(bprint_ignored_flag):
(bprint_pad_opt):
(bprint_padding):
(bprint_precision):
(bprint_iconv_flag):
(bprint_int_fmt):
(bprint_altint_fmt):
(bprint_fconv_flag):
(bprint_float_fmt):
(string_of_formatting_lit):
(string_of_formatting_gen):
(bprint_char_literal):
(bprint_string_literal):
(bprint_fmtty):
(int_of_custom_arity):
(bprint_fmt):
(string_of_fmt):
(symm):
(fmtty_rel_det):
(trans):
(fmtty_of_formatting_gen):
(fmtty_of_fmt):
(fmtty_of_custom):
(fmtty_of_padding_fmtty):
(fmtty_of_precision_fmtty):
(type_padding):
(type_padprec):
(type_ignored_param_one):
(type_format_gen):
(type_ignored_format_substitution):
(type_format):
(recast):
(fix_padding):
(fix_int_precision):
(string_to_caml_string):
(format_of_iconv):
(format_of_aconv):
(format_of_fconv):
(convert_int):
(convert_int32):
(convert_nativeint):
(convert_int64):
(else.is_valid):
(convert_float):
(format_caml_char):
(string_of_fmtty):
(else.switch.):
(else.switch.k.prime):
(else.switch.else.):
(else.switch.else.k.prime.1):
(make_printf):
(make_from_fmtty):
(make_invalid_arg):
(make_string_padding):
(make_int_padding_precision):
(make_custom):
(output_acc):
(bufput_acc):
(strput_acc):
(failwith_message.k):
(failwith_message):
(open_box_of_string.else.invalid_box):
(open_box_of_string.else.parse_spaces):
(open_box_of_string.else.parse_lword):
(open_box_of_string.else.parse_int):
(open_box_of_string):
(make_padding_fmt_ebb):
(make_precision_fmt_ebb):
(make_padprec_fmt_ebb):
(invalid_format_message):
(invalid_format_without):
(expected_character):
(compute_int_conv):
(incompatible_flag):
(parse_positive):
(parse_conv):
(parse_after_precision):
(else.parse_literal):
(parse_after_padding):
(parse_literal):
(parse_after_at):
(add_literal):
(parse_spaces):
(parse_integer):
(compute_float_conv):
(search_subformat_end):
(check_no_0):
(opt_of_pad):
(get_prec_opt):
(else.switch.case.99.char_format):
(else.switch.scan_format):
(parse_conversion):
(set_flag):
(parse_flags):
(is_int_base):
(counter_of_char):
(add_range):
(fail_single_percent):
(parse_char_set_after_char):
(parse_char_set_content):
(parse_char_set_start):
(parse_char_set):
(check_open_box):
(parse_tag):
(fmt_ebb_of_string):
(format_of_string_fmtty):
(format_of_string_format):
(caret):
(caml_ml_open_descriptor_in):
(caml_ml_open_descriptor_out):
(caml_ml_flush):
(node_std_output):
(caml_ml_output_char):
(caml_ml_input):
(caml_ml_input_char):
(caml_ml_out_channels_list):
(fail):
(caml_lex_array):
(caml_lex_engine):
(caml_lex_run_mem):
(caml_lex_run_tag):
(caml_new_lex_engine):
(caml_obj_dup):
(caml_obj_truncate):
(caml_lazy_make_forward):
(caml_update_dummy):
(caml_int_compare):
(caml_compare):
(caml_equal):
(caml_notequal):
(caml_greaterequal):
(caml_lessequal):
(else.aux):
(caml_get_public_method):
(caml_parse_engine):
(caml_set_parser_trace):
(js_string_of_char):
(caml_string_get):
(caml_create_string):
(caml_string_compare):
(caml_fill_string):
(caml_blit_string):
(caml_blit_bytes):
(bytes_of_string):
(bytes_to_string):
(caml_string_of_char_array):
(caml_is_printable):
(caml_string_get16):
(caml_string_get32):
(repeat):
(chr):
(app):
(js):
(curry_1):
(_1):
(js1):
(
1):
(curry_2):
(_2):
(js2):
(2):
(curry_3):
(_3):
(js3):
(
3):
(curry_4):
(_4):
(js4):
(4):
(curry_5):
(_5):
(js5):
(
5):
(curry_6):
(_6):
(js6):
(6):
(curry_7):
(_7):
(js7):
(
7):
(curry_8):
(_8):
(js8):
(8):
(stream):
(eos):
(skip):
(read):
(peek):
(string_of_byte):
(position):
(region):
(error):
(guard):
(get 1):
(get expect):
(get illegal):
(at):
(u32):
(u64):
(get require):
(vuN):
(get var):
(vsN):
(vu32):
(vs32):
(vs64):
(f32):
(f64):
(len32):
(string):
(opt):
(vec):
(sized):
(value_type):
(elem_type):
(stack_type):
(table_type):
(memory_type):
(mutability.get if):
(mutability):
(instr.get if):
(instr_block):
(const):
(id):
(section):
(type_section):
(import_kind.get if):
(import_section):
(func_section):
(table_section):
(memory_section):
(global):
(global_section):
(export_kind.get if):
(export_section):
(start_section):
(local):
(code):
(code_section):
(table_segment):
(elem_section):
(memory_segment):
(data_section):
(partial_arg.1):
(custom):
(custom_section):
(iterate):
(decode):
(patch):
(encode.u8):
(encode.u16):
(encode.u32):
(encode.vu64):
(encode.vs64):
(encode.vu32):
(encode.len):
(encode.bool):
(encode.string):
(encode.vec):
(encode.gap32):
(encode.patch_gap32):
(encode.value_type):
(encode.stack_type):
(encode.func_type):
(encode.limits):
(encode.table_type):
(encode.memory_type):
(encode.global_type):
(encode.memop):
(encode):
(encode.instr):
(encode.const):
(encode.section):
(encode.type_section):
(encode.import):
(encode.import_section):
(encode.func):
(encode.func_section):
(encode.table):
(encode.table_section):
(encode.memory):
(encode.memory_section):
(encode.global):
(encode.global_section):
(encode.export_kind):
(encode.export):
(encode.export_section):
(encode.start_section):
(encode.combine):
(encode.compress):
(encode.local):
(encode.code):
(encode.code_section):
(encode.segment):
(encode.table_segment):
(encode.elem_section):
(encode.memory_segment):
(encode.module_):
(Make.warn):
(Make.error):
(Make):
(print_nan_significand_digits):
(Make.of_bits):
(Make.to_bits):
(Make.is_nan):
(Make.canonicalize_nan):
(Make.determine_binary_nan):
(Make.determine_unary_nan):
(Make.binary):
(Make.unary):
(Make.add):
(Make.sub):
(Make.mul):
(Make.div):
(Make.sqrt):
(Make.ceil):
(Make.floor):
(Make.trunc):
(Make.nearest):
(Make.min):
(Make.max):
(Make.abs):
(Make.neg):
(Make.copysign):
(Make.eq):
(Make.ne):
(Make.lt):
(Make.gt):
(Make.le):
(Make.ge):
(Make.of_signless_string):
(Make.of_string):
(Make.to_string):
(add_queue):
(peek_queue):
(take_queue):
(pp_enqueue):
(pp_clear_queue):
(pp_output_string):
(break_new_line):
(break_same_line):
(pp_force_break_line):
(switch.add_tab):
(else.switch.find):
(format_pp_token):
(advance_left):
(enqueue_advance):
(enqueue_string_as):
(set_size):
(scan_push):
(pp_open_box_gen):
(pp_close_box):
(pp_open_tag):
(pp_close_tag):
(pp_set_print_tags):
(pp_set_mark_tags):
(pp_get_print_tags):
(pp_get_mark_tags):
(pp_set_tags):
(pp_get_formatter_tag_functions):
(pp_set_formatter_tag_functions):
(pp_rinit):
(pp_flush_queue):
(pp_print_as_size):
(pp_print_string):
(pp_print_int):
(pp_print_float):
(pp_print_bool):
(pp_open_hbox):
(pp_open_vbox):
(pp_open_hvbox):
(pp_open_hovbox):
(pp_open_box):
(pp_print_newline):
(pp_print_flush):
(pp_force_newline):
(pp_print_if_newline):
(pp_print_break):
(pp_print_space):
(pp_print_cut):
(pp_open_tbox):
(pp_close_tbox):
(pp_print_tbreak):
(pp_print_tab):
(pp_set_tab):
(pp_print_list):
(flush):
(pp_print_text):
(pp_set_max_boxes):
(pp_get_max_boxes):
(pp_over_max_boxes):
(pp_get_ellipsis_text):
(pp_limit):
(pp_set_max_indent):
(pp_get_max_indent):
(pp_set_margin):
(pp_get_margin):
(pp_set_formatter_out_functions):
(pp_get_formatter_out_functions):
(pp_set_formatter_output_functions):
(pp_get_formatter_output_functions):
(pp_set_all_formatter_output_functions):
(pp_get_all_formatter_output_functions):
(display_newline):
(display_blanks):
(state.16):
(state.17):
(state.18):
(state.19):
(pp_set_formatter_out_channel):
(default_pp_mark_open_tag):
(default_pp_mark_close_tag):
(default_pp_print_open_tag):
(default_pp_print_close_tag):
(pp_make_formatter):
(ppf.18):
(ppf.19):
(make_formatter):
(formatter_of_out_channel):
(formatter_of_buffer):
(flush_str_formatter):
(flush_buf_formatter):
(open_hbox):
(open_vbox):
(open_hvbox):
(open_hovbox):
(open_box):
(close_box):
(open_tag):
(close_tag):
(print_as):
(print_string):
(print_int):
(print_float):
(print_bool):
(print_cut):
(print_space):
(force_newline):
(print_flush):
(print_newline):
(print_if_newline):
(open_tbox):
(close_tbox):
(print_tbreak):
(set_tab):
(print_tab):
(set_margin):
(get_margin):
(set_max_indent):
(get_max_indent):
(set_max_boxes):
(get_max_boxes):
(over_max_boxes):
(set_ellipsis_text):
(get_ellipsis_text):
(set_formatter_out_channel):
(set_formatter_out_functions):
(get_formatter_out_functions):
(set_formatter_output_functions):
(get_formatter_output_functions):
(set_all_formatter_output_functions):
(get_all_formatter_output_functions):
(set_formatter_tag_functions):
(get_formatter_tag_functions):
(set_print_tags):
(get_print_tags):
(set_mark_tags):
(get_mark_tags):
(set_tags):
(compute_tag):
(output_formatting_lit):
(kfprintf):
(ikfprintf):
(fprintf):
(ifprintf):
(printf):
(eprintf):
(k.prime):
(ksprintf):
(sprintf):
(asprintf.k.prime):
(asprintf):
(k):
(bprintf):
(succ):
(pred):
(abs):
(lognot):
(Make.cmp_u):
(Make.divrem_u):
(Make.div_s):
(Make.div_u):
(Make.rem_s):
(Make.rem_u):
(Make.shift):
(Make.shl):
(Make.shr_s):
(Make.shr_u):
(Make.clamp_rotate_count):
(Make.rotl):
(Make.rotr):
(Make.loop):
(Make.clz):
(Make.ctz):
(Make.popcnt):
(Make.eqz):
(Make.lt_u):
(Make.le_u):
(Make.gt_u):
(Make.ge_u):
(Make.of_int_u):
(Make.to_string_u):
(Make.require):
(Make.dec_digit):
(Make.hex_digit):
(Make.parse_int):
(Make.of_string_s):
(Make.of_string_u):
(convert_pos):
(error_nest):
(text):
(intop):
(floatop):
(numop):
(memsz):
(ext):
(token.else.switch):
(token.else.switch.):
(token):
(
ocaml_lex_comment_rec):
(engine):
(new_engine):
(from_function):
(from_channel):
(from_string):
(lexeme):
(sub_lexeme):
(sub_lexeme_opt):
(sub_lexeme_char):
(sub_lexeme_char_opt):
(lexeme_char):
(lexeme_start):
(lexeme_end):
(lexeme_start_p):
(lexeme_end_p):
(new_line):
(flush_input):
(take):
(drop):
(last):
(split_last):
(index_of):
(index_of_int32):
(dim):
(set 1):
(get 2):
(log2):
(is_power_of_two):
(loop):
(breakup):
(hd):
(tl):
(rev_append):
(rev):
(flatten):
(rev_map):
(map2):
(rev_map2):
(iter2):
(fold_left2):
(fold_right2):
(for_all):
(exists):
(for_all2):
(exists2):
(mem):
(memq):
(assoc):
(assq):
(mem_assoc):
(mem_assq):
(remove_assoc):
(remove_assq):
(find):
(find_all):
(partition):
(split):
(combine):
(chop):
(rev_sort):
(sort_uniq):
(Make.height):
(Make.create):
(Make.singleton):
(Make.bal):
(Make.is_empty):
(Make.find):
(Make.mem):
(Make.min_binding):
(Make.max_binding):
(Make.remove_min_binding):
(Make.remove):
(Make.iter):
(Make.map):
(Make.mapi):
(Make.fold):
(Make.for_all):
(Make.exists):
(Make.add_min_binding):
(Make.add_max_binding):
(Make.join):
(Make.concat):
(Make.concat_or_join):
(Make.split):
(Make.merge):
(Make.filter):
(Make.partition):
(Make.cons_enum):
(Make.compare):
(Make.equal):
(Make.cardinal):
(Make.bindings_aux):
(Make.bindings):
(double_field):
(set_double_field):
(marshal):
(unmarshal):
(extension_slot):
(extension_name):
(extension_id):
(i32_const):
(i64_const):
(f32_const):
(f64_const):
(block):
(br):
(br_if):
(br_table):
(if_):
(call):
(call_indirect):
(get_local):
(set_local):
(tee_local):
(get_global):
(set_global):
(i32_load):
(i64_load):
(f32_load):
(f64_load):
(i32_load8_s):
(i32_load8_u):
(i32_load16_s):
(i32_load16_u):
(i64_load8_s):
(i64_load8_u):
(i64_load16_s):
(i64_load16_u):
(i64_load32_s):
(i64_load32_u):
(i32_store):
(i64_store):
(f32_store):
(f64_store):
(i32_store8):
(i32_store16):
(i64_store8):
(i64_store16):
(i64_store32):
(parse):
(string_to):
(string_to_script):
(string_to_module):
(parse_error):
(position_to_pos):
(positions_to_region):
(ati):
(nat):
(nat32):
(empty_context):
(enter_func):
(type_):
(lookup):
(label):
(anon_type):
(bind):
(bind_func):
(bind_local):
(bind_global):
(bind_table):
(bind_memory):
(anon):
(anon_func):
(anon_locals):
(anon_global):
(anon_table):
(anon_memory):
(anon_label):
(explicit_sig):
(inline_type):
(yyact):
(script1):
(module1):
(grow_stacks):
(clear_parser):
(current_lookahead_fun):
(catch.else.current_lookahead_fun.0):
(yyparse):
(peek_val):
(symbol_start_pos):
(symbol_end_pos):
(rhs_start_pos):
(rhs_end_pos):
(symbol_start):
(symbol_end):
(rhs_start):
(rhs_end):
(is_current_lookahead):
(failwith):
(invalid_arg):
(min):
(max):
(lnot):
(char_of_int):
(string_of_bool):
(bool_of_string):
(string_of_int):
(valid_float_lexem):
(string_of_float):
(open_out_gen):
(open_out):
(open_out_bin):
(flush_all):
(output_bytes):
(output_string):
(output):
(output_substring):
(output_value):
(close_out):
(close_out_noerr):
(open_in_gen):
(open_in):
(open_in_bin):
(input):
(else.r):
(unsafe_really_input):
(really_input):
(really_input_string):
(input_line.build_result):
(input_line.n):
(input_line.scan):
(input_line):
(close_in_noerr):
(print_bytes):
(print_endline):
(prerr_char):
(prerr_string):
(prerr_bytes):
(prerr_int):
(prerr_float):
(prerr_endline):
(prerr_newline):
(read_line):
(read_int):
(read_float):
(string_of_format):
(at_exit.exit_function.0):
(at_exit):
(do_at_exit):
(exit):
(output_binary_int):
(seek_out):
(pos_out):
(out_channel_length):
(set_binary_mode_out):
(input_binary_int):
(input_value):
(seek_in):
(pos_in):
(in_channel_length):
(close_in):
(set_binary_mode_in):
(LargeFile_000):
(LargeFile_001):
(LargeFile_002):
(LargeFile_003):
(LargeFile_004):
(LargeFile_005):
(kbprintf):
(plus):
(pp):
(print):
(string_of_pos):
(string_of_region):
(escaped.needs_escape):
(set_signal):
(catch_break):
(size):
(string_of_value_type):
(string_of_value_types):
(string_of_elem_type):
(string_of_limits):
(string_of_table_type):
(string_of_global_type):
(string_of_stack_type):
(string_of_func_type):
(type_of):
(default_value):
(value_of_bool):
(string_of_values):
(to_value):
(of_value):
(g):
(binary):
(bytes):

  • wasm/references-spec-tests/select.wast.js: Added.
  • wasm/references/table_instructions_parse_unreachable.js:

(invalidAnnotatedSelectUnreachable):

  • wasm/wasm.json:

Source/JavaScriptCore:

Add support for typed select instruction from ref-types proposal:
select t : [t t i32] -> [t].
The annotated select instruction takes a value type immediate to deduce result type of select expression.
This version of select will help us with subtyping in the future where we want to avoid computing lubs.
For more information see:
https://github.com/WebAssembly/reference-types/issues/125,
https://webassembly.github.io/reference-types/core/binary/instructions.html#parametric-instructions.

  • wasm/WasmFunctionParser.h:

(JSC::Wasm::FunctionParser<Context>::parseAnnotatedSelectImmediates):
(JSC::Wasm::FunctionParser<Context>::parseExpression):
(JSC::Wasm::FunctionParser<Context>::parseUnreachableExpression):

  • wasm/wasm.json:

Tools:

Add support for testing ref-types.

  • Scripts/run-jsc-stress-tests:
2:14 AM Changeset in webkit [270826] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[CMake][WPE] Remove unconditional WebCore dependency to WPEBackend-FDO
https://bugs.webkit.org/show_bug.cgi?id=219835

Patch by Philippe Normand <pnormand@igalia.com> on 2020-12-15
Reviewed by Yusuke Suzuki.

  • PlatformWPE.cmake: The WPEBackend-FDO dependency should be enabled only when client-side

video or audio rendering is enabled.

1:15 AM Changeset in webkit [270825] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[SOUP] WebSockets: wrong data sent in some cases with libsoup < 2.68
https://bugs.webkit.org/show_bug.cgi?id=219850

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2020-12-15
Reviewed by Michael Catanzaro.

We are using soup_websocket_connection_send_text() when libsoup < 2.68, which expects a null terminated string,
but we are receiving a IPC::DataReference that needs to be converted to a null terminated string by taking into
account its size.

  • NetworkProcess/soup/WebSocketTaskSoup.cpp:

(WebKit::WebSocketTask::sendString):

Dec 14, 2020:

11:06 PM Changeset in webkit [270824] by Diego Pino Garcia
  • 4 edits
    2 adds in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Gardened several flaky failures.

  • platform/glib/TestExpectations:
  • platform/glib/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-network-error.sub-expected.txt: Added.
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
10:28 PM Changeset in webkit [270823] by Chris Fleizach
  • 26 edits
    15 adds in trunk

AX: implement prefers-contrast: more
https://bugs.webkit.org/show_bug.cgi?id=215507
<rdar://problem/67077492>

Reviewed by Dean Jackson.

Source/WebCore:

Implement prefers-contrast as defined in
https://drafts.csswg.org/mediaqueries-5/#prefers-contrast

Tests: fast/media/mq-prefers-contrast-forced-value.html

fast/media/mq-prefers-contrast-live-update-for-listener.html
fast/media/mq-prefers-contrast-live-update.html
fast/media/mq-prefers-contrast-matchMedia.html
fast/media/mq-prefers-contrast.html

  • css/CSSValueKeywords.in:
  • css/MediaFeatureNames.h:
  • css/MediaQueryEvaluator.cpp:

(WebCore::isAccessibilitySettingsDependent):
(WebCore::prefersContrastEvaluate):

  • css/MediaQueryExpression.cpp:

(WebCore::featureWithValidIdent):
(WebCore::isFeatureValidWithoutValue):

  • page/Settings.yaml:
  • platform/Theme.cpp:

(WebCore::Theme::userPrefersContrast const):

  • platform/Theme.h:
  • platform/ios/ThemeIOS.h:
  • platform/ios/ThemeIOS.mm:

(WebCore::ThemeIOS::userPrefersContrast const):

  • platform/mac/ThemeMac.h:
  • platform/mac/ThemeMac.mm:

(WebCore::ThemeMac::userPrefersContrast const):

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::forcedPrefersContrastAccessibilityValue const):
(WebCore::InternalSettings::setForcedPrefersContrastAccessibilityValue):

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:
  • testing/Internals.cpp:

(WebCore::Internals::userPrefersContrast const):

  • testing/Internals.h:
  • testing/Internals.idl:
  • testing/Internals.mm:

(WebCore::Internals::userPrefersContrast const):

Source/WebCore/PAL:

  • pal/ios/UIKitSoftLink.h:

LayoutTests:

  • TestExpectations:
  • fast/media/mq-prefers-contrast-forced-value.html: Added.
  • fast/media/mq-prefers-contrast-live-update-for-listener-expected.txt: Added.
  • fast/media/mq-prefers-contrast-live-update-for-listener.html: Added.
  • fast/media/mq-prefers-contrast-live-update.html: Added.
  • fast/media/mq-prefers-contrast-matchMedia-expected.html: Added.
  • fast/media/mq-prefers-contrast-matchMedia.html: Added.
  • fast/media/mq-prefers-contrast.html: Added.
  • platform/ios-simulator/fast/media/mq-prefers-contrast-expected.html: Added.
  • platform/ios-simulator/fast/media/mq-prefers-contrast-forced-value-expected.html: Added.
  • platform/ios-simulator/fast/media/mq-prefers-contrast-live-update-expected.html: Added.
  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/mac/fast/media/mq-prefers-contrast-expected.html: Added.
  • platform/mac/fast/media/mq-prefers-contrast-forced-value-expected.html: Added.
  • platform/mac/fast/media/mq-prefers-contrast-live-update-expected.html: Added.
10:16 PM Changeset in webkit [270822] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Update baseline after r270801.

  • platform/glib/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-computed-value-expected.txt:
8:36 PM Changeset in webkit [270821] by Russell Epstein
  • 1 copy in tags/Safari-611.1.8.1

Tag Safari-611.1.8.1.

8:17 PM Changeset in webkit [270820] by Russell Epstein
  • 8 edits in branches/safari-611.1.8-branch/Source

Versioning.

WebKit-7611.1.8.1

7:08 PM Changeset in webkit [270819] by Peng Liu
  • 8 edits in trunk/Source

[Media in GPU Process][MSE] VP9 stream playback is not smooth
https://bugs.webkit.org/show_bug.cgi?id=219861

Reviewed by Eric Carlson.

Source/WebCore:

Change two methods of MediaSourcePrivate to virtual so that we can implement them
in MediaSourcePrivateRemote with IPC messages.

  • platform/graphics/MediaSourcePrivate.h:

(WebCore::MediaSourcePrivate::setIsSeeking):
(WebCore::MediaSourcePrivate::setTimeFudgeFactor):
(WebCore::MediaSourcePrivate::timeFudgeFactor const):

Source/WebKit:

Add two new IPC messages in RemoteMediaSourceProxy to set m_isSeeking and
m_timeFudgeFactor of the MediaSourcePrivate running in the GPU process.

  • GPUProcess/media/RemoteMediaSourceProxy.cpp:

(WebKit::RemoteMediaSourceProxy::setIsSeeking):
(WebKit::RemoteMediaSourceProxy::setTimeFudgeFactor):

  • GPUProcess/media/RemoteMediaSourceProxy.h:
  • GPUProcess/media/RemoteMediaSourceProxy.messages.in:
  • WebProcess/GPU/media/MediaSourcePrivateRemote.cpp:

(WebKit::MediaSourcePrivateRemote::setIsSeeking):
(WebKit::MediaSourcePrivateRemote::setTimeFudgeFactor):

  • WebProcess/GPU/media/MediaSourcePrivateRemote.h:
6:58 PM Changeset in webkit [270818] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

Get more informatiton from assertion when uidna_openUTS46 fails
https://bugs.webkit.org/show_bug.cgi?id=219881

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-14
Reviewed by Alexey Proskuryakov.

<rdar://problem/66988046> shows that this fails sometimes.
Updating the assertion should let me know more information.

  • wtf/URLParser.cpp:

(WTF::URLParser::internationalDomainNameTranscoder):

5:29 PM Changeset in webkit [270817] by Alan Coon
  • 4 edits in branches/safari-610-branch/Source

Cherry-pick r270449. rdar://problem/72298505

Add safety checks to xsltParamArrayFromParameterMap()
<https://webkit.org/b/219407>
<rdar://problem/71853069>

Reviewed by Darin Adler.

Source/WebCore:

  • xml/XSLTProcessorLibxslt.cpp: (WebCore::xsltParamArrayFromParameterMap):

Source/WTF:

  • wtf/PlatformHave.h: (HAVE_LIBXSLT_FIX_FOR_RADAR_71864140): Add.

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

5:28 PM Changeset in webkit [270816] by Alan Coon
  • 5 edits
    3 adds in branches/safari-610-branch

Cherry-pick r270373. rdar://problem/72298666

iframe with sandbox=allow-top-navigation-by-user-activation can navigate top frame when the user interacts with an iframe from another origin
https://bugs.webkit.org/show_bug.cgi?id=219413
<rdar://problem/64887657>

Reviewed by Geoffrey Garen.

Source/WebCore:

An iframe with sandbox=allow-top-navigation-by-user-activation can navigate the top frame when the user
interacts with an frame from another origin. This is not strict enough and does not match the behavior of
Chrome.

In Chrome, the user activation is only valid for the purpose of navigation if the user interacted with either:

  • The iframe triggering the navigation
  • A descendant iframe of the iframe triggering the navigation
  • A frame from the same origin as the iframe triggering the navigation

This patch aligns our behavior with Chrome's.

Test: http/tests/security/block-top-level-navigations-by-sandboxed-iframe-with-propagated-user-gesture.html

  • dom/Document.cpp: (WebCore::Document::canNavigateInternal):
  • dom/UserGestureIndicator.cpp: (WebCore::UserGestureToken::UserGestureToken): (WebCore::UserGestureToken::isValidForDocument const): (WebCore::UserGestureIndicator::processingUserGesture):
  • dom/UserGestureIndicator.h: (WebCore::UserGestureToken::create):

LayoutTests:

Add layout test coverage.

  • http/tests/security/block-top-level-navigations-by-sandboxed-iframe-with-propagated-user-gesture-expected.txt: Added.
  • http/tests/security/block-top-level-navigations-by-sandboxed-iframe-with-propagated-user-gesture.html: Added.
  • http/tests/security/resources/navigate-top-level-frame-to-failure-page-via-message-handler.html: Added.

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

5:28 PM Changeset in webkit [270815] by Alan Coon
  • 3 edits
    3 adds in branches/safari-610-branch

Cherry-pick r270367. rdar://problem/72298753

Block suspicious top level navigations by iframes even if sandbox=allow-top-navigation is specified
https://bugs.webkit.org/show_bug.cgi?id=219408
<rdar://problem/71049726>

Reviewed by Geoffrey Garen.

Source/WebCore:

Block suspicious top level navigations by iframes even if sandbox=allow-top-navigation is specified,
when the parent of the sandboxed iframe is not first-party.

Test: http/tests/security/block-top-level-navigations-by-third-party-sandboxed-iframe.html

  • dom/Document.cpp: (WebCore::Document::isNavigationBlockedByThirdPartyIFrameRedirectBlocking):

LayoutTests:

Add layout test coverage.

  • http/tests/security/block-top-level-navigations-by-third-party-sandboxed-iframe-expected.txt: Added.
  • http/tests/security/block-top-level-navigations-by-third-party-sandboxed-iframe.html: Added.
  • http/tests/security/resources/navigate-top-level-frame-to-failure-page-via-sandboxed-iframe.html: Added.

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

5:28 PM Changeset in webkit [270814] by Alan Coon
  • 4 edits
    1 add in branches/safari-610-branch/Source/WebCore

Cherry-pick r269893. rdar://problem/72298580

Textures Fail to Render in WebGL from HLS Stream on iPhone 12 [iOS 14.2]
https://bugs.webkit.org/show_bug.cgi?id=218637
<rdar://problem/71102126>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-11-16
Reviewed by Eric Carlson.

Patch by Jer Noble.

Treat internal compressed YUV pixel formats
kCVPixelFormatType_AGX_420YpCbCr8BiPlanarVideoRange and
kCVPixelFormatType_AGX_420YpCbCr8BiPlanarFullRange as
kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange and
kCVPixelFormatType_420YpCbCr8BiPlanarFullRange when
using the OpenGL shader to convert video IOSurface to a WebGL
texture.

Fixes cases where the decoder outputs the compressed formats.

No new tests, adding more comprehensive test content suite is tracked
in another bug.

Source/WebCore:

  • platform/graphics/cv/GraphicsContextGLCVANGLE.cpp: (WebCore::pixelRangeFromPixelFormat): (WebCore::GraphicsContextGLCVANGLE::copyPixelBufferToTexture):

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cf/CoreVideoSPI.h: Added.

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

5:27 PM Changeset in webkit [270813] by Alan Coon
  • 3 edits in branches/safari-610-branch/Source/WebCore

Cherry-pick r269535. rdar://problem/72298703

Empty text runs can't be split any further.
https://bugs.webkit.org/show_bug.cgi?id=218506

Reviewed by David Kilzer and Ryosuke Niwa.

This patch ensures that when we can't fit an empty text run on the line (available space is negative) we don't
try to split it even when the style says so.

  • layout/inlineformatting/InlineContentBreaker.cpp: (WebCore::Layout::InlineContentBreaker::processOverflowingContent const): (WebCore::Layout::InlineContentBreaker::tryBreakingTextRun const):
  • layout/inlineformatting/text/TextUtil.cpp: (WebCore::Layout::TextUtil::fixedPitchWidth): (WebCore::Layout::TextUtil::split):

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

5:16 PM Changeset in webkit [270812] by aestes@apple.com
  • 2 edits in trunk/Tools

[Mac] MediaFormatReader.bundle fails to load in WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=219879

Reviewed by Eric Carlson.

  • WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:

(WTR::InjectedBundle::platformInitialize): Tell CoreMedia to allow unsigned format reader
plug-ins when running in WebKitTestRunner. This resolves test timeouts under
LayoutTests/webgl/2.0.0/.

5:01 PM Changeset in webkit [270811] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

REGRESSION (r270677-r270693): Catalina Perf tests failing
https://bugs.webkit.org/show_bug.cgi?id=219802
<rdar://problem/72236108>

Reviewed by Brent Fulgham.

Create extension for RootDomainUserClient also for Intel Macs, and move logging rules outside of
HAVE(SANDBOX_MESSAGE_FILTERING) section in sandbox.

  • UIProcess/WebPageProxy.cpp:

(WebKit::mediaRelatedIOKitClasses):

  • WebProcess/com.apple.WebProcess.sb.in:
5:00 PM Changeset in webkit [270810] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Fix null dereference in WKURLCopyCFURL
https://bugs.webkit.org/show_bug.cgi?id=219877
<rdar://problem/48921304>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-14
Reviewed by Geoffrey Garen.

We had an optimistic assertion and crash reports indicating that it is not always true.
When it's not, return null instead of crashing.

  • Shared/API/c/cf/WKURLCF.mm:

(WKURLCopyCFURL):

4:19 PM Changeset in webkit [270809] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

REGRESSION (r268604): fast/layoutformattingcontext/table-basic-row-vertical-align-baseline.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=219369
<rdar://problem/69985187>

Reviewed by Zalan Bujtas.

During TestController::resetStateToConsistentValues() there are lots of calls to
WebPage::preferencesDidChange() via the async IPC, and for some of those calls both
layoutFormattingContextIntegrationEnabled and layoutFormattingContextEnabled are true. If
Display::view() does a paint at that time, then we hit assertions because these
two settings are incompatible with eachother.

Fix by bailing from display if layoutFormattingContextIntegrationEnabled() is set.

  • display/DisplayView.cpp:

(WebCore::Display::View::prepareForDisplay):

4:14 PM Changeset in webkit [270808] by Chris Dumez
  • 25 edits in trunk/Source

Unreviewed, reverting r270768.

Still crashes in debug in a different location

Reverted changeset:

"[GPUProcess] Crash under
AudioDestinationCocoa::setIsPlaying(bool)"
https://bugs.webkit.org/show_bug.cgi?id=219809
https://trac.webkit.org/changeset/270768

4:12 PM Changeset in webkit [270807] by Peng Liu
  • 6 edits in trunk/Source

[Media in GPU Process][MSE] Fix crashes in a debug build
https://bugs.webkit.org/show_bug.cgi?id=219874

Reviewed by Eric Carlson.

Source/WebCore:

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::readyStateChanged):
(WebCore::SourceBuffer::audioTracks):
(WebCore::SourceBuffer::textTracks):
(WebCore::SourceBuffer::appendError):
(WebCore::SourceBuffer::trySignalAllSamplesEnqueued):
(WebCore::SourceBuffer::sourceBufferPrivateDurationChanged):
(WebCore::SourceBuffer::sourceBufferPrivateStreamEndedWithDecodeError):
Only use m_source when the pointer is valid.

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(WebCore::SourceBufferPrivateAVFObjC::abort):
SourceBufferParser::invalidate() may crash if the parser is parsing data.

Source/WebKit:

We need to call the completion handler in error cases.

  • GPUProcess/media/RemoteSourceBufferProxy.cpp:

(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidReceiveInitializationSegment):

  • WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:

(WebKit::SourceBufferPrivateRemote::sourceBufferPrivateDidReceiveInitializationSegment):

3:44 PM Changeset in webkit [270806] by Chris Dumez
  • 14 edits in trunk/Source

[GPUProcess] Bump QoS to UserInteractive for real-time audio rendering thread
https://bugs.webkit.org/show_bug.cgi?id=219873

Reviewed by Eric Carlson.

Source/WebCore:

Use Default QoS for offline audio rendering and UserInteractive for real-time audio
rendering. Previously, we were using always UserInitiated QoS for all audio threads,
which is lower than UserInteractive [1].

[1] https://developer.apple.com/library/archive/documentation/Performance/Conceptual/power_efficiency_guidelines_osx/PrioritizeWorkAtTheTaskLevel.html#//apple_ref/doc/uid/TP40013929-CH35-SW1

  • Modules/webaudio/AudioWorkletMessagingProxy.cpp:

(WebCore::generateWorkletParameters):

  • Modules/webaudio/AudioWorkletThread.cpp:

(WebCore::AudioWorkletThread::createThread):

  • Modules/webaudio/OfflineAudioDestinationNode.cpp:

(WebCore::OfflineAudioDestinationNode::startRendering):

  • worklets/WorkletParameters.h:

(WebCore::WorkletParameters::isolatedCopy const):

Source/WebKit:

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:

(WebKit::RemoteAudioDestinationProxy::RemoteAudioDestinationProxy):

Source/WTF:

Add QOS parameter to the Thread construct (similarly to WorkQueue) so that the caller can
specify which QoS to use for the thread. Previously, the code was using UserInteractive
QoS unconditionally, which may be too high is some cases and too low in others.

  • wtf/Threading.cpp:

(WTF::Thread::create):

  • wtf/Threading.h:
  • wtf/WorkQueue.h:
  • wtf/cocoa/WorkQueueCocoa.cpp:

(WTF::WorkQueue::platformInitialize):
(WTF::dispatchQOSClass): Deleted.

  • wtf/posix/ThreadingPOSIX.cpp:

(WTF::Thread::dispatchQOSClass):
(WTF::Thread::establishHandle):

  • wtf/win/ThreadingWin.cpp:

(WTF::Thread::establishHandle):

2:55 PM Changeset in webkit [270805] by Peng Liu
  • 23 edits in trunk/Source

[Media in GPU Process][MSE] WebM source buffer parser is not enabled
https://bugs.webkit.org/show_bug.cgi?id=219857

Reviewed by Eric Carlson.

Source/WebCore:

Function isWebmParserAvailable() always return false when SourceBufferParserWebM
runs in the GPU process because RuntimeEnabledFeatures::sharedFeatures().webMParserEnabled()
always returns false in the GPU process. Therefore, MediaSourcePrivateAVFObjC will not
enable the VP9 support when media in GPU process is enabled.

This patch moves the call of RuntimeEnabledFeatures::sharedFeatures().webMParserEnabled()
to MediaSource, which always runs in the web process and will get the correct value.

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::createSourceBufferPrivate):

  • platform/graphics/MediaSourcePrivate.h:
  • platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm:

(WebCore::MediaSourcePrivateAVFObjC::addSourceBuffer):

  • platform/graphics/cocoa/SourceBufferParser.cpp:

(WebCore::SourceBufferParser::create):

  • platform/graphics/cocoa/SourceBufferParser.h:
  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::isWebmParserAvailable):
(WebCore::SourceBufferParserWebM::create):
Delete this function because it is not used.

  • platform/graphics/cocoa/SourceBufferParserWebM.h:
  • platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.cpp:

(WebCore::MediaSourcePrivateGStreamer::addSourceBuffer):

  • platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.h:
  • platform/mock/mediasource/MockMediaSourcePrivate.cpp:

(WebCore::MockMediaSourcePrivate::addSourceBuffer):

  • platform/mock/mediasource/MockMediaSourcePrivate.h:

Source/WebKit:

Share the value of RuntimeEnabledFeatures::sharedFeatures().webMParserEnabled()
with the GPU process (RemoteMediaSourceProxy) when MediaPlayerPrivateRemote
tries to load a media source.

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::loadMediaSource):

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • GPUProcess/media/RemoteMediaSourceProxy.cpp:

(WebKit::RemoteMediaSourceProxy::RemoteMediaSourceProxy):
(WebKit::RemoteMediaSourceProxy::addSourceBuffer):

  • GPUProcess/media/RemoteMediaSourceProxy.h:
  • Shared/mac/MediaFormatReader/FormatReader.cpp:

(WebKit::FormatReader::parseByteSource):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::load):

  • WebProcess/GPU/media/MediaSourcePrivateRemote.cpp:

(WebKit::MediaSourcePrivateRemote::addSourceBuffer):

  • WebProcess/GPU/media/MediaSourcePrivateRemote.h:
2:09 PM Changeset in webkit [270804] by Chris Dumez
  • 19 edits in trunk/Source/WebKit

[GPUProcess] Crash in SharedRingBufferStorage::setStorage() under GuardMalloc
https://bugs.webkit.org/show_bug.cgi?id=219867

Reviewed by Darin Adler.

SharedRingBufferStorage was holding a raw pointer to its client and we would sometimes
crash when dereferencing this client in SharedRingBufferStorage::setStorage() because
the client is not guaranteed to be alive.

To address the issue, I replace the SharedRingBufferStorage::Client with a lambda so
that the client can protect itself in the lambda if needed. In particular,
RemoteAudioSourceProviderProxy now protects itself in the lambda since the lifetime
of the CARingBuffer is not tied to the lifetime of RemoteAudioSourceProviderProxy.

  • GPUProcess/media/RemoteAudioDestinationManager.cpp:

(WebKit::RemoteAudioDestination::RemoteAudioDestination):

  • GPUProcess/media/RemoteAudioSourceProviderProxy.cpp:

(WebKit::RemoteAudioSourceProviderProxy::createRingBuffer):

  • GPUProcess/media/RemoteAudioSourceProviderProxy.h:
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.cpp:

(WebKit::RemoteAudioMediaStreamTrackRenderer::RemoteAudioMediaStreamTrackRenderer):

  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:

(WebKit::RemoteMediaRecorder::RemoteMediaRecorder):

  • Shared/Cocoa/SharedRingBufferStorage.cpp:

(WebKit::SharedRingBufferStorage::setStorage):

  • Shared/Cocoa/SharedRingBufferStorage.h:

(WebKit::SharedRingBufferStorage::SharedRingBufferStorage):
(WebKit::SharedRingBufferStorage::invalidate):

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::SourceProxy::SourceProxy):
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::storageChanged):

  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp:

(WebKit::m_ringBuffer):

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:

(WebKit::RemoteAudioDestinationProxy::RemoteAudioDestinationProxy):

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

(WebKit::RemoteAudioSourceProviderManager::RemoteAudio::RemoteAudio):

  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.cpp:

(WebKit::AudioMediaStreamTrackRenderer::AudioMediaStreamTrackRenderer):

  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.h:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:

(WebKit::MediaRecorderPrivate::startRecording):

  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:
  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp:

(WebKit::SpeechRecognitionRealtimeMediaSourceManager::Source::Source):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::Source::storageChanged):

  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:

(WebKit::RemoteCaptureSampleManager::RemoteAudio::RemoteAudio):

1:33 PM Changeset in webkit [270803] by commit-queue@webkit.org
  • 10 edits in trunk/Source/WebCore

Make CachePolicy an enum class
https://bugs.webkit.org/show_bug.cgi?id=219856

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

Make CachePolicy an enum class.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::subresourceCachePolicy const):

  • loader/FrameLoader.h:
  • loader/cache/CachePolicy.h:

(): Deleted.

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::load):
(WebCore::CachedResource::makeRevalidationDecision const):

  • loader/cache/CachedResource.h:
  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::determineRevalidationPolicy const):
(WebCore::CachedResourceLoader::cachePolicy const):

  • loader/cache/CachedResourceLoader.h:
12:58 PM Changeset in webkit [270802] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

CrashTracer: com.apple.WebKit.Networking at WebKit: WTF::Detail::CallableWrapper<WebKit::PrivateClickMeasurementManager::firePendingAttributionRequests()
https://bugs.webkit.org/show_bug.cgi?id=219860
<rdar://problem/72254207>

Reviewed by Alex Christensen.

No new tests, this should fix a crash.

m_networkSession is a weakPtr. We should check that the object it
references exists before trying to use it.

  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::storeUnattributed):
(WebKit::PrivateClickMeasurementManager::attribute):
(WebKit::PrivateClickMeasurementManager::clearSentAttributions):
(WebKit::PrivateClickMeasurementManager::updateTimerLastFired):
(WebKit::PrivateClickMeasurementManager::firePendingAttributionRequests):
(WebKit::PrivateClickMeasurementManager::clear):
(WebKit::PrivateClickMeasurementManager::clearForRegistrableDomain):
(WebKit::PrivateClickMeasurementManager::clearExpired):
(WebKit::PrivateClickMeasurementManager::toString const):
(WebKit::PrivateClickMeasurementManager::markAllUnattributedAsExpiredForTesting):
(WebKit::PrivateClickMeasurementManager::markAttributedPrivateClickMeasurementsAsExpiredForTesting):

12:55 PM Changeset in webkit [270801] by graouts@webkit.org
  • 11 edits in trunk

Simplify transform blending for simple cases
https://bugs.webkit.org/show_bug.cgi?id=219863

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Rebaseline some WPT test outputs, resulting in round numbers for animated transform output, including a few new PASS results.

  • web-platform-tests/css/css-transforms/animation/transform-interpolation-computed-value-expected.txt:
  • web-platform-tests/css/css-transforms/animation/transform-matrix-composition-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt:
  • web-platform-tests/web-animations/interfaces/Animation/commitStyles-expected.txt:

Source/WebCore:

Optimize two simple cases for transform blending. First, use matrices as-is for the cases when we blend with
progress equal to 0 or 1. Then, when rotating around an angle that's an increment of 360º, simply return the
existing matrix.

  • platform/graphics/transforms/TransformationMatrix.cpp:

(WebCore::TransformationMatrix::rotate):
(WebCore::TransformationMatrix::blend):

LayoutTests:

Rebaselining test output where -0 values are now +0.

  • compositing/backing/animate-into-view-expected.txt:
  • compositing/backing/animate-into-view-with-descendant-expected.txt:
12:43 PM Changeset in webkit [270800] by Russell Epstein
  • 1 edit in branches/safari-611.1.9-branch/Source/WebKit/Shared/ios/WebIOSEventFactory.mm

Cherry-pick r270759. rdar://problem/54616853

Unreviewed build fix after r270712.

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

12:35 PM Changeset in webkit [270799] by youenn@apple.com
  • 2 edits in trunk/LayoutTests

LayoutTests/webrtc/video-sframe.html is flaky on bots
https://bugs.webkit.org/show_bug.cgi?id=219849

Reviewed by Alex Christensen.

  • webrtc/video-sframe.html:

Receiver counter might increment very quickly in background thread before the sender counter is also incremented.
Add a wait loop for sender counter as well.

12:24 PM Changeset in webkit [270798] by timothy_horton@apple.com
  • 4 edits in trunk/Source

Adopt symbol image API instead of SPI in WKPDFHUDView
https://bugs.webkit.org/show_bug.cgi?id=219866

Reviewed by Wenson Hsieh.

Source/WebCore/PAL:

  • pal/spi/mac/NSImageSPI.h:

Source/WebKit:

  • UIProcess/PDF/WKPDFHUDView.mm:

(-[WKPDFHUDView _getImageForControlName:]):

12:18 PM Changeset in webkit [270797] by Pablo Saavedra
  • 2 edits in trunk/Source/WebKit

[GLIB] Missing header for std::once_flag in WebKitInitialize.cpp
https://bugs.webkit.org/show_bug.cgi?id=219865

Reviewed by Alex Christensen.

  • UIProcess/API/glib/WebKitInitialize.cpp:
11:55 AM Changeset in webkit [270796] by Wenson Hsieh
  • 10 edits in trunk/Source

GPU process sometimes hangs during MotionMark Focus when enabling GPU Process for DOM
https://bugs.webkit.org/show_bug.cgi?id=219839
<rdar://problem/71562635>

Reviewed by Tim Horton.

Source/WebCore:

See Source/WebKit/ChangeLog for more details.

  • platform/graphics/ImageBuffer.h:

(WebCore::ImageBuffer::prepareToAppendDisplayListItems):
(WebCore::ImageBuffer::clearDisplayList): Deleted.

Replace this method with prepareToAppendDisplayListItems.

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::prepareToAppend):

  • platform/graphics/displaylists/DisplayList.h:
  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

(WebCore::DisplayList::ItemBuffer::prepareToAppend):

Plumb prepareToAppendDisplayListItems through DisplayList and into the DisplayList::ItemBuffer, as
prepareToAppend. This method swaps the current writable buffer out for the new ItemBufferHandle provided by
the caller, and resets the written bytes counter.

  • platform/graphics/displaylists/DisplayListItemBuffer.h:

Source/WebKit:

Fixes an indefinite hang in the GPU process that may occur as a result of this very specific corner case in
concurrent display list processing:

[1] Let p and q represent two item buffers, and let A and B represent two remote image buffers whose drawing

contexts will be destinations for display list playback in the GPU process. Suppose p has k remaining bytes
where k >= 32, and A's writable buffer is mapped to a region closest to the end of p. In practice, when this
hang reproduces, k is a relatively small number (typically 32-40 bytes).

[2] Additionally, suppose that the GPU process is not reading from q (i.e. q's unreadBytes() count is 0), and

that the GPU process has created a corresponding RemoteImageBuffer for A, but *not* a corresponding
RemoteImageBuffer for B.

[3] We now append a MetaCommandChangeDestinationImageBuffer item to change destinations from A to B, such that

p now has (k - 16) remaining bytes. In preparation for appending new items for B's display list, the logic
in RemoteRenderingBackendProxy::willAppendItem clears B's writable buffer, with the intention that B will
turn around and call out to the client layer for a new writable buffer again once it notices that it has no
writable buffer.

[4] If we then immediately try to append an item to B that is larger than (k - 32) bytes,

RemoteRenderingBackendProxy::findReusableDisplayListHandle will see that the most recently used item
buffer p has insufficient space, and will instead return item buffer q. We end up appending the new item to
item buffer q.

[5] In the GPU process, we finish processing all available item data in p. When we encounter the destination

buffer change item, we set m_pendingWakeupInfo before going to sleep, due to the fact that the GPU process
has not learned about image buffer B yet (see the last part of step [2]).

[6] Later, in the GPU process, when we create a RemoteImageBuffer for B, we see that we have a

m_pendingWakeupInfo with destination image buffer B, so we resume display list processing. However, we're
unable to resume where we stopped, since B's display list (in the web process) immediately appended to q
instead of p, skipping MetaCommandChangeItemBuffer in the process. This manifests as an indefinite hang
inside RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists, since we expect p to
have a nonzero unreadBytes() count.

[7] Now that the GPU process is in a broken state, the web process follows shortly -- in the Focus subtest of

MotionMark, this manifests as a web process crash soon after the GPU process begins to hang, because
RemoteImageBufferProxy::ensureBackendCreated() times out and returns null, and we subsequently dereference
null in RemoteLayerBackingStore::encode() after failing to ensure the image buffer backend.

To fix this, we target step [3]. Rather than clear B's writable buffer and expect it to append its new items to
p, we simply hand it p's item handle -- in this case, a handle with (k - 16) available bytes -- and set its
writable buffer before we try to append. In this scenario, doing this ensures that if we are about to append an
item that is larger than (k - 32) bytes, we will first leave a 16-byte MetaCommandChangeItemBuffer item inside p
before moving on to q. This eventually ensures that when the GPU process resumes display list processing after
creating a RemoteImageBuffer for B, it will see 16 unread bytes in p and then immediately continue reading data
from item buffer q.

Finally, note that in this scenario, p is always guaranteed to contain at least 16 available bytes after step
[3] (in other words, k >= 32). This is because all calls to append an item of size n bytes to an item buffer
check that there is a minimum (n + 16) bytes remaining (via logic in ItemBuffer::swapWritableBufferIfNeeded),
such that it is, by design, always possible to append a MetaCommandChangeItemBuffer item if necessary. As
such, it is safe to return the most recently used item buffer's handle in step [4].

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::clearDisplayList):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::willAppendItem):

Call into prepareToAppendDisplayListItems instead of clearDisplayList when switching destination image
buffers. See problem diagnosis above for more detail.

(WebKit::RemoteRenderingBackendProxy::mostRecentlyUsedDisplayListHandle):

Pull logic to retrieve the most recently used display list handle out into a separate helper method.

(WebKit::RemoteRenderingBackendProxy::findReusableDisplayListHandle):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
11:48 AM Changeset in webkit [270795] by Lauro Moura
  • 3 edits in trunk/Tools/buildstream

[Flatpak SDK] Update GTK4 to 3.99.5
https://bugs.webkit.org/show_bug.cgi?id=219781

Reviewed by Philippe Normand.

Looks like there was a mishap tagging the GTK RC, as the tag present
in their repo is 3.99.5.1 instead of 3.99.5.

  • elements/sdk/glib.bst: Bump to 2.66 to reflect the bumped

requirement by GTK.

  • elements/sdk/gtk.bst: Bump to 3.99.5.1
11:47 AM Changeset in webkit [270794] by Tadeu Zagallo
  • 7 edits in trunk/Source

Move some of the work from JSLock to VMEntryScope
https://bugs.webkit.org/show_bug.cgi?id=219830

Reviewed by Mark Lam.

Source/JavaScriptCore:

We move several things from JSLock to VMEntryScope that could only be observed after we entered the VM:

  • WasmThreads: only used when tiering up wasm, so VMEntryScope would have executed
  • registerThreadForMachExceptionHandling: The mach exception handlers are used for:
    • sigill crash analyzer: only relevant after we enter the vm
    • wasm fault signal handler: same, we must be executing wasm and therefore VMEntryScope will have executed.
    • VMTraps: only handles faults in JIT code
  • firePrimitiveGigacageEnabledIfNecessary: Only watched by the JITs

This gives is a ~10% improvement on APIBench (score change from ~36.3 to ~39.9), but as it turns out the most expensive
call is adding the current thread to the heap as this requires acquiring two locks. We can't move this to VMEntryScope
since it's possible to use the API and GC without ever entering the VM, which would result in the current thread's stack
not being scanned. Instead, we just remember the last thread that acquired the lock and skip the call if we're seeing the
same thread again. This greatly amortizes the cost and gives us another ~10%:

CURRENT_API: Baseline Change


RichardsMostlyC: 62ms 32ms
RichardsMostlyObjC: 303ms 264ms
RichardsMostlySwift: 296ms 261ms
RichardsSomeC: 76ms 49ms
RichardsSomeObjC: 156ms 150ms
RichardsSomeSwift: 200ms 197ms

UPCOMING_API: Baseline Change


RichardsMostlyC: 19ms 19ms
RichardsMostlyObjC: 282ms 260ms
RichardsMostlySwift: 282ms 264ms
RichardsSomeC: 79ms 46ms
RichardsSomeObjC: 156ms 149ms
RichardsSomeSwift: 195ms 195ms


Score: 36.2211 43.3368

  • runtime/JSLock.cpp:

(JSC::JSLock::didAcquireLock):
(JSC::JSLock::willReleaseLock):

  • runtime/JSLock.h:
  • runtime/VMEntryScope.cpp:

(JSC::VMEntryScope::VMEntryScope):
(JSC::VMEntryScope::~VMEntryScope):

Source/WTF:

Add a unique ID to threads. This uid is used in JSLock to avoid unnecessary work when the
same thread that last acquired the lock is reacquiring it.

  • wtf/Threading.cpp:
  • wtf/Threading.h:

(WTF::Thread::uid const):
(WTF::Thread::Thread):

11:39 AM Changeset in webkit [270793] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

WebProcessProxy::destroySpeechRecognitionServer should check if identifier exists before removing MessageReceiver
https://bugs.webkit.org/show_bug.cgi?id=219815
<rdar://problem/71369164>

Reviewed by Youenn Fablet.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::destroySpeechRecognitionServer):

11:36 AM Changeset in webkit [270792] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Drop duplicate call to makeUniqueRef() in RemoteAudioSourceProviderProxy::createRingBuffer()
https://bugs.webkit.org/show_bug.cgi?id=219859

Reviewed by Youenn Fablet.

  • GPUProcess/media/RemoteAudioSourceProviderProxy.cpp:

(WebKit::RemoteAudioSourceProviderProxy::createRingBuffer):

11:34 AM Changeset in webkit [270791] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Make sure WebProcessPool::setUseSeparateServiceWorkerProcess handles correctly destroyed process pools
https://bugs.webkit.org/show_bug.cgi?id=219773
<rdar://problem/71938320>

Reviewed by Alex Christensen.

Terminating a service worker process may destroy the web process pool.
Copy the vector of process pools before iterating over it to terminate service worker processes.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::setUseSeparateServiceWorkerProcess):

11:27 AM Changeset in webkit [270790] by commit-queue@webkit.org
  • 7 edits in trunk

Remove WKDownloadDelegate.didWriteData
https://bugs.webkit.org/show_bug.cgi?id=219820

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-14
Reviewed by Sam Weinig.

Source/WebKit:

API review revealed it was redundant with WKDownload.progress, which has KVO-compliant totalUnitCount and completedUnitCount.

  • UIProcess/API/Cocoa/WKDownload.mm:

(-[WKDownload progress]):

  • UIProcess/API/Cocoa/WKDownloadDelegate.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm:

(-[DownloadObserver observeValueForKeyPath:ofObject:change:context:]):
(TestWebKitAPI::mutateFile):

  • TestWebKitAPI/cocoa/TestDownloadDelegate.h:
  • TestWebKitAPI/cocoa/TestDownloadDelegate.mm:

(-[TestDownloadDelegate download:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]): Deleted.

11:20 AM Changeset in webkit [270789] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Fix rare crashes in Page::lockAllOverlayScrollbarsToHidden()
https://bugs.webkit.org/show_bug.cgi?id=219862
<rdar://problem/28205511>

Reviewed by Wenson Hsieh.

Crash data suggest that lockAllOverlayScrollbarsToHidden() can be called on a null
Page*, so check it.

  • dom/Document.cpp:

(WebCore::Document::suspend):
(WebCore::Document::resume):

11:11 AM Changeset in webkit [270788] by Russell Epstein
  • 2 edits in branches/safari-611.1.9-branch/Source/ThirdParty/ANGLE

Cherry-pick r270779. rdar://problem/72304155

Fix build.

  • src/gpu_info_util/SystemInfo_apple.mm: (angle::GetSystemInfo): ##if should be #if

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

10:59 AM Changeset in webkit [270787] by Andres Gonzalez
  • 9 edits in trunk/Source/WebCore

Fix for accessibility layout tests related to VisiblePositions in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=219807

Reviewed by Chris Fleizach.

Tests:
accessibility/mac/line-range-for-text-marker.html
accessibility/mac/visible-position-crash-for-text-node.html

  • Moved remaining unimplemented AXIsolatedObject methods from the header

to the cpp file and added ASSERT_NOT_REACHED where pertinent. This will
allow to identify any method that needs implementation.

  • Implemented the necessary VisiblePosition methods.
  • Cleaned up and simplified platform code by calling directly into

AXCoreObject methods instead of unnecessary wrappers.

  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityLabel]):

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::init):
(WebCore::AXIsolatedObject::updateChildrenIfNecessary):
(WebCore::AXIsolatedObject::accessibilityHitTest):
(WebCore::AXIsolatedObject::boundsForVisiblePositionRange const):
(WebCore::AXIsolatedObject::lengthForVisiblePositionRange const):
(WebCore::AXIsolatedObject::visiblePositionForBounds const):
(WebCore::AXIsolatedObject::visiblePositionForPoint const):
(WebCore::AXIsolatedObject::nextVisiblePosition const):
(WebCore::AXIsolatedObject::previousVisiblePosition const):
(WebCore::AXIsolatedObject::nextWordEnd const):
(WebCore::AXIsolatedObject::previousWordStart const):
(WebCore::AXIsolatedObject::nextLineEndPosition const):
(WebCore::AXIsolatedObject::previousLineStartPosition const):
(WebCore::AXIsolatedObject::nextSentenceEndPosition const):
(WebCore::AXIsolatedObject::previousSentenceStartPosition const):
(WebCore::AXIsolatedObject::nextParagraphEndPosition const):
(WebCore::AXIsolatedObject::previousParagraphStartPosition const):
(WebCore::AXIsolatedObject::visiblePositionForIndex const):
(WebCore::AXIsolatedObject::indexForVisiblePosition const):
(WebCore::AXIsolatedObject::accessibilityObjectForPosition const):
(WebCore::AXIsolatedObject::plainTextRangeForVisiblePositionRange const):
(WebCore::AXIsolatedObject::index const):
(WebCore::AXIsolatedObject::lineBreaks const):
(WebCore::AXIsolatedObject::textUnderElement const):
(WebCore::AXIsolatedObject::accessibilityHitTest const): Deleted.

  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/mac/AccessibilityObjectBase.mm:

(WebCore::AccessibilityObject::titleAttributeValue const):

  • accessibility/mac/WebAccessibilityObjectWrapperBase.h:
  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(-[WebAccessibilityObjectWrapperBase baseAccessibilityTitle]): Deleted.

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper accessibilityHitTest:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):

10:51 AM Changeset in webkit [270786] by aestes@apple.com
  • 1 edit
    4 adds in trunk/LayoutTests

Unreviewed test gardening after r270758.

  • platform/mac-catalina/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-video-element/resize-during-playback-expected.txt: Added.
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-video-element/resize-during-playback-expected.txt: Added.
10:43 AM Changeset in webkit [270785] by Russell Epstein
  • 2 edits in branches/safari-611.1.9-branch/Source/ThirdParty/ANGLE

Cherry-pick r270777. rdar://problem/72304155

Build fix for Mac Catalyst. Remove code that was accidentally
included in the previous commit.

  • src/gpu_info_util/SystemInfo_apple.mm: (angle::GetSystemInfo):

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

10:43 AM Changeset in webkit [270784] by emilio
  • 11 edits in trunk

Implement ::file-selector-button pseudo-element.
https://bugs.webkit.org/show_bug.cgi?id=219836

Reviewed by Simon Fraser.

Source/WebCore:

Treat it like ::placeholder.

Tests: fast/css/css-selector-text.html (plus see the comment in
changelog).

  • css/CSSSelector.cpp:

(WebCore::CSSSelector::selectorText const):

  • css/SelectorPseudoElementTypeMap.in:
  • css/formControlsIOS.css:

(input:matches([type="button"], [type="submit"], [type="reset"]), input[type="file"]::file-selector-button, button):
(input:matches([type="button"], [type="reset"]), input[type="file"]::file-selector-button, button):

  • css/html.css:

(input[type="file"]::file-selector-button):
(input:matches([type="button"], [type="submit"], [type="reset"]), input[type="file"]::file-selector-button, button):
(input:matches([type="button"], [type="submit"], [type="reset"]):active, input[type="file"]::file-selector-button:active, button:active):
(input:matches([type="button"], [type="submit"], [type="reset"]):active:disabled,):

  • css/parser/CSSParserSelector.cpp:

(WebCore::CSSParserSelector::parsePseudoElementSelector):

  • css/themeWin.css:

(input[type="button"], input[type="submit"], input[type="reset"], input[type="file"]::file-selector-button, button):

  • html/FileInputType.cpp:

(WebCore::UploadButtonElement::createInternal):

LayoutTests:

There are WPTs for this, but WebKit's importer doesn't handle
<link rel="mismatch"> which is used by these. Instead, I adapted UA
sheets to use the standard selector so we should get coverage, and
extended the existing tests for -webkit-file-upload-button.

  • fast/css/css-selector-text-expected.txt:
  • fast/css/css-selector-text.html: Tweak test to cover new pseudo.
10:36 AM Changeset in webkit [270783] by Russell Epstein
  • 2 edits in branches/safari-611.1.9-branch/Source/WebKit

Cherry-pick r270776. rdar://problem/72303521

[Mac] Enable webm_format_reader feature flag by default
https://bugs.webkit.org/show_bug.cgi?id=219858

Reviewed by Eric Carlson.

  • FeatureFlags/WebKit.plist:

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

10:36 AM Changeset in webkit [270782] by Russell Epstein
  • 1 edit in branches/safari-611.1.9-branch/Source/WebKit/Shared/mac/MediaFormatReader/SampleCursor.h

Cherry-pick r270761. rdar://problem/72303521

Try again to fix the build after r270758.

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

10:36 AM Changeset in webkit [270781] by Russell Epstein
  • 2 edits in branches/safari-611.1.9-branch/Source/WebKit/Shared/mac/MediaFormatReader

Cherry-pick r270760. rdar://problem/72303521

Unreviewed build fix after r270758.

  • Shared/mac/MediaFormatReader/CoreMediaWrapped.h: Unrelated renaming.
  • Shared/mac/MediaFormatReader/SampleCursor.h: Removed an "#undef" meant for testing.

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

10:35 AM Changeset in webkit [270780] by Russell Epstein
  • 38 edits
    3 copies
    21 adds in branches/safari-611.1.9-branch

Cherry-pick r270758. rdar://problem/72303521

Source/ThirdParty/libwebrtc:
[Mac] Create a MediaToolbox format reader plug-in for WebM
https://bugs.webkit.org/show_bug.cgi?id=218908
<rdar://problem/71373264>

Reviewed by Eric Carlson.

  • Source/webrtc/sdk/WebKit/CMBaseObjectSPI.h:

Source/WebCore:
[Mac] Create a MediaToolbox format reader plug-in for WebM
https://bugs.webkit.org/show_bug.cgi?id=218908
<rdar://problem/71373264>

Reviewed by Eric Carlson.

Updated expected results for existing tests.

For contiguous samples, teach MediaSample to remember their position and size in the
underlying byte stream. Added a runtime feature flag. Registered the format reader plug-in
at runtime.

  • page/RuntimeEnabledFeatures.h:
  • platform/MediaSample.h:
  • platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm:
  • platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
  • platform/graphics/cocoa/SourceBufferParser.cpp:
  • platform/graphics/cocoa/SourceBufferParser.h:
  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:
  • platform/graphics/cocoa/SourceBufferParserWebM.h:
  • platform/graphics/gstreamer/MediaSampleGStreamer.h:
  • platform/mock/mediasource/MockSourceBufferPrivate.cpp:
  • platform/network/mac/WebCoreURLResponse.mm:

Source/WebCore/PAL:
[Mac] Create a MediaToolbox format reader plug-in for WebM
https://bugs.webkit.org/show_bug.cgi?id=218908
<rdar://problem/71373264>

Reviewed by Eric Carlson.

  • pal/cf/CoreMediaSoftLink.cpp:
  • pal/cf/CoreMediaSoftLink.h:
  • pal/cocoa/MediaToolboxSoftLink.cpp:
  • pal/cocoa/MediaToolboxSoftLink.h:
  • pal/spi/cf/CoreMediaSPI.h:
  • pal/spi/cocoa/MediaToolboxSPI.h:

Source/WebKit:
[Mac] Create a MediaToolbox format reader plug-in for WebM
https://bugs.webkit.org/show_bug.cgi?id=218908
<rdar://problem/71373264>

Reviewed by Eric Carlson.

Implemented a MTPluginFormatReader for WebM containers. The format reader is responsible
for parsing a WebM byte stream (using SourceBufferParserWebM) into audio, video, and text
tracks. MediaToolbox can then create cursors to step through the tracks' samples in decode
or presentation order and access each sample's metadata (e.g., format description,
duration, key-frame status) and location in the byte stream.

  • FeatureFlags/WebKit.plist:
  • MediaFormatReaderPlugIn/Info.plist:
  • MediaFormatReaderPlugIn/MediaFormatReaderPlugIn.cpp:
  • Shared/API/c/mac/WKFormatReader.cpp: Added.
  • Shared/API/c/mac/WKFormatReader.h: Added.
  • Shared/WebPreferencesDefaultValues.cpp:
  • Shared/WebPreferencesDefaultValues.h:
  • Shared/mac/MediaFormatReader/CoreMediaWrapped.cpp: Added.
  • Shared/mac/MediaFormatReader/CoreMediaWrapped.h: Added.
  • Shared/mac/MediaFormatReader/FormatReader.cpp: Added.
  • Shared/mac/MediaFormatReader/FormatReader.h: Added.
  • Shared/mac/MediaFormatReader/MediaFormatReader.cpp: Added.
  • Shared/mac/MediaFormatReader/MediaFormatReader.h: Added.
  • Shared/mac/MediaFormatReader/SampleCursor.cpp: Added.
  • Shared/mac/MediaFormatReader/SampleCursor.h: Added.
  • Shared/mac/MediaFormatReader/TrackReader.cpp: Added.
  • Shared/mac/MediaFormatReader/TrackReader.h: Added.
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:

Source/WTF:
[Mac] Register the format reader plug-in for WebM content types
https://bugs.webkit.org/show_bug.cgi?id=218908
<rdar://problem/71373264>

Reviewed by Eric Carlson.

  • Scripts/Preferences/WebPreferencesExperimental.yaml: Added an experimental web preference.

Tools:
[Mac] Create a MediaToolbox format reader plug-in for WebM
https://bugs.webkit.org/show_bug.cgi?id=218908
<rdar://problem/71373264>

Reviewed by Eric Carlson.

  • TestWebKitAPI/Tests/WebCore/SampleMap.cpp:

LayoutTests:
[Mac] Create a MediaToolbox format reader plug-in for WebM
https://bugs.webkit.org/show_bug.cgi?id=218908
<rdar://problem/71373264>

Reviewed by Eric Carlson.

  • platform/mac-catalina/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType-expected.txt:
  • platform/mac-catalina/media/media-can-play-webm-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType-expected.txt:
  • platform/mac-wk2/media/media-can-play-webm-expected.txt:

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

10:23 AM Changeset in webkit [270779] by achristensen@apple.com
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Fix build.

  • src/gpu_info_util/SystemInfo_apple.mm:

(angle::GetSystemInfo):
##if should be #if

10:23 AM Changeset in webkit [270778] by Russell Epstein
  • 3 edits in branches/safari-611.1.9-branch/Source/WebKit

Cherry-pick r270754. rdar://problem/72301723

Fix the watchOS build after r270712
<rdar://problem/72265227>

  • Shared/ios/WebIOSEventFactory.h:
  • Shared/ios/WebIOSEventFactory.mm: (WebIOSEventFactory::createWebWheelEvent):

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

10:11 AM Changeset in webkit [270777] by dino@apple.com
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Build fix for Mac Catalyst. Remove code that was accidentally
included in the previous commit.

  • src/gpu_info_util/SystemInfo_apple.mm:

(angle::GetSystemInfo):

10:04 AM Changeset in webkit [270776] by aestes@apple.com
  • 2 edits in trunk/Source/WebKit

[Mac] Enable webm_format_reader feature flag by default
https://bugs.webkit.org/show_bug.cgi?id=219858

Reviewed by Eric Carlson.

  • FeatureFlags/WebKit.plist:
10:03 AM Changeset in webkit [270775] by Wenson Hsieh
  • 4 edits in trunk/Source/WebKit

Web process crashes during MotionMark Images when GPU Process for DOM is enabled
https://bugs.webkit.org/show_bug.cgi?id=219838

Reviewed by Simon Fraser.

It's possible to return prematurely with a null backend when waiting for image buffer backend creation under
RemoteImageBufferProxy::ensureBackendCreated(). Consider the following scenario (where WEB and GPU denote
events that occur in the web and GPU processes, respectively):

  1. (WEB) RemoteImageBufferProxy A is created in the web process.
  2. (GPU) RemoteImageBuffer A is created in the GPU process, along with an image buffer backend for A.
  3. (WEB) RemoteImageBufferProxy B is created in the web process.
  4. (GPU) RemoteImageBuffer B is created in the GPU process, along with an image buffer backend for B.
  5. (WEB) Something calls RemoteImageBufferProxy::ensureBackendCreated() on B.
  6. (WEB) We receive the RemoteRenderingBackendProxy::DidCreateImageBufferBackend message for A.

B subsequently finishes waiting for backend creation because it incorrectly believes that its backend has been
initialized, and we end up crashing downstream in RemoteLayerBackingStore::encode() because
ensureBackendCreated() for B returned null.

To fix this, we adopt a similar strategy to what we use in waitForDidFlushWithTimeout(), and repeatedly call
waitForDidCreateImageBufferBackend() until the backend has been created (allowing for an arbitrary number of
IPC timeouts or failures). Since this counter is only incremented upon timeout (or any other kind of IPC
communication failure), we'll simply receive RemoteRenderingBackendProxy::DidCreateImageBufferBackend messages
until we confirm (in the web process) that the current image buffer's backend has been initialized.

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::waitForDidCreateImageBufferBackend):

Drive-by fix: clarify this code by returning an enum to indicate whether or not we successfully received a
backend creation IPC response from the GPU process, instead of just returning a bool.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
9:49 AM Changeset in webkit [270774] by Russell Epstein
  • 1 copy in branches/safari-611.1.9-branch

New branch.

9:48 AM Changeset in webkit [270773] by Russell Epstein
  • 8 edits in trunk/Source

Versioning.

WebKit-7611.1.10

9:45 AM Changeset in webkit [270772] by sihui_liu@apple.com
  • 12 edits
    5 copies
    8 adds in trunk

Implement recognizer for SpeechRecognition
https://bugs.webkit.org/show_bug.cgi?id=219459
<rdar://problem/71914465>

Reviewed by Youenn Fablet.

Source/WebCore:

Add WebSpeechRecognizerTask, which connects to speech recognition service using Speech framework APIs.

Tests: fast/speechrecognition/ios/restart-recognition-after-stop.html

fast/speechrecognition/ios/start-recognition-then-stop.html

  • Modules/speech/SpeechRecognizer.cpp:

(WebCore::SpeechRecognizer::reset):
(WebCore::SpeechRecognizer::abort):
(WebCore::SpeechRecognizer::stop):
(WebCore::SpeechRecognizer::start):
(WebCore::SpeechRecognizer::startCapture):
(WebCore::SpeechRecognizer::stopCapture):
(WebCore::SpeechRecognizer::dataCaptured):
(WebCore::SpeechRecognizer::startRecognition):
(WebCore::SpeechRecognizer::abortRecognition):
(WebCore::SpeechRecognizer::stopRecognition):
(WebCore::SpeechRecognizer::resetRecognition):
(WebCore::SpeechRecognizer::setSource): Deleted.
(WebCore::SpeechRecognizer::stopInternal): Deleted.

  • Modules/speech/SpeechRecognizer.h:
  • Modules/speech/cocoa/SpeechRecognizerCocoa.mm: Added.

(WebCore::SpeechRecognizer::dataCaptured):
(WebCore::SpeechRecognizer::startRecognition):
(WebCore::SpeechRecognizer::stopRecognition):
(WebCore::SpeechRecognizer::abortRecognition):
(WebCore::SpeechRecognizer::resetRecognition):

  • Modules/speech/cocoa/WebSpeechRecognizerTask.h: Added.
  • Modules/speech/cocoa/WebSpeechRecognizerTask.mm: Added.

(-[WebSpeechRecognizerTaskImpl initWithIdentifier:locale:doMultipleRecognitions:reportInterimResults:maxAlternatives:delegateCallback:]):
(-[WebSpeechRecognizerTaskImpl callbackWithResult:isFinal:]):
(-[WebSpeechRecognizerTaskImpl audioSamplesAvailable:]):
(-[WebSpeechRecognizerTaskImpl abort]):
(-[WebSpeechRecognizerTaskImpl stop]):
(-[WebSpeechRecognizerTaskImpl sendSpeechStartIfNeeded]):
(-[WebSpeechRecognizerTaskImpl sendSpeechEndIfNeeded]):
(-[WebSpeechRecognizerTaskImpl sendEndIfNeeded]):
(-[WebSpeechRecognizerTaskImpl speechRecognizer:availabilityDidChange:]):
(-[WebSpeechRecognizerTaskImpl speechRecognitionTask:didHypothesizeTranscription:]):
(-[WebSpeechRecognizerTaskImpl speechRecognitionTask:didFinishRecognition:]):
(-[WebSpeechRecognizerTaskImpl speechRecognitionTaskWasCancelled:]):
(-[WebSpeechRecognizerTaskImpl speechRecognitionTask:didFinishSuccessfully:]):
(-[WebSpeechRecognizerTask initWithIdentifier:locale:doMultipleRecognitions:reportInterimResults:maxAlternatives:delegateCallback:]):
(-[WebSpeechRecognizerTask audioSamplesAvailable:]):
(-[WebSpeechRecognizerTask abort]):
(-[WebSpeechRecognizerTask stop]):

  • Modules/speech/cocoa/WebSpeechRecognizerTaskMock.h: Added.
  • Modules/speech/cocoa/WebSpeechRecognizerTaskMock.mm: Added.

(-[WebSpeechRecognizerTaskMock initWithIdentifier:locale:doMultipleRecognitions:reportInterimResults:maxAlternatives:delegateCallback:]):
(-[WebSpeechRecognizerTaskMock audioSamplesAvailable:]):
(-[WebSpeechRecognizerTaskMock abort]):
(-[WebSpeechRecognizerTaskMock stop]):

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebCore/PAL:

Add soft linking to Speech framework and SPI.

  • PAL.xcodeproj/project.pbxproj:
  • pal/cocoa/SpeechSoftLink.h: Added.
  • pal/cocoa/SpeechSoftLink.mm: Added.
  • pal/spi/cocoa/SpeechSPI.h: Added.

Source/WebKit:

  • UIProcess/SpeechRecognitionServer.cpp:

(WebKit::SpeechRecognitionServer::SpeechRecognitionServer):
(WebKit::SpeechRecognitionServer::requestPermissionForRequest):
(WebKit::SpeechRecognitionServer::handleRequest):
(WebKit::SpeechRecognitionServer::abort):
(WebKit::SpeechRecognitionServer::invalidate):

  • UIProcess/SpeechRecognitionServer.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::createSpeechRecognitionServer):

LayoutTests:

  • fast/speechrecognition/ios/restart-recognition-after-stop-expected.txt: Added.
  • fast/speechrecognition/ios/restart-recognition-after-stop.html: Added.
  • fast/speechrecognition/ios/start-recognition-then-stop-expected.txt: Added.
  • fast/speechrecognition/ios/start-recognition-then-stop.html: Added.
8:54 AM Changeset in webkit [270771] by aestes@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening.

  • platform/mac-wk2/media/media-can-play-webm-expected.txt:
8:40 AM Changeset in webkit [270770] by Antti Koivisto
  • 1 edit
    1 add in trunk/PerformanceTests

Add inline-block line layout microbench
https://bugs.webkit.org/show_bug.cgi?id=219854

Reviewed by Zalan Bujtas.

  • Layout/line-layout-inline-block.html: Added.
8:34 AM Changeset in webkit [270769] by Jonathan Bedard
  • 8 edits
    2 adds in trunk/Tools

[webkitscmpy] Load mock repository data from json file
https://bugs.webkit.org/show_bug.cgi?id=219803
<rdar://problem/72236132>

Reviewed by Stephanie Lewis.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/git-repo.json: Added.
  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:

(Git.init): Move mock data into git-repo.json.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/svn.py:

(Svn.init): Move mock data into git-repo.json.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/svn.py:

(Svn.init): Move mock data into git-repo.json.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/svn-repo.json: Added.
  • Scripts/libraries/webkitscmpy/webkitscmpy/test/find_unittest.py:
  • Scripts/libraries/webkitscmpy/webkitscmpy/test/git_unittest.py:

(TestGit.test_tags): Specify tags.
(TestGit.test_tag): Ditto.
(TestGit.test_checkout): Ditto.

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

(TestLocalSvn.test_branches): Remove branch specification.

8:26 AM Changeset in webkit [270768] by Chris Dumez
  • 25 edits in trunk/Source

[GPUProcess] Crash under AudioDestinationCocoa::setIsPlaying(bool)
https://bugs.webkit.org/show_bug.cgi?id=219809

Reviewed by Eric Carlson.

Source/WebCore:

The issue is that when using the GPU process, AudioDestination::stop() & start()
are asynchronous due to IPC. Those functions take completion handlers and
the AudioDestination object makes sure to ref itself to keep itself alive during
async operations. However, AudioDestination::m_callback is a raw pointer to
the AudioDestinationNode, which may itself become dead if AudioDestination
extends its lifetime by ref'ing itself.

To address the issue, AudioDestination is not fully owned by AudioDestinationNode.
If the AudioDestination needs to keep itself alive, it now ref's its owner
(AudioDestinationNode). This ensure that AudioDestination::m_callback never goes
stale, even if AudioDestination extends its lifetime by ref'ing itself during
async operations.

No new tests, covered by existing WebAudio tests currently crashing on
the GPU bots.

  • Modules/webaudio/AudioDestinationNode.cpp:

(WebCore::AudioDestinationNode::~AudioDestinationNode):

  • Modules/webaudio/AudioDestinationNode.h:

(WebCore::AudioDestinationNode::isPlaying):

  • Modules/webaudio/AudioNode.cpp:

(WebCore::AudioNode::deref):

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::clear):

  • Modules/webaudio/DefaultAudioDestinationNode.cpp:

(WebCore::DefaultAudioDestinationNode::~DefaultAudioDestinationNode):
(WebCore::DefaultAudioDestinationNode::uninitialize):
(WebCore::DefaultAudioDestinationNode::createDestination):

  • Modules/webaudio/DefaultAudioDestinationNode.h:
  • Modules/webaudio/OfflineAudioDestinationNode.cpp:

(WebCore::OfflineAudioDestinationNode::~OfflineAudioDestinationNode):

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

(WebCore::AudioDestination::ref):
(WebCore::AudioDestination::deref):
(WebCore::AudioDestination::AudioDestination):

  • platform/audio/AudioIOCallback.h:
  • platform/audio/cocoa/AudioDestinationCocoa.cpp:

(WebCore::AudioDestination::create):
(WebCore::AudioDestinationCocoa::AudioDestinationCocoa):

  • platform/audio/cocoa/AudioDestinationCocoa.h:
  • platform/audio/gstreamer/AudioDestinationGStreamer.cpp:

(WebCore::AudioDestination::create):
(WebCore::AudioDestinationGStreamer::AudioDestinationGStreamer):

  • platform/mock/MockAudioDestinationCocoa.h:

Source/WebKit:

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:

(WebKit::RemoteAudioDestinationProxy::create):

  • 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:27 AM Changeset in webkit [270767] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[WPE][GTK] Should enable WebProcessCache
https://bugs.webkit.org/show_bug.cgi?id=219689

Reviewed by Adrian Perez de Castro.

  • UIProcess/API/glib/WebKitWebContext.cpp:

(webkitWebContextConstructed):

3:46 AM Changeset in webkit [270766] by rmorisset@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Minor cleanup of BigInts
https://bugs.webkit.org/show_bug.cgi?id=219253

Reviewed by Yusuke Suzuki.

  • runtime/JSBigInt.cpp:

(JSC::rightShiftByAbsolute):

2:35 AM Changeset in webkit [270765] by Lauro Moura
  • 7 edits in trunk

REGRESSSION(270435) [GStreamer] Many media source tests failing and timing out
https://bugs.webkit.org/show_bug.cgi?id=219565

Reviewed by Philippe Normand.

Source/WebCore:

Fix the recursing calls due to the refactoring of SourceBufferPrivate.
(As Philippe Normand pointed out and Peng Liu added in the first
version of the patch).

Also fix the didReceiveInitializationSegment signature after r270612.

Covered by existing tests.

  • platform/graphics/gstreamer/mse/AppendPipeline.cpp:

(WebCore::AppendPipeline::didReceiveInitializationSegment):

  • platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:

(WebCore::SourceBufferPrivateGStreamer::didReceiveInitializationSegment):
(WebCore::SourceBufferPrivateGStreamer::didReceiveSample):

  • platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.h:

LayoutTests:

Revert the gardened expectations and garden remaining failures.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
2:32 AM Changeset in webkit [270764] by ysuzuki@apple.com
  • 34 edits in trunk/Source

[JSC] Introduce vmEntryCustomAccessor and vmEntryHostFunction for JITCage
https://bugs.webkit.org/show_bug.cgi?id=219847

Reviewed by Mark Lam.

Source/JavaScriptCore:

Instead of registering all host-functions and custom accessors with OperationPtrTag or HostFunctionPtrTag,
this patch introduces a trampoline which invokes them with special ptr-tag to reduce memory usage of JITOperationList.

When invoking custom accessor, we pass that pointer as a forth argument, and call vmEntryCustomAccessor.
And vmEntryCustomAccessor jumps to the passed argument with special ptr tag. And we register vmEntryCustomAccessor as an operation.
For host-functions, we pass that pointer as a third argument.

  • assembler/JITOperationList.cpp:

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

  • assembler/JITOperationList.h:

(JSC::JITOperationList::assertIsHostFunction): Deleted.

  • b3/testb3_1.cpp:

(main):

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateImpl):

  • bytecode/GetByIdVariant.cpp:

(JSC::GetByIdVariant::GetByIdVariant):

  • bytecode/GetByIdVariant.h:

(JSC::GetByIdVariant::customAccessorGetter const):

  • bytecode/GetByStatus.cpp:

(JSC::GetByStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/GetterSetterAccessCase.cpp:

(JSC::GetterSetterAccessCase::create):

  • bytecode/GetterSetterAccessCase.h:
  • dfg/DFGNode.h:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCallDOMGetter):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCallDOMGetter):

  • jit/JITOperations.h:
  • jit/Repatch.cpp:

(JSC::tryCacheGetBy):
(JSC::tryCachePutByID):

  • jit/ThunkGenerators.cpp:

(JSC::nativeForGenerator):

  • jsc.cpp:

(jscmain):

  • llint/LLIntData.cpp:

(JSC::LLInt::initialize):

  • llint/LLIntThunks.cpp:
  • llint/LLIntThunks.h:
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/Gate.h:
  • runtime/JSCPtrTag.h:

(JSC::tagJSCCodePtrImpl):
(JSC::untagJSCCodePtrImpl):

  • runtime/NativeFunction.h:
  • runtime/PropertySlot.h:
  • runtime/PutPropertySlot.h:

(JSC::PutPropertySlot::customSetter const):

  • runtime/VM.cpp:

(JSC::VM::getHostFunction):

Source/WebCore:

  • bindings/js/WebCoreJITOperations.cpp:

(WebCore::populateJITOperations):

  • testing/js/WebCoreTestSupport.cpp:

(WebCoreTestSupport::populateJITOperations):

Source/WebKit:

  • Shared/WebKitJITOperations.cpp:

(WebKit::populateJITOperations):

Source/WTF:

  • wtf/PlatformCallingConventions.h:
2:17 AM Changeset in webkit [270763] by calvaris@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer][EME][Thunder] Opus should be supported by the decryptor
https://bugs.webkit.org/show_bug.cgi?id=219742

Reviewed by Philippe Normand.

  • platform/graphics/gstreamer/eme/WebKitThunderDecryptorGStreamer.cpp:

Added Opus to the sink and src caps.

1:43 AM Changeset in webkit [270762] by youenn@apple.com
  • 23 edits in trunk/Source

Pass an isolated copy of Settings to workers and worklets.
https://bugs.webkit.org/show_bug.cgi?id=219688

Reviewed by Sam Weinig.

Source/JavaScriptCore:

  • runtime/RuntimeFlags.h:

(JSC::RuntimeFlags::isolatedCopy const):

Source/WebCore:

Generate a Settings::Values struct containing all setting values.
Workers and worklets get that structure from their document and do a thread safe copy to use it in the background thread.
Covered by existing tests in workers.

  • Modules/webaudio/AudioWorkletMessagingProxy.cpp:

(WebCore::generateWorkletParameters):

  • Scripts/SettingsTemplates/Settings.cpp.erb:
  • Scripts/SettingsTemplates/Settings.h.erb:
  • dom/Document.h:
  • dom/EmptyScriptExecutionContext.h:
  • dom/ScriptExecutionContext.h:
  • page/Settings.yaml:
  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::WorkerGlobalScope):

  • workers/WorkerGlobalScope.h:

(WebCore::WorkerGlobalScope::requestAnimationFrameEnabled const):
(WebCore::WorkerGlobalScope::acceleratedCompositingEnabled const):
(WebCore::WorkerGlobalScope::webGLEnabled const):

  • workers/WorkerMessagingProxy.cpp:

(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):

  • workers/WorkerThread.cpp:

(WebCore::WorkerParameters::isolatedCopy const):

  • workers/WorkerThread.h:
  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::ServiceWorkerThread):

  • workers/service/context/ServiceWorkerThread.h:
  • workers/service/context/ServiceWorkerThreadProxy.cpp:

(WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy):

  • worklets/WorkletGlobalScope.cpp:

(WebCore::WorkletGlobalScope::WorkletGlobalScope):

  • worklets/WorkletGlobalScope.h:
  • worklets/WorkletParameters.h:

(WebCore::WorkletParameters::isolatedCopy const):

Source/WTF:

Add missing default values.

  • Scripts/Preferences/WebPreferences.yaml:

Dec 13, 2020:

9:19 PM Changeset in webkit [270761] by aestes@apple.com
  • 1 edit in trunk/Source/WebKit/Shared/mac/MediaFormatReader/SampleCursor.h

Try again to fix the build after r270758.

8:39 PM Changeset in webkit [270760] by aestes@apple.com
  • 2 edits in trunk/Source/WebKit/Shared/mac/MediaFormatReader

Unreviewed build fix after r270758.

  • Shared/mac/MediaFormatReader/CoreMediaWrapped.h: Unrelated renaming.
  • Shared/mac/MediaFormatReader/SampleCursor.h: Removed an "#undef" meant for testing.
8:31 PM Changeset in webkit [270759] by aestes@apple.com
  • 1 edit in trunk/Source/WebKit/Shared/ios/WebIOSEventFactory.mm

Unreviewed build fix after r270712.

7:38 PM Changeset in webkit [270758] by aestes@apple.com
  • 38 edits
    3 copies
    21 adds in trunk

Source/ThirdParty/libwebrtc:
[Mac] Create a MediaToolbox format reader plug-in for WebM
https://bugs.webkit.org/show_bug.cgi?id=218908
<rdar://problem/71373264>

Reviewed by Eric Carlson.

  • Source/webrtc/sdk/WebKit/CMBaseObjectSPI.h:

Source/WebCore:
[Mac] Create a MediaToolbox format reader plug-in for WebM
https://bugs.webkit.org/show_bug.cgi?id=218908
<rdar://problem/71373264>

Reviewed by Eric Carlson.

Updated expected results for existing tests.

For contiguous samples, teach MediaSample to remember their position and size in the
underlying byte stream. Added a runtime feature flag. Registered the format reader plug-in
at runtime.

  • page/RuntimeEnabledFeatures.h:
  • platform/MediaSample.h:
  • platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm:
  • platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
  • platform/graphics/cocoa/SourceBufferParser.cpp:
  • platform/graphics/cocoa/SourceBufferParser.h:
  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:
  • platform/graphics/cocoa/SourceBufferParserWebM.h:
  • platform/graphics/gstreamer/MediaSampleGStreamer.h:
  • platform/mock/mediasource/MockSourceBufferPrivate.cpp:
  • platform/network/mac/WebCoreURLResponse.mm:

Source/WebCore/PAL:
[Mac] Create a MediaToolbox format reader plug-in for WebM
https://bugs.webkit.org/show_bug.cgi?id=218908
<rdar://problem/71373264>

Reviewed by Eric Carlson.

  • pal/cf/CoreMediaSoftLink.cpp:
  • pal/cf/CoreMediaSoftLink.h:
  • pal/cocoa/MediaToolboxSoftLink.cpp:
  • pal/cocoa/MediaToolboxSoftLink.h:
  • pal/spi/cf/CoreMediaSPI.h:
  • pal/spi/cocoa/MediaToolboxSPI.h:

Source/WebKit:
[Mac] Create a MediaToolbox format reader plug-in for WebM
https://bugs.webkit.org/show_bug.cgi?id=218908
<rdar://problem/71373264>

Reviewed by Eric Carlson.

Implemented a MTPluginFormatReader for WebM containers. The format reader is responsible
for parsing a WebM byte stream (using SourceBufferParserWebM) into audio, video, and text
tracks. MediaToolbox can then create cursors to step through the tracks' samples in decode
or presentation order and access each sample's metadata (e.g., format description,
duration, key-frame status) and location in the byte stream.

  • FeatureFlags/WebKit.plist:
  • MediaFormatReaderPlugIn/Info.plist:
  • MediaFormatReaderPlugIn/MediaFormatReaderPlugIn.cpp:
  • Shared/API/c/mac/WKFormatReader.cpp: Added.
  • Shared/API/c/mac/WKFormatReader.h: Added.
  • Shared/WebPreferencesDefaultValues.cpp:
  • Shared/WebPreferencesDefaultValues.h:
  • Shared/mac/MediaFormatReader/CoreMediaWrapped.cpp: Added.
  • Shared/mac/MediaFormatReader/CoreMediaWrapped.h: Added.
  • Shared/mac/MediaFormatReader/FormatReader.cpp: Added.
  • Shared/mac/MediaFormatReader/FormatReader.h: Added.
  • Shared/mac/MediaFormatReader/MediaFormatReader.cpp: Added.
  • Shared/mac/MediaFormatReader/MediaFormatReader.h: Added.
  • Shared/mac/MediaFormatReader/SampleCursor.cpp: Added.
  • Shared/mac/MediaFormatReader/SampleCursor.h: Added.
  • Shared/mac/MediaFormatReader/TrackReader.cpp: Added.
  • Shared/mac/MediaFormatReader/TrackReader.h: Added.
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:

Source/WTF:
[Mac] Register the format reader plug-in for WebM content types
https://bugs.webkit.org/show_bug.cgi?id=218908
<rdar://problem/71373264>

Reviewed by Eric Carlson.

  • Scripts/Preferences/WebPreferencesExperimental.yaml: Added an experimental web

preference.

Tools:
[Mac] Create a MediaToolbox format reader plug-in for WebM
https://bugs.webkit.org/show_bug.cgi?id=218908
<rdar://problem/71373264>

Reviewed by Eric Carlson.

  • TestWebKitAPI/Tests/WebCore/SampleMap.cpp:

LayoutTests:
[Mac] Create a MediaToolbox format reader plug-in for WebM
https://bugs.webkit.org/show_bug.cgi?id=218908
<rdar://problem/71373264>

Reviewed by Eric Carlson.

  • platform/mac-catalina/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType-expected.txt:
  • platform/mac-catalina/media/media-can-play-webm-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType-expected.txt:
  • platform/mac-wk2/media/media-can-play-webm-expected.txt:
6:47 PM Changeset in webkit [270757] by Diego Pino Garcia
  • 4 edits in trunk/LayoutTests

[WPE] Unreviewed test gardening. Gardened several flaky failures happening in WPE Release Test bot.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
6:30 PM Changeset in webkit [270756] by Diego Pino Garcia
  • 9 edits
    8 adds in trunk/LayoutTests

[WPE] Unreviewed test gardening. Update baselines after r270749.

  • platform/wpe/css1/text_properties/word_spacing-expected.png: Added.
  • platform/wpe/css1/text_properties/word_spacing-expected.txt:
  • platform/wpe/fast/css/word-space-extra-expected.png: Added.
  • platform/wpe/fast/css/word-space-extra-expected.txt:
  • platform/wpe/fast/text/atsui-negative-spacing-features-expected.png: Added.
  • platform/wpe/fast/text/atsui-negative-spacing-features-expected.txt:
  • platform/wpe/fast/text/atsui-spacing-features-expected.png: Added.
  • platform/wpe/fast/text/atsui-spacing-features-expected.txt:
  • platform/wpe/fast/text/basic/004-expected.png: Added.
  • platform/wpe/fast/text/basic/004-expected.txt:
  • platform/wpe/fast/text/basic/005-expected.png: Added.
  • platform/wpe/fast/text/basic/005-expected.txt:
  • platform/wpe/fast/text/word-space-expected.png: Added.
  • platform/wpe/fast/text/word-space-expected.txt:
  • platform/wpe/svg/custom/svg-fonts-word-spacing-expected.png: Added.
  • platform/wpe/svg/custom/svg-fonts-word-spacing-expected.txt:
6:20 PM Changeset in webkit [270755] by Fujii Hironori
  • 10 edits
    2 adds in trunk/LayoutTests

[WinCairo] Unreviewed test gardening

  • platform/wincairo-wk1/TestExpectations:
  • platform/wincairo/TestExpectations:
  • platform/wincairo/css1/text_properties/word_spacing-expected.txt:
  • platform/wincairo/css3/filters/backdrop/blur-input-bounds-expected.txt: Added.
  • platform/wincairo/fast/css/word-space-extra-expected.txt:
  • platform/wincairo/fast/text/atsui-negative-spacing-features-expected.txt:
  • platform/wincairo/fast/text/atsui-spacing-features-expected.txt:
  • platform/wincairo/fast/text/basic/004-expected.txt:
  • platform/wincairo/fast/text/basic/005-expected.txt:
  • platform/wincairo/fast/text/word-space-expected.txt:
4:58 PM Changeset in webkit [270754] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit

Fix the watchOS build after r270712
<rdar://problem/72265227>

  • Shared/ios/WebIOSEventFactory.h:
  • Shared/ios/WebIOSEventFactory.mm:

(WebIOSEventFactory::createWebWheelEvent):

3:59 PM Changeset in webkit [270753] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Set s_maxPathLength fallback when OS does not have a PATH_MAX limitation
https://bugs.webkit.org/show_bug.cgi?id=219571

Patch by Samuel Thibault <samuel.thibault@ens-lyon.org> on 2020-12-13
Reviewed by Yusuke Suzuki.

  • runtime/ConfigFile.h:

(ConfigFile::s_maxPathLength): Fallback to 4095 when PATH_MAX is not defined.

3:42 PM Changeset in webkit [270752] by Simon Fraser
  • 5 edits in trunk/Source/WebCore

[LFC Display] The display tree should be owned by the display view
https://bugs.webkit.org/show_bug.cgi?id=219840

Reviewed by Sam Weinig.

Move ownership of the Display::Tree from Display::LayerController to Display::View,
because this ownership model makes more sense.

  • display/DisplayView.cpp:

(WebCore::Display::View::prepareForDisplay):

  • display/DisplayView.h:

(WebCore::Display::View::tree const):

  • display/compositing/DisplayLayerController.cpp:

(WebCore::Display::LayerController::RootLayerClient::paintContents):
(WebCore::Display::LayerController::prepareForDisplay):

  • display/compositing/DisplayLayerController.h:
1:49 PM Changeset in webkit [270751] by don.olmstead@sony.com
  • 2 edits in trunk

[CMake] Version of LibPSL not reported
https://bugs.webkit.org/show_bug.cgi?id=219837

Reviewed by Adrian Perez de Castro.

When determining the version of LibPSL from the header file LIBPSL_VERSION was set
but the VERSION_VAR reported was LibPSL_VERSION. Consistently use LibPSL_VERSION
within the file to prevent this.

Additionally LibPSL_LIBRARY not LibPSL_LIBRARIES should be marked_as_advanced.

  • Source/cmake/FindLibPSL.cmake:
9:55 AM Changeset in webkit [270750] by don.olmstead@sony.com
  • 4 edits in trunk/Source/WebCore

Move createAppHighlightRangeData into AppHighlightStorage source file
https://bugs.webkit.org/show_bug.cgi?id=219834

Reviewed by Devin Rousso.

The createAppHighlightRangeData function was defined statically in AppHighlightListData.cpp
but was only used in AppHighlightStorage.cpp. Moved the static functions from the former
into the later.

Additionally added forward declarations in the AppHighlightStorage header.

This allows the highlight module to compile with non-unified sources.

  • Modules/highlight/AppHighlightListData.cpp:

(WebCore::computePathIndex): Deleted.
(WebCore::createNodePathComponent): Deleted.
(WebCore::makeNodePath): Deleted.
(WebCore::createAppHiglightRangeData): Deleted.

  • Modules/highlight/AppHighlightStorage.cpp:

(WebCore::computePathIndex):
(WebCore::createNodePathComponent):
(WebCore::makeNodePath):
(WebCore::createAppHighlightRangeData):
(WebCore::AppHighlightStorage::createAppHighlightListData):

  • Modules/highlight/AppHighlightStorage.h:
9:29 AM Changeset in webkit [270749] by Alan Bujtas
  • 17 edits in trunk

[LFC][IFC] Offset the content logical left by the word-spacing value
https://bugs.webkit.org/show_bug.cgi?id=219706

Reviewed by Antti Koivisto.

Source/WebCore:

Let's decouple the whitespace width and the word-spacing value.
Instead of constructing a 9px long run for whitespace "width: 4px", "word-spacing: 5px",
we create a 4px long run at 5px.

  • layout/inlineformatting/InlineLine.cpp:

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

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::width):

LayoutTests:

Now we've got dedicated runs for these content.
-and the word-space-extra-expected.txt change is an actual (though not visual) progression.

  • platform/mac/css1/text_properties/word_spacing-expected.txt:
  • platform/mac/fast/css/word-space-extra-expected.txt:
  • platform/mac/fast/text/atsui-negative-spacing-features-expected.txt:
  • platform/mac/fast/text/atsui-spacing-features-expected.txt:
  • platform/mac/fast/text/basic/004-expected.txt:
  • platform/mac/fast/text/word-space-expected.txt:
  • platform/mac/svg/custom/svg-fonts-word-spacing-expected.txt:
7:20 AM Changeset in webkit [270748] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Add some missing Grid files to the project
https://bugs.webkit.org/show_bug.cgi?id=219831

Reviewed by Anders Carlsson.

A few Grid files were compiled, but had not been added to the project file.

  • WebCore.xcodeproj/project.pbxproj:
Note: See TracTimeline for information about the timeline view.