Timeline



Dec 7, 2020:

11:50 PM Changeset in webkit [270530] by Fujii Hironori
  • 5 edits in trunk

Unreviewed sort-Xcode-project-file

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:

Tools:

  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
  • jsc-cli/jsc-cli.xcodeproj/project.pbxproj:
8:14 PM Changeset in webkit [270529] by Said Abou-Hallawa
  • 6 edits in trunk/Source

[GPU Process] Ensure the backend of ImageBuffer is created before getting its handle
https://bugs.webkit.org/show_bug.cgi?id=219623

Reviewed by Tim Horton.

Source/WebCore:

Remove the ImageBuffer::backend() method and move ensureBackendCreated()
from ConcreteImageBuffer to ImageBuffer. Clients should ensure the backend
is created before accessing its method. ensureBackendCreated() is only
overridden by RemoteImageBufferProxy.

  • platform/graphics/ConcreteImageBuffer.h:

(WebCore::ConcreteImageBuffer::ensureBackendCreated const): Deleted.

  • platform/graphics/ImageBuffer.h:

(WebCore::ImageBuffer::backend const): Deleted.

Source/WebKit:

In r270458 and in RemoteLayerBackingStore::encode(), casting the ImageBuffer
and calling the overriding createImageBufferBackendHandle() of the superclass
was replaced by casting the backend and calling its createImageBufferBackendHandle()
directly.

This may lead to crash if the backend was not created when calling its
createImageBufferBackendHandle(). The createImageBufferBackendHandle()
of the ImageBuffer superclass calls ensureBackendCreated() before calling
createImageBufferBackendHandle() of the backend.

So we need to replace to call backend() to ensureBackendCreated().

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::encode const):

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
5:09 PM Changeset in webkit [270528] by Ryan Haddad
  • 2 edits in trunk/Tools

Unreviewed API test gardening, disable failing tests on Big Sur.

  • TestWebKitAPI/Tests/WebKit/PreferenceChanges.mm:

(TEST):

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

REGRESSION (r269359): [ Mac ] http/tests/inspector/dom/disconnect-dom-tree-after-main-frame-navigation.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=219225

unreviewed test gardening.

  • platform/mac/TestExpectations:
3:43 PM Changeset in webkit [270526] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Parse content after # in data URLs with HLS mime types
https://bugs.webkit.org/show_bug.cgi?id=219612
<rdar://problem/71039282>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-07
Reviewed by Darin Adler.

Source/WebCore:

r267995 made us conform to the behavior of Chrome and Firefox by removing fragments from data URLs before parsing.
While this is desirable, there is content in Safari-specific HLS data URLs that needs the content including and after #.
So, to fix this, wait until after we know the mime type and remove the fragment if it's not HLS.

Test: fast/url/data-url-mediatype.html

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::loadDataURL):
(WebCore::shouldStripFragmentIdentifier): Deleted.

  • platform/network/DataURLDecoder.cpp:

(WebCore::DataURLDecoder::shouldRemoveFragmentIdentifier):
(WebCore::DataURLDecoder::DecodeTask::DecodeTask):
(WebCore::DataURLDecoder::DecodeTask::process):
(WebCore::DataURLDecoder::createDecodeTask):

LayoutTests:

  • fast/url/data-url-mediatype-expected.txt: Added.
  • fast/url/data-url-mediatype.html: Added.
3:33 PM Changeset in webkit [270525] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Check if RenderInline style is supported
https://bugs.webkit.org/show_bug.cgi?id=219611

Reviewed by Antti Koivisto.

At this point it's insufficient to check for block style only. Inline boxes may have unsupported styles as well.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForChild):

2:26 PM Changeset in webkit [270524] by commit-queue@webkit.org
  • 22 edits
    1 add in trunk

[WASM-References] Add support for table.copy
https://bugs.webkit.org/show_bug.cgi?id=219427

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

Add support for table.copy from reference types proposal:
https://webassembly.github.io/reference-types/core/syntax/instructions.html#table-instructions.
JSTests:

Add the tests from above spec.

  • wasm/references-spec-tests/table_copy.js: Added.

(hostref):
(is_hostref):
(is_funcref):
(eq_ref):
(let.handler.get target):
(register):
(module):
(instance):
(call):
(get instance):
(exports):
(run):
(assert_malformed):
(assert_invalid):
(assert_unlinkable):
(assert_uninstantiable):
(assert_trap):
(try.f):
(catch):
(assert_exhaustion):
(assert_return):
(assert_return_canonical_nan):
(assert_return_arithmetic_nan):
(assert_return_ref):
(assert_return_func):

  • wasm/references/element_parsing.js:
  • wasm/wasm.json:

Source/JavaScriptCore:

The table.copy instruction accepts three stack arguments (destination
offset, source offset, length) and two immediates for table indexes
and copies items from one wasm table to another.

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

(JSC::Wasm::AirIRGenerator::addTableFill):
(JSC::Wasm::AirIRGenerator::addTableCopy):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addTableFill):
(JSC::Wasm::B3IRGenerator::addTableCopy):

  • wasm/WasmFunctionParser.h:

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

  • wasm/WasmInstance.cpp:

(JSC::Wasm::Instance::tableCopy):

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

(JSC::Wasm::LLIntGenerator::addTableCopy):

  • wasm/WasmOperations.cpp:

(JSC::Wasm::isSumOverflow):
(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

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

(JSC::Wasm::SectionParser::parseElement):

  • wasm/WasmSlowPaths.cpp:

(JSC::LLInt::WASM_SLOW_PATH_DECL):

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

(JSC::Wasm::Table::copy):
(JSC::Wasm::FuncRefTable::copyFunction):

  • wasm/WasmTable.h:
  • wasm/wasm.json:
1:59 PM Changeset in webkit [270523] by Andres Gonzalez
  • 2 edits in trunk/Source/WebCore

Add check to ensure that the size of the result of AXTextMarkerGetBytePtr is equal to the size of TextMarkerData.
https://bugs.webkit.org/show_bug.cgi?id=219601

Reviewed by Simon Fraser.

Covered by existing tests.

This is a follow up change to the patch for
https://bugs.webkit.org/show_bug.cgi?id=219491
per Simon Fraser's comment.

  • accessibility/mac/AXObjectCacheMac.mm:

(WebCore::getBytesFromAXTextMarker):
Added a check to ensure that the memory block returned by AXTextMarkerGetBytePtr
is the same size as TextMarkerData. This doesn't guaranty that the
underlying binary structures are the same, but it is a sanity check that
may catch flagrant discrepancies.

1:55 PM Changeset in webkit [270522] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit

Add sandbox telemetry for likely unused features
https://bugs.webkit.org/show_bug.cgi?id=219544
<rdar://71985678>

Reviewed by Per Arne Vollan.

Add telemetry to confirm the results of our manual review of the sandbox. Add 'hw.memsize' to
the allowed sysctl's for the Network process on macOS, since it is needed by CFNetwork, and is
already permitted on iOS.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in: Allow the 'hw.memsize' sysctl,

which is needed by CFNetwork, and is already allowed on iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: Add logging to confirm we

do not need file-read-metadata for syslog.

  • WebProcess/com.apple.WebProcess.sb.in: Add logging to confirm BluetoothServices is not

needed.

1:29 PM Changeset in webkit [270521] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GLIB] Skip remaining sframe tests

Unreviewed test gardening.

  • platform/glib/TestExpectations:
1:12 PM Changeset in webkit [270520] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Ensure that DisplayListSharedMemoryHeader is never explicitly created or destroyed at compile-time
https://bugs.webkit.org/show_bug.cgi?id=219609

Reviewed by Tim Horton.

Make sure that a DisplayListSharedMemoryHeader is never created or destroyed by marking the constructor and
destructor as deleted. A DisplayListSharedMemoryHeader should only ever be reinterpret_cast-ed from the
first few bytes of a shared display list handle.

  • Shared/SharedDisplayListHandle.h:
12:56 PM Changeset in webkit [270519] by Adrian Perez de Castro
  • 7 edits in trunk/Source/WebCore

Non-unified build fixes, early December 2020 edition (bis)
https://bugs.webkit.org/show_bug.cgi?id=219607

Unreviewed non-unified build fixes.

  • contentextensions/ImmutableNFA.h:
  • contentextensions/SerializedNFA.cpp:
  • contentextensions/SerializedNFA.h:
  • loader/DocumentLoader.cpp:
  • platform/audio/MultiChannelResampler.h:
  • platform/audio/SincResampler.h:
12:48 PM Changeset in webkit [270518] by Ryan Haddad
  • 9 edits
    2 deletes in trunk

Unreviewed, reverting r270507.

Caused some WebRTC tests to assert

Reverted changeset:

"Allow RTCRtpSFrameTransform to handle multiple keys"
https://bugs.webkit.org/show_bug.cgi?id=219598
https://trac.webkit.org/changeset/270507

12:43 PM Changeset in webkit [270517] by pvollan@apple.com
  • 7 edits in trunk

[macOS] Deny mach-lookup to the service 'com.apple.audio.SystemSoundServer-OSX' in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=219590
<rdar://problem/69019399>

Reviewed by Brent Fulgham.

Source/WebKit:

After r269593, mach-lookup to the service 'com.apple.audio.SystemSoundServer-OSX' in the WebContent process can be denied.

Test: fast/sandbox/mac/sandbox-mach-lookup.html

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

LayoutTests:

  • fast/sandbox/mac/sandbox-mach-lookup-expected.txt:
  • fast/sandbox/mac/sandbox-mach-lookup.html:
  • platform/mac-catalina/fast/sandbox/mac/sandbox-mach-lookup-expected.txt:
  • platform/mac-mojave/fast/sandbox/mac/sandbox-mach-lookup-expected.txt:
12:27 PM Changeset in webkit [270516] by don.olmstead@sony.com
  • 17 edits in trunk

[CMake] Remove WEBKIT_WRAP_SOURCELIST
https://bugs.webkit.org/show_bug.cgi?id=196916

Reviewed by Michael Catanzaro.

.:

WEBKIT_WRAP_SOURCELIST macro is used only to adjust source groups in Visual Studio
projects without any impact on build process. Its references variable specific to
particular targets (WebCore) which contradicts our goal of having target-oriented
CMake project. It can be reintroduced later in a more clean way, in case anyone needs
to have such grouping.

  • Source/cmake/WebKitMacros.cmake:

PerformanceTests:

  • MallocBench/MallocBench/CMakeLists.txt:

Source/bmalloc:

  • CMakeLists.txt:

Source/JavaScriptCore:

  • CMakeLists.txt:

Source/WebCore:

  • CMakeLists.txt:

Source/WebCore/PAL:

  • pal/CMakeLists.txt:

Source/WebKit:

  • PlatformFTW.cmake:
  • PlatformWin.cmake:

Source/WTF:

  • wtf/CMakeLists.txt:
12:20 PM Changeset in webkit [270515] by Russell Epstein
  • 8 edits in trunk/Source

Versioning.

WebKit-7611.1.9

12:19 PM Changeset in webkit [270514] by Alan Bujtas
  • 4 edits
    2 adds in trunk

[LFC][IFC] Overflowing text content should not break at inline box boundary
https://bugs.webkit.org/show_bug.cgi?id=219605

Reviewed by Antti Koivisto.

Source/WebCore:

Wrap the overflowing content on the inline box boundary when possible.
<span>fits</span><span>overflows</span>
When the text "overflows" completely overflows, let's wrap the content after '</span>'.

Test: fast/layoutformattingcontext/overflow-at-inline-box-boundary-simple.html

  • layout/inlineformatting/InlineContentBreaker.cpp:

(WebCore::Layout::InlineContentBreaker::processOverflowingTextContent const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

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

LayoutTests:

  • fast/layoutformattingcontext/overflow-at-inline-box-boundary-simple-expected.html: Added.
  • fast/layoutformattingcontext/overflow-at-inline-box-boundary-simple.html: Added.
12:14 PM Changeset in webkit [270513] by Russell Epstein
  • 1 copy in branches/safari-611.1.8-branch

New branch.

12:02 PM Changeset in webkit [270512] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit

Fix incorrect capitalization of ClearWheelEventTestMonitor IPC message name
https://bugs.webkit.org/show_bug.cgi?id=219606

Reviewed by Wenson Hsieh.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::clearWheelEventTestMonitor):

  • WebProcess/WebPage/WebPage.messages.in:
10:53 AM Changeset in webkit [270511] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

[iOS] Add basic GPUProcess crash recovery logic to RemoteMediaSessionHelper
https://bugs.webkit.org/show_bug.cgi?id=219494

Reviewed by Eric Carlson.

  • WebProcess/GPU/media/ios/RemoteMediaSessionHelper.cpp:

(WebKit::RemoteMediaSessionHelper::RemoteMediaSessionHelper):
(WebKit::RemoteMediaSessionHelper::connectToGPUProcess):
(WebKit::RemoteMediaSessionHelper::gpuProcessConnectionDidClose):

  • WebProcess/GPU/media/ios/RemoteMediaSessionHelper.h:
10:44 AM Changeset in webkit [270510] by Ryan Haddad
  • 4 edits in trunk/Tools

Unreviewed API test gardening, disable failing tests on Big Sur.

  • TestWebKitAPI/Tests/WebKit/PreferenceChanges.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/PDFLinkReferrer.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/WKPDFView.mm:
10:36 AM Changeset in webkit [270509] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GStreamer] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-channelmergernode-interface/active-processing.https.html is flaky failing

Unreviewed test gardening.

  • platform/glib/TestExpectations:
9:50 AM Changeset in webkit [270508] by don.olmstead@sony.com
  • 9 edits in trunk/Source/WebCore

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

Unreviewed non-unified build fixes.

  • display/css/DisplayBoxModelBox.cpp:
  • display/css/DisplayStackingItem.cpp:
  • display/css/DisplayStackingItem.h:
  • html/HTMLIFrameElement.cpp:
  • layout/inlineformatting/InlineLineBox.cpp:
  • loader/DocumentLoader.cpp:
  • platform/mediacapabilities/ColorGamut.h:
  • platform/mediacapabilities/HdrMetadataType.h:
9:22 AM Changeset in webkit [270507] by youenn@apple.com
  • 9 edits
    2 adds in trunk

Allow RTCRtpSFrameTransform to handle multiple keys
https://bugs.webkit.org/show_bug.cgi?id=219598

Reviewed by Eric Carlson.

Source/WebCore:

Keep a map of ID to Key material when setEncryptionKey is called.
Use that map on decryption side to get key material from key ID.
Add internals API to validate key retrieval is done correctly.
If setEncryptionKey key ID is not set, we use the map size which allows to use 0, 1, 2 and so on...

Test: webrtc/sframe-keys.html

  • Modules/mediastream/RTCRtpSFrameTransform.cpp:

(WebCore::RTCRtpSFrameTransform::keyIdForTesting const):

  • Modules/mediastream/RTCRtpSFrameTransform.h:
  • Modules/mediastream/RTCRtpSFrameTransformer.cpp:

(WebCore::RTCRtpSFrameTransformer::setEncryptionKey):
(WebCore::RTCRtpSFrameTransformer::updateEncryptionKey):
(WebCore::RTCRtpSFrameTransformer::decryptFrame):

  • Modules/mediastream/RTCRtpSFrameTransformer.h:

(WebCore::RTCRtpSFrameTransformer::keyId const):

  • testing/Internals.cpp:

(WebCore::Internals::sframeKeyId):

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

LayoutTests:

  • webrtc/sframe-keys-expected.txt: Added.
  • webrtc/sframe-keys.html: Added.
8:59 AM Changeset in webkit [270506] by youenn@apple.com
  • 14 edits
    1 copy
    3 adds in trunk

Add a SFrame H264 experimental compatibility mode
https://bugs.webkit.org/show_bug.cgi?id=219532

Reviewed by Eric Carlson.

Source/WebCore:

Add an SFrame compatibility mode for H.264.
To do so, the encryptor generates an SFrame and prefixes it with either a delta frame prefix or a key frame prefix.
The SFrame content is escaped so that it is considered as one big IDR or Slice nalu.
The decoder on the other hand, unescapes the content, removes the prefix and decrypts the SFrame content.

Test: webrtc/video-sframe.html

  • Modules/mediastream/H264Utils.cpp: Added.

(WebCore::isSliceNALU):
(WebCore::isSPSNALU):
(WebCore::isPPSNALU):
(WebCore::isIDRNALU):
(WebCore::findNalus):
(WebCore::computePrefixOffset):
(WebCore::needsRbspUnescaping):
(WebCore::fromRbsp):
(WebCore::computePrefixBuffer):
(WebCore::findEscapeRbspPatterns):
(WebCore::toRbsp):

  • Modules/mediastream/H264Utils.h: Added.
  • Modules/mediastream/MediaStreamTrack.cpp:
  • Modules/mediastream/RTCRtpSFrameTransform.cpp:

(WebCore::RTCRtpSFrameTransform::RTCRtpSFrameTransform):

  • Modules/mediastream/RTCRtpSFrameTransform.h:
  • Modules/mediastream/RTCRtpSFrameTransform.idl:
  • Modules/mediastream/RTCRtpSFrameTransformer.cpp:

(WebCore::RTCRtpSFrameTransformer::create):
(WebCore::RTCRtpSFrameTransformer::RTCRtpSFrameTransformer):
(WebCore::RTCRtpSFrameTransformer::decryptFrame):
(WebCore::RTCRtpSFrameTransformer::encryptFrame):

  • Modules/mediastream/RTCRtpSFrameTransformer.h:
  • Modules/mediastream/RTCRtpScriptTransformer.cpp:
  • Modules/mediastream/RTCRtpScriptTransformer.h:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Tools:

  • TestWebKitAPI/Tests/WebCore/RTCRtpSFrameTransformerTests.cpp:

(TestWebKitAPI::TEST):

LayoutTests:

  • webrtc/video-sframe-expected.txt: Added.
  • webrtc/video-sframe.html: Added.
8:29 AM Changeset in webkit [270505] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Reduce memory copying in MultiChannelResampler::provideInputForChannel()
https://bugs.webkit.org/show_bug.cgi?id=219561

Reviewed by Eric Carlson.

Reduce memory copying in MultiChannelResampler::provideInputForChannel() by using
the passed-in buffer as memory for the first channel in the AudioBus.
This way we avoid having to memcpy() the data for the first channel.

Chromium's MultiChannelResampler has the same optimization.

  • platform/audio/MultiChannelResampler.cpp:

(WebCore::MultiChannelResampler::MultiChannelResampler):
(WebCore::MultiChannelResampler::provideInputForChannel):

  • platform/audio/MultiChannelResampler.h:
8:14 AM Changeset in webkit [270504] by Simon Fraser
  • 8 edits in trunk/Source/WebCore

[LFC Display] Keep track of the painted bounds of StackingItems
https://bugs.webkit.org/show_bug.cgi?id=219583

Reviewed by Zalan Bujtas.

Display::StackingItems will need to know their painted bounds for various reasons like
transparency layer extent, composited layer bounds, repaint etc. We can compute this cheaply
at tree building time. In fact, two bounds are useful: first, the bounds of the in-flow
content of that stacking item, and second the bounds of that stacking item and all its
stacking descendants.

We don't have a good way to know the painted extent of a Display::Box yet, so just use its
bounds as a proxy. BoxModelBox extends this by looking at box-shadow style.

While building the display tree, keep track of two extents rectangles:

  • currentStackingItemPaintedContentExtent starts with the bounds of the stack item's box,

and is unioned with the bounds of all the in-flow content for that stacking item as we
build the tree downwards.

  • currentStackingItemPaintingExtent starts empty, and accumulates the union of all

the descendant stacking items' painting extent in post-order traversal as we pop
stacking items off the currentState stack.

  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::BuildingState::inFlowContainingBlockBox const):
(WebCore::Display::TreeBuilder::build):
(WebCore::Display::TreeBuilder::pushStateForBoxDescendants):
(WebCore::Display::TreeBuilder::popState):
(WebCore::Display::TreeBuilder::accountForBoxPaintingExtent):
(WebCore::Display::TreeBuilder::currentState):
(WebCore::Display::TreeBuilder::positioningContext):
(WebCore::Display::TreeBuilder::insertIntoTree):
(WebCore::Display::TreeBuilder::buildInlineDisplayTree):
(WebCore::Display::outputStackingTree):
(WebCore::Display::TreeBuilder::currentState const): Deleted.
(WebCore::Display::TreeBuilder::positioningContext const): Deleted.

  • display/DisplayTreeBuilder.h:
  • display/css/DisplayBox.h:

(WebCore::Display::Box::absolutePaintingExtent const):

  • display/css/DisplayBoxModelBox.cpp:

(WebCore::Display::BoxModelBox::absolutePaintingExtent const):

  • display/css/DisplayBoxModelBox.h:
  • display/css/DisplayCSSPainter.cpp:

(WebCore::Display::applyEffects):
(WebCore::Display::CSSPainter::paintAtomicallyPaintedBox):

  • display/css/DisplayStackingItem.h:

(WebCore::Display::StackingItem::paintedContentBounds const):
(WebCore::Display::StackingItem::paintedBoundsIncludingDescendantItems const):
(WebCore::Display::StackingItem::setPaintedContentBounds):
(WebCore::Display::StackingItem::setPaintedBoundsIncludingDescendantItems):

6:49 AM Changeset in webkit [270503] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Check if RenderInline's text children are supported
https://bugs.webkit.org/show_bug.cgi?id=219585

Reviewed by Antti Koivisto.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForFontAndText):
(WebCore::LayoutIntegration::canUseForChild):

5:45 AM Changeset in webkit [270502] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[build.webkit.org] Automatically delete old buildbot logs
https://bugs.webkit.org/show_bug.cgi?id=218817

Reviewed by Jonathan Bedard.

  • CISupport/build-webkit-org/master_buildbot2.cfg: Configured JanitorConfigurator to delete logs older than six months, and

configured to run every morning.

3:29 AM Changeset in webkit [270501] by Chris Lord
  • 2 edits in trunk/Source/WebCore

[GTK][WPE] Overflow/iframe scrolling with async scrolling enabled sometimes doesn't work
https://bugs.webkit.org/show_bug.cgi?id=219594

Reviewed by Žan Doberšek.

Scrollable layers can occur outside of the bounds of ancestor layers,
so remove bounds checking early-exit in nicosia
collectDescendantLayersAtPoint().

  • page/scrolling/nicosia/ScrollingTreeNicosia.cpp:

(WebCore::collectDescendantLayersAtPoint):

3:10 AM Changeset in webkit [270500] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Unreviewed, reverting r270498.
https://bugs.webkit.org/show_bug.cgi?id=219596

Broke the build as it landed simultaneously with a more
complete fix

Reverted changeset:

"Unreviewed. Add the switch case handling missed out from
r270415."
https://trac.webkit.org/changeset/270498

2:13 AM Changeset in webkit [270499] by Lauro Moura
  • 3 edits in trunk/Source/WebKit

Fix warnings when GPUProcess is disabled
https://bugs.webkit.org/show_bug.cgi?id=219587

Reviewed by Žan Doberšek.

  • UIProcess/API/glib/WebKitNavigationClient.cpp: Handle new enum value

in switch after r270415.

  • WebProcess/WebPage/DrawingArea.cpp:

(WebKit::DrawingArea::supportsGPUProcessRendering): Default returning
false when GPUProcess is disabled.

2:09 AM Changeset in webkit [270498] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebKit

Unreviewed. Add the switch case handling missed out from r270415.

This change removes the build warning below.
warning: enumeration value ‘RequestedByGPUProcess’ not handled in switch [-Wswitch]

No new tests, no new behaviors.

  • UIProcess/API/glib/WebKitNavigationClient.cpp:
1:38 AM Changeset in webkit [270497] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

[JSC] Bundle non-native libs in run-jsc-stress-tests
https://bugs.webkit.org/show_bug.cgi?id=219485

Patch by Angelos Oikonomopoulos <Angelos Oikonomopoulos> on 2020-12-07
Reviewed by Carlos Alberto Lopez Perez.

run-jsc-stress-tests already tries to bundle library dependencies
(on linux) when using the --remote functionality; this ensures
that we don't need to depend on the remote environment exactly
matching the build environment. However, this breaks when
cross-building; run-jsc-stress-tests uses ldd, which relies on
code execution to get the shared object paths.

This patch extends generate-bundle to be able to handle the output
from a cross ldd (specifically, xldd from crosstool-NG) and
changes run-jsc-stress-tests to use generate-bundle for bundling
the libraries for the remotes.

  • Scripts/generate-bundle:
  • Scripts/run-javascriptcore-tests:

(runJSCStressTests):

  • Scripts/run-jsc-stress-tests:
1:19 AM Changeset in webkit [270496] by commit-queue@webkit.org
  • 5 edits in trunk

[GLib] Leaked RunLoop objects on worker threads
https://bugs.webkit.org/show_bug.cgi?id=219232
<rdar://problem/71772277>

Patch by Zan Dobersek <zdobersek@igalia.com> on 2020-12-07
Reviewed by Geoffrey Garen.

Source/WTF:

During the thread-local RunLoop::Holder destruction, explicitly clear out
the iteration Deque objects on the held RunLoop, destroying any Function
objects that never got to execute on this thread. Generally, this allows
for any RunLoop reference stored in these objects to be released.

Specifically, this would allow for destruction of the RunLoop::Timer
object that's queued up in the JSRunLoopTimer::Manager::PerVMData
destructor but never gets dispatched because the thread (a JS worker) is
shut down before that happens. Destruction of the timer will release the
reference of the RunLoop that's held by the RunLoop::Holder, finally
enabling the RunLoop object itself be destroyed once the RunLoop::Holder
reference is let go.

  • wtf/RunLoop.cpp:

(WTF::RunLoop::Holder::~Holder):
(WTF::RunLoop::threadWillExit):

  • wtf/RunLoop.h:

Tools:

Add a unit test covering proper RunLoop teardown upon thread destruction
even if RunLoop references are stored in the dispatch queues.

  • TestWebKitAPI/Tests/WTF/RunLoop.cpp:

(TestWebKitAPI::TEST):

Dec 6, 2020:

9:43 PM Changeset in webkit [270495] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[WPE] Unreviewed test gardening. Follow-up r270469, media-source timeouts.

Also gardened flaky failure in imported/w3c/web-platform-tests/xhr/event-timeout.any.html.

  • platform/glib/TestExpectations:
  • platform/wpe/TestExpectations:
8:54 PM Changeset in webkit [270494] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

Unreviewed. Remove the build warning below since r270414.
warning: redundant move in return statement [-Wredundant-move]

No new tests, no new behaviors.

  • contentextensions/NFAToDFA.cpp:

(WebCore::ContentExtensions::NFAToDFA::convert):

8:31 PM Changeset in webkit [270493] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

Unreviewed. Remove the build warnings below since r270400.
warning: unused parameter ‘foo’ [-Wunused-parameter]

No new tests, no new behaviors.

  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:

(WebCore::GraphicsContextGLOpenGL::getActiveUniforms):

7:03 PM Changeset in webkit [270492] by Lauro Moura
  • 3 edits in trunk/LayoutTests

[GLIB] Gardening wheel and webgl failures

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
4:49 PM Changeset in webkit [270491] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Use WTF_MAKE_FAST_ALLOCATED for some scrolling-related objects
https://bugs.webkit.org/show_bug.cgi?id=219567

Reviewed by Tim Horton.

Make ScrollingCoordinator, ScrollingTree and ScrollingTreeNode be fast-allocated.

  • page/scrolling/ScrollingCoordinator.h:
  • page/scrolling/ScrollingTree.h:
  • page/scrolling/ScrollingTreeNode.h:
4:35 PM Changeset in webkit [270490] by Simon Fraser
  • 5 edits
    2 moves
    1 add in trunk/Source/WebCore

[LFC Display] Move DisplayLayerController to display/compositing
https://bugs.webkit.org/show_bug.cgi?id=219584

Reviewed by Anders Carlsson.

Make a display/compositing directory and move DisplayLayerController.* into it.

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • display/compositing/DisplayLayerController.cpp: Renamed from Source/WebCore/display/DisplayLayerController.cpp.
  • display/compositing/DisplayLayerController.h: Renamed from Source/WebCore/display/DisplayLayerController.h.
1:42 PM Changeset in webkit [270489] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[WebKit] Fix use of std::max_align_t
https://bugs.webkit.org/show_bug.cgi?id=219579

Patch by Samuel Thibault <samuel.thibault@ens-lyon.org> on 2020-12-06
Reviewed by Fujii Hironori.

Standard says that it's alignof(std::max_align_t) that should be used,
not its size, e.g.
https://en.cppreference.com/w/cpp/types/max_align_t
and indeed at least with gcc 10's stddef.h, max_align_t is a structure
containing a long long, a long double, and a float18, thus not a power
of two.

  • Shared/SharedDisplayListHandle.h:

(WebKit::SharedDisplayListHandle::headerSize): Use
alignof(std::max_align_t) instead of sizeof(std::max_align_t).

1:31 PM Changeset in webkit [270488] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

[WTF] Add Unix-generic way of determining the available RAM
https://bugs.webkit.org/show_bug.cgi?id=219570
sysconf(_SC_PHYS_PAGES) and sysconf(_SC_PAGE_SIZE) are a very generic way to get

Patch by Samuel Thibault <samuel.thibault@ens-lyon.org> on 2020-12-06
Reviewed by Fujii Hironori.

  • wtf/RAMSize.cpp:

(WTF::computeRAMSize): Fallback to sysconf to determine RAM size.

12:41 PM Changeset in webkit [270487] by ysuzuki@apple.com
  • 4 edits
    2 adds in trunk

[JSC] get / set for object literal and class should not be escaped
https://bugs.webkit.org/show_bug.cgi?id=219576

Reviewed by Alexey Shvayka.

JSTests:

  • stress/escaped-getter-setter-in-class.js: Added.

(testSyntaxError):
(testSyntaxError.String.raw.A.prototype.u0067.u0065.u0074.m):
(testSyntaxError.String.raw.A):
(testSyntaxError.String.raw.A.prototype.u0073.u0065.u0074.m):

  • stress/escaped-getter-setter-in-object.js: Added.

(testSyntaxError):
(testSyntaxError.String.raw.u0067.u0065.u0074.m):
(testSyntaxError.String.raw.u0073.u0065.u0074.m):

  • test262/expectations.yaml:

Source/JavaScriptCore:

"get" and "set" for getter and setter should not be escaped one.
Terminal symbols of the lexical grammars are shown in fixed width font [1],
and are to appear in a script exactly as written.

[1]: https://tc39.es/ecma262/#sec-method-definitions

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseProperty):

11:21 AM Changeset in webkit [270486] by youenn@apple.com
  • 14 edits in trunk

Add support for RTCRtpSender::setStreams
https://bugs.webkit.org/show_bug.cgi?id=219542

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback-expected.txt:
  • web-platform-tests/webrtc/RTCRtpSender-setStreams.https-expected.txt:

Source/WebCore:

Pipe stream IDs from WebCore sender to libqebrtc backend sender.
A follow-up patch should handle creation of remote streams in case of renegotiation.
Covered by updated and rebased tests.

  • Modules/mediastream/RTCRtpSender.cpp:

(WebCore::RTCRtpSender::create):
(WebCore::RTCRtpSender::RTCRtpSender):
(WebCore::RTCRtpSender::setStreams):
(WebCore::RTCRtpSender::setMediaStreamIds):

  • Modules/mediastream/RTCRtpSender.h:
  • Modules/mediastream/RTCRtpSender.idl:
  • Modules/mediastream/RTCRtpSenderBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::LibWebRTCPeerConnectionBackend::addTrack):
(WebCore::LibWebRTCPeerConnectionBackend::addTransceiverFromTrackOrKind):
(WebCore::LibWebRTCPeerConnectionBackend::newRemoteTransceiver):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:

(WebCore::LibWebRTCRtpSenderBackend::setMediaStreamIds):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:

LayoutTests:

  • webrtc/video.html:
10:58 AM Changeset in webkit [270485] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] BoxGeometry should provide an enclosing rect for multiline inline boxes
https://bugs.webkit.org/show_bug.cgi?id=219574

Reviewed by Antti Koivisto.

This patch add support for multiline inline box geometry (e.g. <span>first<br>second</span>)
In such cases we turn the content box into the enclosing rect (border and padding do not make too much sense in multiline case)
This is not to be confused with Element.getClientRects() which returns a list of rects where border and padding start making sense.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):
set the box geometry depending on whether this is the first line where the inline box shows or we are processing an in-between or end line.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::enclosingBorderBoxRectFor const):

  • layout/layouttree/LayoutGeometryRect.h:

(WebCore::Layout::Rect::moveBy):
(WebCore::Layout::Rect::expandToContain):

10:47 AM Changeset in webkit [270484] by Simon Fraser
  • 10 edits in trunk/Source/WebCore

[LFC Display] Move border radii to BoxRareGeometry
https://bugs.webkit.org/show_bug.cgi?id=219581

Reviewed by Zalan Bujtas.

Border radius is not a box decoration, since it affects rendering (e.g. clipping)
when there are no decorations, so move it to BoxRareGeometry.

  • display/css/DisplayBoxDecorationData.cpp:

(WebCore::Display::roundedRectWithIncludedRadii): Deleted.
(WebCore::Display::roundedInsetBorderForRect): Deleted.
(WebCore::Display::BoxDecorationData::hasBorderRadius const): Deleted.

  • display/css/DisplayBoxDecorationData.h:

(WebCore::Display::BoxDecorationData::borderRadii const): Deleted.
(WebCore::Display::BoxDecorationData::setBorderRadii): Deleted.

  • display/css/DisplayBoxDecorationPainter.cpp:

(WebCore::Display::BoxDecorationPainter::BoxDecorationPainter):
(WebCore::Display::BoxDecorationPainter::paintBoxShadow const):
(WebCore::Display::BoxDecorationPainter::paintBackground const):
(WebCore::Display::BoxDecorationPainter::determineBackgroundBleedAvoidance):
(WebCore::Display::BoxDecorationPainter::computeBorderRect): Deleted.

  • display/css/DisplayBoxDecorationPainter.h:
  • display/css/DisplayBoxFactory.cpp:

(WebCore::Display::BoxFactory::constructBoxDecorationData const):
(WebCore::Display::BoxFactory::constructBoxRareGeometry const):

  • display/css/DisplayBoxModelBox.cpp:

(WebCore::Display::BoxModelBox::hasBorderRadius const):
(WebCore::Display::BoxModelBox::borderRoundedRect const):
(WebCore::Display::BoxModelBox::innerBorderRoundedRect const):
(WebCore::Display::BoxModelBox::clipForDescendants const):

  • display/css/DisplayBoxModelBox.h:
  • display/css/DisplayBoxRareGeometry.cpp:

(WebCore::Display::BoxRareGeometry::hasBorderRadius const):
(WebCore::Display::roundedRectWithIncludedRadii):
(WebCore::Display::roundedInsetBorderForRect):

  • display/css/DisplayBoxRareGeometry.h:

(WebCore::Display::BoxRareGeometry::borderRadii const):
(WebCore::Display::BoxRareGeometry::setBorderRadii):

6:53 AM Changeset in webkit [270483] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Disable RenderCounter content
https://bugs.webkit.org/show_bug.cgi?id=219573

Reviewed by Antti Koivisto.

RenderCounters are not supported yet.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForChild):

5:38 AM Changeset in webkit [270482] by Lauro Moura
  • 3 edits in trunk/Source/WebKit

Unreviewed. Add missing GPU_PROCESS guards around RemoteMediaEngineConfigurationFactory after r270462
https://bugs.webkit.org/show_bug.cgi?id=219578

Was breaking the Ubuntu LTS/Debian builds.

  • WebProcess/GPU/media/RemoteMediaEngineConfigurationFactory.cpp:
  • WebProcess/WebProcess.cpp:
12:41 AM Changeset in webkit [270481] by ysuzuki@apple.com
  • 8 edits
    1 add in trunk

[JSC] Accept escaped keywords for class and object property names
https://bugs.webkit.org/show_bug.cgi?id=219575

Reviewed by Alexey Shvayka.

JSTests:

  • stress/syntax-error-if-escaped-keyword-used-as-target-object-pattern.js: Added.

(testSyntaxError):

  • test262/expectations.yaml:

Source/JavaScriptCore:

In this patch, we accept escaped keywords for class, object, and object pattern property names.

var object = {

bre\u0061k: 42

};

When escaped keyword appears, we produce ESCAPED_KEYWORD with CanBeErrorTokenFlag. Now CanBeErrorTokenFlag
represents "when this token appears in an error condition, possibly this is error token and special message will appear",
instead of saying this token is definitely an error. So we can just use ESCAPED_KEYWORD token to handle this case.

  • parser/Lexer.cpp:

(JSC::Lexer<CharacterType>::parseIdentifierSlowCase):
(JSC::Lexer<T>::lexWithoutClearingLineTerminator):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseDestructuringPattern):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseProperty):
(JSC::Parser<LexerType>::printUnexpectedTokenText):

  • parser/Parser.h:

(JSC::Parser<LexerType>::parse):

  • parser/ParserTokens.h:

Dec 5, 2020:

6:47 PM Changeset in webkit [270480] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

REGRESSION (r268075): Animations at the top of https://browserbench.org/JetStream/ are very slow
https://bugs.webkit.org/show_bug.cgi?id=219447
<rdar://problem/71905123>

Reviewed by Sam Weinig.

SVG images have their own Page, and when they request rendering updates, they have to go through
ChromeClient, but that was missing for the Page::renderingUpdateCompleted() code path.
Make scheduleRenderingUpdateInternal() and call it from the two relevant places.

I tried making both a ref test and a test using internals.renderingUpdateCount(), but neither
were reliable. There's no way to get a signal out from the <img src="*.svg"> to say that
the animation has started, requiring tests to have flakey setTimeouts.

  • page/Page.cpp:

(WebCore::Page::scheduleRenderingUpdate):
(WebCore::Page::scheduleRenderingUpdateInternal):
(WebCore::Page::renderingUpdateCompleted):

  • page/Page.h:
4:22 PM Changeset in webkit [270479] by Said Abou-Hallawa
  • 2 edits in trunk/Source/WebCore

REGRESSION(r270458): Crash loading https://browserbench.org/JetStream/
https://bugs.webkit.org/show_bug.cgi?id=219568

Reviewed by Tim Horton.

Get the backendSize before sinking it into a NativeImage.

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:

(WebCore::ImageBufferIOSurfaceBackend::drawConsuming):

2:17 PM Changeset in webkit [270478] by Wenson Hsieh
  • 25 edits in trunk

[Concurrent display lists] Synchronize display list rendering across remote image buffers
https://bugs.webkit.org/show_bug.cgi?id=219091
<rdar://problem/71747695>

Reviewed by Geoff Garen.

Source/WebCore:

See Source/WebKit/ChangeLog for more details.

  • platform/graphics/ImageBuffer.h:
  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::append):

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

(WebCore::DisplayList::ItemHandle::apply):
(WebCore::DisplayList::ItemHandle::destroy):
(WebCore::DisplayList::ItemHandle::copyTo const):
(WebCore::DisplayList::ItemBuffer::swapWritableBufferIfNeeded):

Add plumbing so that didAppendData can inform the client whether the data was appended after switching to a
new buffer. In WebKit2's remote image buffer, we use this information to determine whether or not we need to
send a wakeup message to the GPU process. Namely, in the case of DidChangeItemBuffer::Yes, we don't need to
wake up the GPU process even though the unread bytes count was 0 before we advanced, since the GPU process will
automatically progress to this item buffer when it's done processing items in the previous item buffer.

See WebKit changes (in RemoteImageBufferProxy) for more details.

(WebCore::DisplayList::ItemBuffer::append):
(WebCore::DisplayList::ItemBuffer::didAppendData):
(WebCore::DisplayList::ItemBuffer::appendEncodedData): Deleted.

  • platform/graphics/displaylists/DisplayListItemBuffer.h:

Add a new ItemBufferWritingClient method to inform clients when new bytes are appended to an item buffer,
given the additional number of bytes added and the item buffer handle.

(WebCore::DisplayList::ItemBuffer::append):
(WebCore::DisplayList::ItemBuffer::uncheckedAppend):

  • platform/graphics/displaylists/DisplayListItemType.cpp:

(WebCore::DisplayList::sizeOfItemInBytes):
(WebCore::DisplayList::isDrawingItem):
(WebCore::DisplayList::isInlineItem):

Remove MetaCommandEnd. I introduced this item type because I was going to make the GPU process always sleep for
more display list item data, but I've since changed the approach so that the GPU process goes to sleep naturally
when it's done processing all unread bytes.

  • platform/graphics/displaylists/DisplayListItemType.h:
  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::operator<<):

  • platform/graphics/displaylists/DisplayListItems.h:
  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::flushContext):

Add a new helper method to append a FlushContext item via the display list recorder, to ensure that the
appropriate recorder delegate methods are invoked when appending a "flush context" item.

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::Replayer::replay):

  • platform/graphics/displaylists/DisplayListReplayer.h:

Source/WebKit:

Refactors the existing concurrent display list processing mechanism, such that we no longer update the unread
bytes count every 512 items (or when flushing the drawing context), and instead update it every time we append
display list item data. In order to achieve this without making it impossible for multiple display-list backed
image buffers to render simultaneously, we also add support for synchronizing display list items across
different image buffers by using the new meta command items added in bug #219262. As detailed in the ChangeLog
for that bug, a stream of display list data written by the web process and consumed by the GPU process is now
structured like so:

Wakeup message initiates display list processing with Image Buffer A and Item Buffer 1

|
| MetaCommandChangeDestinationImageBuffer(B)
| |
| | MetaCommandChangeItemBuffer(2)
| | |
| | |
v v v
+-----------------------+--------------------------------++
| +--------------------+ +------------------------------+ |
| | Destination | | Destination | | Item Buffer 1
| | Image Buffer A | | Image Buffer B | |
| +--------------------+ +------------------------------+ |
+---------------------------------------------------------+

+---------------------------------------------------------+
| +--------------+ +-----------------------+ |
| | Dst. Image | | Destination Image | Unused | Item Buffer 2
| | Buffer B | | Buffer A | Capacity |
| +--------------+ +-----------------------+ |
+-----------------+-------------------------+-------------+


|
|

MetaCommandChangeDestinationImageBuffer(A)

(Note that the MetaCommandEnd item has been omitted, since we no longer need to explicitly tell the GPU
process to go to sleep with the latest iteration of this patch).

In order to write display list data conforming to this format, we add a mechanism to the web process that keeps
track of the "current destination image buffer" (i.e. the image buffer that has most recently
appended a display list item). Right before this destination is about to change, we append a new
MetaCommandChangeDestinationImageBuffer item before proceeding to append display list items for the new
current destination.

Since we now bump the unread count every time, we need to do some additional work to avoid an excessive number
of wakeups and sleeps in the GPU process, which would otherwise cause a massive regression. To do this, we
introduce an item count hysteresis in the web process, such that we will wait for 512 items to be written before
attempting to send the wakeup message. This allows the web process to get a small head start over the GPU
process, and thus allows the GPU process to be more consistently busy over the course of a single frame.

On the reader (GPU process) side, we make some minor adjustments so that the main display list processing loop
of the GPU process is capable of changing destination image buffers while processing a stream of display list
items.

See below for more details.

  • GPUProcess/graphics/DisplayListReaderHandle.cpp:

(WebKit::DisplayListReaderHandle::advance):

Update advance so that it just performs a single 8-byte atomic exchangeSub rather than grabbing a spinlock.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::submit):
(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):

Rename applyDisplayListsFromHandle to nextDestinationImageBufferAfterApplyingDisplayLists, and make it
return the current image buffer to use as the destination for replaying display list commands. This helper is
still responsible for replaying a display list item buffer until it has no more data (that is, until we
encounter a MetaCommandChangeItemBuffer item informing us of the next item buffer to consume).

(WebKit::RemoteRenderingBackend::wakeUpAndApplyDisplayList):

Adjust this to call nextDestinationImageBufferAfterApplyingDisplayLists.

(WebKit::RemoteRenderingBackend::decodeItem):
(WebKit::RemoteRenderingBackend::applyDisplayListsFromHandle): Deleted.

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • Shared/SharedDisplayListHandle.h:

Remove SharedDisplayListHandle::Lock altogether, now that we just have a single atomic uint64_t counter to
represent the number of unread bytes.

(WebKit::SharedDisplayListHandle::unreadBytes):
(WebKit::SharedDisplayListHandle::Lock::Lock): Deleted.
(WebKit::SharedDisplayListHandle::Lock::~Lock): Deleted.

  • WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:

(WebKit::DisplayListWriterHandle::advance):

Make this use the single atomic counter, instead of grabbing a spinlock.

(WebKit::DisplayListWriterHandle::moveWritableOffsetToStartIfPossible):
(WebKit::DisplayListWriterHandle::resetWritableOffsetIfPossible): Deleted.

Rename resetWritableOffsetIfPossible to the more accurate moveWritableOffsetToStartIfPossible.

  • WebProcess/GPU/graphics/DisplayListWriterHandle.h:
  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::changeDestinationImageBuffer):

Add a helper method to append a MetaCommandChangeDestinationImageBuffer item to the display list, given the
identifier of this next item buffer.

(WebKit::RemoteImageBufferProxy::clearDisplayList):

Add a helper method to clear the display list, such that the RemoteImageBufferProxy will be asked for a new
buffer handle the next time we append an item.

(WebKit::RemoteImageBufferProxy::waitForDidFlushWithTimeout):

Make this hit the maximum waitForAndDispatchImmediately attempt count and "fail" only if the call to
waitForAndDispatchImmediately actually times out. This change is necessary to ensure that the scenario of
multiple image buffers simultaneously appending display list items works when all image buffers perform (non-
blocking) flushes simultaneously, followed by a sync-wait (blocking) flush. In this situation, the web process
may receive more than three DidFlush messages in rapid succession, causing it to hit this maximum limit of 3
instantly and avoid waiting for the expected DidFlush message to arrive.

(WebKit::RemoteImageBufferProxy::submitDisplayList): Deleted.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::gpuProcessConnectionDidClose):

Reset state when the GPU process is terminated.

(WebKit::RemoteRenderingBackendProxy::willAppendItem):

Update the current destination image buffer (m_currentDestinationImageBufferIdentifier). If this identifier
changed, then we append a MetaCommandChangeDestinationImageBuffer item to the previous destination before
setting the new destination image buffer. We also need to clear the new destination image buffer's display list
before writing new items, to prevent it from overwriting shared display list item data.

(WebKit::RemoteRenderingBackendProxy::sendWakeupMessage):
(WebKit::RemoteRenderingBackendProxy::sendDeferredWakeupMessageIfNeeded):
(WebKit::RemoteRenderingBackendProxy::didAppendData):

Implement a new ItemBufferWritingClient hook by advancing the corresponding item buffer's unread count.
Additionally, schedule a wakeup message in the case where the unread count was zero when we advanced, and the
item buffer we've appended to is not "connected" to a previous item buffer by way of an item buffer change item.

Additionally, in the case where we don't schedule a new wakeup message, check whether or not there is a deferred
wakeup message; if there is, then decrement the remaining item count before we send the wakeup message, and send
the message if the count reaches 0.

(WebKit::RemoteRenderingBackendProxy::findReusableDisplayListHandle):

Pull logic to find a shared display list handle suitable for reuse into a separate helper method, and adjust it
so that if the most recently used display list handle has run out of available capacity, we move it to the end
of the reuse queue and only reuse the new first shared handle in the queue if its writable offset can be reset.
This ensures that the GPU process can always continue reading display list item data from the start of new item
buffers -- i.e., we don't end up with the web process writing out a stream of display list data like:

(Start) Bytes (16, 65520) in ItemBuffer[1]

Bytes (16, 65536) in ItemBuffer[2]
Bytes (65520, 65536) in ItemBuffer[1]

(WebKit::RemoteRenderingBackendProxy::createItemBuffer):
(WebKit::RemoteRenderingBackendProxy::submitDisplayList): Deleted.
(WebKit::RemoteRenderingBackendProxy::updateReusableHandles): Deleted.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp:

(TestWebKitAPI::TEST):

1:28 PM Changeset in webkit [270477] by Fujii Hironori
  • 62 edits in trunk

Remove ENABLE_GRAPHICS_CONTEXT_GL by replacing it with ENABLE(WEBGL)
https://bugs.webkit.org/show_bug.cgi?id=219551

Reviewed by Kenneth Russell.

.:

  • Source/CMakeLists.txt:
  • Source/cmake/GStreamerDependencies.cmake:
  • Source/cmake/OptionsFTW.cmake:
  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/OptionsPlayStation.cmake:
  • Source/cmake/OptionsWPE.cmake:
  • Source/cmake/OptionsWinCairo.cmake:

Source/WebCore:

GraphicsContextGL is a module only for WebGL. ENABLE_WEBGL should
be removed if all ports enable it.

  • CMakeLists.txt:
  • page/Chrome.cpp:

(WebCore::Chrome::windowScreenDidChange):

  • platform/graphics/ANGLEWebKitBridge.cpp:
  • platform/graphics/ANGLEWebKitBridge.h:
  • platform/graphics/FormatConverter.cpp:
  • platform/graphics/FormatConverter.h:
  • platform/graphics/GLContext.cpp:
  • platform/graphics/GLContext.h:
  • platform/graphics/GraphicsContextGL.cpp:
  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/GraphicsContextGLAttributes.h:
  • platform/graphics/GraphicsContextGLImageExtractor.cpp:
  • platform/graphics/GraphicsContextGLImageExtractor.h:
  • platform/graphics/OpenGLShims.cpp:
  • platform/graphics/angle/ExtensionsGLANGLE.cpp:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:
  • platform/graphics/angle/GraphicsContextGLANGLEUtilities.h:
  • platform/graphics/angle/TemporaryANGLESetting.cpp:
  • platform/graphics/cairo/GraphicsContextGLCairo.cpp:
  • platform/graphics/cg/GraphicsContextGLCG.cpp:
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:
  • platform/graphics/cv/GraphicsContextGLCV.h:
  • platform/graphics/cv/GraphicsContextGLCVANGLE.cpp:
  • platform/graphics/cv/GraphicsContextGLCVANGLE.h:
  • platform/graphics/egl/GLContextEGL.cpp:
  • platform/graphics/egl/GLContextEGL.h:
  • platform/graphics/glx/GLContextGLX.cpp:
  • platform/graphics/glx/GLContextGLX.h:
  • platform/graphics/nicosia/texmap/NicosiaGCGLANGLELayer.h:
  • platform/graphics/opengl/ExtensionsGLOpenGL.cpp:
  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.cpp:
  • platform/graphics/opengl/ExtensionsGLOpenGLES.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGLES.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGLManager.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGLPrivate.cpp:
  • platform/graphics/opengl/TemporaryOpenGLSetting.cpp:
  • platform/graphics/opengl/TemporaryOpenGLSetting.h:
  • platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:
  • platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:
  • platform/graphics/texmap/TextureMapperGCGLPlatformLayer.h:
  • platform/graphics/win/GraphicsContextGLDirect2D.cpp:

Source/WebKit:

  • CMakeLists.txt:
  • UIProcess/API/glib/WebKitProtocolHandler.cpp:

(WebKit::WebKitProtocolHandler::handleGPU):

  • UIProcess/gtk/HardwareAccelerationManager.cpp:

(WebKit::HardwareAccelerationManager::HardwareAccelerationManager):

Source/WTF:

  • wtf/Platform.h:
  • wtf/PlatformEnable.h:
1:25 PM Changeset in webkit [270476] by Andres Gonzalez
  • 4 edits in trunk/Source/WebCore

Prelininary refactoring of TextMarker and TextMarkerRange.
https://bugs.webkit.org/show_bug.cgi?id=219491

Reviewed by Chris Fleizach.

Covered by existing tests.

TextMarker and TextMarkerRange should become classes on their own right.
As a first step in that direction, this patch moves all the static
functions in WebAccessibilityObjectWrapperMac.mm to make conversions
between TextMarkers and TextMarkerRanges to and from other types to
AXObjectCacheMac.mm.
In addition, removed all ObjectiveC wrappers to these functions and
instead call the functions directly where needed. This is relevant now
with the arrival of isolated tree mode because it saves a non-trivial
call to the wrapper's axBackingObject getter. Furthermore, all the
conversion functions are doing now the appropriate thread check, since
they all need to run on the main thread.
Fixed the handling of the NSAccessibilityMisspellingTextMarkerRangeParameterizedAttribute
request that was calling accessibilityMisspellingSearchCriteriaForParameterizedAttribute
off of the main thread.

  • accessibility/mac/AXObjectCacheMac.mm:

(WebCore::AXObjectCache::postTextStateChangePlatformNotification):
(WebCore::AXTextMarkerRange):
(WebCore::textMarkerRangeFromMarkers):
(WebCore::AXTextMarkerRangeStart):
(WebCore::AXTextMarkerRangeEnd):
(WebCore::getBytesFromAXTextMarker):
(WebCore::accessibilityObjectForTextMarker):
(WebCore::textMarkerForVisiblePosition):
(WebCore::visiblePositionForTextMarker):
(WebCore::textMarkerRangeFromVisiblePositions):
(WebCore::visiblePositionRangeForTextMarkerRange):
(WebCore::textMarkerForCharacterOffset):
(WebCore::characterOffsetForTextMarker):
(WebCore::startOrEndTextMarkerForRange):
(WebCore::textMarkerRangeFromRange):
(WebCore::rangeForTextMarkerRange):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.h:
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(accessibilityTextOperationForParameterizedAttribute):
(accessibilityMisspellingSearchCriteriaForParameterizedAttribute):
(-[WebAccessibilityObjectWrapper textMarkerForVisiblePosition:]):
(-[WebAccessibilityObjectWrapper textMarkerForFirstPositionInTextControl:]):
(-[WebAccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange:spellCheck:]):
(-[WebAccessibilityObjectWrapper textMarkerRangeFromVisiblePositions:endPosition:]):
(-[WebAccessibilityObjectWrapper textMarkerRangeForSelection]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]):
(-[WebAccessibilityObjectWrapper _indexForTextMarker:]):
(-[WebAccessibilityObjectWrapper _textMarkerForIndex:]):
(-[WebAccessibilityObjectWrapper debugDescriptionForTextMarker:]):
(-[WebAccessibilityObjectWrapper debugDescriptionForTextMarkerRange:]):
(-[WebAccessibilityObjectWrapper showNodeForTextMarker:]):
(-[WebAccessibilityObjectWrapper showNodeTreeForTextMarker:]):
(-[WebAccessibilityObjectWrapper textMarkerRangeAtTextMarker:forUnit:]):
(-[WebAccessibilityObjectWrapper lineTextMarkerRangeForTextMarker:forUnit:]):
(-[WebAccessibilityObjectWrapper textMarkerForTextMarker:atUnit:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
(AXTextMarkerRangeStart): MOved to AXObjectCacheMac.mm.
(AXTextMarkerRangeEnd): MOved to AXObjectCacheMac.mm.
(getBytesFromAXTextMarker): MOved to AXObjectCacheMac.mm.
(isTextMarkerIgnored): Deleted.
(-[WebAccessibilityObjectWrapper accessibilityObjectForTextMarker:]): Deleted.
(accessibilityObjectForTextMarker): MOved to AXObjectCacheMac.mm.
(-[WebAccessibilityObjectWrapper textMarkerForCharacterOffset:]): Deleted.
(textMarkerForCharacterOffset): MOved to AXObjectCacheMac.mm.
(-[WebAccessibilityObjectWrapper rangeForTextMarkerRange:]): Deleted.
(characterOffsetForTextMarker): MOved to AXObjectCacheMac.mm.
(-[WebAccessibilityObjectWrapper characterOffsetForTextMarker:]): Deleted.
(visiblePositionForTextMarker): MOved to AXObjectCacheMac.mm.
(visiblePositionRangeForTextMarkerRange): MOved to AXObjectCacheMac.mm.
(-[WebAccessibilityObjectWrapper visiblePositionForTextMarker:]): Deleted.
(-[WebAccessibilityObjectWrapper visiblePositionRangeForTextMarkerRange:]): Deleted.

1:18 PM Changeset in webkit [270475] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Add ScrollAnimation files to the Xcode project
https://bugs.webkit.org/show_bug.cgi?id=219566

Reviewed by Yusuke Suzuki.

ScrollAnimation* files were added to Sources.txt but not the Xcode project.

  • WebCore.xcodeproj/project.pbxproj:
10:53 AM Changeset in webkit [270474] by Simon Fraser
  • 14 edits
    2 copies in trunk/Source/WebCore

[LFC Display] Store the display tree as a tree of stacking items
https://bugs.webkit.org/show_bug.cgi?id=219315

Reviewed by Zalan Bujtas.

Currently the display tree is a full tree, crossing stacking context boundaries, and the
z-order lists are built at paint time.

Change to a tree of StackingItems, where a StackingItem exists for each box that
participates in the z-order sorting algorithm (i.e. boxes that are positioned, or have
styles that create stacking context). Each StackingItem owns the subtree of Display::Boxes
that it paints, and those subtrees are not otherwise connected.

The Display::Tree owns the root StackingItem, and each StackingItem owns its child
StackingItems. The StackingItem tree is built at display tree building time by storing state
in the BuildingState stack. StackingItems are added to the z-order lists of their parent
item at creation time; when done processing boxes for a StackingItem, we then sort its
z-order lists.

Add Box::participatesInZOrderSorting() and a LineBreakBox flag, and call that function
instead of the version on Display::Style to work around webkit.org/b/219335 for now.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • display/DisplayLayerController.cpp:
  • display/DisplayTree.cpp:

(WebCore::Display::Tree::Tree):
(WebCore::Display::Tree::rootBox const):

  • display/DisplayTree.h:

(WebCore::Display::Tree::rootStackingItem const):
(WebCore::Display::Tree::rootBox const): Deleted.

  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::TreeBuilder::build):
(WebCore::Display::TreeBuilder::pushStateForBoxDescendants):
(WebCore::Display::TreeBuilder::popState):
(WebCore::Display::TreeBuilder::insertIntoTree):
(WebCore::Display::TreeBuilder::buildInlineDisplayTree):
(WebCore::Display::TreeBuilder::recursiveBuildDisplayTree):
(WebCore::Display::outputDisplayBox):
(WebCore::Display::outputDisplayTree):
(WebCore::Display::displayTreeAsText):
(WebCore::Display::outputStackingTree):
(WebCore::Display::showDisplayTree):

  • display/DisplayTreeBuilder.h:
  • display/css/DisplayBox.cpp:

(WebCore::Display::Box::participatesInZOrderSorting const):

  • display/css/DisplayBox.h:

(WebCore::Display::Box::isLineBreakBox const):

  • display/css/DisplayBoxFactory.cpp:

(WebCore::Display::BoxFactory::displayBoxForRootBox const):
(WebCore::Display::BoxFactory::displayBoxForLayoutBox const):
(WebCore::Display::BoxFactory::setupBoxModelBox const):

  • display/css/DisplayBoxFactory.h:
  • display/css/DisplayCSSPainter.cpp:

(WebCore::Display::CSSPainter::recursivePaintDescendantsForPhase):
(WebCore::Display::CSSPainter::paintAtomicallyPaintedBox):
(WebCore::Display::CSSPainter::paintStackingContext):
(WebCore::Display::CSSPainter::paintTree):
(WebCore::Display::CSSPainter::isStackingContextPaintingBoundary): Deleted.
(WebCore::Display::CSSPainter::participatesInZOrderSorting): Deleted.
(WebCore::Display::CSSPainter::collectStackingContextDescendants): Deleted.
(WebCore::Display::CSSPainter::recursiveCollectLayers): Deleted.

  • display/css/DisplayCSSPainter.h:
6:23 AM Changeset in webkit [270473] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Create an inline box for </span> when it's the first box on the line
https://bugs.webkit.org/show_bug.cgi?id=219556

Reviewed by Antti Koivisto.

When the line starts with inline-box-end (</span>), we need to create an inline box for that box itself
and for its ancestors as well.

This fixes css1/units/rounding.html with ALLOW_INLINES enabled.

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):

6:21 AM Changeset in webkit [270472] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Do not construct a new layout box for every inline box end (InlineWalker)
https://bugs.webkit.org/show_bug.cgi?id=219557

Reviewed by Antti Koivisto.

We use the InlineWalker to walk the inline part of the render tree to build the corresponding layout (sub)tree.

With content e.g <span>text</span>, InlineWalker visits

  1. <span> (RenderInline)
  2. text (RenderText)
  3. </span> (RenderInline)

This patch ensures that we don't create yet another layout box for step #3.

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::BoxTree::buildTree):

3:54 AM Changeset in webkit [270471] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening. Gardened more media-source timeouts.

  • platform/gtk/TestExpectations:

Dec 4, 2020:

9:59 PM Changeset in webkit [270470] by Said Abou-Hallawa
  • 2 edits
    1 delete in trunk/Source/WebKit

[GPU Process] Remove ConcreteShareableImageBuffer
https://bugs.webkit.org/show_bug.cgi?id=219563

Reviewed by Simon Fraser.

Delete this class since the only function it implements:
'createImageBufferBackendHandle()' is not used.

  • Shared/ConcreteShareableImageBuffer.h: Removed.
  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer):

9:49 PM Changeset in webkit [270469] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GLIB] Gardening media-source timeouts

Unreviewed test gardening.

  • platform/glib/TestExpectations:
5:26 PM Changeset in webkit [270468] by Chris Dumez
  • 12 edits in trunk/Source/WebCore

Simplify audio resampling code
https://bugs.webkit.org/show_bug.cgi?id=219560

Reviewed by Darin Adler.

Made the following changes to simplify / improve the resampling code:

  • MultiChannelResampler & SincResampler now take a lambda upon construction to fetch input data, instead of taking a AudioSourceProvider pointer whenever process() is called.
  • We can now get rid of the whole MultiChannelResampler::ChannelProvider class and have the lambda call MultiChannelResampler::provideInputForChannel() instead. Similarly, we can also get rid of SincResampler's BufferSourceProvider.
  • As an optimization, MultiChannelResampler::process() now has a fast path when the AudioBus only has a single channel, to avoid the processing-in-chunks logic. The chunking logic is only needed when there are multiple channels, to make sure that provideInputForChannel() only gets called once per channel, to avoid confusing its logic. This is similar to what Chromium does.
  • Modules/webaudio/MediaElementAudioSourceNode.cpp:

(WebCore::MediaElementAudioSourceNode::setFormat):
(WebCore::MediaElementAudioSourceNode::provideInput):
(WebCore::MediaElementAudioSourceNode::process):

  • Modules/webaudio/MediaElementAudioSourceNode.h:
  • Modules/webaudio/MediaStreamAudioSourceNode.cpp:

(WebCore::MediaStreamAudioSourceNode::setFormat):
(WebCore::MediaStreamAudioSourceNode::provideInput):
(WebCore::MediaStreamAudioSourceNode::process):

  • Modules/webaudio/MediaStreamAudioSourceNode.h:
  • platform/audio/AudioBus.cpp:

(WebCore::AudioBus::createBySampleRateConverting):

  • platform/audio/MultiChannelResampler.cpp:

(WebCore::MultiChannelResampler::MultiChannelResampler):
(WebCore::MultiChannelResampler::process):
(WebCore::MultiChannelResampler::provideInputForChannel):

  • platform/audio/MultiChannelResampler.h:
  • platform/audio/SincResampler.cpp:

(WebCore::SincResampler::SincResampler):
(WebCore::SincResampler::processBuffer):
(WebCore::SincResampler::process):

  • platform/audio/SincResampler.h:
  • platform/audio/cocoa/AudioDestinationCocoa.cpp:

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

  • platform/audio/cocoa/AudioDestinationCocoa.h:
4:55 PM Changeset in webkit [270467] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

[iOS] Cancel image extraction when navigating
https://bugs.webkit.org/show_bug.cgi?id=219559
<rdar://problem/71997004>

Reviewed by Tim Horton.

Call -_cancelImageExtraction during mainframe navigation. See WebKitAdditions change for more information.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _webTouchEventsRecognized:]):
(-[WKContentView _didStartProvisionalLoadForMainFrame]):

4:28 PM Changeset in webkit [270466] by Jonathan Bedard
  • 8 edits in trunk/Tools

[webkitscmpy] local.Svn reports incorrect timestamps
https://bugs.webkit.org/show_bug.cgi?id=219549
<rdar://problem/71989052>

Rubber-stamped by Aakash Jain.

  • Scripts/libraries/webkitscmpy/setup.py: Remote dateutil dependency. Add svn remote dependencies.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version, move dateutil library hook.
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:

(Svn.commit): Increment parsed time by UTC delta instead of configuring timezone.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/svn.py:

(Svn): Allow caller to specify UTC offset, treat all times as UTC to avoid issues with the
local timezone.

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

(TestLocalSvn.test_info):

  • Scripts/webkitpy/init.py: Move dateutil library hook.
3:39 PM Changeset in webkit [270465] by Russell Epstein
  • 1 copy in tags/Safari-610.3.7.1.9

Tag Safari-610.3.7.1.9.

3:37 PM Changeset in webkit [270464] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][IFC] Add support for intrusive floats when line gets stretched vertically
https://bugs.webkit.org/show_bug.cgi?id=219528

Reviewed by Antti Koivisto.

Source/WebCore:

This patch adds supports for cases when the the candidate content stretches the line vertically
and we need to check if additional floats are getting in the way and adjust the available horizontal width accordingly.

Test: fast/layoutformattingcontext/intrusive-floats-and-stretchy-lines-simple.html

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineCandidate::InlineContent::hasInlineLevelBox const):
(WebCore::Layout::LineCandidate::InlineContent::appendInlineItem):
(WebCore::Layout::LineCandidate::InlineContent::reset):
(WebCore::Layout::LineBuilder::handleInlineContent):

LayoutTests:

  • fast/layoutformattingcontext/intrusive-floats-and-stretchy-lines-simple-expected.html: Added.
  • fast/layoutformattingcontext/intrusive-floats-and-stretchy-lines-simple.html: Added.
2:58 PM Changeset in webkit [270463] by jer.noble@apple.com
  • 8 edits in trunk/Source

[Cocoa] Adopt AVOutputDevice.allowsHeadTrackedSpatialAudio
https://bugs.webkit.org/show_bug.cgi?id=219503

Reviewed by Eric Carlson.

Source/WebCore:

AudioConfiguration.spatialRendering is an Optional<bool>, so it both needs to be
null-checked and also value checked. Additionally, WTF::allOf() will return true if the
passed in container is empty, so empty-check that container in addition to checking its
contents.

  • platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp:

(WebCore::createMediaPlayerDecodingConfigurationCocoa):

Source/WebCore/PAL:

On macOS, clients who wish to query head tracking AVOutputDevice capabilities must use the
sharedSystemAudioContext--not the sharedAudioPresentationOutputContext--to do so. This context
requires a specific entitlement to use.

In addition to querying -supportsHeadTrackedSpatialAudio, also query
-allowsHeadTrackedSpatialAudio, if present, to determine whether the current route supports
spatialization.

  • pal/avfoundation/OutputContext.mm:

(PAL::OutputContext::sharedAudioPresentationOutputContext):

  • pal/avfoundation/OutputDevice.mm:

(PAL::OutputDevice::supportsSpatialAudio const):

  • pal/spi/cocoa/AVFoundationSPI.h:

Source/WebKit:

Adopt the "com.apple.avfoundation.allow-system-wide-context" entitlement on macOS for both the WebContent and GPU processes.

  • Scripts/process-entitlements.sh:
2:57 PM Changeset in webkit [270462] by jer.noble@apple.com
  • 34 edits
    1 copy
    4 adds in trunk/Source

[GPUP] Move MediaCapabilities into the GPU process
https://bugs.webkit.org/show_bug.cgi?id=219521

Reviewed by Eric Carlson.

Source/WebCore:

Add encode() and decode() operations to all structs used inside
MediaEngineConfigurationFactory. Add the ability for clients to provide
their own factories for use in MediaEngineConfigurationFactory.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/MediaCapabilitiesDecodingInfo.h:

(WebCore::MediaCapabilitiesDecodingInfo::encode const):
(WebCore::MediaCapabilitiesDecodingInfo::decode):

  • platform/MediaCapabilitiesEncodingInfo.h:

(WebCore::MediaCapabilitiesEncodingInfo::encode const):
(WebCore::MediaCapabilitiesEncodingInfo::decode):

  • platform/MediaCapabilitiesInfo.h:

(WebCore::MediaCapabilitiesInfo::encode const):
(WebCore::MediaCapabilitiesInfo::decode):

  • platform/mediacapabilities/AudioConfiguration.h:

(WebCore::AudioConfiguration::encode const):
(WebCore::AudioConfiguration::decode):

  • platform/mediacapabilities/ColorGamut.h:
  • platform/mediacapabilities/HdrMetadataType.h:
  • platform/mediacapabilities/MediaCapabilitiesLogging.h:
  • platform/mediacapabilities/MediaConfiguration.h:

(WebCore::MediaConfiguration::encode const):
(WebCore::MediaConfiguration::decode):

  • platform/mediacapabilities/MediaDecodingConfiguration.h:

(WebCore::MediaDecodingConfiguration::encode const):
(WebCore::MediaDecodingConfiguration::decode):

  • platform/mediacapabilities/MediaDecodingType.h:
  • platform/mediacapabilities/MediaEncodingConfiguration.h:

(WebCore::MediaEncodingConfiguration::encode const):
(WebCore::MediaEncodingConfiguration::decode):

  • platform/mediacapabilities/MediaEncodingType.h:
  • platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:

(WebCore::defaultFactories):
(WebCore::factories):
(WebCore::MediaEngineConfigurationFactory::clearFactories):
(WebCore::MediaEngineConfigurationFactory::resetFactories):
(WebCore::MediaEngineConfigurationFactory::installFactory):
(WebCore::MediaEngineConfigurationFactory::hasDecodingConfigurationFactory):
(WebCore::MediaEngineConfigurationFactory::hasEncodingConfigurationFactory):

  • platform/mediacapabilities/MediaEngineConfigurationFactory.h:
  • platform/mediacapabilities/TransferFunction.h:
  • platform/mediacapabilities/VideoConfiguration.h:

(WebCore::VideoConfiguration::encode const):
(WebCore::VideoConfiguration::decode):

Source/WebKit:

Add a new pair of process supplements, RemoteMediaEngineConfigurationFactory and ..Proxy.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::mediaEngineConfigurationFactoryProxy):
(WebKit::GPUConnectionToWebProcess::dispatchMessage):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/media/RemoteMediaEngineConfigurationFactoryProxy.cpp: Added.

(WebKit::RemoteMediaEngineConfigurationFactoryProxy::RemoteMediaEngineConfigurationFactoryProxy):
(WebKit::createDecodingConfiguration):
(WebKit::RemoteMediaEngineConfigurationFactoryProxy::createEncodingConfiguration):

  • GPUProcess/media/RemoteMediaEngineConfigurationFactoryProxy.h: Added.
  • GPUProcess/media/RemoteMediaEngineConfigurationFactoryProxy.messages.in: Added.
  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::mediaEngineConfigurationFactory):

  • WebProcess/GPU/GPUProcessConnection.h:
  • WebProcess/GPU/media/RemoteAudioSourceProviderManager.cpp:
  • WebProcess/GPU/media/RemoteAudioSourceProviderManager.h:
  • WebProcess/GPU/media/RemoteMediaEngineConfigurationFactory.cpp: Added.

(WebKit::RemoteMediaEngineConfigurationFactory::RemoteMediaEngineConfigurationFactory):
(WebKit::RemoteMediaEngineConfigurationFactory::registerFactory):
(WebKit::RemoteMediaEngineConfigurationFactory::supplementName):
(WebKit::RemoteMediaEngineConfigurationFactory::gpuProcessConnection):
(WebKit::RemoteMediaEngineConfigurationFactory::createDecodingConfiguration):
(WebKit::RemoteMediaEngineConfigurationFactory::createEncodingConfiguration):

  • WebProcess/GPU/media/RemoteMediaEngineConfigurationFactory.h: Copied from Source/WTF/wtf/Algorithms.h.
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::setUseGPUProcessForMedia):

2:46 PM Changeset in webkit [270461] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mac ] inspector/animation/effectChanged.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=219555

Unreviewed test gardening.

  • platform/mac/TestExpectations:
2:39 PM Changeset in webkit [270460] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Stop constructing unnecessary AudioBus in SincResampler
https://bugs.webkit.org/show_bug.cgi?id=219553

Reviewed by Darin Adler.

Stop constructing unnecessary AudioBus in SincResampler. Instead, pass the float* buffer
to the lambda directly.

  • platform/audio/MultiChannelResampler.cpp:

(WebCore::MultiChannelResampler::ChannelProvider::provideInputForChannel):
(WebCore::MultiChannelResampler::process):

  • platform/audio/SincResampler.cpp:

(WebCore::SincResampler::consumeSource):
(WebCore::SincResampler::process):

  • platform/audio/SincResampler.h:
2:37 PM Changeset in webkit [270459] by Chris Dumez
  • 5 edits in trunk/LayoutTests

[macOS] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/ctor-audiobuffer.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=219455
<rdar://problem/71909972>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Import flakiness fix I landed upstream:

  • web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/ctor-audiobuffer.html:

LayoutTests:

Unskip test that should no longer be flaky.

  • platform/glib/TestExpectations:
  • platform/mac/TestExpectations:
2:30 PM Changeset in webkit [270458] by Said Abou-Hallawa
  • 39 edits
    1 add in trunk/Source

[GPU Process] Clean up recreating the ImageBufferBackend because of GPU crashing
https://bugs.webkit.org/show_bug.cgi?id=219007

Reviewed by Simon Fraser.

Source/WebCore:

To allow answering questions about the backend creation parameters without
having the backend created, the new structure ImageBufferBackend::Parameters
is introduced.

This structure contains the parameters which were passed by the caller in
the WebProcess and which are sufficient to recreate RemoteImageBuffer if
the GPU Process crashes even before the backend of RemoteImageBufferProxy
is created.

ConcreteImageBuffer and ImageBufferBackend will hold an instance of the
new structure ImageBufferBackend::Parameters.

Also replace all the instances of 'isAccelerated' by 'renderingMode'. So
no need to convert one type to the other.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/ConcreteImageBuffer.h:

(WebCore::ConcreteImageBuffer::create):
(WebCore::ConcreteImageBuffer::ConcreteImageBuffer):
-- Make ConcreteImageBuffer own an instance of ImageBufferBackend::Parameters.
-- Add methods to set and clear the backend of an ImageBuffer.

  • platform/graphics/ImageBuffer.h:

(WebCore::ImageBuffer::backend const):
(WebCore::ImageBuffer::submitDisplayList):
(WebCore::ImageBuffer::didFlush):
-- Expose the ImageBufferBackend creation parameters through methods.
-- Expose submitDisplayList() and didFlush() so no casting is needed when

calling these functions through RemoteImageBuferProxy.

  • platform/graphics/ImageBufferBackend.cpp:

(WebCore::ImageBufferBackend::ImageBufferBackend):
(WebCore::ImageBufferBackend::toBGRAData const):

  • platform/graphics/ImageBufferBackend.h:

(WebCore::ImageBufferBackend::backendSize const):
(WebCore::ImageBufferBackend::memoryCost const):
(WebCore::ImageBufferBackend::bytesPerRow const):
(WebCore::ImageBufferBackend::toBackendCoordinates const):
(WebCore::ImageBufferBackend::logicalSize const):
(WebCore::ImageBufferBackend::resolutionScale const):
(WebCore::ImageBufferBackend::colorSpace const):
(WebCore::ImageBufferBackend::pixelFormat const):
(WebCore::ImageBufferBackend::logicalRect const):
(WebCore::ImageBufferBackend::backendRect const):
(WebCore::ImageBufferBackend::baseTransform const): Deleted.
-- Add the structure ImageBufferBackend::Parameters.
-- Make ImageBufferBackend own an instance of this structure.
-- Make backendSize() a pure virtual method.
-- Delete baseTransform() since it is implemented in ConcreteImageBuffer.

  • platform/graphics/PlatformImageBuffer.h:

(isType):

  • platform/graphics/cairo/ImageBufferCairoBackend.cpp:

(WebCore::ImageBufferCairoBackend::drawPattern):

  • platform/graphics/cairo/ImageBufferCairoImageSurfaceBackend.cpp:

(WebCore::ImageBufferCairoImageSurfaceBackend::create):
(WebCore::ImageBufferCairoImageSurfaceBackend::ImageBufferCairoImageSurfaceBackend):
(WebCore::ImageBufferCairoImageSurfaceBackend::platformTransformColorSpace):

  • platform/graphics/cairo/ImageBufferCairoImageSurfaceBackend.h:
  • platform/graphics/cairo/ImageBufferCairoSurfaceBackend.cpp:

(WebCore::ImageBufferCairoSurfaceBackend::ImageBufferCairoSurfaceBackend):
(WebCore::ImageBufferCairoSurfaceBackend::backendSize const):

  • platform/graphics/cairo/ImageBufferCairoSurfaceBackend.h:
  • platform/graphics/cg/ImageBufferCGBackend.cpp:

(WebCore::ImageBufferCGBackend::setupContext const):
(WebCore::ImageBufferCGBackend::copyImage const):
(WebCore::ImageBufferCGBackend::sinkIntoImage):
(WebCore::ImageBufferCGBackend::draw):
(WebCore::ImageBufferCGBackend::drawPattern):
(WebCore::ImageBufferCGBackend::toCFData const):
(WebCore::ImageBufferCGBackend::baseTransform const): Deleted.

  • platform/graphics/cg/ImageBufferCGBackend.h:
  • platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:

(WebCore::ImageBufferCGBitmapBackend::create):
(WebCore::ImageBufferCGBitmapBackend::ImageBufferCGBitmapBackend):
(WebCore::ImageBufferCGBitmapBackend::backendSize const):
(WebCore::ImageBufferCGBitmapBackend::copyNativeImage const):

  • platform/graphics/cg/ImageBufferCGBitmapBackend.h:
  • platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:

(WebCore::ImageBufferIOSurfaceBackend::create):
(WebCore::ImageBufferIOSurfaceBackend::ImageBufferIOSurfaceBackend):
(WebCore::ImageBufferIOSurfaceBackend::backendSize const):
(WebCore::ImageBufferIOSurfaceBackend::drawConsuming):

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.h:

-- Change the create() methods to take a "Parameters" argument.
-- Use the backend method to access the "Parameters" structure.

  • platform/graphics/displaylists/DisplayList.h:
  • platform/graphics/displaylists/DisplayListFlushIdentifier.h: Added.

Move DisplayListFlushIdentifier to a separate file so it can be included
in ImageBuffer.h without having to include DisplayList.h.

  • platform/graphics/displaylists/DisplayListImageBuffer.h:

(WebCore::DisplayList::ImageBuffer::create):
(WebCore::DisplayList::ImageBuffer::ImageBuffer):
(WebCore::DisplayList::ImageBuffer::initialDrawingContextCTM): Deleted.
-- No need to pass the 'size' argument twice in the 'create' methods. The

structure Parameters has to be passed to the constructor anyway.

-- No need for initialDrawingContextCTM() since it is equivalent to

baseTransform().

  • platform/graphics/win/ImageBufferDirect2DBackend.cpp:

(WebCore::ImageBufferDirect2DBackend::copyImage const):
(WebCore::ImageBufferDirect2DBackend::draw):
(WebCore::ImageBufferDirect2DBackend::drawPattern):
-- Use the backend method to access the "Parameters" structure.

Source/WebKit:

There is no need to store the backend parameters in RemoteImageBufferProxy.
These parameters are now stored in the base class ImageBuffer before the
backend is created.

Remove the traits definition for RemoteImageBufferProxy types because
they are wrong. All ImageBuffers have valid renderingResourceIdentifier()
regardless whether they are remote or not. ImageBuffer::setBackend and
ImageBuffer::submitDisplayList() are now implemented in WebCore. So no
casting is needed.

  • GPUProcess/graphics/RemoteImageBuffer.h:

(WebKit::RemoteImageBuffer::RemoteImageBuffer):
(WebKit::RemoteImageBuffer::submitDisplayList): Deleted.
submitDisplayList() is now a virtual method of ImageBuffer. So make it
private and ignore the return of DisplayList::Replayer::replay() since
the caller does not use it.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::didCreateImageBufferBackend):
(WebKit::RemoteRenderingBackend::applyDisplayListsFromHandle):
(WebKit::RemoteRenderingBackend::imageBufferBackendWasCreated): Deleted.

  • GPUProcess/graphics/RemoteRenderingBackend.h:

Rename 'imageBufferBackendWasCreated()' to 'didCreateImageBufferBackend()'
to be consistent with 'didFlush()'.

  • Shared/ConcreteShareableImageBuffer.h:

(WebKit::ConcreteShareableImageBuffer::create):
(WebKit::ConcreteShareableImageBuffer::ConcreteShareableImageBuffer): Deleted.

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::encode const):
(WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer):
Call the function with the new name and delete the FIXME comment.

  • WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:

(WebKit::ImageBufferShareableBitmapBackend::create):
(WebKit::ImageBufferShareableBitmapBackend::ImageBufferShareableBitmapBackend):
(WebKit::ImageBufferShareableBitmapBackend::backendSize const):

  • WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h:

Use the new structure 'ImageBufferBackend::Parameters'. Implement the
virtual method 'backendSize()'.

  • WebProcess/GPU/graphics/PlatformRemoteImageBufferProxy.h:

(isType): Deleted.
Delete the wrong traits.

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::create):
(WebKit::RemoteImageBufferProxy::RemoteImageBufferProxy):
Use the new structure 'ImageBufferBackend::Parameters'.

(WebKit::RemoteImageBufferProxy::clearBackend): Deleted.
(WebKit::RemoteImageBufferProxy::createBackend): Deleted.
(WebKit::RemoteImageBufferProxy::didFlush): Deleted.
(WebKit::RemoteImageBufferProxy::size const): Deleted.
(WebKit::RemoteImageBufferProxy::renderingMode const): Deleted.
(WebKit::RemoteImageBufferProxy::colorSpace const): Deleted.
(WebKit::RemoteImageBufferProxy::pixelFormat const): Deleted.
These functions are now implemented in ConcreteImageBuffer.

(WebKit::RemoteImageBufferProxy::submitDisplayList): Deleted.
submitDisplayList() is now virtual.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::reestablishGPUProcessConnection):
(WebKit::RemoteRenderingBackendProxy::waitForDidCreateImageBufferBackend):
(WebKit::RemoteRenderingBackendProxy::createImageBuffer):
(WebKit::RemoteRenderingBackendProxy::didCreateImageBufferBackend):
(WebKit::RemoteRenderingBackendProxy::didFlush):
(WebKit::recreateImageBuffer): Deleted.
(WebKit::RemoteRenderingBackendProxy::waitForImageBufferBackendWasCreated): Deleted.
(WebKit::RemoteRenderingBackendProxy::imageBufferBackendWasCreated): Deleted.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:

No need to cast the ImageBuffer to RemoteImageBufferProxy since all what
RemoteRenderingBackendProxy needs can be accessed through the base class.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in:

Rename 'ImageBufferBackendWasCreated' to 'DidCreateImageBufferBackend'
to be consistent with 'DidFlush'. No need to pass the creation parameters
since they set in the ConcreteImageBuffer. No need to pass the backendSize
since it can be retrieved through the backend itself.

  • WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp:

(WebKit::ImageBufferShareableIOSurfaceBackend::create):

  • WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.h:
  • WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBackend.cpp:

(WebKit::ImageBufferShareableMappedIOSurfaceBackend::create):

  • WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBackend.h:

Use the new structure 'ImageBufferBackend::Parameters'.

2:21 PM Changeset in webkit [270457] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Improve vectorization in SincResampler
https://bugs.webkit.org/show_bug.cgi?id=219546

Reviewed by Darin Adler.

Add USE(ACCELERATE) vectorization logic to SincResampler for Cocoa ports.

Also import HAVE(ARM_NEON_INTRINSICS) vectorization from Blink:

Move convolution implements from process() to a separate convolve() function
for clarity.

  • platform/audio/SincResampler.cpp:

(WebCore::SincResampler::SincResampler):
(WebCore::SincResampler::process):
(WebCore::SincResampler::convolve):

  • platform/audio/SincResampler.h:
2:18 PM Changeset in webkit [270456] by wilander@apple.com
  • 11 edits in trunk

PCM: Switch to 8+4 bits for source IDs and trigger values respectively
https://bugs.webkit.org/show_bug.cgi?id=219519
<rdar://problem/70470036>

Reviewed by Brent Fulgham.

We've received a lot of feedback saying increased entropy on the click side is more
important than the current 6 bits on the conversion side. Some of that conversation
is captured in https://github.com/privacycg/private-click-measurement/issues/28.

Source/WebCore:

This patch switches from 6+6 bits to 8+4 bits. It also fixes some minor logging
issues.

Existing layout tests and API tests were updated.

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::parsePrivateClickMeasurement const):

  • loader/PrivateClickMeasurement.cpp:

(WebCore::PrivateClickMeasurement::parseAttributionRequest):

Removed the check that would log "Conversion was not accepted because the URL
path did not start with ..." on every redirect in PCM Debug Mode. It was wrong
and annoying.

(WebCore::PrivateClickMeasurement::json const):

Added a call to isValid(). Other checks made sure this wasn't an issue but I'd
rather have it in this public function too.

  • loader/PrivateClickMeasurement.h:

(WebCore::PrivateClickMeasurement::AttributionTriggerData::isValid const):

Source/WebKit:

This patch switches from 6+6 bits to 8+4 bits. It also makes sure PCM Debug Mode
consistently logs on the LOG level except for real errors.

Existing layout tests and API tests were updated.

  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::storeUnattributed):
(WebKit::PrivateClickMeasurementManager::attribute):
(WebKit::PrivateClickMeasurementManager::fireConversionRequest):

Tools:

This patch switches from 6+6 bits to 8+4 bits.

  • TestWebKitAPI/Tests/WebCore/PrivateClickMeasurement.cpp:

(TestWebKitAPI::TEST):

LayoutTests:

This patch switches from 6+6 bits to 8+4 bits.

  • http/tests/privateClickMeasurement/anchor-tag-attributes-validation-expected.txt:
  • http/tests/privateClickMeasurement/anchor-tag-attributes-validation.html:
2:14 PM Changeset in webkit [270455] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Drop unused data members from SincResampler
https://bugs.webkit.org/show_bug.cgi?id=219548

Reviewed by Darin Adler.

  • platform/audio/SincResampler.h:
1:59 PM Changeset in webkit [270454] by commit-queue@webkit.org
  • 75 edits
    1 move
    2 adds
    8 deletes in trunk

Unreviewed, reverting r270422.
https://bugs.webkit.org/show_bug.cgi?id=219554

Deleted an SPI that is still in use.

Reverted changeset:

"Introduce new download API"
https://bugs.webkit.org/show_bug.cgi?id=217747
https://trac.webkit.org/changeset/270422

1:06 PM Changeset in webkit [270453] by BJ Burg
  • 11 edits in trunk/Source

Web Inspector: InspectorFrontendAPIDispatcher should not ignore all exceptions
https://bugs.webkit.org/show_bug.cgi?id=219378

Reviewed by Devin Rousso.

Source/WebCore:

Covered by existing Web Inspector layout tests.

  • bindings/js/ScriptController.h: Make evaluateInWorld public and exported.
  • inspector/InspectorFrontendAPIDispatcher.h:
  • inspector/InspectorFrontendAPIDispatcher.cpp:

(WebCore::InspectorFrontendAPIDispatcher::evaluateOrQueueExpression):
(WebCore::InspectorFrontendAPIDispatcher::evaluateExpression):
Evaluate and pass along the result whether it's a value or exception.

  • inspector/InspectorFrontendClientLocal.h:
  • inspector/InspectorFrontendClientLocal.cpp:

(WebCore::InspectorFrontendClientLocal::evaluationResultToBoolean):
(WebCore::InspectorFrontendClientLocal::isDebuggingEnabled):
(WebCore::InspectorFrontendClientLocal::isTimelineProfilingEnabled):
(WebCore::InspectorFrontendClientLocal::isProfilingJavaScript):
Refactor the common code to take an EvaluationResult and figure out if the value is true or falsy.

  • platform/Logging.h: Add an Inspector logging channel, for logging errors.

Source/WebKit:

The underlying method used for frontend expression evaluations is
ScriptController::evaluateIgnoringExceptions. This method calls
evaluateInWorld and returns nullopt if an exception happens.

Switch to using evaluateInWorld directly and using the existing ValueOrException
type from in WebCore. Change our EvaluationResult type to use ValueOrException
in place of JSC::JSValue. ValueOrException is Expected<JSC::JSValue, ExceptionDetails>
so this is exposing more error information in addition to the JSC::JSValue.

  • Platform/Logging.h: Add 'Inspector' log channel for WebKit.framework.
  • WebProcess/Inspector/WebInspectorUIExtensionController.cpp:

(WebKit::WebInspectorUIExtensionController::WebInspectorUIExtensionController):
(WebKit::WebInspectorUIExtensionController::~WebInspectorUIExtensionController):
Remove unnecessary debugging code that was accidentally left in/commented out.

  • WebProcess/Inspector/WebInspectorUIExtensionController.h:

(WebKit::WebInspectorUIExtensionController::parseInspectorExtensionErrorFromResult): Deleted.
(WebKit::WebInspectorUIExtensionController::parseInspectorExtensionErrorFromEvaluationResult): Added.
(WebKit::WebInspectorUIExtensionController::registerExtension):
(WebKit::WebInspectorUIExtensionController::unregisterExtension):
Adapt to using the new result type. Use the InspectorExtensionID type where possible.

12:53 PM Changeset in webkit [270452] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][Floats] FloatAvoider does not need to keep a pointer to Layout::Box around.
https://bugs.webkit.org/show_bug.cgi?id=219529

Reviewed by Antti Koivisto.

  • layout/floats/FloatAvoider.cpp:

(WebCore::Layout::FloatAvoider::FloatAvoider):

  • layout/floats/FloatAvoider.h:

(WebCore::Layout::FloatAvoider::isLeftAligned const):
(WebCore::Layout::FloatAvoider::isFloatingBox const):
(WebCore::Layout::FloatAvoider::layoutBox const): Deleted.

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::positionForNonFloatingFloatAvoider const):

12:38 PM Changeset in webkit [270451] by Fujii Hironori
  • 3 edits in trunk/Source/WebCore

GraphicsContextGLOpenGL: m_depthBuffer and m_stencilBuffer are used only if USE(OPENGL_ES)
https://bugs.webkit.org/show_bug.cgi?id=219422

Reviewed by Don Olmstead.

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:

Conditioned out m_depthBuffer and m_stencilBuffer with #if !USE(ANGLE) && USE(OPENGL_ES).

  • platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:

(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):
Removed code to generate m_depthBuffer and m_stencilBuffer because
this code is only for USE(ANGLE).
(WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL):

12:15 PM Changeset in webkit [270450] by Russell Epstein
  • 8 edits in branches/safari-610.3.7.1-branch/Source

Versioning.

WebKit-7610.3.7.1.9

12:10 PM Changeset in webkit [270449] by ddkilzer@apple.com
  • 4 edits in trunk/Source

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.

12:05 PM Changeset in webkit [270448] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Move float constraint logic from initialConstraintsForLine to a dedicated function
https://bugs.webkit.org/show_bug.cgi?id=219526

Reviewed by Antti Koivisto.

We are going to call this new function whenever the line stretches vertically and not just once at the very beginning.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::floatConstraints const):
(WebCore::Layout::LineBuilder::initialConstraintsForLine const):
(WebCore::Layout::LineBuilder::initialConstraintsForLine): Deleted.

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::floatingState const):

12:03 PM Changeset in webkit [270447] by Jonathan Bedard
  • 14 edits in trunk/Tools

[git-webkit] Use contributors.json
https://bugs.webkit.org/show_bug.cgi?id=217732
<rdar://problem/70309518>

Reviewed by Dewei Zhu.

The interaction between Git, Svn and old commits means that our canonical record of
commit authors is somewhat incomplete. contributors.json has most of the information
we are missing, we should rely on it to map non-standard author names to their canonical
names and email addresses.

Additionally, making the record of Contributors owned by the repository instead of being global
to the entire process.

  • Scripts/git-webkit: Parse contributors.json and add it to a Contributor.Mapping.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/commit.py:

(Commit): Contributor class object no longer owns record of contributors.

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

(Contributor):
(Contributor.Mapping): Dictionary mapping Contributors and their potential aliases.
(Contributor.Mapping.init):
(Contributor.Mapping.add): Add Contributor to mapping.
(Contributor.Mapping.create): Find or create a contributor with the specified name and email
addresses and bind it to the record of contributors.
(Contributor.from_scm_log): Leverage Contributor.Mapping provided by caller.
(Contributor.clear): Deleted.

  • Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git.init): Instantiate repository with existing Contributor.Mapping.
(Git.commit): Repository now owns the record of contributors.

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

(Scm.from_path): Instantiate repository with existing Contributor.Mapping.
(Scm.init): Ditto.

  • Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:

(Svn.init): Instantiate repository with existing Contributor.Mapping.
(Svn.commit): Repository now owns the record of contributors.

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

(main): Allow caller to pass an existing record of contributors.

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

(Scm.from_url): Instantiate repository with existing Contributor.Mapping.
(Scm.init): Ditto.

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

(Svn.init): Instantiate repository with existing Contributor.Mapping.
(Svn.commit): Repository now owns the record of contributors.

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

(ScmBase.init): Instantiate repository with existing Contributor.Mapping.

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

(TestContributor.test_git_log): No more global contributor record.
(TestContributor.test_git_svn_log): Ditto.
(TestContributor.test_git_no_author): Ditto.
(TestContributor.test_git_svn_no_author): Ditto.
(TestContributor.test_svn_log): Ditto.
(TestContributor.test_short_svn_log): Ditto.
(TestContributor.test_svn_patch_by_log): Ditto.
(TestContributor.test_author_mapping): Contributor record is owned by the caller of the caller
of Contributor management.
(TestContributor.test_email_mapping): Ditto.
(TestContributor.test_invalid_log): No more global contributor record.

11:53 AM Changeset in webkit [270446] by Kate Cheney
  • 24 edits
    4 adds in trunk

Create API to enable/disable text interaction gestures in WKWebView
https://bugs.webkit.org/show_bug.cgi?id=217784
<rdar://problem/63406241>

Reviewed by Wenson Hsieh.

Source/WebCore:

Add API to disable text selection for macOS.

  • page/EventHandler.cpp:

(WebCore::EventHandler::selectClosestWordFromMouseEvent):
(WebCore::EventHandler::selectClosestContextualWordOrLinkFromMouseEvent):
(WebCore::EventHandler::handleMousePressEventDoubleClick):
(WebCore::EventHandler::handleMousePressEventTripleClick):
(WebCore::EventHandler::handleMousePressEventSingleClick):
(WebCore::EventHandler::mouseDownMayStartSelect):
Create a new function to return whether a click results in a
selection. It will always return false if text interaction is disabled.

(WebCore::EventHandler::handleMousePressEvent):
(WebCore::EventHandler::handleMouseDraggedEvent):
(WebCore::EventHandler::updateSelectionForMouseDrag):
(WebCore::EventHandler::selectCursor):

  • page/EventHandler.h:
  • page/Page.cpp:

(WebCore::m_textInteractionEnabled):
(WebCore::m_shouldRelaxThirdPartyCookieBlocking): Deleted.

  • page/Page.h:

Store the textInteractionEnabled value in the Page so it is
accessible from the EventHandler.

(WebCore::Page::textInteractionEnabled):
(WebCore::Page::setTextInteractionEnabled):

  • page/PageConfiguration.h:

Source/WebKit:

Create a new API to disable text interaction gestures in a WKWebView.
We have SPI for this for iOS, but it could be useful to other WebKit
clients and on macOS. Add the API to WKPreferences, instead of
WKWebViewConfiguration, so it can be changed on the fly.

Deprecate the SPI.

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • UIProcess/API/Cocoa/WKPreferences.h:
  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences encodeWithCoder:]):
(-[WKPreferences initWithCoder:]):
(-[WKPreferences textInteractionEnabled]):
(-[WKPreferences setTextInteractionEnabled:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration encodeWithCoder:]):
(-[WKWebViewConfiguration initWithCoder:]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _textInteractionEnabled]):
(-[WKWebViewConfiguration _setTextInteractionEnabled:]):

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

(WebKit::WebPageProxy::creationParameters):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView hasSelectablePositionAtPoint:]):
(-[WKContentView pointIsNearMarkedText:]):
(-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
(-[WKContentView _cascadeInteractionTintColor]):
(-[WKContentView selectForWebView:]):
(-[WKContentView selectAllForWebView:]):
Add check for textInteractionEnabled in these select*
functions because disabling text interaction should disable selection
in WKWebView.

  • WebProcess/WebPage/WebPage.cpp:

Update the textInteractionEnabled value in the page when
preferences are updated.

(WebKit::WebPage::updatePreferences):

Source/WTF:

Create new WKPreference. See WebKit Changelog for details.

  • Scripts/Preferences/WebPreferences.yaml:

Tools:

Add API test coverage for macOS and support for layout tests for iOS.
API tests do not support user gestures which is why iOS tests must
use WebKitTestRunner.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewDisableSelection.mm: Added.

(TEST):
(clickAndDragToSelectText):

  • TestWebKitAPI/Tests/WebKitCocoa/try-text-select-with-disabled-text-interaction.html: Added.
  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::cocoaResetStateToConsistentValues):

  • WebKitTestRunner/TestOptions.cpp:

(WTR::TestOptions::defaults):
(WTR::TestOptions::keyTypeMapping):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::textInteractionEnabled const):

LayoutTests:

Layout test coverage for iOS.

  • LayoutTests/editing/selection/ios/cannot-select-after-disabling-text-interaction-expected.txt: Added.
  • LayoutTests/editing/selection/ios/cannot-select-after-disabling-text-interaction.html: Added.
11:51 AM Changeset in webkit [270445] by commit-queue@webkit.org
  • 37 edits in trunk

More FALLBACK_PLATFORM adoption
https://bugs.webkit.org/show_bug.cgi?id=219545

Patch by Adam Roben <Adam Roben> on 2020-12-04
Reviewed by Tim Horton.

PerformanceTests:

  • MediaTime/Configurations/SDKVariant.xcconfig:

WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to
NO.

Source/bmalloc:

  • Configurations/SDKVariant.xcconfig:

WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to
NO.

Source/JavaScriptCore:

  • Configurations/SDKVariant.xcconfig:

WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to
NO.

Source/ThirdParty:

  • gtest/xcode/Config/SDKVariant.xcconfig:

WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to
NO.

Source/ThirdParty/ANGLE:

  • Configurations/SDKVariant.xcconfig:

WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to
NO.

Source/ThirdParty/libwebrtc:

  • Configurations/SDKVariant.xcconfig:

WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to
NO.

Source/WebCore:

  • Configurations/SDKVariant.xcconfig:

WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to
NO.

Source/WebCore/PAL:

  • Configurations/SDKVariant.xcconfig:

WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to
NO.

Source/WebInspectorUI:

  • Configurations/SDKVariant.xcconfig:

WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to
NO.

Source/WebKit:

  • Configurations/SDKVariant.xcconfig:

WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to
NO.

Source/WebKitLegacy/mac:

  • Configurations/SDKVariant.xcconfig:

WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to
NO.

Source/WTF:

  • Configurations/SDKVariant.xcconfig:

WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to
NO.

Tools:

  • DumpRenderTree/Scripts/check-xcfilelists.sh:
  • TestWebKitAPI/Scripts/check-xcfilelists.sh:
  • WebKitTestRunner/Scripts/check-xcfilelists.sh:

Use FALLBACK_PLATFORM if it's defined.

  • ContentExtensionTester/Configurations/SDKVariant.xcconfig:
  • DumpRenderTree/mac/Configurations/SDKVariant.xcconfig:
  • ImageDiff/cg/Configurations/SDKVariant.xcconfig:
  • MiniBrowser/Configurations/SDKVariant.xcconfig:
  • MobileMiniBrowser/Configurations/SDKVariant.xcconfig:
  • TestWebKitAPI/Configurations/SDKVariant.xcconfig:
  • WebEditingTester/Configurations/SDKVariant.xcconfig:
  • WebKitTestRunner/Configurations/SDKVariant.xcconfig:
  • lldb/lldbWebKitTester/Configurations/SDKVariant.xcconfig:

WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to
NO.

11:47 AM Changeset in webkit [270444] by Said Abou-Hallawa
  • 16 edits
    1 delete in trunk/Source

[GPU Process] Share the NativeImage with GPU Process through a ShareableBitmap
https://bugs.webkit.org/show_bug.cgi?id=218934

Reviewed by Tim Horton.

Source/WebCore:

Delete a NativeImage constructor and a create method which were used by
the deleted IPC coders of the NativeImage.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/NativeImage.cpp:

(WebCore::NativeImage::create):
(WebCore::NativeImage::NativeImage):

  • platform/graphics/NativeImage.h:
  • platform/graphics/NativeImageReference.h: Removed.

Source/WebKit:

Instead of relying on the IPC coders to transfer the NativeImage to the
GPUP, we are going to move this logic to RemoteResourceCacheProxy and
RemoteRenderingBackend. The NativeImage will be transfered as a handle of
ShareableBitamp and a renderingResourceIdentifier.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::cacheNativeImage):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:
  • Shared/ShareableBitmap.h:

(WebKit::ShareableBitmap::createPlatformImage):
Add this helper function and avoid adding directive code in many places.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Ref<NativeImage>>::encode): Deleted.
(IPC::ArgumentCoder<Ref<NativeImage>>::decode): Deleted.

  • Shared/WebCoreArgumentCoders.h:
  • WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:

(WebKit::ImageBufferShareableBitmapBackend::copyNativeImage const):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::cacheNativeImage):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:

(WebKit::createShareableBitmapFromNativeImage):
(WebKit::RemoteResourceCacheProxy::cacheNativeImage):

11:44 AM Changeset in webkit [270443] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GTK] Gardening wheel failures and timeouts

Unreviewed test gardening.

  • platform/gtk/TestExpectations:
11:43 AM Changeset in webkit [270442] by Darin Adler
  • 215 edits in trunk/LayoutTests

Make dump-as-markup.js dump newlines within text as "\n"
https://bugs.webkit.org/show_bug.cgi?id=216749

Reviewed by Anders Carlsson.

  • editing/deleting/5115601-expected.txt:
  • editing/deleting/5206311-2-expected.txt:
  • editing/deleting/delete-3959464-fix-expected.txt:
  • editing/deleting/delete-4038408-fix-expected.txt:
  • editing/deleting/delete-across-editable-content-boundaries-2-expected.txt:
  • editing/deleting/delete-across-editable-content-boundaries-3-expected.txt:
  • editing/deleting/delete-at-paragraph-boundaries-001-expected.txt:
  • editing/deleting/delete-br-011-expected.txt:
  • editing/deleting/delete-br-012-expected.txt:
  • editing/deleting/delete-br-in-last-table-cell-expected.txt:
  • editing/deleting/delete-image-followed-by-two-br-expected.txt:
  • editing/deleting/delete-line-break-between-paragraphs-with-same-style-expected.txt:
  • editing/deleting/delete-mixed-editable-content-001-expected.txt:
  • editing/deleting/delete-table-cell-contents-expected.txt:
  • editing/deleting/delete-uneditable-style-expected.txt:
  • editing/deleting/forward-delete-empty-table-cell-expected.txt:
  • editing/deleting/merge-div-from-span-with-style-expected.txt:
  • editing/deleting/merge-div-with-inline-style-expected.txt:
  • editing/deleting/merge-paragraph-contatining-noneditable-expected.txt:
  • editing/deleting/merge-paragraph-from-address-expected.txt:
  • editing/deleting/merge-paragraph-from-h6-expected.txt:
  • editing/deleting/merge-paragraph-from-h6-with-style-2-expected.txt:
  • editing/deleting/merge-paragraph-from-h6-with-style-expected.txt:
  • editing/deleting/merge-paragraph-from-listing-expected.txt:
  • editing/deleting/merge-paragraph-from-p-with-style-2-expected.txt:
  • editing/deleting/merge-paragraph-from-p-with-style-3-expected.txt:
  • editing/deleting/merge-paragraph-from-p-with-style-expected.txt:
  • editing/deleting/merge-paragraph-from-span-with-multiple-text-decoration-expected.txt:
  • editing/deleting/merge-paragraph-from-span-with-style-expected.txt:
  • editing/deleting/merge-paragraph-into-blockquote-expected.txt:
  • editing/deleting/merge-paragraph-into-h1-expected.txt:
  • editing/deleting/merge-paragraph-into-h1-with-dir-2-expected.txt:
  • editing/deleting/merge-paragraph-into-h1-with-dir-expected.txt:
  • editing/deleting/merge-paragraph-into-h1-with-style-expected.txt:
  • editing/deleting/merge-paragraph-into-pre-expected.txt:
  • editing/deleting/merge-paragraph-with-style-from-rule-expected.txt:
  • editing/deleting/merge-paragraphs-with-transparent-background-expected.txt:
  • editing/deleting/paragraph-in-preserveNewline-expected.txt:
  • editing/deleting/whitespace-pre-1-expected.txt:
  • editing/execCommand/change-list-type-expected.txt:
  • editing/execCommand/contenteditable-justify-next-paragraph-expected.txt:
  • editing/execCommand/crash-indenting-list-item-expected.txt:
  • editing/execCommand/crash-on-enter-in-contentEditable-list-expected.txt:
  • editing/execCommand/delete-line-and-insert-text-in-font-inside-blockquote-expected.txt:
  • editing/execCommand/delete-selection-has-style-expected.txt:
  • editing/execCommand/format-block-contenteditable-false-expected.txt:
  • editing/execCommand/format-block-expected.txt:
  • editing/execCommand/format-block-from-range-selection-expected.txt:
  • editing/execCommand/format-block-multiple-paragraphs-expected.txt:
  • editing/execCommand/format-block-multiple-paragraphs-in-pre-expected.txt:
  • editing/execCommand/format-block-table-expected.txt:
  • editing/execCommand/format-block-with-braces-expected.txt:
  • editing/execCommand/indent-images-2-expected.txt:
  • editing/execCommand/indent-images-3-expected.txt:
  • editing/execCommand/indent-pre-expected.txt:
  • editing/execCommand/indent-pre-list-expected.txt:
  • editing/execCommand/indent-pre-paragraphs-expected.txt:
  • editing/execCommand/insert-list-in-noneditable-list-parent-expected.txt:
  • editing/execCommand/insert-list-nested-with-orphaned-expected.txt:
  • editing/execCommand/insert-nested-lists-in-table-expected.txt:
  • editing/execCommand/insert-nested-lists-with-pre-expected.txt:
  • editing/execCommand/insert-paragraph-twice-at-end-of-block-styled-listitem-expected.txt:
  • editing/execCommand/insert-paragraph-twice-at-end-of-custom-listitem-expected.txt:
  • editing/execCommand/insert-unordered-list-in-shadow-tree-expected.txt:
  • editing/execCommand/outdent-selection-expected.txt:
  • editing/execCommand/overtype-expected.txt:
  • editing/execCommand/remove-format-textdecoration-in-iframe-expected.txt:
  • editing/execCommand/remove-formatting-expected.txt:
  • editing/execCommand/remove-list-from-multi-list-items-expected.txt:
  • editing/execCommand/switch-list-type-with-inner-list-expected.txt:
  • editing/execCommand/switch-list-type-with-orphaned-li-expected.txt:
  • editing/find/find-and-replace-at-editing-boundary-expected.txt:
  • editing/find/find-and-replace-basic-expected.txt:
  • editing/find/find-and-replace-in-subframes-expected.txt:
  • editing/find/find-and-replace-no-matches-expected.txt:
  • editing/find/find-and-replace-noneditable-matches-expected.txt:
  • editing/inserting/insert-3786362-fix-expected.txt:
  • editing/inserting/insert-3907422-fix-expected.txt:
  • editing/inserting/insert-div-021-expected.txt:
  • editing/inserting/insert-paragraph-after-tab-span-and-text-expected.txt:
  • editing/inserting/insert-paragraph-before-space-expected.txt:
  • editing/inserting/insert-paragraph-between-text-expected.txt:
  • editing/inserting/insert-paragraph-in-designmode-document-expected.txt:
  • editing/inserting/insert-paragraph-separator-at-break-expected.txt:
  • editing/inserting/insert-paragraph-with-font-and-background-color-expected.txt:
  • editing/mac/selection/double-click-and-drag-over-anchor-to-select-expected.txt:
  • editing/pasteboard/avoid-copying-body-with-background-expected.txt:
  • editing/pasteboard/block-wrappers-necessary-expected.txt:
  • editing/pasteboard/cleanup-on-move-expected.txt:
  • editing/pasteboard/copy-image-with-alt-text-expected.txt:
  • editing/pasteboard/copy-null-characters-expected.txt:
  • editing/pasteboard/copy-paste-across-shadow-boundaries-with-style-2-expected.txt:
  • editing/pasteboard/copy-paste-bidi-expected.txt:
  • editing/pasteboard/copy-paste-content-starting-and-ending-canvas-expected.txt:
  • editing/pasteboard/copy-paste-converts-fixed-expected.txt:
  • editing/pasteboard/copy-paste-converts-sticky-expected.txt:
  • editing/pasteboard/copy-paste-doesnt-convert-sticky-and-fixed-during-partial-copy-expected.txt:
  • editing/pasteboard/copy-paste-inserts-clearing-div-expected.txt:
  • editing/pasteboard/copy-paste-with-important-rules-expected.txt:
  • editing/pasteboard/copy-paste-wraps-position-absolute-expected.txt:
  • editing/pasteboard/copy-text-with-backgroundcolor-expected.txt:
  • editing/pasteboard/display-block-on-spans-expected.txt:
  • editing/pasteboard/drag-drop-list-expected.txt:
  • editing/pasteboard/drag-list-item-expected.txt:
  • editing/pasteboard/insert-text-decoration-expected.txt:
  • editing/pasteboard/interchange-newline-3-expected.txt:
  • editing/pasteboard/interchange-newline-4-expected.txt:
  • editing/pasteboard/line-feed-between-br-and-b-should-not-reorder-pasted-content-expected.txt:
  • editing/pasteboard/nested-blocks-with-text-area-expected.txt:
  • editing/pasteboard/nested-blocks-with-text-field-expected.txt:
  • editing/pasteboard/paste-4039777-fix-expected.txt:
  • editing/pasteboard/paste-at-end-of-node-followed-by-inline-element-expected.txt:
  • editing/pasteboard/paste-before-tab-span-expected.txt:
  • editing/pasteboard/paste-blockquote-into-blockquote-3-expected.txt:
  • editing/pasteboard/paste-delete-insertion-position-skip-paragraph-expected.txt:
  • editing/pasteboard/paste-list-001-expected.txt:
  • editing/pasteboard/paste-noscript-xhtml-expected.txt:
  • editing/pasteboard/paste-table-001-expected.txt:
  • editing/pasteboard/paste-table-cells-expected.txt:
  • editing/pasteboard/paste-table-with-unrendered-text-nodes-expected.txt:
  • editing/pasteboard/paste-text-001-expected.txt:
  • editing/pasteboard/paste-text-005-expected.txt:
  • editing/pasteboard/paste-text-006-expected.txt:
  • editing/pasteboard/paste-text-007-expected.txt:
  • editing/pasteboard/paste-text-010-expected.txt:
  • editing/pasteboard/paste-text-011-expected.txt:
  • editing/pasteboard/paste-text-015-expected.txt:
  • editing/pasteboard/paste-text-017-expected.txt:
  • editing/pasteboard/paste-text-018-expected.txt:
  • editing/pasteboard/paste-text-at-tabspan-001-expected.txt:
  • editing/pasteboard/paste-text-at-tabspan-002-expected.txt:
  • editing/pasteboard/paste-text-with-style-expected.txt:
  • editing/pasteboard/pasting-into-h6-should-not-nest-h6-expected.txt:
  • editing/pasteboard/pasting-into-p-should-not-nest-p-expected.txt:
  • editing/pasteboard/simplfiying-markup-should-not-strip-content-expected.txt:
  • editing/pasteboard/style-from-rules-expected.txt:
  • editing/pasteboard/testcase-9507-expected.txt:
  • editing/selection/4895428-1-expected.txt:
  • editing/selection/4895428-4-expected.txt:
  • editing/selection/dump-as-markup-expected.txt:
  • editing/selection/dump-as-markup-form-text-expected.txt:
  • editing/selection/extend-selection-backward-at-beginning-of-line-by-sentence-granularity-expected.txt:
  • editing/selection/home-inside-noneditable-table-expected.txt:
  • editing/selection/modify-backward-inline-block-containers-expected.txt:
  • editing/selection/move-between-lines-of-different-editabilities-expected.txt:
  • editing/selection/move-by-line-006-expected.txt:
  • editing/selection/move-selection-backward-at-beginning-of-line-by-sentence-granularity-expected.txt:
  • editing/selection/move-up-into-wrapped-line-expected.txt:
  • editing/selection/shift-click-includes-existing-selection-expected.txt:
  • editing/selection/user-select-all-with-shift-expected.txt:
  • editing/spelling/text-replacement-after-typing-to-word-expected.txt:
  • editing/spelling/text-replacement-first-word-second-line-expected.txt:
  • editing/style/apply-font-size-to-multiple-nodes-expected.txt:
  • editing/unsupported-content/table-delete-001-expected.txt:
  • editing/unsupported-content/table-delete-003-expected.txt:
  • fast/dom/HTMLMeterElement/meter-element-markup-expected.txt:
  • fast/events/5056619-expected.txt:
  • fast/parser/attributes-on-close-script-expected.txt:
  • fast/parser/document-write-svg-cdata-expected.txt:
  • fast/parser/foster-parent-under-template-expected.txt:
  • fast/parser/math-options-crash-expected.txt:
  • fast/parser/object-with-textarea-fallback-expected.txt:
  • fast/parser/residual-style-dom-expected.txt:
  • fast/parser/style-in-create-contextual-fragment-expected.txt:
  • fast/parser/style-in-create-contextual-fragment-head-expected.txt:
  • fast/table/table-create-tbody-existing-tbody-expected.txt:
  • fast/table/table-create-tbody-expected.txt:
  • fast/table/table-create-tbody-multiple-tbody-expected.txt:
  • platform/gtk/editing/deleting/delete-emoji-1-expected.txt:
  • platform/gtk/editing/deleting/delete-emoji-expected.txt:
  • platform/ios-wk1/editing/deleting/delete-emoji-expected.txt:
  • platform/ios-wk2/editing/execCommand/indent-pre-expected.txt:
  • platform/ios/editing/deleting/delete-3959464-fix-expected.txt:
  • platform/ios/editing/deleting/delete-across-editable-content-boundaries-2-expected.txt:
  • platform/ios/editing/deleting/delete-across-editable-content-boundaries-3-expected.txt:
  • platform/ios/editing/deleting/delete-emoji-1-expected.txt:
  • platform/ios/editing/deleting/delete-emoji-2-expected.txt:
  • platform/ios/editing/deleting/delete-emoji-3-expected.txt:
  • platform/ios/editing/deleting/delete-emoji-4-expected.txt:
  • platform/ios/editing/deleting/delete-emoji-5-expected.txt:
  • platform/ios/editing/deleting/delete-emoji-6-expected.txt:
  • platform/ios/editing/deleting/delete-emoji-7-expected.txt:
  • platform/ios/editing/deleting/delete-emoji-8-expected.txt:
  • platform/ios/editing/deleting/delete-emoji-9-expected.txt:
  • platform/ios/editing/deleting/delete-emoji-expected.txt:
  • platform/ios/editing/execCommand/delete-line-and-insert-text-in-font-inside-blockquote-expected.txt:
  • platform/ios/editing/pasteboard/paste-text-001-expected.txt:
  • platform/ios/editing/pasteboard/paste-text-010-expected.txt:
  • platform/ios/editing/pasteboard/paste-text-at-tabspan-001-expected.txt:
  • platform/mac/editing/caret/emoji-expected.txt:
  • platform/mac/editing/deleting/delete-emoji-1-expected.txt:
  • platform/mac/editing/deleting/delete-emoji-2-expected.txt:
  • platform/mac/editing/deleting/delete-emoji-3-expected.txt:
  • platform/mac/editing/deleting/delete-emoji-4-expected.txt:
  • platform/mac/editing/deleting/delete-emoji-5-expected.txt:
  • platform/mac/editing/deleting/delete-emoji-6-expected.txt:
  • platform/mac/editing/deleting/delete-emoji-7-expected.txt:
  • platform/mac/editing/deleting/delete-emoji-8-expected.txt:
  • platform/mac/editing/deleting/delete-emoji-9-expected.txt:
  • platform/mac/editing/deleting/delete-emoji-expected.txt:
  • platform/win/editing/deleting/delete-br-011-expected.txt:
  • platform/win/editing/execCommand/indent-pre-expected.txt:
  • platform/wincairo/editing/deleting/delete-emoji-1-expected.txt:
  • platform/wincairo/editing/deleting/delete-emoji-2-expected.txt:
  • platform/wincairo/editing/deleting/delete-emoji-3-expected.txt:
  • platform/wincairo/editing/deleting/delete-emoji-4-expected.txt:
  • platform/wincairo/editing/deleting/delete-emoji-5-expected.txt:
  • platform/wincairo/editing/deleting/delete-emoji-6-expected.txt:
  • platform/wincairo/editing/deleting/delete-emoji-7-expected.txt:
  • platform/wincairo/editing/deleting/delete-emoji-8-expected.txt:
  • platform/wincairo/editing/deleting/delete-emoji-9-expected.txt:
  • platform/wincairo/editing/deleting/delete-emoji-expected.txt:
  • platform/wincairo/editing/execCommand/indent-pre-expected.txt:

Updated to expect "\n".

  • resources/dump-as-markup.js:

(Markup._getMarkupForTextNode): Convert newlines into "\n".

11:31 AM Changeset in webkit [270441] by Alan Coon
  • 1 copy in tags/Safari-610.3.7.1.8

Tag Safari-610.3.7.1.8.

11:30 AM Changeset in webkit [270440] by Alan Coon
  • 8 edits in branches/safari-610.3.7.1-branch/Source

Versioning.

WebKit-7610.3.7.1.8

11:21 AM Changeset in webkit [270439] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Deny mach-lookup to the service 'com.apple.print.normalizerd' in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=219541
<rdar://problem/68878604>

Reviewed by Darin Adler.

On macOS, deny mach-lookup to the service 'com.apple.print.normalizerd' in the WebContent process, since there are no
reports of this being used.

No new tests, since the result will depend on the macOS version.

  • WebProcess/com.apple.WebProcess.sb.in:
11:04 AM Changeset in webkit [270438] by Alan Coon
  • 1 copy in tags/Safari-610.3.7.1.7

Tag Safari-610.3.7.1.7.

11:01 AM Changeset in webkit [270437] by Alan Coon
  • 8 edits in branches/safari-610.3.7.1-branch/Source

Versioning.

WebKit-7610.3.7.1.7

10:56 AM Changeset in webkit [270436] by Devin Rousso
  • 5 edits in trunk/Source/WebKit

[iOS] Provide a context menu action to perform accessibility image extraction
https://bugs.webkit.org/show_bug.cgi?id=219524
<rdar://problem/69969613>

Reviewed by Wenson Hsieh.

  • UIProcess/API/Cocoa/_WKElementAction.h:
  • UIProcess/API/Cocoa/_WKElementAction.mm:

(+[_WKElementAction _elementActionWithType:customTitle:assistant:]):
(+[_WKElementAction imageForElementActionType:]):
(elementActionTypeToUIActionIdentifier):
(uiActionIdentifierToElementActionType):
Add a new _WKElementActionTypeImageExtraction enum type with a default icon and title.

  • UIProcess/ios/WKActionSheetAssistant.h:
  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant defaultActionsForLinkSheet:]):
(-[WKActionSheetAssistant defaultActionsForImageSheet:]):
(-[WKActionSheetAssistant handleElementActionWithType:element:needsInteraction:]):
If the WKActionSheetAssistantDelegate allows it, add a _WKElementActionTypeImageExtraction
action for images (including those inside links). Call out to the WKActionSheetAssistantDelegate
when handling the action.

10:12 AM Changeset in webkit [270435] by Peng Liu
  • 27 edits
    1 add in trunk/Source

[MSE] Move track buffer management from SourceBuffer to SourceBufferPrivate
https://bugs.webkit.org/show_bug.cgi?id=219332

Reviewed by Daniel Bates.

Source/WebCore:

Currently, the SourceBuffer class deals with both the DOM related tasks (providing
Javascript interfaces, firing events, handling object properties, etc.) and track
buffer management. This patch moves the track buffer management from SourceBuffer
to SourceBufferPrivate. The purpose of this change is to support running the track
buffer management in the GPU process so that the callbacks from a media parser regarding
a new sample is parsed does not need to cross the process boundary (SourceBufferPrivate
will run in the GPU process). We have to update the interface SourceBufferPrivateClient
accordingly.

When running the track buffer management in the SourceBuffer class, we can get
some information related to MediaSource directly, such as isSeeking, duration,
and currentMediaTime. However, after moving it to SourceBufferPrivate, we have to
get the information from the corresponding MediaSourcePrivate. This patch includes
some changes for that.

No new tests because this patch does not want to introduce any behavior change.

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::seekToTime):
(WebCore::MediaSource::completeSeek):

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::SourceBuffer):
(WebCore::SourceBuffer::~SourceBuffer):
(WebCore::SourceBuffer::buffered const):
(WebCore::SourceBuffer::timestampOffset const):
(WebCore::SourceBuffer::setTimestampOffset):
(WebCore::SourceBuffer::setAppendWindowStart):
(WebCore::SourceBuffer::setAppendWindowEnd):
(WebCore::SourceBuffer::resetParserState):
(WebCore::SourceBuffer::abort):
(WebCore::SourceBuffer::changeType):
(WebCore::SourceBuffer::highestPresentationTimestamp const):
(WebCore::SourceBuffer::readyStateChanged):
(WebCore::SourceBuffer::removedFromMediaSource):
(WebCore::SourceBuffer::seekToTime):
(WebCore::SourceBuffer::appendBufferInternal):
(WebCore::SourceBuffer::sourceBufferPrivateAppendComplete):
(WebCore::SourceBuffer::removeTimerFired):
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveInitializationSegment):
(WebCore::SourceBuffer::validateInitializationSegment):
(WebCore::SourceBuffer::sourceBufferPrivateAppendError):
(WebCore::SourceBuffer::appendError):
(WebCore::SourceBuffer::trySignalAllSamplesEnqueued):
(WebCore::SourceBuffer::sourceBufferPrivateDidParseSample):
(WebCore::SourceBuffer::sourceBufferPrivateDurationChanged):
(WebCore::SourceBuffer::sourceBufferPrivateDidDropSample):
(WebCore::SourceBuffer::sourceBufferPrivateStreamEndedWithDecodeError):
(WebCore::SourceBuffer::extraMemoryCost const):
(WebCore::SourceBuffer::bufferedSamplesForTrackID):
(WebCore::SourceBuffer::setMode):
(WebCore::SourceBuffer::setShouldGenerateTimestamps):
(WebCore::SourceBuffer::isBufferedDirty const):
(WebCore::SourceBuffer::setBufferedDirty):
(): Deleted.
(WebCore::SourceBuffer::TrackBuffer::TrackBuffer): Deleted.
(WebCore::SourceBuffer::TrackBuffer::enqueueDiscontinuityBoundary): Deleted.
(WebCore::SourceBuffer::sourceBufferPrivateFastSeekTimeForMediaTime): Deleted.
(WebCore::decodeTimeComparator): Deleted.
(WebCore::removeSamplesFromTrackBuffer): Deleted.
(WebCore::SourceBuffer::removeCodedFrames): Deleted.
(WebCore::SourceBuffer::evictCodedFrames): Deleted.
(WebCore::SampleLessThanComparator::operator()): Deleted.
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample): Deleted.
(WebCore::SourceBuffer::sourceBufferPrivateReenqueSamples): Deleted.
(WebCore::SourceBuffer::sourceBufferPrivateDidBecomeReadyForMoreSamples): Deleted.
(WebCore::SourceBuffer::provideMediaData): Deleted.
(WebCore::SourceBuffer::updateMinimumUpcomingPresentationTime): Deleted.
(WebCore::SourceBuffer::resetMinimumUpcomingPresentationTime): Deleted.
(WebCore::SourceBuffer::trySignalAllSamplesInTrackEnqueued): Deleted.
(WebCore::SourceBuffer::reenqueueMediaForTime): Deleted.
(WebCore::SourceBuffer::didDropSample): Deleted.
(WebCore::SourceBuffer::updateBufferedFromTrackBuffers): Deleted.

  • Modules/mediasource/SourceBuffer.h:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/MediaSourcePrivate.h:

(WebCore::MediaSourcePrivate::setIsSeeking):
(WebCore::MediaSourcePrivate::isSeeking const):

  • platform/graphics/SourceBufferPrivate.cpp: Added.

(WebCore::SourceBufferPrivate::TrackBuffer::TrackBuffer):
(WebCore::enqueueDiscontinuityBoundary):
(WebCore::SourceBufferPrivate::SourceBufferPrivate):
(WebCore::SourceBufferPrivate::resetTimestampOffsetInTrackBuffers):
(WebCore::SourceBufferPrivate::resetTrackBuffers):
(WebCore::SourceBufferPrivate::highestPresentationTimestamp const):
(WebCore::SourceBufferPrivate::updateBufferedFromTrackBuffers):
(WebCore::SourceBufferPrivate::reenqueSamples):
(WebCore::SourceBufferPrivate::seekToTime):
(WebCore::SourceBufferPrivate::clearTrackBuffers):
(WebCore::SourceBufferPrivate::bufferedSamplesForTrackID):
(WebCore::SourceBufferPrivate::fastSeekTimeForMediaTime):
(WebCore::SourceBufferPrivate::updateMinimumUpcomingPresentationTime):
(WebCore::SourceBufferPrivate::trySignalAllSamplesInTrackEnqueued):
(WebCore::SourceBufferPrivate::provideMediaData):
(WebCore::SourceBufferPrivate::reenqueueMediaForTime):
(WebCore::SourceBufferPrivate::reenqueueMediaIfNeeded):
(WebCore::decodeTimeComparator):
(WebCore::removeSamplesFromTrackBuffer):
(WebCore::SourceBufferPrivate::removeCodedFrames):
(WebCore::SourceBufferPrivate::evictCodedFrames):
(WebCore::SourceBufferPrivate::totalTrackBufferSizeInBytes const):
(WebCore::SourceBufferPrivate::addTrackBuffer):
(WebCore::SourceBufferPrivate::updateTrackIds):
(WebCore::SourceBufferPrivate::setAllTrackBuffersNeedRandomAccess):
(WebCore::SourceBufferPrivate::didReceiveInitializationSegment):
(WebCore::SourceBufferPrivate::validateInitializationSegment):
(WebCore::SourceBufferPrivate::didReceiveSample):

  • platform/graphics/SourceBufferPrivate.h:

(WebCore::SourceBufferPrivate::setActive):
(WebCore::SourceBufferPrivate::setClient):
(WebCore::SourceBufferPrivate::setIsAttached):
(WebCore::SourceBufferPrivate::setCurrentTimeFudgeFactor):
(WebCore::SourceBufferPrivate::setAppendWindowStart):
(WebCore::SourceBufferPrivate::setAppendWindowEnd):
(WebCore::SourceBufferPrivate::bufferFull const):
(WebCore::SourceBufferPrivate::buffered const):
(WebCore::SourceBufferPrivate::isBufferedDirty const):
(WebCore::SourceBufferPrivate::setBufferedDirty):
(WebCore::SourceBufferPrivate::timestampOffset const):
(WebCore::SourceBufferPrivate::setTimestampOffset):
(WebCore::SourceBufferPrivate::startChangingType):
(WebCore::SourceBufferPrivate::setShouldGenerateTimestamps):
(WebCore::SourceBufferPrivate::setMode):
(WebCore::SourceBufferPrivate::setGroupStartTimestamp):
(WebCore::SourceBufferPrivate::setGroupStartTimestampToEndTimestamp):
(WebCore::SourceBufferPrivate::isActive const):
(WebCore::SourceBufferPrivate::isSeeking const):
(WebCore::SourceBufferPrivate::currentMediaTime const):
(WebCore::SourceBufferPrivate::duration const):
(WebCore::SourceBufferPrivate::flush):
(WebCore::SourceBufferPrivate::enqueueSample):
(WebCore::SourceBufferPrivate::allSamplesInTrackEnqueued):
(WebCore::SourceBufferPrivate::isReadyForMoreSamples):
(WebCore::SourceBufferPrivate::notifyClientWhenReadyForMoreSamples):
(WebCore::SourceBufferPrivate::canSetMinimumUpcomingPresentationTime const):
(WebCore::SourceBufferPrivate::setMinimumUpcomingPresentationTime):
(WebCore::SourceBufferPrivate::clearMinimumUpcomingPresentationTime):

  • platform/graphics/SourceBufferPrivateClient.h:
  • platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm:

(WebCore::MediaSourcePrivateAVFObjC::duration const):
(WebCore::MediaSourcePrivateAVFObjC::currentMediaTime const):
(WebCore::MediaSourcePrivateAVFObjC::duration): Deleted.

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

(WebCore::SourceBufferPrivateAVFObjC::didParseInitializationData):
(WebCore::SourceBufferPrivateAVFObjC::didProvideMediaDataForTrackID):
(WebCore::SourceBufferPrivateAVFObjC::removedFromMediaSource):
(WebCore::SourceBufferPrivateAVFObjC::setActive):
(WebCore::SourceBufferPrivateAVFObjC::isActive const):
(WebCore::SourceBufferPrivateAVFObjC::didBecomeReadyForMoreSamples):
(WebCore::SourceBufferPrivateAVFObjC::isSeeking const):
(WebCore::SourceBufferPrivateAVFObjC::currentMediaTime const):
(WebCore::SourceBufferPrivateAVFObjC::duration const):
(WebCore::SourceBufferPrivateAVFObjC::setVideoLayer):
(WebCore::SourceBufferPrivateAVFObjC::setDecompressionSession):
(WebCore::SourceBufferPrivateAVFObjC::setClient): Deleted.
(WebCore::SourceBufferPrivateAVFObjC::fastSeekTimeForMediaTime): Deleted.

  • platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.cpp:

(WebCore::MediaSourcePrivateGStreamer::duration const):
(WebCore::MediaSourcePrivateGStreamer::currentMediaTime const):

  • platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.h:
  • platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:

(WebCore::SourceBufferPrivateGStreamer::append):
(WebCore::SourceBufferPrivateGStreamer::removedFromMediaSource):
(WebCore::SourceBufferPrivateGStreamer::notifyReadyForMoreSamples):
(WebCore::SourceBufferPrivateGStreamer::setActive):
(WebCore::SourceBufferPrivateGStreamer::isActive const):
(WebCore::SourceBufferPrivateGStreamer::didReceiveInitializationSegment):
(WebCore::SourceBufferPrivateGStreamer::didReceiveSample):
(WebCore::SourceBufferPrivateGStreamer::didReceiveAllPendingSamples):
(WebCore::SourceBufferPrivateGStreamer::appendParsingFailed):
(WebCore::SourceBufferPrivateGStreamer::isSeeking const):
(WebCore::SourceBufferPrivateGStreamer::currentMediaTime const):
(WebCore::SourceBufferPrivateGStreamer::duration const):
(WebCore::SourceBufferPrivateGStreamer::setClient): Deleted.

  • platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.h:
  • platform/mock/mediasource/MockMediaPlayerMediaSource.h:
  • platform/mock/mediasource/MockMediaSourcePrivate.cpp:

(WebCore::MockMediaSourcePrivate::MockMediaSourcePrivate):
(WebCore::MockMediaSourcePrivate::currentMediaTime const):
(WebCore::MockMediaSourcePrivate::logChannel const):
(WebCore::MockMediaSourcePrivate::mediaSourceLogger const): Deleted.
(WebCore::MockMediaSourcePrivate::mediaSourceLogIdentifier): Deleted.

  • platform/mock/mediasource/MockMediaSourcePrivate.h:
  • platform/mock/mediasource/MockSourceBufferPrivate.cpp:

(WebCore::MockSourceBufferPrivate::MockSourceBufferPrivate):
(WebCore::MockSourceBufferPrivate::didReceiveInitializationSegment):
(WebCore::MockSourceBufferPrivate::didReceiveSample):
(WebCore::MockSourceBufferPrivate::setActive):
(WebCore::MockSourceBufferPrivate::isActive const):
(WebCore::MockSourceBufferPrivate::isSeeking const):
(WebCore::MockSourceBufferPrivate::currentMediaTime const):
(WebCore::MockSourceBufferPrivate::duration const):
(WebCore::MockSourceBufferPrivate::logChannel const):
(WebCore::MockSourceBufferPrivate::setClient): Deleted.
(WebCore::MockSourceBufferPrivate::fastSeekTimeForMediaTime): Deleted.
(WebCore::MockSourceBufferPrivate::sourceBufferLogger const): Deleted.
(WebCore::MockSourceBufferPrivate::sourceBufferLogIdentifier): Deleted.

  • platform/mock/mediasource/MockSourceBufferPrivate.h:

Source/WebKit:

Update SourceBufferPrivateRemote and RemoteSourceBufferProxy because of
the changes on SourceBufferPrivate and SourceBufferPrivateClient.

  • GPUProcess/media/RemoteSourceBufferProxy.cpp:

(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateAppendError):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDurationChanged):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidParseSample):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidDropSample):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateStreamEndedWithDecodeError):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateHasAudio const):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateHasVideo const):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidReceiveSample): Deleted.
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateReenqueSamples): Deleted.
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidBecomeReadyForMoreSamples): Deleted.
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateFastSeekTimeForMediaTime): Deleted.

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

(WebKit::SourceBufferPrivateRemote::setClient): Deleted.

  • WebProcess/GPU/media/SourceBufferPrivateRemote.h:
9:57 AM Changeset in webkit [270434] by Alan Bujtas
  • 5 edits in trunk

[LFC][IFC] Only shrink the line with the float when it is intrusive
https://bugs.webkit.org/show_bug.cgi?id=219525

Reviewed by Antti Koivisto.

Source/WebCore:

In this patch we check if the positioned float box actually intersects the line and shrink the available width accordingly.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::layoutInlineContent):
(WebCore::Layout::LineBuilder::computedIntrinsicWidth):
(WebCore::Layout::LineBuilder::initialize):
(WebCore::Layout::LineBuilder::placeInlineContent):
(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::initialConstraintsForLine):
(WebCore::Layout::LineBuilder::handleFloatContent):
(WebCore::Layout::LineBuilder::handleInlineContent):
(WebCore::Layout::LineBuilder::rebuildLineForTrailingSoftHyphen):
(WebCore::Layout::LineBuilder::constraintsForLine): Deleted.

  • layout/inlineformatting/InlineLineBuilder.h:

LayoutTests:

  • platform/mac-wk2/TestExpectations:
8:50 AM Changeset in webkit [270433] by Truitt Savell
  • 3 edits in trunk/LayoutTests

Followup rebase for fast/forms/listbox-width-change.html and fast/forms/search/search-size-with-decorations.html
https://bugs.webkit.org/show_bug.cgi?id=218359

Unreviewed test gardening.

  • platform/mac-catalina/fast/forms/listbox-width-change-expected.txt:
  • platform/mac-catalina/fast/forms/search/search-size-with-decorations-expected.txt:
8:45 AM Changeset in webkit [270432] by aboya@igalia.com
  • 2 edits in trunk/LayoutTests

[GStreamer] Unreviewed micro gardening
https://bugs.webkit.org/show_bug.cgi?id=214031

imported/w3c/web-platform-tests/html/semantics/embedded-content/the-video-element/video-poster-shown-preload-auto.html
is now passing, likely due to r269407.

  • platform/glib/TestExpectations:
7:54 AM Changeset in webkit [270431] by Caio Lima
  • 3 edits in trunk/Source/JavaScriptCore

[JIT] Value profile stores wrong value in BaselineJIT for some operations
https://bugs.webkit.org/show_bug.cgi?id=219535

Reviewed by Mark Lam.

This patch is a follow up from r270423 to fix 32-bits baseline JIT
code from op_iterator_next. It's also fixing wrong profile value for
op_get_prototype_of.

  • jit/JITCall32_64.cpp:

(JSC::JIT::emit_op_iterator_next):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_get_prototype_of):

7:43 AM Changeset in webkit [270430] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

GPU Process WindowServer blocking prevents CGL
https://bugs.webkit.org/show_bug.cgi?id=219431
<rdar://problem/71893390>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-12-04
Reviewed by Per Arne Vollan.

Mark the GPU process as NSSupportsAutomaticGraphicsSwitching.
This allows CGL to work in cases when WindowServer connection
is blocked.

No new tests, makes the future WebGL in GPU process work.

  • GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-OSX.plist:
6:31 AM WebKitGtkLayoutTests edited by vjaquez@igalia.com
Document how to run gdb for WebProcess in a test (diff)
5:48 AM Changeset in webkit [270429] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Float positioning needs to happen while building the line
https://bugs.webkit.org/show_bug.cgi?id=219523

Reviewed by Antti Koivisto.

This patch is in preparation for cases when the float may fit the line and we assume it's intrusive but due to e.g. "clear"
it is not intersecting the line at all.
In order to figure out whether the float boxes intersect the current line, we need to compute their position as we find them.
In this patch the float positioning logic is moved over to LineBuilder (from the line post-processing) and floats are added
to the FloatingState as we encounter them while building the line.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):
(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

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

(WebCore::Layout::LineBuilder::LineBuilder):
(WebCore::Layout::LineBuilder::layoutInlineContent):
(WebCore::Layout::LineBuilder::computedIntrinsicWidth):
(WebCore::Layout::LineBuilder::initialize):
(WebCore::Layout::LineBuilder::constraintsForLine):
(WebCore::Layout::LineBuilder::handleFloatContent):

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::formattingState):
(WebCore::Layout::LineBuilder::floatingState):

5:35 AM Changeset in webkit [270428] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Web process assert when loading slack
https://bugs.webkit.org/show_bug.cgi?id=219079
<rdar://problem/71814675>

Reviewed by Antti Koivisto.

Source/WebCore:

While some display types do not make too much sense on replaced elements, Box::isInlineLevelBox should
return true for all of them.

Test: fast/inline/inline-flex-on-replaced-crash.html

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::isInlineLevelBox const):

LayoutTests:

  • fast/inline/inline-flex-on-replaced-crash-expected.txt: Added.
  • fast/inline/inline-flex-on-replaced-crash.html: Added.
4:26 AM Changeset in webkit [270427] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Decouple inline content and float handling in LineBuilder
https://bugs.webkit.org/show_bug.cgi?id=219522

Reviewed by Antti Koivisto.

The line candidate content is either a list of inline runs or an individual float box. Let's process them separately.

This is in preparation for adding support for "vertically stretchy" lines vs. intrusive floats where the line height
may change as we add new inline level boxes and we need to probe against existing floats.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineCandidate::InlineContent::continuousContent const):
(WebCore::Layout::LineCandidate::InlineContent::isEmpty const):
(WebCore::Layout::LineBuilder::placeInlineContent):
(WebCore::Layout::LineBuilder::handleFloatContent):
(WebCore::Layout::LineBuilder::handleInlineContent):
(WebCore::Layout::LineCandidate::InlineContent::operator() const): Deleted.
(WebCore::Layout::LineBuilder::handleFloatOrInlineContent): Deleted.

  • layout/inlineformatting/InlineLineBuilder.h:
1:41 AM Changeset in webkit [270426] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

WebGL2: Null pointer dereference in std::string implementation in gl::Shader::getTransformFeedbackVaryingMappedName
https://bugs.webkit.org/show_bug.cgi?id=218602

Patch by Rob Buis <rbuis@igalia.com> on 2020-12-04
Reviewed by Dean Jackson.

Source/ThirdParty/ANGLE:

Skip varying if field is not found since in this
case we have no match for the varying parameter name.

  • src/libANGLE/Shader.cpp:

(gl::Shader::getTransformFeedbackVaryingMappedName):

LayoutTests:

Add test that triggers the Shader::getTransformFeedbackVaryingMappedName
field code.

  • fast/canvas/webgl/webgl-transformed-varying-name-crash-expected.txt: Added.
  • fast/canvas/webgl/webgl-transformed-varying-name-crash.html: Added.

Dec 3, 2020:

11:10 PM Changeset in webkit [270425] by Simon Fraser
  • 19 edits
    1 delete in trunk

Only the first wheel event in a gesture should be cancelable
https://bugs.webkit.org/show_bug.cgi?id=218764
<rdar://problem/71248946>

Reviewed by Tim Horton.

Source/WebCore:

Implement the WebKit2 version of r270312, where only the first wheel event in a gesture is
cancelable.

When scrolling over an element with handlers, we do event handling on the main thread,
so we can take the compute value of EventHandler's Optional<WheelScrollGestureState>
from the first event and send it back to the scrolling thread.

However, the scrolling thread needs to block until this first event comes back from
the main thread. To achieve this, EventDispatcher::wheelEvent() now dispaches
main thread scrolls from the scrolling thread (not the dispatcher thread), and
waits on m_waitingForBeganEventCondition with a 50ms timeout for that first event to
come back.

In the normal case, main thread handling dispatches the event back to the scrolling
thread for scrolling via handleWheelEventAfterMainThread(), and then calls
wheelEventWasProcessedByMainThread() to signal the condition. If for some reason
handleWheelEventAfterMainThread() doesn't get called (e.g. nothing was scrollable),
then wheelEventWasProcessedByMainThread() still gets called to signal.

If m_waitingForBeganEventCondition times out, then the scrolling thread falls back
to non-blocking behaviour (as if the first event was not canceled).

Finally, when we know the gesture will become non-blocking, we transition to running
the scroll from the scrolling thread, which requires that we set up latching, hence
the changes in ScrollingTreeLatchingController.

Tested by existing tests in fast/events/wheel.

  • page/EventHandler.cpp:

(WebCore::EventHandler::wheelEventWasProcessedByMainThread):
(WebCore::EventHandler::handleWheelEventInScrollableArea):

  • page/WheelEventTestMonitor.cpp:

(WebCore::operator<<):

  • page/WheelEventTestMonitor.h:
  • page/mac/EventHandlerMac.mm:

(WebCore::EventHandler::processWheelEventForScrolling):

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::determineWheelEventProcessing):
(WebCore::ScrollingTree::setGestureState):
(WebCore::ScrollingTree::gestureState):

  • page/scrolling/ScrollingTree.h:

(WebCore::ScrollingTree::willSendEventToMainThread):
(WebCore::ScrollingTree::waitForEventToBeProcessedByMainThread):

  • page/scrolling/ScrollingTreeLatchingController.cpp:

(WebCore::ScrollingTreeLatchingController::receivedWheelEvent):
(WebCore::ScrollingTreeLatchingController::nodeDidHandleEvent):

  • page/scrolling/ScrollingTreeLatchingController.h:
  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::handleWheelEventAfterMainThread):
(WebCore::ThreadedScrollingTree::wheelEventWasProcessedByMainThread):
(WebCore::ThreadedScrollingTree::willSendEventToMainThread):
(WebCore::ThreadedScrollingTree::waitForEventToBeProcessedByMainThread):

  • page/scrolling/ThreadedScrollingTree.h:
  • page/scrolling/mac/ScrollingCoordinatorMac.mm:

(WebCore::ScrollingCoordinatorMac::handleWheelEventForScrolling): Need to track deferral
for WheelEventTestMonitor.
(WebCore::ScrollingCoordinatorMac::wheelEventWasProcessedByMainThread): This is now synchronous
to the scrolling thread so no need for the deferrer.
(WebCore::nextDeferIdentifier): Deleted.

  • page/scrolling/nicosia/ScrollingCoordinatorNicosia.cpp:

(WebCore::ScrollingCoordinatorNicosia::wheelEventWasProcessedByMainThread):

  • platform/cocoa/ScrollController.mm:

(WebCore::ScrollController::handleWheelEvent):

Source/WebKit:

In EventDispatcher::wheelEvent(), all wheel events now bounce through the scrolling
thread, even those destined for main thread scrolling. This allows the scrolling thread
to wait on a condition for the event to come back to the scrolling thread via
handleWheelEventAfterMainThread(), since we have to know whether content called
preventDefault() on the first event before sending subsequent events.

  • WebProcess/WebPage/EventDispatcher.cpp:

(WebKit::EventDispatcher::wheelEvent):

LayoutTests:

  • fast/scrolling/mac/rubberband-overflow-in-wheel-region-root-jiggle.html: Make more robust.
  • platform/mac-wk2/fast/events/wheel/wheel-events-become-non-cancelable-expected.txt: Test now passes in WK2.
10:45 PM Changeset in webkit [270424] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GTK] Gardening anchor download failures after r270422

Unreviewed test gardening.

  • platform/gtk/TestExpectations:
8:08 PM Changeset in webkit [270423] by sbarati@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

"done" checkpoint of iterator_next stores the wrong register in the value profile in baseline JIT
https://bugs.webkit.org/show_bug.cgi?id=219501

Reviewed by Keith Miller.

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

(JSC::JIT::emit_op_iterator_next):

  • jit/JITInlines.h:

(JSC::JIT::emitValueProfilingSite):
(JSC::JIT::emitValueProfilingSiteIfProfiledOpcode):

7:30 PM Changeset in webkit [270422] by commit-queue@webkit.org
  • 75 edits
    3 copies
    1 move
    5 adds
    2 deletes in trunk

Source/WebKit:
Introduce new download API
https://bugs.webkit.org/show_bug.cgi?id=217747

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-03
Reviewed by Brady Eidson.

Safari currently uses _WKDownload, which has evolved strangely over the last decade.
In order to make a nicer interface, we need to learn from those lessons and take a step back.
I did that, and here's what I came up with: WKDownload and WKDownloadDelegate!

Notable changes include:

  1. The delegate now lives on the download object instead of the process pool.
  2. WKDownload does not conform to NSCopying because we have NSMapTable instead of NSDictionary.
  3. publishProgressAtURL is gone. That will be reimplemented in the UI process of the client that used it.
  4. cancel has a completion handler to get the resume data instead of waiting for didCancel then getting it from the download object.
  5. didFailWithError also gives you the resume data, so there is no way to get it from the download object. That's more about a fail/cancel

event than a property of the download.

  1. wasUserInitiated is gone. Instead, WKNavigationDelegate has a callback that links a navigation action (where _isUserInitiated is exposed) to the download.
  2. redirectChain is also gone. That can also be gotten from the link to the navigation and the download delegate's redirect callback.
  3. _downloadDidStart is gone. Instead, we have completion handlers that expose a WKDownload once it's started. There's no need to

reference the download object before then anyways. Note: that's when the download "starts" which is before it receives the response,
so there will be no server delay in the difference between download object availabilities.

  1. didReceiveServerRedirectToURL now gives you the option of continuing or cancelling. This reflects the amount of control the

WKNavigationDelegate has.

  1. decideDestinationWithSuggestedFilename and didReceiveResponse have been merged, since they actually happen at the same time and

NSURLResponse has suggestedFilename API. allowOverwrite is also gone. It wasn't used, and not really needed.

  1. didCreateDestination is gone. That callback time wasn't really necessary. If you need to know when it's created, wait until the first

didWriteData callback. The destination has definitely been created by then.

  1. shouldDecodeSourceDataOfMIMEType is gone. It's actually not called since we adopted NSURLSession, and we should remove the related dead code.
  2. originatingFrame is gone. On _WKDownload it was actually a non-null WKFrameInfo that often contained no information. When information was there,

the information access has been replaced by didBecomeDownload which links the WKNavigationResponse which has frame info on it.

I wrote API tests for everything I could think of.

  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::resumeDownload):

  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:

(WebKit::Download::resume):
(WebKit::Download::platformCancelNetworkLoad):

  • NetworkProcess/NetworkDataTaskBlob.cpp:

(WebKit::NetworkDataTaskBlob::suggestedFilename const):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::resumeDownload):
(WebKit::NetworkProcess::findPendingDownloadLocation):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]):

  • Scripts/webkit/messages.py:
  • Shared/API/Cocoa/WebKit.h:
  • Shared/API/c/WKSharedAPICast.h:

(WebKit::toAPI):

  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/API/APIDownloadClient.h:

(API::DownloadClient::legacyDidStart):
(API::DownloadClient::didFail):
(API::DownloadClient::didStart): Deleted.

  • UIProcess/API/APINavigationAction.h:
  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::navigationResponseDidBecomeDownload):
(API::NavigationClient::navigationActionDidBecomeDownload):
(API::NavigationClient::contextMenuDidCreateDownload):

  • UIProcess/API/APIPolicyClient.h:

(API::PolicyClient::decidePolicyForNavigationAction):
(API::PolicyClient::decidePolicyForNewWindowAction):

  • UIProcess/API/C/WKContext.cpp:

(WKContextSetDownloadClient): Deleted.

  • UIProcess/API/C/WKContext.h:
  • UIProcess/API/C/WKContextDownloadClient.h: Removed.
  • UIProcess/API/C/WKDownload.cpp: Removed.
  • UIProcess/API/C/WKDownloadClient.h: Added.
  • UIProcess/API/C/WKDownloadRef.cpp: Added.

(WKDownloadGetTypeID):
(WKDownloadCopyRequest):
(WKDownloadCancel):
(WKDownloadGetOriginatingPage):
(WKDownloadGetWasUserInitiated):
(WKDownloadSetClient):

  • UIProcess/API/C/WKDownloadRef.h: Renamed from Source/WebKit/UIProcess/API/C/WKDownload.h.
  • UIProcess/API/C/WKNavigationActionRef.cpp:

(WKNavigationActionGetDownloadAttribute):
(WKNavigationActionShouldPerformDownload): Deleted.

  • UIProcess/API/C/WKNavigationActionRef.h:
  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPagePolicyClient):
(WKPageSetPageNavigationClient):

  • UIProcess/API/C/WKPageNavigationClient.h:
  • UIProcess/API/Cocoa/WKDownload.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKDownload.h.
  • UIProcess/API/Cocoa/WKDownload.mm: Added.

(-[WKDownload cancel:]):
(-[WKDownload originalRequest]):
(-[WKDownload delegate]):
(-[WKDownload setDelegate:]):
(-[WKDownload dealloc]):
(-[WKDownload _apiObject]):

  • UIProcess/API/Cocoa/WKDownloadDelegate.h: Added.
  • UIProcess/API/Cocoa/WKDownloadInternal.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKDownloadInternal.h.
  • UIProcess/API/Cocoa/WKNavigationAction.h:
  • UIProcess/API/Cocoa/WKNavigationAction.mm:

(-[WKNavigationAction downloadAttribute]):
(-[WKNavigationAction _shouldPerformDownload]):

  • UIProcess/API/Cocoa/WKNavigationActionPrivate.h:
  • UIProcess/API/Cocoa/WKNavigationDelegate.h:
  • UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _downloadURLRequest:websiteDataStore:originatingWebView:]):
(-[WKProcessPool _resumeDownloadFromData:websiteDataStore:path:originatingWebView:]):

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView downloadRequest:completionHandler:]):
(-[WKWebView resumeDownloadWithData:completionHandler:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/_WKDownload.h:
  • UIProcess/API/Cocoa/_WKDownload.mm:

(-[_WKDownload initWithDownload2:]):
(+[_WKDownload downloadWithDownload:]):
(-[_WKDownload cancel]):
(-[_WKDownload publishProgressAtURL:]):
(-[_WKDownload request]):
(-[_WKDownload originatingWebView]):
(-[_WKDownload redirectChain]):
(-[_WKDownload wasUserInitiated]):
(-[_WKDownload resumeData]):
(-[_WKDownload originatingFrame]):
(-[_WKDownload _apiObject]):
(-[_WKDownload dealloc]): Deleted.

  • UIProcess/API/Cocoa/_WKDownloadDelegate.h:
  • UIProcess/API/Cocoa/_WKDownloadInternal.h:
  • UIProcess/API/glib/WebKitDownloadClient.cpp:
  • UIProcess/Cocoa/LegacyDownloadClient.h:
  • UIProcess/Cocoa/LegacyDownloadClient.mm:

(WebKit::LegacyDownloadClient::legacyDidStart):
(WebKit::LegacyDownloadClient::didReceiveResponse):
(WebKit::LegacyDownloadClient::didReceiveData):
(WebKit::LegacyDownloadClient::didReceiveAuthenticationChallenge):
(WebKit::LegacyDownloadClient::didCreateDestination):
(WebKit::LegacyDownloadClient::processDidCrash):
(WebKit::LegacyDownloadClient::decideDestinationWithSuggestedFilename):
(WebKit::LegacyDownloadClient::didFinish):
(WebKit::LegacyDownloadClient::didFail):
(WebKit::LegacyDownloadClient::legacyDidCancel):
(WebKit::LegacyDownloadClient::willSendRequest):
(WebKit::LegacyDownloadClient::didStart): Deleted.

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

(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse):
(WebKit::NavigationState::NavigationClient::navigationActionDidBecomeDownload):
(WebKit::NavigationState::NavigationClient::navigationResponseDidBecomeDownload):
(WebKit::NavigationState::NavigationClient::contextMenuDidCreateDownload):

  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:
  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::~DownloadProxy):
(WebKit::DownloadProxy::didStart):
(WebKit::DownloadProxy::decideDestinationWithSuggestedFilename):
(WebKit::DownloadProxy::didFail):
(WebKit::DownloadProxy::setClient):

  • UIProcess/Downloads/DownloadProxy.h:

(WebKit::DownloadProxy::setDidStartCallback):
(WebKit::DownloadProxy::setSuggestedFilename):

  • UIProcess/Network/NetworkProcessProxy.cpp:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::receivedNavigationPolicyDecision):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponseShared):
(WebKit::WebPageProxy::resumeDownload):
(WebKit::WebPageProxy::downloadRequest):
(WebKit::WebPageProxy::contextMenuItemSelected):

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::receivedPolicyDecision):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::resumeDownload):

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

Tools:
Introduce new download SPI
https://bugs.webkit.org/show_bug.cgi?id=217747

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-03
Reviewed by Brady Eidson.

  • TestWebKitAPI/SourcesCocoa.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/DownloadDecideDestinationCrash.cpp:

(TestWebKitAPI::decidePolicyForNavigationResponse):
(TestWebKitAPI::decideDestinationWithSuggestedFilename):
(TestWebKitAPI::navigationResponseDidBecomeDownload):
(TestWebKitAPI::setPagePolicyClient):
(TestWebKitAPI::TEST):
(TestWebKitAPI::decidePolicyForNavigationAction): Deleted.
(TestWebKitAPI::setContextDownloadClient): Deleted.

  • TestWebKitAPI/Tests/WebKit/mac/ContextMenuDownload.mm:

(TestWebKitAPI::decideDestinationWithSuggestedFilename):
(TestWebKitAPI::contextMenuDidCreateDownload):
(TestWebKitAPI::TEST):
(TestWebKitAPI::decideDestinationWithSuggestedFilenameContainingSlashes):
(TestWebKitAPI::contextMenuDidCreateDownloadWithSuggestedFilenameContainingSlashes):

  • TestWebKitAPI/Tests/WebKitCocoa/ContentFiltering.mm:

(-[BecomeDownloadDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):

  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm:

(-[ConvertResponseToDownloadNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[TestDownloadNavigationResponseFromMemoryCacheDelegate webView:didFailProvisionalNavigation:withError:]):
(-[TestDownloadNavigationResponseFromMemoryCacheDelegate webView:didFinishNavigation:]):
(TEST):
(downloadTestServer):
(checkResumedDownloadContents):
(simpleDownloadTestServer):
(checkFileContents):
(tempFileThatDoesNotExist):
(-[DownloadTestSchemeDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(TestWebKitAPI::mutateFile):

  • TestWebKitAPI/Tests/WebKitCocoa/DownloadProgress.mm:

(-[DownloadProgressTestRunner webView:decidePolicyForNavigationResponse:decisionHandler:]):

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

(-[PSONNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):

  • TestWebKitAPI/Tests/WebKitCocoa/QuickLook.mm:

(TEST):

  • TestWebKitAPI/cocoa/TestDownloadDelegate.h:
  • TestWebKitAPI/cocoa/TestDownloadDelegate.mm:

(-[TestDownloadDelegate download:willPerformHTTPRedirection:newRequest:decisionHandler:]):
(-[TestDownloadDelegate download:decideDestinationWithResponse:suggestedFilename:completionHandler:]):
(-[TestDownloadDelegate download:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]):
(-[TestDownloadDelegate download:didReceiveAuthenticationChallenge:completionHandler:]):
(-[TestDownloadDelegate downloadDidFinish:]):
(-[TestDownloadDelegate download:didFailWithError:resumeData:]):
(-[TestDownloadDelegate webView:navigationResponse:didBecomeDownload:]):
(-[TestDownloadDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[TestDownloadDelegate waitForDownloadDidFinish]):
(-[TestDownloadDelegate takeCallbackRecord]):
(-[TestDownloadDelegate _downloadDidStart:]): Deleted.
(-[TestDownloadDelegate _download:didReceiveServerRedirectToURL:]): Deleted.
(-[TestDownloadDelegate _download:didReceiveResponse:]): Deleted.
(-[TestDownloadDelegate _download:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]): Deleted.
(-[TestDownloadDelegate _download:decideDestinationWithSuggestedFilename:completionHandler:]): Deleted.
(-[TestDownloadDelegate _downloadDidFinish:]): Deleted.
(-[TestDownloadDelegate _download:didFailWithError:]): Deleted.
(-[TestDownloadDelegate _downloadDidCancel:]): Deleted.
(-[TestDownloadDelegate _download:didReceiveAuthenticationChallenge:completionHandler:]): Deleted.
(-[TestDownloadDelegate _download:didCreateDestination:]): Deleted.

  • TestWebKitAPI/cocoa/TestLegacyDownloadDelegate.h: Copied from Tools/TestWebKitAPI/cocoa/TestDownloadDelegate.h.
  • TestWebKitAPI/cocoa/TestLegacyDownloadDelegate.mm: Copied from Tools/TestWebKitAPI/cocoa/TestDownloadDelegate.mm.

(-[TestLegacyDownloadDelegate _downloadDidStart:]):
(-[TestLegacyDownloadDelegate _download:didReceiveServerRedirectToURL:]):
(-[TestLegacyDownloadDelegate _download:didReceiveResponse:]):
(-[TestLegacyDownloadDelegate _download:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]):
(-[TestLegacyDownloadDelegate _download:decideDestinationWithSuggestedFilename:completionHandler:]):
(-[TestLegacyDownloadDelegate _downloadDidFinish:]):
(-[TestLegacyDownloadDelegate _download:didFailWithError:]):
(-[TestLegacyDownloadDelegate _downloadDidCancel:]):
(-[TestLegacyDownloadDelegate _download:didReceiveAuthenticationChallenge:completionHandler:]):
(-[TestLegacyDownloadDelegate _download:didCreateDestination:]):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::navigationDidBecomeDownloadShared):
(WTR::TestController::navigationActionDidBecomeDownload):
(WTR::TestController::navigationResponseDidBecomeDownload):
(WTR::TestController::createOtherPage):
(WTR::TestController::createWebViewWithOptions):
(WTR::TestController::decideDestinationWithSuggestedFilename):
(WTR::TestController::downloadDidFinish):
(WTR::TestController::downloadDidFail):
(WTR::TestController::downloadDidReceiveServerRedirectToURL):
(WTR::TestController::downloadDidStart):
(WTR::TestController::decidePolicyForNavigationAction):
(WTR::TestController::downloadDidCancel): Deleted.

  • WebKitTestRunner/TestController.h:

LayoutTests:
Introduce new download API
https://bugs.webkit.org/show_bug.cgi?id=217747

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-03
Reviewed by Brady Eidson.

  • fast/dom/HTMLAnchorElement/anchor-download-expected.txt:
  • fast/dom/HTMLAnchorElement/anchor-download-user-triggered-synthetic-click-expected.txt:
  • fast/dom/HTMLAnchorElement/anchor-file-blob-convert-to-download-async-delegate-expected.txt:
  • fast/dom/HTMLAnchorElement/anchor-file-blob-convert-to-download-expected.txt:
  • fast/dom/HTMLAnchorElement/anchor-nodownload-set-expected.txt:

Now that NetworkDataTaskBlob::suggestedFilename doesn't suggest "unknown"
the capitalization has changed to "Unknown" from NSURLResponse's suggestedFilename.

5:32 PM Changeset in webkit [270421] by Kate Cheney
  • 4 edits in trunk/Source/WebCore

Issue logging in to Microsoft Teams if logged into other Microsoft accounts and navigating directly to teams.microsoft.com
https://bugs.webkit.org/show_bug.cgi?id=219505
<rdar://problem/71391657>

Reviewed by Alex Christensen.

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.

No new tests, site specific quirk.

In https://bugs.webkit.org/show_bug.cgi?id=218778 we added a quirk to
call the Storage Access API on behalf of microsoft.com when logging
into Microsoft Teams. This patch covers a final edge case where a user
was logged into other Microsoft accounts prior to the fix. In this
case, if the user tries to go straight to teams.microsoft.com, an endless
redirect loop will occur because the site has login credentials from a previous
Microsoft login but does not have 3rd party cookie access to authenticate the
login on teams.microsoft.com. The solution is to redirect the user to
the login page for Teams on microsoft.com where the previous fix added
a Storage Access prompt.

  • loader/DocumentLoader.cpp:

(WebCore::microsoftTeamsRedirectURL):
(WebCore::DocumentLoader::responseReceived):

  • page/Quirks.cpp:

(WebCore::Quirks::isMicrosoftTeamsRedirectURL):

  • page/Quirks.h:
5:22 PM Changeset in webkit [270420] by commit-queue@webkit.org
  • 41 edits in trunk

Adopt FALLBACK_PLATFORM
https://bugs.webkit.org/show_bug.cgi?id=219504

Patch by Adam Roben <Adam Roben> on 2020-12-03
Reviewed by Tim Horton.

PerformanceTests:

  • MediaTime/Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM

it if it's defined, otherwise use PLATFORM_NAME as before.

Source/bmalloc:

  • Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's

defined, otherwise use PLATFORM_NAME as before.

Source/JavaScriptCore:

  • Configurations/SDKVariant.xcconfig:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Scripts/check-xcfilelists.sh:

Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME
as before.

Source/ThirdParty:

  • gtest/xcode/Config/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if

it's defined, otherwise use PLATFORM_NAME as before.

Source/ThirdParty/ANGLE:

  • Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's

defined, otherwise use PLATFORM_NAME as before.

Source/ThirdParty/libwebrtc:

  • Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's

defined, otherwise use PLATFORM_NAME as before.

Source/WebCore:

  • Configurations/SDKVariant.xcconfig:
  • Scripts/check-xcfilelists.sh:

Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME
as before.

Source/WebCore/PAL:

  • Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's

defined, otherwise use PLATFORM_NAME as before.

Source/WebInspectorUI:

  • Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's

defined, otherwise use PLATFORM_NAME as before.

Source/WebKit:

  • Configurations/SDKVariant.xcconfig:
  • Scripts/check-xcfilelists.sh:

Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME
as before.

Source/WebKitLegacy:

  • scripts/check-xcfilelists.sh: Use FALLBACK_PLATFORM it if it's

defined, otherwise use PLATFORM_NAME as before.

Source/WebKitLegacy/mac:

  • Configurations/SDKVariant.xcconfig:
  • Configurations/WebKitLegacy.xcconfig:

Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME
as before.

Source/WTF:

  • Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's

defined, otherwise use PLATFORM_NAME as before.

Tools:

  • ContentExtensionTester/Configurations/SDKVariant.xcconfig:
  • DumpRenderTree/mac/Configurations/SDKVariant.xcconfig:
  • ImageDiff/cg/Configurations/SDKVariant.xcconfig:
  • MiniBrowser/Configurations/SDKVariant.xcconfig:
  • MobileMiniBrowser/Configurations/SDKVariant.xcconfig:
  • TestWebKitAPI/Configurations/SDKVariant.xcconfig:
  • WebEditingTester/Configurations/SDKVariant.xcconfig:
  • WebKitTestRunner/Configurations/SDKVariant.xcconfig:
  • lldb/lldbWebKitTester/Configurations/SDKVariant.xcconfig:

Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME
as before.

4:38 PM Changeset in webkit [270419] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Drop unimplemented suspension functions on GPUConnectionToWebProcess and WebAuthnConnectionToWebProcess
https://bugs.webkit.org/show_bug.cgi?id=219513

Reviewed by Tim Horton.

These functions are never called and have no implementation. This is just bad copy/paste from
NetworkConnectionToWebProcess.

  • GPUProcess/GPUConnectionToWebProcess.h:
  • WebAuthnProcess/WebAuthnConnectionToWebProcess.h:
4:31 PM Changeset in webkit [270418] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[macOS] Only extend access to the AppleSNBFBUserClient IOKit class if the GPU Process is not used
https://bugs.webkit.org/show_bug.cgi?id=219014
<rdar://problem/70463873>

Reviewed by Per Arne Vollan.

Instead of globally extending access to the AppleSNBFBUserClient IOKit class,
only extend it when the GPU process is not in use.

  • UIProcess/WebPageProxy.cpp:

(WebKit::gpuIOKitClasses): Add 'AppleSNBFBUserClient' as a dynamically-extended
IOKit class.

  • WebProcess/com.apple.WebProcess.sb.in: Only allow 'AppleSNBFBUserClient' if it

was dynamically extended.

4:24 PM Changeset in webkit [270417] by Said Abou-Hallawa
  • 6 edits in trunk/Source

[GPU Process] Disconnect NativeImages from RemoteResourceCacheProxy when RemoteRenderingBackendProxy is destroyed
https://bugs.webkit.org/show_bug.cgi?id=219417

Reviewed by Tim Horton.

Source/WebCore:

Allow multiple observers for a single NativeImage. The NativeImage is
usually a frame of a CachedImage. The CachedImage can be referenced by
multiple pages and every page has its RemoteRenderingBackendProxy which
is a superclass of NativeImage::Observer.s

  • platform/graphics/NativeImage.cpp:

(WebCore::NativeImage::~NativeImage):

  • platform/graphics/NativeImage.h:

(WebCore::NativeImage::addObserver):
(WebCore::NativeImage::removeObserver):
(WebCore::NativeImage::setObserver): Deleted.
(): Deleted.

Source/WebKit:

If the WebPage is destroyed before destroying the CachedImages, a crash
may happen. The NativeImage will try to release itself from its observer,
which is RemoteResourceCacheProxy, after it has been freed.

  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:

(WebKit::RemoteResourceCacheProxy::~RemoteResourceCacheProxy):
(WebKit::RemoteResourceCacheProxy::cacheNativeImage):

  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:
4:07 PM Changeset in webkit [270416] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Use red color for sync wheel event handler debug overlay text
https://bugs.webkit.org/show_bug.cgi?id=219514

Reviewed by Tim Horton.

Use red for the "sync" wheel event handler debug overlay text.

  • rendering/RenderLayerBacking.cpp:

(WebCore::patternForEventListenerRegionType):

4:02 PM Changeset in webkit [270415] by Chris Dumez
  • 9 edits in trunk/Source/WebKit

Bad IPC from the WebProcess should not terminate the GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=219511

Reviewed by Simon Fraser.

Bad IPC from the WebProcess should not terminate the GPUProcess. The GPUProcess is shared by all
WebProcesses and it is not acceptable for a single bad WebProcess to negatively impact other
WebProcesses. Instead, we should terminate the bad WebProcess, like the NetworkProcess already
does on bad IPC.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::didReceiveInvalidMessage):

  • Shared/ProcessTerminationReason.h:
  • UIProcess/API/C/WKAPICast.h:

(WebKit::toAPI):

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::wkProcessTerminationReason):

  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::terminateWebProcess):

  • UIProcess/GPU/GPUProcessProxy.h:
  • UIProcess/GPU/GPUProcessProxy.messages.in:
  • UIProcess/WebPageProxy.cpp:

(WebKit::shouldReloadAfterProcessTermination):

4:01 PM Changeset in webkit [270414] by commit-queue@webkit.org
  • 22 edits
    1 copy
    1 add in trunk

Serialize NFA to disk before converting it to a DFA when compiling a WKContentRuleList
https://bugs.webkit.org/show_bug.cgi?id=219452

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

Source/WebCore:

This decreases maximum memory use by about 50% because the NFA and DFA never need to be in memory at the same time.
I'll have to do some tuning and on-device measurement, but this may allow us to increase maxRuleCount.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • contentextensions/CombinedURLFilters.cpp:

(WebCore::ContentExtensions::CombinedURLFilters::processNFAs):

  • contentextensions/CombinedURLFilters.h:
  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileToBytecode):
(WebCore::ContentExtensions::compileRuleList):

  • contentextensions/ContentExtensionError.cpp:

(WebCore::ContentExtensions::contentExtensionErrorCategory):

  • contentextensions/ContentExtensionError.h:
  • contentextensions/ContentExtensionsDebugging.h:
  • contentextensions/DFA.cpp:

(WebCore::ContentExtensions::DFA::shrinkToFit): Deleted.

  • contentextensions/DFA.h:
  • contentextensions/ImmutableNFA.h:

(WebCore::ContentExtensions::ImmutableNFA::clear):
(WebCore::ContentExtensions::ImmutableNFA::ConstTargetIterator::operator* const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::ConstTargetIterator::operator-> const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::ConstTargetIterator::operator== const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::ConstTargetIterator::operator!= const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::ConstTargetIterator::operator++): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::IterableConstTargets::begin const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::IterableConstTargets::end const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::ConstRangeIterator::operator== const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::ConstRangeIterator::operator!= const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::ConstRangeIterator::operator++): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::ConstRangeIterator::first const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::ConstRangeIterator::last const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::ConstRangeIterator::data const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::ConstRangeIterator::range const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::IterableConstRange::begin const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::IterableConstRange::end const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::IterableConstRange::debugPrint const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::transitionsForNode const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::root const): Deleted.
(WebCore::ContentExtensions::ImmutableNFA::finalize): Deleted.

  • contentextensions/ImmutableNFANodeBuilder.h:
  • contentextensions/NFAToDFA.cpp:

(WebCore::ContentExtensions::epsilonClosureExcludingSelf):
(WebCore::ContentExtensions::resolveEpsilonClosures):
(WebCore::ContentExtensions::NodeIdSetToUniqueNodeIdSetSource::NodeIdSetToUniqueNodeIdSetSource):
(WebCore::ContentExtensions::NodeIdSetToUniqueNodeIdSetTranslator::translate):
(WebCore::ContentExtensions::createCombinedTransition):
(WebCore::ContentExtensions::getOrCreateDFANode):
(WebCore::ContentExtensions::NFAToDFA::convert):

  • contentextensions/NFAToDFA.h:
  • contentextensions/SerializedNFA.cpp: Added.

(WebCore::ContentExtensions::writeAllToFile):
(WebCore::ContentExtensions::SerializedNFA::serialize):
(WebCore::ContentExtensions::SerializedNFA::SerializedNFA):
(WebCore::ContentExtensions::SerializedNFA::pointerAtOffsetInFile const):
(WebCore::ContentExtensions::SerializedNFA::nodes const const):
(WebCore::ContentExtensions::SerializedNFA::transitions const const):
(WebCore::ContentExtensions::SerializedNFA::targets const const):
(WebCore::ContentExtensions::SerializedNFA::epsilonTransitionsTargets const const):
(WebCore::ContentExtensions::SerializedNFA::actions const const):

  • contentextensions/SerializedNFA.h: Copied from Source/WebCore/contentextensions/ImmutableNFA.h.

(WebCore::ContentExtensions::SerializedNFA::Range::Range):
(WebCore::ContentExtensions::SerializedNFA::Range::begin const):
(WebCore::ContentExtensions::SerializedNFA::Range::end const):
(WebCore::ContentExtensions::SerializedNFA::Range::size const):
(WebCore::ContentExtensions::SerializedNFA::Range::operator[] const):
(WebCore::ContentExtensions::SerializedNFA::root const):
(WebCore::ContentExtensions::SerializedNFA::ConstTargetIterator::operator* const):
(WebCore::ContentExtensions::SerializedNFA::ConstTargetIterator::operator-> const):
(WebCore::ContentExtensions::SerializedNFA::ConstTargetIterator::operator== const):
(WebCore::ContentExtensions::SerializedNFA::ConstTargetIterator::operator!= const):
(WebCore::ContentExtensions::SerializedNFA::ConstTargetIterator::operator++):
(WebCore::ContentExtensions::SerializedNFA::IterableConstTargets::begin const):
(WebCore::ContentExtensions::SerializedNFA::IterableConstTargets::end const):
(WebCore::ContentExtensions::SerializedNFA::ConstRangeIterator::operator== const):
(WebCore::ContentExtensions::SerializedNFA::ConstRangeIterator::operator!= const):
(WebCore::ContentExtensions::SerializedNFA::ConstRangeIterator::operator++):
(WebCore::ContentExtensions::SerializedNFA::ConstRangeIterator::first const):
(WebCore::ContentExtensions::SerializedNFA::ConstRangeIterator::last const):
(WebCore::ContentExtensions::SerializedNFA::ConstRangeIterator::data const):
(WebCore::ContentExtensions::SerializedNFA::ConstRangeIterator::range const):
(WebCore::ContentExtensions::SerializedNFA::IterableConstRange::begin const):
(WebCore::ContentExtensions::SerializedNFA::IterableConstRange::end const):
(WebCore::ContentExtensions::SerializedNFA::IterableConstRange::debugPrint const):
(WebCore::ContentExtensions::SerializedNFA::transitionsForNode const):

Source/WebKit:

  • UIProcess/API/Cocoa/WKContentRuleListStore.mm:

(-[WKContentRuleListStore _compileContentRuleListForIdentifier:encodedContentRuleList:completionHandler:]):

  • UIProcess/API/Cocoa/WKContentRuleListStorePrivate.h:

Remove NS_RELEASES_ARGUMENT because it was incorrect and unnecessary because the WTF::String is copied to a background thread.

Tools:

Update syntax of existing tests, which cover behavior quite well.

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::createNFAs):
(TestWebKitAPI::TEST_F):

  • TestWebKitAPI/Tests/WebCore/DFAHelpers.h:

(TestWebKitAPI::createNFAs):
(TestWebKitAPI::buildDFAFromPatterns):

3:54 PM Changeset in webkit [270413] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Make sure the GPUConnectionToWebProcess gets destroyed when the connection to the WebProcess gets severed
https://bugs.webkit.org/show_bug.cgi?id=219508

Reviewed by Geoffrey Garen.

Make sure the GPUConnectionToWebProcess gets destroyed when the connection to the WebProcess gets severed
(WebProcess exited normally or crashed). This is similar to what we do in the NetworkProcess for
NetworkConnectionToWebProcess.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::didClose):

3:34 PM Changeset in webkit [270412] by Jonathan Bedard
  • 3 edits in trunk/Tools

[webkitscmpy] Incorrect identifier on remote SVN branches
https://bugs.webkit.org/show_bug.cgi?id=219509
<rdar://problem/71953465>

Reviewed by Stephanie Lewis.

Request reconstructed from packet inspection of requests sent by the svn binary.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/svn.py:

(Svn._cache_revisions): Clarify that revisions should only come from the specified branch.

3:20 PM Changeset in webkit [270411] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] not using std::make_pair for workaround of (possibly) ASan bug
https://bugs.webkit.org/show_bug.cgi?id=219502
<rdar://71642789>

Reviewed by Robin Morisset.

We are getting ASan crash in LayoutTests/fast/canvas/webgl/array-unit-tests.html after r269574.
However, this is inside std::make_pair, and it looks like a bug in ASan.
To workaround this for now, we avoid using std::make_pair and instead just using C++ uniform initialization.

  • runtime/JSArrayBufferPrototype.cpp:
3:15 PM Changeset in webkit [270410] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

ASSERTION FAILED: isMainThread() in WTF::Optional<IntSize> &WebCore::surfaceMaximumSize()
https://bugs.webkit.org/show_bug.cgi?id=219492

Reviewed by Ryosuke Niwa.

No new tests; fixes a failing test.

  • platform/graphics/cocoa/IOSurface.mm:

(WebCore::surfaceMaximumSize):
(WebCore::IOSurface::setMaximumSize):
(WebCore::IOSurface::maximumSize):
maximumSize() is used off the main thread, so wrap it in a WTF::Atomic.

3:09 PM Changeset in webkit [270409] by Truitt Savell
  • 42 edits
    40 copies
    3 adds
    2 deletes in trunk/LayoutTests

Get rid of LayoutTests/platform/mac-bigsur
https://bugs.webkit.org/show_bug.cgi?id=218359

Unreviewed test gardening.

  • platform/mac-bigsur/editing/pasteboard/pasting-tabs-expected.txt: Removed.
  • platform/mac-bigsur/editing/selection/select-from-textfield-outwards-expected.txt: Removed.
  • platform/mac-bigsur/editing/selection/vertical-rl-rtl-extend-line-backward-br-expected.txt: Removed.
  • platform/mac-bigsur/editing/selection/vertical-rl-rtl-extend-line-backward-br-mixed-expected.txt: Removed.
  • platform/mac-bigsur/editing/selection/vertical-rl-rtl-extend-line-backward-p-expected.txt: Removed.
  • platform/mac-bigsur/editing/selection/vertical-rl-rtl-extend-line-backward-p-mixed-expected.txt: Removed.
  • platform/mac-bigsur/editing/selection/vertical-rl-rtl-extend-line-forward-br-expected.txt: Removed.
  • platform/mac-bigsur/editing/selection/vertical-rl-rtl-extend-line-forward-br-mixed-expected.txt: Removed.
  • platform/mac-bigsur/editing/selection/vertical-rl-rtl-extend-line-forward-p-expected.txt: Removed.
  • platform/mac-bigsur/editing/selection/vertical-rl-rtl-extend-line-forward-p-mixed-expected.txt: Removed.
  • platform/mac-bigsur/fast/css/apple-system-control-colors-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/auto-fill-button/hide-auto-fill-strong-password-viewable-treatment-when-form-is-reset-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/basic-textareas-quirks-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/box-shadow-override-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/form-element-geometry-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/hidpi-textfield-background-bleeding-expected.html: Removed.
  • platform/mac-bigsur/fast/forms/input-appearance-preventDefault-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/input-appearance-spinbutton-up-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/input-placeholder-visibility-1-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/input-placeholder-visibility-3-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/input-table-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/input-value-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/listbox-width-change-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/search-rtl-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/search/search-size-with-decorations-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/search/search-zoom-computed-style-height-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/select-visual-hebrew-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/textAreaLineHeight-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/textarea-placeholder-visibility-1-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/textarea-placeholder-visibility-2-expected.txt: Removed.
  • platform/mac-bigsur/fast/forms/visual-hebrew-text-field-expected.txt: Removed.
  • platform/mac-bigsur/fast/parser/entity-comment-in-textarea-expected.txt: Removed.
  • platform/mac-bigsur/fast/parser/open-comment-in-textarea-expected.txt: Removed.
  • platform/mac-bigsur/fast/text/backslash-to-yen-sign-euc-expected.txt: Removed.
  • platform/mac-bigsur/fast/text/drawBidiText-expected.txt: Removed.
  • platform/mac-bigsur/fast/text/international/danda-space-expected.txt: Removed.
  • platform/mac-bigsur/fast/text/international/system-language/system-font-punctuation-expected.txt: Removed.
  • platform/mac-bigsur/fast/text/justify-ideograph-leading-expansion-expected.txt: Removed.
  • platform/mac-bigsur/fast/text/vertical-rl-rtl-linebreak-expected.txt: Removed.
  • platform/mac-bigsur/fast/text/vertical-rl-rtl-linebreak-mixed-expected.txt: Removed.
  • platform/mac-catalina/fast/forms/listbox-width-change-expected.txt:
  • platform/mac-catalina/fast/forms/search/search-size-with-decorations-expected.txt:
  • platform/mac/editing/pasteboard/pasting-tabs-expected.txt:
  • platform/mac/editing/selection/select-from-textfield-outwards-expected.txt:
  • platform/mac/editing/selection/vertical-rl-rtl-extend-line-backward-br-expected.txt:
  • platform/mac/editing/selection/vertical-rl-rtl-extend-line-backward-br-mixed-expected.txt:
  • platform/mac/editing/selection/vertical-rl-rtl-extend-line-backward-p-expected.txt:
  • platform/mac/editing/selection/vertical-rl-rtl-extend-line-backward-p-mixed-expected.txt:
  • platform/mac/editing/selection/vertical-rl-rtl-extend-line-forward-br-expected.txt:
  • platform/mac/editing/selection/vertical-rl-rtl-extend-line-forward-br-mixed-expected.txt:
  • platform/mac/editing/selection/vertical-rl-rtl-extend-line-forward-p-expected.txt:
  • platform/mac/editing/selection/vertical-rl-rtl-extend-line-forward-p-mixed-expected.txt:
  • platform/mac/fast/css/apple-system-control-colors-expected.txt:
  • platform/mac/fast/forms/auto-fill-button/hide-auto-fill-strong-password-viewable-treatment-when-form-is-reset-expected.txt:
  • platform/mac/fast/forms/basic-textareas-quirks-expected.txt:
  • platform/mac/fast/forms/box-shadow-override-expected.txt:
  • platform/mac/fast/forms/form-element-geometry-expected.txt:
  • platform/mac/fast/forms/input-appearance-preventDefault-expected.txt:
  • platform/mac/fast/forms/input-appearance-spinbutton-up-expected.txt:
  • platform/mac/fast/forms/input-placeholder-visibility-1-expected.txt:
  • platform/mac/fast/forms/input-placeholder-visibility-3-expected.txt:
  • platform/mac/fast/forms/input-table-expected.txt:
  • platform/mac/fast/forms/input-value-expected.txt:
  • platform/mac/fast/forms/listbox-width-change-expected.txt:
  • platform/mac/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.txt:
  • platform/mac/fast/forms/search-rtl-expected.txt:
  • platform/mac/fast/forms/search/search-size-with-decorations-expected.txt:
  • platform/mac/fast/forms/select-visual-hebrew-expected.txt:
  • platform/mac/fast/forms/textAreaLineHeight-expected.txt:
  • platform/mac/fast/forms/textarea-placeholder-visibility-1-expected.txt:
  • platform/mac/fast/forms/textarea-placeholder-visibility-2-expected.txt:
  • platform/mac/fast/forms/visual-hebrew-text-field-expected.txt:
  • platform/mac/fast/parser/entity-comment-in-textarea-expected.txt:
  • platform/mac/fast/parser/open-comment-in-textarea-expected.txt:
  • platform/mac/fast/text/backslash-to-yen-sign-euc-expected.txt:
  • platform/mac/fast/text/drawBidiText-expected.txt:
  • platform/mac/fast/text/international/danda-space-expected.txt:
  • platform/mac/fast/text/international/system-language/system-font-punctuation-expected.txt:
  • platform/mac/fast/text/justify-ideograph-leading-expansion-expected.txt:
  • platform/mac/fast/text/vertical-rl-rtl-linebreak-expected.txt:
  • platform/mac/fast/text/vertical-rl-rtl-linebreak-mixed-expected.txt:
2:24 PM Changeset in webkit [270408] by Chris Dumez
  • 4 edits
    2 adds in trunk

Crash when trying to suspend an OfflineAudioContext with a bad buffer
https://bugs.webkit.org/show_bug.cgi?id=219496

Reviewed by Geoffrey Garen.

Source/WebCore:

Test: webaudio/OfflineAudioContext-bad-buffer-suspend-crash.html

  • Modules/webaudio/OfflineAudioContext.cpp:

(WebCore::OfflineAudioContext::startOfflineRendering):
Throw a NotSupportedError for consistency with Blink.

(WebCore::OfflineAudioContext::suspendOfflineRendering):
Use length() instead of dereferencing the potentially null renderTarget to get
the length.

LayoutTests:

Add layout test coverage.

  • webaudio/OfflineAudioContext-bad-buffer-suspend-crash-expected.txt: Added.
  • webaudio/OfflineAudioContext-bad-buffer-suspend-crash.html: Added.
1:14 PM Changeset in webkit [270407] by Russell Epstein
  • 1 copy in tags/Safari-611.1.7

Tag Safari-611.1.7.

1:14 PM Changeset in webkit [270406] by Chris Dumez
  • 9 edits
    1 move in trunk/Source

Refactor macros for low power mode code
https://bugs.webkit.org/show_bug.cgi?id=219497

Reviewed by Geoffrey Garen.

Source/WebCore:

Use HAVE(APPLE_LOW_POWER_MODE_SUPPORT) instead of PLATFORM(IOS_FAMILY), which is equivalent.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/LowPowerModeNotifier.h:
  • platform/cocoa/LowPowerModeNotifier.mm: Renamed from Source/WebCore/platform/ios/LowPowerModeNotifierIOS.mm.

(-[WebLowPowerModeObserver initWithNotifier:]):
(-[WebLowPowerModeObserver dealloc]):
(-[WebLowPowerModeObserver _didReceiveLowPowerModeChange]):
(WebCore::LowPowerModeNotifier::LowPowerModeNotifier):
(WebCore::LowPowerModeNotifier::~LowPowerModeNotifier):
(WebCore::LowPowerModeNotifier::isLowPowerModeEnabled const):
(WebCore::LowPowerModeNotifier::notifyLowPowerModeChanged):
(WebCore::notifyLowPowerModeChanged):

Source/WTF:

Add new HAVE_APPLE_LOW_POWER_MODE_SUPPORT macro, enabled on iOS_FAMILY.

  • wtf/PlatformHave.h:
1:14 PM Changeset in webkit [270405] by Russell Epstein
  • 1 copy in tags/Safari-610.4.2

Tag Safari-610.4.2.

1:12 PM Changeset in webkit [270404] by aboya@igalia.com
  • 4 edits
    4 adds in trunk

[GStreamer] Fix video losing size at the end of the stream
https://bugs.webkit.org/show_bug.cgi?id=219493

Reviewed by Xabier Rodriguez-Calvar.

LayoutTests/imported/w3c:

Added a test reproducing the bug that gets fixed with the patch.

  • web-platform-tests/html/semantics/embedded-content/the-video-element/video_size_preserved_after_ended-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-video-element/video_size_preserved_after_ended.html: Added.
  • web-platform-tests/media/test-1s.mp4: Added.
  • web-platform-tests/media/test-1s.webm: Added.

Source/WebCore:

Our port for long had an issue where at the end of the video the
tracks would be erased, causing the video to lose its size and by
extension its aspect ratio.

In absence of a size, WebKit uses the default video size defined by
the spec of 300x150 (2:1 aspect ratio). This causes a video element
that doesn't have a size set through CSS to shrink to that size at the
end of playback, and also for black bars to appear on wider content
(e.g. 16:9 video) when watched in full screen mode.

This patch fixes the problem by not removing the tracks after an end
of stream, and instead reusing them with different pads the next time
the video is played.

Test: imported/w3c/web-platform-tests/html/semantics/embedded-content/the-video-element/video_size_preserved_after_ended.html

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio):

  • platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:

(WebCore::TrackPrivateBaseGStreamer::setPad):

  • platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h:
12:47 PM Changeset in webkit [270403] by Aditya Keerthi
  • 3 edits in trunk/Source/WebCore

[iOS][FCR] Add new look for buttons in their default state
https://bugs.webkit.org/show_bug.cgi?id=219446
<rdar://problem/71904353>

Reviewed by Wenson Hsieh.

Controls with a button-like appearance include <button> and <input>
elements with the following type attributes: “button”, “submit”,
“reset”, and “file”. All of these have the same default appearance,
with the exception of "submit", which has a darker background and
lighter text color than the others.

Note that styles for additional states (pressed, disabled) will be
added once final specifications are obtained.

  • css/formControlsIOS.css:

(input:matches([type="button"], [type="submit"], [type="reset"]), input[type="file"]::-webkit-file-upload-button, button):
(input:matches([type="button"], [type="reset"]), input[type="file"]::-webkit-file-upload-button, button):
(input[type="submit"]):

  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::paintPushButtonDecorations):

The old button appearance painted a gradient over the button background.
This gradient is no longer necessary under the new design.

12:28 PM Changeset in webkit [270402] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

JIT::emit_op_iterator_next fast path passes in the wrong identifier to the "done" JITGetByIdGenerator
https://bugs.webkit.org/show_bug.cgi?id=219499

Reviewed by Keith Miller.

The reason nothing was failing here is that the slow path which calls into C
code to do repatching of the IC was using the right "done" identifier. The
fast path only checks if the identifier is "length", so the code sidestepped
itself being wrong in any way. However, it's good form to use the correct
identifier.

  • jit/JITCall.cpp:

(JSC::JIT::emit_op_iterator_next):

11:58 AM Changeset in webkit [270401] by Fujii Hironori
  • 5 edits in trunk/Source/WebCore

GraphicsContextGLOpenGL: Rename IOSurfaceTextureTarget to drawingBufferTextureTarget
https://bugs.webkit.org/show_bug.cgi?id=219475

Reviewed by Don Olmstead.

Cocoa port has IOSurfaceTextureTarget method to switch a buffer
target type. Non-Cocoa ports also need a similar method.

Rename IOSurfaceTextureTarget, IOSurfaceTextureTargetQuery and
EGLIOSurfaceTextureTarget to drawingBufferTextureTarget,
drawingBufferTextureTargetQuery and EGLDrawingBufferTextureTarget.

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::reshapeFBOs):

  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::drawingBufferTextureTarget):
(WebCore::GraphicsContextGLOpenGL::drawingBufferTextureTargetQuery):
(WebCore::GraphicsContextGLOpenGL::EGLDrawingBufferTextureTarget):
(WebCore::GraphicsContextGLOpenGL::reshapeDisplayBufferBacking):
(WebCore::GraphicsContextGLOpenGL::bindDisplayBufferBacking):
(WebCore::GraphicsContextGLOpenGL::IOSurfaceTextureTarget): Deleted.
(WebCore::GraphicsContextGLOpenGL::IOSurfaceTextureTargetQuery): Deleted.
(WebCore::GraphicsContextGLOpenGL::EGLIOSurfaceTextureTarget): Deleted.

  • platform/graphics/cv/GraphicsContextGLCVANGLE.cpp:

(WebCore::GraphicsContextGLCVANGLE::initializeUVContextObjects):
(WebCore::GraphicsContextGLCVANGLE::attachIOSurfaceToTexture):
(WebCore::GraphicsContextGLCVANGLE::copyPixelBufferToTexture):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
11:29 AM Changeset in webkit [270400] by commit-queue@webkit.org
  • 21 edits in trunk/Source/WebCore

GraphicsContextGL has a couple non-robust getters and other small API problems preventing GPU process implementation
https://bugs.webkit.org/show_bug.cgi?id=219486

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

Changes GraphicsContextGL and ExtensionsGL to not have duplicate names
and have the correct function signatures.

Changes few remaining GraphicsContextGL getters to use robust GCGLSpan
form.

Changes few robust getters to GCGLSpan form and moves them from
ExtensionsGL to GraphicsContextGL.

Changes GraphicsContextGLOpenGL::getActiveUniforms to return the result
vector instead of taking it as non-const reference. This way the out
vector does not need to be transferred to the GPU process, when the
code is implemented. The call site is also more natural.

Requests GL_EXT_occlusion_query_boolean so that WebGL 2.0 occlusion
queries work when called with gl::GetQueryObjectuivRobustANGLE.

Removes use of mapBufferRange and related functions, changes them to a single
getBufferSubData. If the mapping ever is useful, the more complex
form of API can be added back.

Changes the getInternalformativ call site to check erros similar to other
generic error checking: first clear the errors and then after the call
check if there are new errors. This is slightly less efficient than
using the domain knowledge that the function never returns -1 in the slot.
Current single-value-as-return-value pattern cannot express this. In the
future, GPU process context cannot / will not support passing non-default
in-arrays. In the future, the generic error checking pattern will possibly
be improved, circumventing the need for the -1 domain knowledge case.

Removes getVertexAttrib*v, they are not used.

Removes getAttachedShaders, it is not used.

Removes the vendor-based workarounds from ANGLE ExtensionsGL, it was not
used.

No new tests, a refactor.

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::getBufferSubData):
(WebCore::WebGL2RenderingContext::getInternalformatParameter):
(WebCore::WebGL2RenderingContext::vertexAttribI4uiv):
(WebCore::WebGL2RenderingContext::getQueryParameter):
(WebCore::WebGL2RenderingContext::bindSampler):
(WebCore::WebGL2RenderingContext::getSamplerParameter):
(WebCore::WebGL2RenderingContext::clientWaitSync):
(WebCore::WebGL2RenderingContext::deleteTransformFeedback):
(WebCore::WebGL2RenderingContext::beginTransformFeedback):
(WebCore::WebGL2RenderingContext::endTransformFeedback):
(WebCore::WebGL2RenderingContext::transformFeedbackVaryings):
(WebCore::WebGL2RenderingContext::getActiveUniforms):
(WebCore::WebGL2RenderingContext::readPixels):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::readPixels):

  • html/canvas/WebGLSync.cpp:

(WebCore::WebGLSync::updateCache):

  • platform/graphics/ExtensionsGL.h:
  • platform/graphics/GraphicsContextGL.h:

(WebCore::GraphicsContextGL::getInternalformati):

  • platform/graphics/GraphicsTypesGL.h:
  • platform/graphics/angle/ExtensionsGLANGLE.cpp:

(WebCore::ExtensionsGLANGLE::ExtensionsGLANGLE):
(WebCore::ExtensionsGLANGLE::getGraphicsResetStatusARB):
(WebCore::ExtensionsGLANGLE::getTranslatedShaderSourceANGLE):
(WebCore::ExtensionsGLANGLE::blitFramebufferANGLE):
(WebCore::ExtensionsGLANGLE::renderbufferStorageMultisampleANGLE):
(WebCore::ExtensionsGLANGLE::drawArraysInstancedANGLE):
(WebCore::ExtensionsGLANGLE::drawElementsInstancedANGLE):
(WebCore::ExtensionsGLANGLE::vertexAttribDivisorANGLE):
(WebCore::ExtensionsGLANGLE::getUniformuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getTexLevelParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getTexLevelParameterfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getnUniformfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getnUniformivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getnUniformuivRobustANGLE):

  • platform/graphics/angle/ExtensionsGLANGLE.h:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::readnPixels):
(WebCore::GraphicsContextGLOpenGL::readnPixelsImpl):
(WebCore::GraphicsContextGLOpenGL::getBufferSubData):
(WebCore::GraphicsContextGLOpenGL::getInternalformativ):
(WebCore::GraphicsContextGLOpenGL::getActiveUniforms):
(WebCore::GraphicsContextGLOpenGL::getQueryObjectui):
(WebCore::GraphicsContextGLOpenGL::getSamplerParameterf):
(WebCore::GraphicsContextGLOpenGL::getSamplerParameteri):
(WebCore::GraphicsContextGLOpenGL::getSynci):

  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):

  • platform/graphics/opengl/ExtensionsGLOpenGL.cpp:

(WebCore::ExtensionsGLOpenGL::blitFramebufferANGLE):
(WebCore::ExtensionsGLOpenGL::renderbufferStorageMultisampleANGLE):
(WebCore::ExtensionsGLOpenGL::drawArraysInstancedANGLE):
(WebCore::ExtensionsGLOpenGL::drawElementsInstancedANGLE):
(WebCore::ExtensionsGLOpenGL::vertexAttribDivisorANGLE):

  • platform/graphics/opengl/ExtensionsGLOpenGL.h:
  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.cpp:
  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.h:
  • platform/graphics/opengl/ExtensionsGLOpenGLES.cpp:

(WebCore::ExtensionsGLOpenGLES::blitFramebufferANGLE):
(WebCore::ExtensionsGLOpenGLES::renderbufferStorageMultisampleANGLE):
(WebCore::ExtensionsGLOpenGLES::drawArraysInstancedANGLE):
(WebCore::ExtensionsGLOpenGLES::drawElementsInstancedANGLE):
(WebCore::ExtensionsGLOpenGLES::vertexAttribDivisorANGLE):

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

(WebCore::GraphicsContextGLOpenGL::readnPixels):

  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:

(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::getProgramInfoLog):
(WebCore::GraphicsContextGLOpenGL::getShaderi):
(WebCore::GraphicsContextGLOpenGL::getShaderInfoLog):
(WebCore::GraphicsContextGLOpenGL::getShaderSource):
(WebCore::GraphicsContextGLOpenGL::drawArraysInstanced):
(WebCore::GraphicsContextGLOpenGL::drawElementsInstanced):
(WebCore::GraphicsContextGLOpenGL::vertexAttribDivisor):
(WebCore::GraphicsContextGLOpenGL::getBufferSubData):
(WebCore::GraphicsContextGLOpenGL::getInternalformativ):
(WebCore::GraphicsContextGLOpenGL::getQueryObjectui):
(WebCore::GraphicsContextGLOpenGL::getSamplerParameterf):
(WebCore::GraphicsContextGLOpenGL::getSamplerParameteri):
(WebCore::GraphicsContextGLOpenGL::getSynci):
(WebCore::GraphicsContextGLOpenGL::getActiveUniforms):
(WebCore::GraphicsContextGLOpenGL::getUniformBlockIndex):
(WebCore::GraphicsContextGLOpenGL::getActiveUniformBlockName):
(WebCore::GraphicsContextGLOpenGL::uniformBlockBinding):
(WebCore::GraphicsContextGLOpenGL::readnPixels):

  • platform/graphics/opengl/GraphicsContextGLOpenGLES.cpp:

(WebCore::GraphicsContextGLOpenGL::readnPixels):
(WebCore::GraphicsContextGLOpenGL::reshapeFBOs):

11:07 AM Changeset in webkit [270399] by Aditya Keerthi
  • 4 edits
    11 adds in trunk

[iOS][FCR] Add new look for search fields
https://bugs.webkit.org/show_bug.cgi?id=219443
<rdar://problem/71902666>

Reviewed by Wenson Hsieh.

Source/WebCore:

Tests: fast/forms/ios/form-control-refresh/search/background-color.html

fast/forms/ios/form-control-refresh/search/border.html
fast/forms/ios/form-control-refresh/search/font-size.html
fast/forms/ios/form-control-refresh/search/results-attribute.html
fast/forms/ios/form-control-refresh/search/width-height.html

  • css/formControlsIOS.css:

(input[type="search"]):

Unlike traditional text fields, the new appearance has no border and a
filled background.

(input[type="search"]::-webkit-search-decoration,):

The new appearance has a magnifying glass glyph in the search field.
On macOS, the glyph changes depending on the value of the "results"
attribute. However, on iOS, the glyph should always be shown.
Consequently, "-webkit-search-decoration", "-webkit-search-results-decoration",
and "-webkit-search-results-button" all specify the same glyph.

  • rendering/RenderThemeIOS.mm:

(WebCore::canAdjustBorderRadiusForAppearance):

The old search field forced a pill-like appearance. This is no longer
required under the new appearance.

(WebCore::RenderThemeIOS::adjustRoundBorderRadius):

LayoutTests:

Added tests to verify the stylability of search fields with the new appearance.

  • fast/forms/ios/form-control-refresh/search/background-color-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/search/background-color.html: Added.
  • fast/forms/ios/form-control-refresh/search/border-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/search/border.html: Added.
  • fast/forms/ios/form-control-refresh/search/font-size-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/search/font-size.html: Added.
  • fast/forms/ios/form-control-refresh/search/results-attribute-expected.html: Added.
  • fast/forms/ios/form-control-refresh/search/results-attribute.html: Added.
  • fast/forms/ios/form-control-refresh/search/width-height-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/search/width-height.html: Added.
11:01 AM Changeset in webkit [270398] by Aditya Keerthi
  • 4 edits in trunk/Source/WebCore

[iOS][FCR] Add new look for controls with text entry
https://bugs.webkit.org/show_bug.cgi?id=219362
rdar://problem/71813850

Reviewed by Wenson Hsieh.

Controls with text entry include <textarea> and the following <input>
types: "email", "password", "search", "tel", "text", and "url".
Additionally, <input> without a specified type is also a control with
text entry, since the default behavior matches <input type="text">.

  • css/formControlsIOS.css:

(textarea, input): Updated border and font to match new look.

  • css/html.css:

Removed input[type="range"] and input:matches([type="password"], [type="search"])
from the rule-set containing the selector "input", since "input" encompasses
"range", "password", and "search".

This change aligns with the user-agent stylesheets in Chrome and Firefox.

  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::paintTextFieldDecorations):

The previous appearance painted a gradient inside the control. However,
the new appearance does not have any decorations.

10:59 AM Changeset in webkit [270397] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[macOS WK1] imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-target-padding-003.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=219498

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations: Mark test as flaky.
10:41 AM Changeset in webkit [270396] by youenn@apple.com
  • 2 edits in trunk/LayoutTests

(r270171) [ iOS ] http/wpt/mediarecorder/set-srcObject-MediaStream-Blob.html is failing
https://bugs.webkit.org/show_bug.cgi?id=219439
<rdar://problem/71900353>

Reviewed by Darin Adler.

  • http/wpt/mediarecorder/set-srcObject-MediaStream-Blob.html:

Remove the audio track to allow both video elements to play concurrently on iOS.
Tested by running the test on iOS simulator.

9:24 AM Changeset in webkit [270395] by Fujii Hironori
  • 5 edits in trunk/Source

Remove GraphicsContextGLOpenGL::setRenderbufferStorageFromDrawable declaration
https://bugs.webkit.org/show_bug.cgi?id=219463

Reviewed by Alex Christensen.

Source/WebCore:

r268198 removed the definition.

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

(WebCore::GraphicsContextGLOpenGL::reshapeFBOs):
Removed a dead code of USE(OPENGL_ES) in PLATFORM(COCOA).

Source/WTF:

  • wtf/Platform.h: Removed checking whether USE_ANGLE, USE_OPENGL,

and USE_OPENGL_ES are exclusive because Cocoa ports no longer use
USE_OPENGL and USE_OPENGL_ES, and they are not exclusive on
non-Cocoa ports.

9:15 AM Changeset in webkit [270394] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

MediaSessionHelper::setSharedHelper() hangs when "media in the GPU process" is enabled
https://bugs.webkit.org/show_bug.cgi?id=219466
<rdar://problem/71566601>

Reviewed by Chris Dumez.

The WebProcess will attempt to set a RemoteMediaSessionHelper as the sharedHelper, but calling
MediaSessionHelper::setSharedHelper() will cause a MediaSessionHelperIOS to be created, which in
turn tries to talk to AVSystemController.sharedAVSystemController, which fails due to sandbox
restrictions.

Refactor sharedHelperInstance() to not create a MediaSessionHelperIOS by default, which allows
setSharedHelper to assign a new helper without creating one by default.

  • platform/audio/ios/MediaSessionHelperIOS.mm:

(sharedHelperInstance):
(MediaSessionHelper::sharedHelper):
(MediaSessionHelper::resetSharedHelper):
(MediaSessionHelper::setSharedHelper):

6:08 AM Changeset in webkit [270393] by Andres Gonzalez
  • 5 edits in trunk/Source/WebCore

Fix for crash handling NSAccessibilityInsertionPointLineNumberAttribute for text fields in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=219477

Reviewed by Chris Fleizach.

Tests:
accessibility/content-editable-as-textarea.html
accessibility/mac/content-editable-range-properties.html

  • Implemented AXIsolatedObject::selectionStart/End, selectedText, visiblePositionForIndex.
  • Handler of the NSAccessibilityInsertionPointLineNumberAttribute

request now dispatches to the main thread the calls that involve
VisiblePositions.

  • This change fixes the above mentioned layout tests in isolated tree mode.
  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::selectionStart const):
(WebCore::AXIsolatedObject::selectionEnd const):
(WebCore::AXIsolatedObject::selectedText const):
(WebCore::AXIsolatedObject::visiblePositionForIndex const):

  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

3:09 AM Changeset in webkit [270392] by timothy_horton@apple.com
  • 8 edits in trunk/Source

GPU Process: Sandbox violations under IOSurface::maximumSize in the Web Content process
https://bugs.webkit.org/show_bug.cgi?id=219484
<rdar://problem/71603808>

Reviewed by Ryosuke Niwa.

Source/WebCore:

  • platform/graphics/cocoa/IOSurface.h:
  • platform/graphics/cocoa/IOSurface.mm:

(WebCore::computeMaximumSurfaceSize):
(WebCore::surfaceMaximumSize):
(WebCore::IOSurface::setMaximumSize):
(WebCore::IOSurface::maximumSize):
Make it possible to externally override IOSurface::maximumSize.

Source/WebKit:

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):
Fetch the maximum allowed size of an IOSurface on the current hardware
in the UI process, and push it to the Web Content process on creation.

2:30 AM Changeset in webkit [270391] by Lauro Moura
  • 8 edits in trunk/Source

[WTF] Avoid JSONValue::create with raw string falling to bool overload
https://bugs.webkit.org/show_bug.cgi?id=219483

Reviewed by Adrian Perez de Castro.

Source/JavaScriptCore:

  • inspector/InjectedScriptBase.cpp:

(Inspector::InjectedScriptBase::makeAsyncCall): Convert to WTF::String when creating the value.

Source/WebCore:

Covered by existing tests.

  • inspector/InspectorFrontendClientLocal.cpp:

(WebCore::InspectorFrontendClientLocal::setAttachedWindow): Convert to WTF::String when creating the value.

Source/WebDriver:

Avoid accidental conversion of "selected" to bool that would make the
getElementAttribute javascriptcode to fail with "attributeName.toLowerCase
is undefined"

  • Session.cpp:

(WebDriver::Session::isElementSelected): Convert to WTF::String when creating the value.

Source/WTF:

r269757 removed the const char* overload for Value::create() and replaced
them with makeString() versions. While this worked most of the time, one
could still call Value::create(raw_string) and it would end up calling the
bool overload. This could cause side effects like making a number of
WebDriver tests to fail with wrong types in the executed javascript code.

To avoid these accidental conversions, this commit added an overload to
delete all implicit conversions of Value::create().

  • wtf/JSONValues.h: Delete implicit overloads for Value::create(T).
1:50 AM Changeset in webkit [270390] by commit-queue@webkit.org
  • 14 edits
    1 move
    1 delete in trunk/Source

Move code from AxisScrollSnapOffsets to ScrollSnapOffsetsInfo
https://bugs.webkit.org/show_bug.cgi?id=219345

Patch by Martin Robinson <mrobinson@igalia.com> on 2020-12-03
Reviewed by Daniel Bates.

Source/WebCore:

No new tests. This should not modify behavior.

  • Headers.cmake: Remove AxisScrollSnapOffsets.h from header list.
  • Sources.txt: Update source list.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • page/FrameView.cpp: Update includes.
  • page/scrolling/AxisScrollSnapOffsets.h: Removed.
  • page/scrolling/ScrollSnapOffsetsInfo.cpp: Renamed from Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp.

(WebCore::indicesOfNearestSnapOffsetRanges): Added from AxisScrollSnapOffsets.
(WebCore::indicesOfNearestSnapOffsets): Ditto.
(WebCore::closestSnapOffset): Ditto.
(WebCore::computeScrollSnapPortOrAreaRect): Ditto.
(WebCore::computeScrollSnapAlignOffset): Ditto.
(WebCore::operator<<): Ditto.
(WebCore::computeAxisProximitySnapOffsetRanges): Ditto.
(WebCore::updateSnapOffsetsForScrollableArea): Ditto.

  • page/scrolling/ScrollSnapOffsetsInfo.h: Added functions from AxisScrollSnapOffsets.h and surrounded

this header in conditional compilation so it can be included unconditionally.

  • page/scrolling/ScrollingCoordinator.h: Updated includes.
  • page/scrolling/ScrollingMomentumCalculator.h: Ditto.
  • platform/cocoa/ScrollSnapAnimatorState.h: Ditto.
  • rendering/RenderLayer.cpp: Ditto.

Source/WebKit:

  • UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm: Remove AxisScrollSnapOffsets.h include.
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm: Ditto.
Note: See TracTimeline for information about the timeline view.