WebKit-https.git
20 months agoREGRESSION(r275275): Broke some build configs lacking openh264
commit-queue@webkit.org [Tue, 6 Apr 2021 21:08:53 +0000 (21:08 +0000)]
REGRESSION(r275275): Broke some build configs lacking openh264
https://bugs.webkit.org/show_bug.cgi?id=224244

Unreviewed, manual revert of r275275 and r275409.

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-06

.:

* Source/CMakeLists.txt:
* Source/cmake/GStreamerChecks.cmake:

Source/ThirdParty/libwebrtc:

* CMakeLists.txt:
* LibWebRTCWebKitMacros.h.in: Removed.
* Source/webrtc/modules/video_coding/codecs/h264/h264.cc:
* Source/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc:
* Source/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.h:
* cmake/FindOpenh264.cmake: Removed.

Source/WebCore:

* platform/mediastream/libwebrtc/GStreamerVideoCommon.cpp:
(WebCore::gstreamerSupportedH264Codecs):
(WebCore::supportedH264Formats): Deleted.
* platform/mediastream/libwebrtc/GStreamerVideoCommon.h:
* platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
* platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
(WebCore::GStreamerVideoEncoderFactory::CreateVideoEncoder):
(WebCore::GStreamerVideoEncoderFactory::GetSupportedFormats const):

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

20 months ago[ macOS ARM64 ] compositing/background-color/no-composited-background-color-when...
jenner@apple.com [Tue, 6 Apr 2021 21:05:53 +0000 (21:05 +0000)]
[ macOS ARM64 ] compositing/background-color/no-composited-background-color-when-perspective.html is a flakey Image failure (4 pixels)
https://bugs.webkit.org/show_bug.cgi?id=224212

Unreviewed test gardening.

* platform/mac/TestExpectations: Updated test expectations to Pass ImageOnlyFailure while test is reviewed.

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

20 months agoDelay the end of printing while PrintContext is in use.
rniwa@webkit.org [Tue, 6 Apr 2021 20:57:44 +0000 (20:57 +0000)]
Delay the end of printing while PrintContext is in use.
https://bugs.webkit.org/show_bug.cgi?id=224229

Reviewed by Antti Koivisto.

Added a new RAII object, PrintContextAccessScope, to delay the call to endPrinting
and deployed in various IPC messages used during printing.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::beginPrinting): Deployed PrintContextAccessScope.
(WebKit::WebPage::endPrinting): Exit early without ending printing if there is an active
PrintContextAccessScope in the stack.
(WebKit::WebPage::endPrintingImmediately): Extracted from endPrintingImmediately.
(WebKit::WebPage::computePagesForPrinting): Deployed PrintContextAccessScope.
(WebKit::WebPage::computePagesForPrintingImpl): Ditto.
(WebKit::WebPage::drawRectToImage): Ditto.
(WebKit::WebPage::drawPagesToPDF): Ditto.
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::PrintContextAccessScope): Added.
(WebKit::WebPage::PrintContextAccessScope::PrintContextAccessScope): Added.
(WebKit::WebPage::PrintContextAccessScope::~PrintContextAccessScope): Added.

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

20 months ago[ wk2 ] 4 storage/websql/test-authorizer.html and constantly timing out
rniwa@webkit.org [Tue, 6 Apr 2021 20:52:12 +0000 (20:52 +0000)]
[ wk2 ] 4 storage/websql/test-authorizer.html and constantly timing out
https://bugs.webkit.org/show_bug.cgi?id=224245
<rdar://problem/76281408>

Unreviewed. Updated the test expectations to not unskip some tests in various ports that only run tests in WK2.

* platform/gtk/TestExpectations:
* platform/ios-simulator/TestExpectations:
* platform/ios/TestExpectations:
* platform/mac-wk1/TestExpectations:
* platform/mac/TestExpectations:
* platform/wincairo/TestExpectations:
* platform/wk2/TestExpectations:

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

20 months agoShrink some IndexedDB-related classes
simon.fraser@apple.com [Tue, 6 Apr 2021 20:43:00 +0000 (20:43 +0000)]
Shrink some IndexedDB-related classes
https://bugs.webkit.org/show_bug.cgi?id=224221

Reviewed by Geoffrey Garen.

Shrink some enum classes, and re-order data members to optimize packing in
IDBRequest and IDBKeyRangeData.

A couple of data members of IDBRequest were made private with protected setters.

This shrinks IDBRequest from 496 bytes to 448 bytes, and IDBKeyRangeData from 96
to 72 bytes on x86_64.

* Modules/indexeddb/IDBKeyData.h:
* Modules/indexeddb/IDBKeyRangeData.cpp:
(WebCore::IDBKeyRangeData::IDBKeyRangeData):
* Modules/indexeddb/IDBKeyRangeData.h:
(WebCore::IDBKeyRangeData::IDBKeyRangeData):
* Modules/indexeddb/IDBObjectStore.h:
* Modules/indexeddb/IDBOpenDBRequest.cpp:
(WebCore::IDBOpenDBRequest::IDBOpenDBRequest):
(WebCore::IDBOpenDBRequest::versionChangeTransactionDidFinish):
(WebCore::IDBOpenDBRequest::onSuccess):
(WebCore::IDBOpenDBRequest::onUpgradeNeeded):
(WebCore::IDBOpenDBRequest::onDeleteDatabaseSuccess):
* Modules/indexeddb/IDBRequest.cpp:
(WebCore::IDBRequest::IDBRequest):
* Modules/indexeddb/IDBRequest.h:
(WebCore::IDBRequest::setReadyState):
(WebCore::IDBRequest::setShouldExposeTransactionToDOM):
* Modules/indexeddb/IndexedDB.h:
* Modules/indexeddb/client/IDBConnectionToServerDelegate.h:
* Modules/indexeddb/server/MemoryIndex.h:
* Modules/indexeddb/server/MemoryObjectStore.h:
* Modules/indexeddb/shared/IDBCursorInfo.h:
* Modules/indexeddb/shared/IDBGetAllRecordsData.h:

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

20 months agoREGRESSION (r274610): Unable to drag images when image extraction is enabled
wenson_hsieh@apple.com [Tue, 6 Apr 2021 20:39:10 +0000 (20:39 +0000)]
REGRESSION (r274610): Unable to drag images when image extraction is enabled
https://bugs.webkit.org/show_bug.cgi?id=224211
<rdar://problem/76229563>

Reviewed by Tim Horton.

Source/WebKit:

r274610 introduced a new deferring gesture recognizer intended to prevent several text interaction gestures from
recognizing during pending image extraction. However, this also causes dragging on iOS to fail, since the
gesture used to initiate dragging is excluded by the new deferring gesture recognizer. To fix this, allow the
new deferring gesture to recognize simultaneously alongside all gestures with the exception of only the gestures
it is intended to defer (i.e. text interaction gestures).

Test: fast/events/ios/dragstart-on-image-by-long-pressing.html

* UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h:
* UIProcess/API/ios/WKWebViewTestingIOS.mm:
(-[WKWebView _isAnimatingDragCancel]):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[UIGestureRecognizer _wk_isTapAndAHalf]):

Add a WebKit category method that returns whether or not a gesture recognizer is a tap-and-a-half gesture.

(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):

Allow the image extraction deferring gesture to recognize alongside all other gestures, with the exception of
the text interaction gestures determined by `-shouldDeferGestureDueToImageExtraction:`. This limits the impact
of this new deferring gesture, such that it only affects the text interaction gestures it is intended to defer.

(-[WKContentView shouldDeferGestureDueToImageExtraction:]):

Add a helper method to determine whether or not a gesture recognizer should be deferred, due to pending image
extraction. We pull this logic behind a helper method because it's now consulted from two call sites.

(-[WKContentView deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:]):
(-[WKContentView dragInteraction:item:willAnimateCancelWithAnimator:]):
(-[WKContentView isAnimatingDragCancel]):

Add a testing hook to return whether or not the drag cancel animation is running. See Tools/ChangeLog and the
new layout test for more detail.

(tapAndAHalfRecognizerClass): Deleted.

Tools:

Add support for some new testing infrastructure; see below for more details.

* TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
* TestRunnerShared/UIScriptContext/UIScriptController.h:
(WTR::UIScriptController::isAnimatingDragCancel const):

Add a new testing hook to return whether or not the web view's drag interaction is currently animating a drag
cancel (i.e., the drag preview is animating back to its original frame).

* WebKitTestRunner/TestOptions.cpp:
(WTR::TestOptions::defaults):
(WTR::TestOptions::keyTypeMapping):
* WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::dragInteractionPolicy const):

Add a test option that allows tests to override the drag interaction policy to "always-allow",
"always-disallow", and the default value. This option allows us to force drag and drop to be enabled when
testing on iPhone simulator.

* WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::dragInteractionPolicy):
(WTR::TestController::platformResetStateToConsistentValues):
* WebKitTestRunner/ios/UIScriptControllerIOS.h:
* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptControllerIOS::isAnimatingDragCancel const):

LayoutTests:

Add a new layout test that initiates dragging on an image using a synthesized event stream, and verifies that
"dragstart" and "dragend" events are dispatched on the image.

* fast/events/ios/dragstart-on-image-by-long-pressing-expected.txt: Added.
* fast/events/ios/dragstart-on-image-by-long-pressing.html: Added.
* resources/ui-helper.js:
(window.UIHelper.isAnimatingDragCancel):

Add a `UIHelper` method that returns whether or not the dragging animation is being cancelled. The new test uses
this hook to wait for the drag cancel animation to end before proceeding to the next test.

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

20 months agoWeb Inspector: remove duplicate Box Model section from Layout panel in Elements Tab
bburg@apple.com [Tue, 6 Apr 2021 20:26:30 +0000 (20:26 +0000)]
Web Inspector: remove duplicate Box Model section from Layout panel in Elements Tab
https://bugs.webkit.org/show_bug.cgi?id=224206
<rdar://problem/76235731>

Reviewed by Devin Rousso.

For now, remove it from Layout panel. It may go back there
when it is able to show used values. It currently only shows computed.

* UserInterface/Views/LayoutDetailsSidebarPanel.js:
(WI.LayoutDetailsSidebarPanel.prototype.initialLayout):
(WI.LayoutDetailsSidebarPanel.prototype.layout):
(WI.LayoutDetailsSidebarPanel.prototype.get minimumWidth): Deleted.

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

20 months agoArray's toString() is incorrect if join() is non-callable
shvaikalesh@gmail.com [Tue, 6 Apr 2021 20:20:41 +0000 (20:20 +0000)]
Array's toString() is incorrect if join() is non-callable
https://bugs.webkit.org/show_bug.cgi?id=224215

Reviewed by Yusuke Suzuki.

JSTests:

* stress/array-toString-non-callable-join.js: Added.

Source/JavaScriptCore:

This patch exposes objectPrototypeToString() to be used by Array.prototype.toString
if "join" lookup doesn't return a callable value [1].

Fixes Array's toString() to return the correct tag instead of internal `className`,
perform Symbol.toStringTag lookup, and throw for revoked Proxy objects.
Aligns JSC with V8 and SpiderMonkey.

Also, a few objectPrototypeToString() tweaks: a bit nicer `undefined` / `null`
checks and simpler toObject() exception handling.

[1]: https://tc39.es/ecma262/#sec-array.prototype.tostring (step 3)

* runtime/ArrayPrototype.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* runtime/ObjectPrototype.cpp:
(JSC::objectPrototypeToString):
(JSC::JSC_DEFINE_HOST_FUNCTION):
* runtime/ObjectPrototype.h:

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

20 months agoAssert failure in isCloneInShadowTreeOfSVGUseElement
rniwa@webkit.org [Tue, 6 Apr 2021 19:51:49 +0000 (19:51 +0000)]
Assert failure in isCloneInShadowTreeOfSVGUseElement
https://bugs.webkit.org/show_bug.cgi?id=224174

Reviewed by Darin Adler and Antti Koivisto.

Source/WebCore:

The bug was caused by two related but distinct issues:
1. An element can have an instance that had been removed from a use element's shadow tree
   but not yet deleted. Because SVGElement clears its correspondingElement in its destructor,
   when addEventListener is called on such an element, it can try to add an event listener
   on this instance which is in the process of getting disposed.
2. DOM mutation events can be fired on the corresponding element of an instance inside
   a use element’s shadow tree with EventQueueScope in the stack when the event is schedueld
   via Node::dispatchScopedEvent, e.g. because use element's shadow tree was updated during
   a style update at the beginning of document.execComand. Because SVGUseElement::cloneTarget
   constructs the shadow tree by cloning the original tree while it's disconnected from the
   document, Node::dispatchSubtreeModifiedEvent sees isInShadowTree() to be false and happily
   tries to dispach DOMSubtreeModified event using Node::dispatchScopedEvent. This works fine
   when the event is dispatched synchronously since these elements had never been exposed to
   any scripts yet and they are still disconnected so no scripts have had an opportunity to
   attach an event listener. But when EventQueueScope in the stack, Node::dispatchScopedEvent
   will queue up the event and fire it later when those instance elements had been inserted
   into use element's shadow tree.

This patch addresses (1) by severing correspondingElement relationship as soon as an instance
is removed from its use element's shadow tree, and (2) by not dispatching a scheduled mutation
event if the target is inside a shadow tree. Note that this patch also addresses (2) for
a regular shadow tree attached by author scripts.

Tests: fast/shadow-dom/mutation-event-in-shadow-tree.html
       svg/dom/mutate-symbol-subtree-referenced-by-use-during-execCommand.html
       svg/dom/update-svg-use-shadow-tree-with-execCommand.html

* dom/ScopedEventQueue.cpp:
(WebCore::ScopedEventQueue::dispatchEvent const):
* svg/SVGElement.cpp:
(WebCore::SVGElement::~SVGElement):
(WebCore::SVGElement::removedFromAncestor):
(WebCore::SVGElement::addEventListener):
(WebCore::SVGElement::removeEventListener):

LayoutTests:

Added tests for mutating nodes which is later inserted into a shadow tree during execCommand
as well as forcing a SVG use element to update its shadow tree by mutating the corresponding
element tree during execCommand.

* fast/shadow-dom/mutation-event-in-shadow-tree-expected.txt: Added.
* fast/shadow-dom/mutation-event-in-shadow-tree.html: Added.
* svg/dom/mutate-symbol-subtree-referenced-by-use-during-execCommand-expected.txt: Added.
* svg/dom/mutate-symbol-subtree-referenced-by-use-during-execCommand.html: Added.
* svg/dom/update-svg-use-shadow-tree-with-execCommand-expected.txt: Added.
* svg/dom/update-svg-use-shadow-tree-with-execCommand.html: Added.

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

20 months ago[WTF] Introduce FixedVector and use it for FixedOperands
ysuzuki@apple.com [Tue, 6 Apr 2021 19:47:47 +0000 (19:47 +0000)]
[WTF] Introduce FixedVector and use it for FixedOperands
https://bugs.webkit.org/show_bug.cgi?id=224171

Reviewed by Mark Lam.

Source/JavaScriptCore:

Define FixedOperands<T> which uses FixedVector for its storage. We use FixedOperands in FTL::OSRExitDescriptor.
We also replace RefCountedArray<T> with FixedVector<T> if they are not requiring RefCountedArray<T>'s ref-counting
semantics.

* bytecode/BytecodeGeneratorification.cpp:
(JSC::BytecodeGeneratorification::run):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::setConstantRegisters):
(JSC::CodeBlock::setNumParameters):
(JSC::CodeBlock::setRareCaseProfiles):
(JSC::CodeBlock::insertBasicBlockBoundariesForControlFlowProfiler):
* bytecode/CodeBlock.h:
* bytecode/Operands.h:
(JSC::Operands::Operands):
* bytecode/OperandsInlines.h:
(JSC::U>::dumpInContext const):
(JSC::U>::dump const):
(JSC::Operands<T>::dumpInContext const): Deleted.
(JSC::Operands<T>::dump const): Deleted.
* bytecode/PolyProtoAccessChain.h:
* bytecode/PolymorphicAccess.cpp:
(JSC::PolymorphicAccess::regenerate):
* bytecode/PolymorphicAccess.h:
* bytecode/UnlinkedCodeBlock.cpp:
(JSC::UnlinkedCodeBlock::dumpExpressionRangeInfo):
(JSC::UnlinkedCodeBlock::expressionRangeForBytecodeIndex const):
* bytecode/UnlinkedCodeBlock.h:
(JSC::UnlinkedCodeBlock::expressionInfo):
(JSC::UnlinkedCodeBlock::identifiers const):
(JSC::UnlinkedCodeBlock::constantRegisters):
(JSC::UnlinkedCodeBlock::constantsSourceCodeRepresentation):
(JSC::UnlinkedCodeBlock::constantIdentifierSets):
(JSC::UnlinkedCodeBlock::opProfileControlFlowBytecodeOffsets const):
* bytecode/UnlinkedFunctionExecutable.h:
* bytecompiler/BytecodeGenerator.cpp:
(JSC::prepareJumpTableForSwitch):
* dfg/DFGJITCode.h:
* dfg/DFGPlan.h:
(JSC::DFG::Plan::tierUpInLoopHierarchy):
* ftl/FTLOSRExit.h:
* jit/GCAwareJITStubRoutine.h:
* jit/JIT.cpp:
(JSC::JIT::privateCompileSlowCases):
* jit/PolymorphicCallStubRoutine.h:
* llint/LLIntOffsetsExtractor.cpp:
* llint/LowLevelInterpreter.asm:
* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::parseClassFieldInitializerSourceElements):
* parser/Parser.h:
(JSC::Parser<LexerType>::parse):
(JSC::parse):
* runtime/CachedTypes.cpp:
(JSC::CachedVector::encode):
(JSC::CachedVector::decode const):
* wasm/js/JSWebAssemblyInstance.h:

Source/WTF:

This FixedVector<T> is a wrapper around RefCountedArray<T>, but this offers Vector-like copy / move semantics,
so that we can use this FixedVector<T> as a drop-in-replacement for fixed-sized Vector fields. The purpose
of that is saving memory by removing unnecessary storage (FixedVector is fixed-sized allocated) and putting size
into the allocated memory.

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/FastBitVector.h:
(WTF::FastBitVector::FastBitVector):
* wtf/FixedVector.h: Added.
(WTF::FixedVector::FixedVector):
(WTF::FixedVector::operator=):
(WTF::FixedVector::size const):
(WTF::FixedVector::isEmpty const):
(WTF::FixedVector::byteSize const):
(WTF::FixedVector::data):
(WTF::FixedVector::begin):
(WTF::FixedVector::end):
(WTF::FixedVector::data const):
(WTF::FixedVector::begin const):
(WTF::FixedVector::end const):
(WTF::FixedVector::rbegin):
(WTF::FixedVector::rend):
(WTF::FixedVector::rbegin const):
(WTF::FixedVector::rend const):
(WTF::FixedVector::at):
(WTF::FixedVector::at const):
(WTF::FixedVector::operator[]):
(WTF::FixedVector::operator[] const):
(WTF::FixedVector::first):
(WTF::FixedVector::first const):
(WTF::FixedVector::last):
(WTF::FixedVector::last const):
(WTF::FixedVector::fill):
(WTF::FixedVector::operator== const):
(WTF::FixedVector::swap):
(WTF::swap):
* wtf/RefCountedArray.h:
(WTF::RefCountedArray::RefCountedArray):
(WTF::RefCountedArray::fill):
(WTF::RefCountedArray::swap):

Tools:

* TestWebKitAPI/CMakeLists.txt:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WTF/FixedVector.cpp: Added.
(TestWebKitAPI::TEST):
(TestWebKitAPI::DestructorObserver::DestructorObserver):
(TestWebKitAPI::DestructorObserver::~DestructorObserver):
(TestWebKitAPI::DestructorObserver::operator=):

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

20 months agoSpeculative build fix for Windows port.
mark.lam@apple.com [Tue, 6 Apr 2021 19:42:57 +0000 (19:42 +0000)]
Speculative build fix for Windows port.
https://bugs.webkit.org/show_bug.cgi?id=224243
rdar://75883248

Reviewed by Saam Barati.

Source/cmake/tools/scripts/auto-version.pl was limiting our `minor` and `micro`
version to only 2 decimal digits only.  In practice, we can use up to 3 digits.

* Source/cmake/tools/scripts/auto-version.pl:
(packTwoValues):

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

20 months agoHold strong reference to xpc_connection_t in XPCServiceEventHandler
commit-queue@webkit.org [Tue, 6 Apr 2021 19:42:13 +0000 (19:42 +0000)]
Hold strong reference to xpc_connection_t in XPCServiceEventHandler
https://bugs.webkit.org/show_bug.cgi?id=224242
<rdar://74308418>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-06
Reviewed by David Kilzer.

There is a reasonable chance that by the time we get to the block of xpc_connection_set_event_handler
and back through WorkQueue::main().dispatchSync the xpc_connection_t has been freed.

Also, the adoption in each entry points was incorrect, causing a late overrelease when tearing down the process.
It was incorrect because we did not just create the connection or get it from any NS_RETURNS_RETAINED-like function.
It was causing rare crashes once everything else had released their hold on the connection.

* GPUProcess/EntryPoint/Cocoa/XPCService/GPUServiceEntryPoint.mm:
(GPU_SERVICE_INITIALIZER):
* NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkServiceEntryPoint.mm:
(NETWORK_SERVICE_INITIALIZER):
* PluginProcess/EntryPoint/Cocoa/XPCService/PluginServiceEntryPoint.mm:
(PLUGIN_SERVICE_INITIALIZER):
* Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
(WebKit::XPCServiceEventHandler):
* WebAuthnProcess/EntryPoint/Cocoa/XPCService/WebAuthnServiceEntryPoint.mm:
(WEBAUTHN_SERVICE_INITIALIZER):
* WebProcess/EntryPoint/Cocoa/XPCService/WebContentServiceEntryPoint.mm:
(WEBCONTENT_SERVICE_INITIALIZER):

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

20 months ago[macOS] Allow access to 'com.apple.system.logger' in the Base System
bfulgham@apple.com [Tue, 6 Apr 2021 19:41:12 +0000 (19:41 +0000)]
[macOS] Allow access to 'com.apple.system.logger' in the Base System
https://bugs.webkit.org/show_bug.cgi?id=224241
<rdar://problem/75960194>

Reviewed by Alex Christensen.

Deeper testing has revealed that some test configurations used internally require access to 'com.apple.system.logger' in the base
system to support certain diagnostic operations outside the normal user release logging paths.

This patch restores access to the 'com.apple.system.logger' endpoint when running in the Base System.

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

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

20 months ago[Cocoa] audio played at 2x speed video is not pitch corrected
eric.carlson@apple.com [Tue, 6 Apr 2021 19:38:33 +0000 (19:38 +0000)]
[Cocoa] audio played at 2x speed video is not pitch corrected
https://bugs.webkit.org/show_bug.cgi?id=224238
rdar://75868284

Reviewed by Jer Noble.

We need to use the _intended_ playback rate when deciding which pitch correction
algorithm to use. MediaPlayerPrivateAVFoundationObjC::m_cachedRate is used for this,
but r274592 stopped setting m_cachedRate in MediaPlayerPrivateAVFoundationObjC::setPlayerRate
because it is also set when AVPlayer KVOs that the rate changed.

Tested manually.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::setPlayerRate): Set m_cachedRate.

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

20 months ago[macOS] Add MediaSessionCoordinator API test
eric.carlson@apple.com [Tue, 6 Apr 2021 19:06:53 +0000 (19:06 +0000)]
[macOS] Add MediaSessionCoordinator API test
https://bugs.webkit.org/show_bug.cgi?id=224140
<rdar://problem/76171173>

Reviewed by Jer Noble.

Source/WebKit:

* Sources.txt: Include RemoteMediaSessionCoordinatorProxy.cpp and RemoteMediaSessionCoordinator.cpp
so they don't have to be included in the Xcode project.

* UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h: Declare enums, struct, and protocols
necessary to implement and use an object derived from MediaSessionCoordinatorProxyPrivate.
* UIProcess/API/Cocoa/WKWebViewTesting.mm:
(-[WKWebView _createMediaSessionCoordinatorForTesting:completionHandler:]): New private
method to create a MediaSessionCoordinatorProxyPrivate.
(-[WKMediaSessionCoordinatorHelper initWithCoordinator:]):
(-[WKMediaSessionCoordinatorHelper seekSessionToTime:withCompletion:]):
(-[WKMediaSessionCoordinatorHelper playSessionWithCompletion:]):
(-[WKMediaSessionCoordinatorHelper pauseSessionWithCompletion:]):
(-[WKMediaSessionCoordinatorHelper setSessionTrack:withCompletion:]):

* UIProcess/Cocoa/WebViewImpl.h:
(WebKit::WebViewImpl::mediaSessionCoordinatorForTesting): MediaSessionCoordinatorProxyPrivate
getter.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::setMediaSessionCoordinatorForTesting): Setter for
MediaSessionCoordinatorProxyPrivate drived object.

* UIProcess/Media/MediaSessionCoordinatorProxyPrivate.h: Add typedef for the completion
handler used by many coordinator proxy methods.

* UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp:
(WebKit::RemoteMediaSessionCoordinatorProxy::RemoteMediaSessionCoordinatorProxy):
Set the private coordinator client so calls to the session can be forwarded.
(WebKit::RemoteMediaSessionCoordinatorProxy::join): Use MediaSessionCommandCompletionHandler.
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinateSeekTo): Ditto.
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinatePlay): Ditto.
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinatePause): Ditto.
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinateSetTrack): Ditto.
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinatorStateChanged): Ditto.
* UIProcess/Media/RemoteMediaSessionCoordinatorProxy.h:

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::createMediaSessionCoordinator): Change completion handler
parameter to return a bool instead of a RemoteMediaSessionCoordinatorProxy as the
client interface provides all of the session access needed.
* UIProcess/WebPageProxy.h:

* WebKit.xcodeproj/project.pbxproj: Remove RemoteMediaSessionCoordinatorProxy.cpp
and RemoteMediaSessionCoordinator.cpp

* WebProcess/MediaSession/RemoteMediaSessionCoordinator.cpp:
(WebKit::RemoteMediaSessionCoordinator::join): Use ExceptionData's toException()
method instead of creating an Exception directly. Remove the destination ID parameter
to sendWithAsyncReply so messageSenderDestinationID() will be used.
(WebKit::RemoteMediaSessionCoordinator::leave): Ditto.
(WebKit::RemoteMediaSessionCoordinator::seekTo) Ditto.:
(WebKit::RemoteMediaSessionCoordinator::play): Ditto.
(WebKit::RemoteMediaSessionCoordinator::pause): Ditto.
(WebKit::RemoteMediaSessionCoordinator::setTrack): Ditto.
(WebKit::RemoteMediaSessionCoordinator::positionStateChanged): Ditto.
(WebKit::RemoteMediaSessionCoordinator::readyStateChanged): Ditto.
(WebKit::RemoteMediaSessionCoordinator::playbackStateChanged): Ditto.
(WebKit::RemoteMediaSessionCoordinator::coordinatorStateChanged): Ditto.

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/xcshareddata/xcschemes/TestWebKitAPI.xcscheme:
* TestWebKitAPI/Tests/WebKit/MediaSessionCoordinatorTest.mm: Added.
(-[_WKMockMediaSessionCoordinator lastStateChange]):
(-[_WKMockMediaSessionCoordinator lastMethodCalled]):
(-[_WKMockMediaSessionCoordinator identifier]):
(-[_WKMockMediaSessionCoordinator joinWithCompletion:]):
(-[_WKMockMediaSessionCoordinator leave]):
(-[_WKMockMediaSessionCoordinator seekTo:withCompletion:]):
(-[_WKMockMediaSessionCoordinator playWithCompletion:]):
(-[_WKMockMediaSessionCoordinator pauseWithCompletion:]):
(-[_WKMockMediaSessionCoordinator setTrack:withCompletion:]):
(-[_WKMockMediaSessionCoordinator positionStateChanged:]):
(-[_WKMockMediaSessionCoordinator readyStateChanged:]):
(-[_WKMockMediaSessionCoordinator playbackStateChanged:]):
(-[_WKMockMediaSessionCoordinator coordinatorStateChanged:]):
(-[_WKMockMediaSessionCoordinator seekSessionToTime:]):
(-[_WKMockMediaSessionCoordinator playSession]):
(-[_WKMockMediaSessionCoordinator pauseSession]):
(-[_WKMockMediaSessionCoordinator setSessionTrack:]):
(TestWebKitAPI::MediaSessionCoordinatorTest::createCoordinator):
(TestWebKitAPI::MediaSessionCoordinatorTest::webView const):
(TestWebKitAPI::MediaSessionCoordinatorTest::coordinator const):
(TestWebKitAPI::MediaSessionCoordinatorTest::loadPageAndBecomeReady):
(TestWebKitAPI::MediaSessionCoordinatorTest::runScriptWithUserGesture):
(TestWebKitAPI::MediaSessionCoordinatorTest::play):
(TestWebKitAPI::MediaSessionCoordinatorTest::pause):
(TestWebKitAPI::MediaSessionCoordinatorTest::listenForEventMessages):
(TestWebKitAPI::MediaSessionCoordinatorTest::eventListenerWasCalled):
(TestWebKitAPI::MediaSessionCoordinatorTest::clearEventListenerState):
(TestWebKitAPI::MediaSessionCoordinatorTest::executeUntil):
(TestWebKitAPI::MediaSessionCoordinatorTest::waitForEventListenerToBeCalled):
(TestWebKitAPI::MediaSessionCoordinatorTest::listenForMessagesPosted):
(TestWebKitAPI::MediaSessionCoordinatorTest::clearMessagesPosted):
(TestWebKitAPI::MediaSessionCoordinatorTest::listenForSessionHandlerMessages):
(TestWebKitAPI::MediaSessionCoordinatorTest::sessionHandlerWasCalled):
(TestWebKitAPI::MediaSessionCoordinatorTest::waitForSessionHandlerToBeCalled):
(TestWebKitAPI::MediaSessionCoordinatorTest::listenForPromiseMessages):
(TestWebKitAPI::MediaSessionCoordinatorTest::clearPromiseMessages):
(TestWebKitAPI::MediaSessionCoordinatorTest::promiseWasResolved):
(TestWebKitAPI::MediaSessionCoordinatorTest::promiseWasRejected):
(TestWebKitAPI::MediaSessionCoordinatorTest::waitForPromise):
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WebKitCocoa/media-remote.html:

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

20 months agoUBSan: RenderView.cpp:831:9: runtime error: load of value nnn, which is not a valid...
ddkilzer@apple.com [Tue, 6 Apr 2021 18:15:34 +0000 (18:15 +0000)]
UBSan: RenderView.cpp:831:9: runtime error: load of value nnn, which is not a valid value for type 'bool'
<https://webkit.org/b/224157>

Reviewed by Darin Adler.

Tests: editing/inserting/insert-list-user-select-none-crash.html
       fast/dom/clientWidthAfterDocumentIsRemoved.html
       fast/scrolling/iframe-scrollable-after-back.html
       fast/text/crash-font-family-parsed.html
       html5lib/generated/run-template-write.html
       imported/blink/plugins/renderless-plugin-creation-doesnt-crash-without-frame.html
       imported/w3c/web-platform-tests/css/cssom-view/scrolling-no-browsing-context.html
       imported/w3c/web-platform-tests/dom/ranges/Range-mutations-appendChild.html
       imported/w3c/web-platform-tests/html/browsers/the-window-object/named-access-on-the-window-object/navigated-named-objects.window.html
       imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/clicking-interactive-content.html
       imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_template.html
       imported/w3c/web-platform-tests/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html
       imported/w3c/web-platform-tests/selection/addRange-12.html
       imported/w3c/web-platform-tests/shadow-dom/untriaged/html-elements-in-shadow-trees/html-forms/test-001.html
       media/track/track-remove-crash.html
       svg/custom/animate-reference-crash.html

* rendering/RenderView.h:
(WebCore::RenderView::m_wasAccumulatingRepaintRegion):
- Add default initialization.

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

20 months agoWebCrypto in Safari will not AES-GCM encrypt 0 bytes
jiewen_tan@apple.com [Tue, 6 Apr 2021 18:10:31 +0000 (18:10 +0000)]
WebCrypto in Safari will not AES-GCM encrypt 0 bytes
https://bugs.webkit.org/show_bug.cgi?id=224083
<rdar://75093377>

Reviewed by Youenn Fablet.

Source/WebCore:

CommonCrypto will bail out both the encryption and decryption process if the dataOut is a null pointer.
To workaround the issue, this patch forces the dataOut to be a non-null pointer.

Test: crypto/subtle/aes-gcm-generate-key-encrypt-decrypt-null-plain-text.html

* crypto/mac/CryptoAlgorithmAES_GCMMac.cpp:
(WebCore::encryptAES_GCM):
(WebCore::decyptAES_GCM):

LayoutTests:

* crypto/subtle/aes-gcm-generate-key-encrypt-decrypt-null-plain-text-expected.txt: Added.
* crypto/subtle/aes-gcm-generate-key-encrypt-decrypt-null-plain-text.html: Added.

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

20 months agoset-webkit-configuration should print current settings
ddkilzer@apple.com [Tue, 6 Apr 2021 18:02:25 +0000 (18:02 +0000)]
set-webkit-configuration should print current settings
<https://webkit.org/b/224190>

Reviewed by Mark Lam.

* Scripts/set-webkit-configuration:
- Reorder switches to put sanitizers together.
- Declare subroutines.
- Call printCurrentSettings() or printUsage() as needed.
(printCurrentSettings): Add.
(printUsage): Add.
* Scripts/webkitdirs.pm:
- Reorder switch variables to match other code.
(coverageIsEnabled): Add for set-webkit-configuration.

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

20 months ago[LayoutTests] Convert http/tests/loading convert PHP to Python
cgambrell@apple.com [Tue, 6 Apr 2021 18:00:33 +0000 (18:00 +0000)]
[LayoutTests] Convert http/tests/loading convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=222198
<rdar://problem/74536576>

Reviewed by Jonathan Bedard.

* http/tests/loading/redirect-methods-expected.txt:
* http/tests/loading/resources/redirect-methods-form.html:
* http/tests/loading/resources/redirect-methods-result.php: Removed.
* http/tests/loading/resources/redirect-methods-result.py: Added.

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

20 months ago[iOS] Prevent background blur when presenting date/time pickers
akeerthi@apple.com [Tue, 6 Apr 2021 17:54:10 +0000 (17:54 +0000)]
[iOS] Prevent background blur when presenting date/time pickers
https://bugs.webkit.org/show_bug.cgi?id=224189
<rdar://problem/76220352>

Reviewed by Wenson Hsieh.

* Platform/spi/ios/UIKitSPI.h:
* UIProcess/ios/forms/WKDateTimeInputControl.mm:
(-[WKDateTimePicker _contextMenuInteraction:styleForMenuWithConfiguration:]):

Presenting a UIContextMenuInteraction results in the application of a
blur effect to the background view. However, the peripheral presented
when interacting with a UIDatePicker across the rest of the system
does not blur the background.

To align our behavior with the rest of the system, remove the blur
effect by specifying an empty UIVisualEffect for the
_UIContextMenuStyle's preferredBackgroundEffects. The empty effect
must be explicitly specified, since setting an empty array will result
in the default effect being applied.

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

20 months agoRevert part of crash fix to keep test infrastructure
achristensen@apple.com [Tue, 6 Apr 2021 17:28:13 +0000 (17:28 +0000)]
Revert part of crash fix to keep test infrastructure
https://bugs.webkit.org/show_bug.cgi?id=224196

These two tests change the bundle identifier to test what it's like to not be in a test:

http/tests/in-app-browser-privacy/app-bound-domain-gets-app-bound-session.html
http/tests/in-app-browser-privacy/non-app-bound-iframe-under-app-bound-domain-is-app-bound.html

This partial revert of r275486 allows the test to dynamically change whether it's in testing mode.

* Shared/Cocoa/DefaultWebBrowserChecks.mm:
(WebKit::doesParentProcessHaveITPEnabled):
(WebKit::isParentProcessAFullWebBrowser):

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

20 months ago[GPUP] Clean up two messages.in files
peng.liu6@apple.com [Tue, 6 Apr 2021 17:24:42 +0000 (17:24 +0000)]
[GPUP] Clean up two messages.in files
https://bugs.webkit.org/show_bug.cgi?id=224153

Reviewed by Eric Carlson.

No new tests, no functional change.

* GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
* WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in:

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

20 months agoWeb Inspector: Grid overlay areas appear offset from their actual areas when the...
pangle@apple.com [Tue, 6 Apr 2021 17:18:52 +0000 (17:18 +0000)]
Web Inspector: Grid overlay areas appear offset from their actual areas when the grid container has a border set
https://bugs.webkit.org/show_bug.cgi?id=224201

Reviewed by BJ Burg.

As of r274096, it is no longer correct to subtract the first track's position for either axis from the edge
lines of areas. This change resolves that, bringing this math in line with how other grid lines are laid out.

* inspector/InspectorOverlay.cpp:
(WebCore::InspectorOverlay::buildGridOverlay):

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

20 months ago[GStreamer] At EOS, change position to match duration, not the other way around.
aboya@igalia.com [Tue, 6 Apr 2021 17:10:27 +0000 (17:10 +0000)]
[GStreamer] At EOS, change position to match duration, not the other way around.
https://bugs.webkit.org/show_bug.cgi?id=224237

Reviewed by Philippe Normand.

The criteria used to check if playback has finished is currentTime >=
duration. Currently MediaPlayerPrivateGStreamer::didEnd() ensures this
in an awkward way: by changing the duration so that it matches
currentTime, rather than the other way around.

This meant a duration change at the end of playback most of the time,
with a slightly different duration each time, since currentTime is
cached periodically.

This patch reworks that function to work more naturally and less racy:

First, only if the stream doesn't have a set duration (e.g. live
stream), we set a duration to currentTime, as defined in the spec.

Second, at EOS we update currentTime to match duration, rather than
the other way around.

This patch doesn't introduce changes in test results.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::didEnd):

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

20 months agoNon-unified build fixes, early April 2021
commit-queue@webkit.org [Tue, 6 Apr 2021 16:51:57 +0000 (16:51 +0000)]
Non-unified build fixes, early April 2021
https://bugs.webkit.org/show_bug.cgi?id=224091

Patch by Tyler Wilcock <twilco.o@protonmail.com> on 2021-04-06
Reviewed by Simon Fraser.
Source/WebCore:

The SelectionRestorationMode enum has been moved out of Document.h so
the entirety of Document.h doesn't need to be included just for that
enum.

* Headers.cmake:
Add SelectionRestorationMode.h.

* WebCore.xcodeproj/project.pbxproj:
Add SelectionRestorationMode.h.

* dom/Document.h:
Move SelectionRestorationMode enum to its own file.

* dom/Element.h:
Add forward declaration for enum class SelectionRestorationMode. Rearrange
existing enum class forward declarations alphabetically.

* dom/SelectionRestorationMode.h: Added.

* dom/FocusOptions.h:
* history/CachedPage.cpp:
* html/HTMLFormControlElement.cpp:
* html/HTMLInputElement.h:
* html/HTMLLabelElement.cpp:
* html/HTMLLegendElement.cpp:
* html/HTMLTextAreaElement.h:
* html/InputType.cpp:
* page/EventHandler.cpp:
* page/FocusController.cpp:
Add #include "SelectionRestorationMode.h".

* workers/service/context/ServiceWorkerThreadProxy.cpp:
Add #include "ServiceWorkerGlobalScope.h" to fix:
ServiceWorkerThreadProxy.cpp:287:53: error: invalid use of incomplete type
'WTF::match_constness_t<WebCore::ScriptExecutionContext, WebCore::ServiceWorkerGlobalScope>'
{aka 'class WebCore::ServiceWorkerGlobalScope'}

Source/WebKit:

The SelectionRestorationMode enum has been moved out of Document.h so
the entirety of Document.h doesn't need to be included just for that
enum.

* WebProcess/WebPage/WebPage.cpp:
Add #include "SelectionRestorationMode.h".

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

20 months ago[ macOS Wk2 ] media/media-fragments/TC0051.html is flakey crashing
ryanhaddad@apple.com [Tue, 6 Apr 2021 16:37:25 +0000 (16:37 +0000)]
[ macOS Wk2 ] media/media-fragments/TC0051.html is flakey crashing
https://bugs.webkit.org/show_bug.cgi?id=222277

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations: Skip this test directory to
suppress this crash on EWS & trunk bots.

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

20 months agoRelease WebRTC remote encoder/decoder callback lock right after having changed the...
youenn@apple.com [Tue, 6 Apr 2021 16:36:51 +0000 (16:36 +0000)]
Release WebRTC remote encoder/decoder callback lock right after having changed the encoder/decoder callback
https://bugs.webkit.org/show_bug.cgi?id=224228
<rdar://74560516>

Reviewed by Eric Carlson.

We were locking the callback lock, changing the callback and hopping to codec map thread to free the encoder/decoder.
Then we were unlocking the callback lock.
There was a chance that the encoder/decoder gets freed in the codec map thread before we unlock its callback lock.
Given that we nullify the callback in decoder/encoder Release before going to destructor, we can just remove the lock/nullify code.
Covered by existing test sets.

* WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:
(WebKit::LibWebRTCCodecs::releaseDecoder):
(WebKit::LibWebRTCCodecs::releaseEncoder):

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

20 months ago[iOS][FCR] Use opaque system colors for control backgrounds
akeerthi@apple.com [Tue, 6 Apr 2021 16:09:19 +0000 (16:09 +0000)]
[iOS][FCR] Use opaque system colors for control backgrounds
https://bugs.webkit.org/show_bug.cgi?id=224131
<rdar://problem/75975709>

Reviewed by Tim Horton.

Source/WebCore:

r274600 introduced the use of system colors for control backgrounds.
However, the system fill colors are not opaque, leading to poor
visibility on certain page/element backgrounds.

To fix, use an opaque variant of the system fill colors, as if they
were drawn on top of a white background. Note that UIKit does not
expose these opaque variants, leaving us to make the adjustments
ourselves.

* css/CSSValueKeywords.in:

Replace the system fill color keywords with opaque variants. The old
colors are fine to remove, since they were only introduced in r274600,
and have no external clients.

* css/html.css:

Replace all system fill colors with their opaque variants.

* rendering/RenderThemeIOS.mm:
(WebCore::cssValueSystemColorInformationList):

Renamed CSSValueIDAndSelector to CSSValueSystemColorInformation to
account for the addition of new fields to support opaque fill colors.

Storing the blendOverWhite and opacity fields in the list allows us
to resolve the color once and store it in a cache, rather than
applying the adjustments each time.

(WebCore::systemColorFromCSSValueSystemColorInformation):

Use the blendOverWhite and opacity information from the
CSSValueSystemColorInformation to determine the final color.

(WebCore::systemColorFromCSSValueID):

Call into systemColorFromCSSValueSystemColorInformation to avoid
duplicating logic.

(WebCore::RenderThemeIOS::cssValueToSystemColorMap):
(WebCore::RenderThemeIOS::systemColor):
(WebCore::RenderThemeIOS::checkboxRadioBackgroundColor):
(WebCore::RenderThemeIOS::paintProgressBarWithFormControlRefresh):
(WebCore::RenderThemeIOS::paintMeter):
(WebCore::RenderThemeIOS::paintSliderTrackWithFormControlRefresh):

LayoutTests:

Rebaselined tests to account for changes in color.

* fast/forms/date/date-input-rendering-basic-expected.txt:
* fast/forms/date/date-pseudo-elements-expected.txt:
* fast/forms/time/time-input-rendering-basic-expected.txt:
* platform/ios-simulator/fast/forms/auto-fill-button/hide-auto-fill-strong-password-viewable-treatment-when-form-is-reset-expected.txt:
* platform/ios-simulator/fast/forms/auto-fill-button/input-credit-card-auto-fill-button-expected.txt:
* platform/ios-simulator/fast/forms/auto-fill-button/input-strong-password-viewable-expected.txt:
* platform/ios-simulator/fast/forms/datalist/datalist-searchinput-appearance-expected.txt:
* platform/ios-simulator/fast/forms/datalist/datalist-textinput-appearance-expected.txt:
* platform/ios-wk2/editing/input/caret-at-the-edge-of-input-expected.txt:
* platform/ios-wk2/editing/input/reveal-caret-of-multiline-input-expected.txt:
* platform/ios-wk2/editing/inserting/4960120-1-expected.txt:
* platform/ios-wk2/editing/inserting/before-after-input-element-expected.txt:
* platform/ios-wk2/editing/pasteboard/4641033-expected.txt:
* platform/ios-wk2/editing/pasteboard/4944770-1-expected.txt:
* platform/ios-wk2/editing/pasteboard/4944770-2-expected.txt:
* platform/ios-wk2/editing/pasteboard/input-field-1-expected.txt:
* platform/ios-wk2/editing/pasteboard/pasting-tabs-expected.txt:
* platform/ios-wk2/editing/selection/4895428-3-expected.txt:
* platform/ios-wk2/editing/selection/caret-before-select-expected.txt:
* platform/ios-wk2/editing/selection/drag-select-1-expected.txt:
* platform/ios-wk2/editing/selection/select-from-textfield-outwards-expected.txt:
* platform/ios-wk2/fast/block/float/overhanging-tall-block-expected.txt:
* platform/ios-wk2/fast/block/margin-collapse/103-expected.txt:
* platform/ios-wk2/fast/dynamic/008-expected.txt:
* platform/ios-wk2/fast/forms/basic-buttons-expected.txt:
* platform/ios-wk2/fast/forms/basic-textareas-quirks-expected.txt:
* platform/ios-wk2/fast/forms/input-appearance-preventDefault-expected.txt:
* platform/ios-wk2/fast/forms/input-text-click-outside-expected.txt:
* platform/ios-wk2/fast/forms/input-text-double-click-expected.txt:
* platform/ios-wk2/fast/forms/input-text-drag-down-expected.txt:
* platform/ios-wk2/fast/forms/input-text-option-delete-expected.txt:
* platform/ios-wk2/fast/forms/textAreaLineHeight-expected.txt:
* platform/ios-wk2/fast/forms/textarea-align-expected.txt:
* platform/ios-wk2/fast/forms/textarea-placeholder-visibility-1-expected.txt:
* platform/ios-wk2/fast/forms/textarea-placeholder-visibility-2-expected.txt:
* platform/ios-wk2/fast/forms/textarea-scroll-height-expected.txt:
* platform/ios-wk2/fast/forms/textarea-setinnerhtml-expected.txt:
* platform/ios-wk2/fast/hidpi/resize-corner-hidpi-expected.txt:
* platform/ios-wk2/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.txt:
* platform/ios-wk2/fast/overflow/scrollRevealButton-expected.txt:
* platform/ios-wk2/fast/parser/document-write-option-expected.txt:
* platform/ios-wk2/fast/parser/entity-comment-in-textarea-expected.txt:
* platform/ios-wk2/fast/parser/open-comment-in-textarea-expected.txt:
* platform/ios-wk2/fast/spatial-navigation/snav-multiple-select-focusring-expected.txt:
* platform/ios-wk2/fast/text/international/rtl-white-space-pre-wrap-expected.txt:
* platform/ios-wk2/fast/text/international/unicode-bidi-plaintext-in-textarea-expected.txt:
* platform/ios-wk2/fast/transforms/transformed-focused-text-input-expected.txt:
* platform/ios-wk2/imported/w3c/web-platform-tests/css/css-pseudo/file-chooser-button-display-toggle-crash.tentative-expected.txt:
* platform/ios/css3/flexbox/button-expected.txt:
* platform/ios/editing/pasteboard/4806874-expected.txt:
* platform/ios/editing/selection/3690703-2-expected.txt:
* platform/ios/editing/selection/3690703-expected.txt:
* platform/ios/editing/selection/3690719-expected.txt:
* platform/ios/editing/selection/4397952-expected.txt:
* platform/ios/editing/selection/4975120-expected.txt:
* platform/ios/editing/selection/5240265-expected.txt:
* platform/ios/editing/selection/replaced-boundaries-3-expected.txt:
* platform/ios/editing/selection/select-box-expected.txt:
* platform/ios/editing/selection/select-element-paragraph-boundary-expected.txt:
* platform/ios/editing/selection/selection-button-text-expected.txt:
* platform/ios/fast/block/float/032-expected.txt:
* platform/ios/fast/block/float/float-avoidance-expected.txt:
* platform/ios/fast/block/positioning/inline-block-relposition-expected.txt:
* platform/ios/fast/css/continuationCrash-expected.txt:
* platform/ios/fast/css/focus-ring-exists-for-search-field-expected.txt:
* platform/ios/fast/css/input-search-padding-expected.txt:
* platform/ios/fast/css/line-height-expected.txt:
* platform/ios/fast/css/rtl-ordering-expected.txt:
* platform/ios/fast/css/text-overflow-input-expected.txt:
* platform/ios/fast/css/text-transform-select-expected.txt:
* platform/ios/fast/dom/HTMLTableColElement/resize-table-using-col-width-expected.txt:
* platform/ios/fast/dom/HTMLTextAreaElement/reset-textarea-expected.txt:
* platform/ios/fast/dynamic/positioned-movement-with-positioned-children-expected.txt:
* platform/ios/fast/events/context-no-deselect-expected.txt:
* platform/ios/fast/forms/001-expected.txt:
* platform/ios/fast/forms/003-expected.txt:
* platform/ios/fast/forms/004-expected.txt:
* platform/ios/fast/forms/auto-fill-button/input-auto-fill-button-expected.txt:
* platform/ios/fast/forms/auto-fill-button/input-contacts-auto-fill-button-expected.txt:
* platform/ios/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt:
* platform/ios/fast/forms/basic-inputs-expected.txt:
* platform/ios/fast/forms/basic-selects-expected.txt:
* platform/ios/fast/forms/basic-textareas-expected.txt:
* platform/ios/fast/forms/blankbuttons-expected.txt:
* platform/ios/fast/forms/box-shadow-override-expected.txt:
* platform/ios/fast/forms/button-align-expected.txt:
* platform/ios/fast/forms/button-cannot-be-nested-expected.txt:
* platform/ios/fast/forms/button-generated-content-expected.txt:
* platform/ios/fast/forms/button-positioned-expected.txt:
* platform/ios/fast/forms/button-sizes-expected.txt:
* platform/ios/fast/forms/button-style-color-expected.txt:
* platform/ios/fast/forms/button-table-styles-expected.txt:
* platform/ios/fast/forms/button-text-transform-expected.txt:
* platform/ios/fast/forms/button-white-space-expected.txt:
* platform/ios/fast/forms/control-clip-expected.txt:
* platform/ios/fast/forms/control-clip-overflow-expected.txt:
* platform/ios/fast/forms/control-restrict-line-height-expected.txt:
* platform/ios/fast/forms/disabled-select-change-index-expected.txt:
* platform/ios/fast/forms/encoding-test-expected.txt:
* platform/ios/fast/forms/fieldset-align-expected.txt:
* platform/ios/fast/forms/file/file-input-direction-expected.txt:
* platform/ios/fast/forms/file/file-input-disabled-expected.txt:
* platform/ios/fast/forms/floating-textfield-relayout-expected.txt:
* platform/ios/fast/forms/form-element-geometry-expected.txt:
* platform/ios/fast/forms/hidden-listbox-expected.txt:
* platform/ios/fast/forms/input-align-expected.txt:
* platform/ios/fast/forms/input-appearance-bkcolor-expected.txt:
* platform/ios/fast/forms/input-appearance-default-bkcolor-expected.txt:
* platform/ios/fast/forms/input-appearance-disabled-expected.txt:
* platform/ios/fast/forms/input-appearance-focus-expected.txt:
* platform/ios/fast/forms/input-appearance-height-expected.txt:
* platform/ios/fast/forms/input-appearance-selection-expected.txt:
* platform/ios/fast/forms/input-appearance-visibility-expected.txt:
* platform/ios/fast/forms/input-appearance-width-expected.txt:
* platform/ios/fast/forms/input-button-sizes-expected.txt:
* platform/ios/fast/forms/input-disabled-color-expected.txt:
* platform/ios/fast/forms/input-double-click-selection-gap-bug-expected.txt:
* platform/ios/fast/forms/input-field-text-truncated-expected.txt:
* platform/ios/fast/forms/input-placeholder-visibility-1-expected.txt:
* platform/ios/fast/forms/input-placeholder-visibility-3-expected.txt:
* platform/ios/fast/forms/input-spaces-expected.txt:
* platform/ios/fast/forms/input-table-expected.txt:
* platform/ios/fast/forms/input-text-click-inside-expected.txt:
* platform/ios/fast/forms/input-text-scroll-left-on-blur-expected.txt:
* platform/ios/fast/forms/input-text-self-emptying-click-expected.txt:
* platform/ios/fast/forms/input-type-text-min-width-expected.txt:
* platform/ios/fast/forms/input-value-expected.txt:
* platform/ios/fast/forms/input-width-expected.txt:
* platform/ios/fast/forms/listbox-bidi-align-expected.txt:
* platform/ios/fast/forms/listbox-hit-test-zoomed-expected.txt:
* platform/ios/fast/forms/listbox-scrollbar-incremental-load-expected.txt:
* platform/ios/fast/forms/listbox-width-change-expected.txt:
* platform/ios/fast/forms/menulist-clip-expected.txt:
* platform/ios/fast/forms/menulist-deselect-update-expected.txt:
* platform/ios/fast/forms/menulist-narrow-width-expected.txt:
* platform/ios/fast/forms/menulist-no-overflow-expected.txt:
* platform/ios/fast/forms/menulist-option-wrap-expected.txt:
* platform/ios/fast/forms/menulist-separator-painting-expected.txt:
* platform/ios/fast/forms/menulist-style-color-expected.txt:
* platform/ios/fast/forms/menulist-width-change-expected.txt:
* platform/ios/fast/forms/minWidthPercent-expected.txt:
* platform/ios/fast/forms/number/number-appearance-rtl-expected.txt:
* platform/ios/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.txt:
* platform/ios/fast/forms/number/number-appearance-spinbutton-layer-expected.txt:
* platform/ios/fast/forms/option-script-expected.txt:
* platform/ios/fast/forms/option-strip-whitespace-expected.txt:
* platform/ios/fast/forms/option-text-clip-expected.txt:
* platform/ios/fast/forms/placeholder-pseudo-style-expected.txt:
* platform/ios/fast/forms/plaintext-mode-2-expected.txt:
* platform/ios/fast/forms/search-cancel-button-style-sharing-expected.txt:
* platform/ios/fast/forms/search-display-none-cancel-button-expected.txt:
* platform/ios/fast/forms/search-input-rtl-expected.txt:
* platform/ios/fast/forms/select-align-expected.txt:
* platform/ios/fast/forms/select-baseline-expected.txt:
* platform/ios/fast/forms/select-block-background-expected.txt:
* platform/ios/fast/forms/select-change-listbox-size-expected.txt:
* platform/ios/fast/forms/select-change-listbox-to-popup-expected.txt:
* platform/ios/fast/forms/select-change-popup-to-listbox-expected.txt:
* platform/ios/fast/forms/select-dirty-parent-pref-widths-expected.txt:
* platform/ios/fast/forms/select-disabled-appearance-expected.txt:
* platform/ios/fast/forms/select-element-focus-ring-expected.txt:
* platform/ios/fast/forms/select-empty-option-height-expected.txt:
* platform/ios/fast/forms/select-initial-position-expected.txt:
* platform/ios/fast/forms/select-item-background-clip-expected.txt:
* platform/ios/fast/forms/select-list-box-with-height-expected.txt:
* platform/ios/fast/forms/select-non-native-rendering-direction-expected.txt:
* platform/ios/fast/forms/select-selected-expected.txt:
* platform/ios/fast/forms/select-style-expected.txt:
* platform/ios/fast/forms/select-visual-hebrew-expected.txt:
* platform/ios/fast/forms/select-writing-direction-natural-expected.txt:
* platform/ios/fast/forms/select/optgroup-rendering-expected.txt:
* platform/ios/fast/forms/selectlist-minsize-expected.txt:
* platform/ios/fast/forms/stuff-on-my-optgroup-expected.txt:
* platform/ios/fast/forms/tabbing-input-iframe-expected.txt:
* platform/ios/fast/forms/textarea-placeholder-pseudo-style-expected.txt:
* platform/ios/fast/forms/textarea-scrollbar-expected.txt:
* platform/ios/fast/forms/textarea-scrolled-type-expected.txt:
* platform/ios/fast/forms/textarea-width-expected.txt:
* platform/ios/fast/forms/textfield-focus-ring-expected.txt:
* platform/ios/fast/forms/textfield-overflow-expected.txt:
* platform/ios/fast/frames/take-focus-from-iframe-expected.txt:
* platform/ios/fast/html/details-no-summary4-expected.txt:
* platform/ios/fast/html/details-open-javascript-expected.txt:
* platform/ios/fast/html/details-open2-expected.txt:
* platform/ios/fast/html/details-open4-expected.txt:
* platform/ios/fast/html/details-replace-summary-child-expected.txt:
* platform/ios/fast/html/details-replace-text-expected.txt:
* platform/ios/fast/html/keygen-expected.txt:
* platform/ios/fast/invalid/014-expected.txt:
* platform/ios/fast/lists/dynamic-marker-crash-expected.txt:
* platform/ios/fast/overflow/overflow-x-y-expected.txt:
* platform/ios/fast/replaced/replaced-breaking-expected.txt:
* platform/ios/fast/replaced/replaced-breaking-mixture-expected.txt:
* platform/ios/fast/replaced/three-selects-break-expected.txt:
* platform/ios/fast/replaced/width100percent-button-expected.txt:
* platform/ios/fast/replaced/width100percent-menulist-expected.txt:
* platform/ios/fast/replaced/width100percent-searchfield-expected.txt:
* platform/ios/fast/replaced/width100percent-textarea-expected.txt:
* platform/ios/fast/replaced/width100percent-textfield-expected.txt:
* platform/ios/fast/selectors/064-expected.txt:
* platform/ios/fast/table/append-cells2-expected.txt:
* platform/ios/fast/table/colspanMinWidth-expected.txt:
* platform/ios/fast/table/remove-td-display-none-expected.txt:
* platform/ios/fast/table/spanOverlapRepaint-expected.txt:
* platform/ios/fast/table/text-field-baseline-expected.txt:
* platform/ios/fast/text/drawBidiText-expected.txt:
* platform/ios/fast/text/international/bidi-listbox-atsui-expected.txt:
* platform/ios/fast/text/international/bidi-listbox-expected.txt:
* platform/ios/fast/text/international/bidi-menulist-expected.txt:
* platform/ios/fast/text/international/hindi-spacing-expected.txt:
* platform/ios/fast/text/international/pop-up-button-text-alignment-and-direction-expected.txt:
* platform/ios/imported/w3c/web-platform-tests/selection/selection-select-all-move-input-crash-expected.txt:
* platform/ios/svg/custom/foreign-object-skew-expected.txt:
* platform/ios/svg/custom/inline-svg-in-xhtml-expected.txt:
* platform/ios/svg/hixie/mixed/003-expected.txt:
* platform/ios/tables/mozilla/bugs/45621-expected.txt:
* platform/ios/tables/mozilla/bugs/bug1188-expected.txt:
* platform/ios/tables/mozilla/bugs/bug12384-expected.txt:
* platform/ios/tables/mozilla/bugs/bug18359-expected.txt:
* platform/ios/tables/mozilla/bugs/bug194024-expected.txt:
* platform/ios/tables/mozilla/bugs/bug24200-expected.txt:
* platform/ios/tables/mozilla/bugs/bug2479-2-expected.txt:
* platform/ios/tables/mozilla/bugs/bug2479-3-expected.txt:
* platform/ios/tables/mozilla/bugs/bug2479-4-expected.txt:
* platform/ios/tables/mozilla/bugs/bug26178-expected.txt:
* platform/ios/tables/mozilla/bugs/bug28928-expected.txt:
* platform/ios/tables/mozilla/bugs/bug29326-expected.txt:
* platform/ios/tables/mozilla/bugs/bug30559-expected.txt:
* platform/ios/tables/mozilla/bugs/bug30692-expected.txt:
* platform/ios/tables/mozilla/bugs/bug33855-expected.txt:
* platform/ios/tables/mozilla/bugs/bug4382-expected.txt:
* platform/ios/tables/mozilla/bugs/bug44505-expected.txt:
* platform/ios/tables/mozilla/bugs/bug4527-expected.txt:
* platform/ios/tables/mozilla/bugs/bug46368-1-expected.txt:
* platform/ios/tables/mozilla/bugs/bug46368-2-expected.txt:
* platform/ios/tables/mozilla/bugs/bug51037-expected.txt:
* platform/ios/tables/mozilla/bugs/bug51727-expected.txt:
* platform/ios/tables/mozilla/bugs/bug52505-expected.txt:
* platform/ios/tables/mozilla/bugs/bug52506-expected.txt:
* platform/ios/tables/mozilla/bugs/bug55545-expected.txt:
* platform/ios/tables/mozilla/bugs/bug59354-expected.txt:
* platform/ios/tables/mozilla/bugs/bug60749-expected.txt:
* platform/ios/tables/mozilla/bugs/bug68912-expected.txt:
* platform/ios/tables/mozilla/bugs/bug7342-expected.txt:
* platform/ios/tables/mozilla/bugs/bug92647-2-expected.txt:
* platform/ios/tables/mozilla/bugs/bug96334-expected.txt:
* platform/ios/tables/mozilla/bugs/bug99948-expected.txt:
* platform/ios/tables/mozilla/collapsing_borders/bug41262-4-expected.txt:
* platform/ios/tables/mozilla/core/margins-expected.txt:
* platform/ios/tables/mozilla/dom/tableDom-expected.txt:
* platform/ios/tables/mozilla/other/move_row-expected.txt:
* platform/ios/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt:
* platform/ios/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt:
* platform/ios/tables/mozilla_expected_failures/bugs/bug92647-1-expected.txt:
* platform/ios/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt:
* platform/ios/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt:
* platform/ios/transforms/2d/zoom-menulist-expected.txt:
* platform/ios/transforms/3d/general/perspective-non-layer-expected.txt:

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

20 months agoRemove definition used for staging change with internal repo
achristensen@apple.com [Tue, 6 Apr 2021 16:06:23 +0000 (16:06 +0000)]
Remove definition used for staging change with internal repo
https://bugs.webkit.org/show_bug.cgi?id=224196

* Shared/Cocoa/DefaultWebBrowserChecks.h:
This definition was used to help me land the patch without breaking the internal build.
Now that I've used it to adapt to the open source changes, I can remove it.

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

20 months agoHandle OOM in ScriptExecutionContext::reportUnhandledPromiseRejection
tzagallo@apple.com [Tue, 6 Apr 2021 16:05:01 +0000 (16:05 +0000)]
Handle OOM in ScriptExecutionContext::reportUnhandledPromiseRejection
https://bugs.webkit.org/show_bug.cgi?id=223777
<rdar://66271491>

Reviewed by Yusuke Suzuki.

Source/WebCore:

It's possible to fail to allocate the error message in ScriptExecutionContext::reportUnhandledPromiseRejection,
in which case we should report an OOM exception instead of crashing.

Test: js/Promise-reject-large-string.html

* dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::reportUnhandledPromiseRejection):

LayoutTests:

* js/dom/Promise-reject-large-string-expected.txt: Added.
* js/dom/Promise-reject-large-string.html: Added.

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

20 months ago[iOS] Update UIDatePickerStyle for <input type=time>
akeerthi@apple.com [Tue, 6 Apr 2021 16:00:49 +0000 (16:00 +0000)]
[iOS] Update UIDatePickerStyle for <input type=time>
https://bugs.webkit.org/show_bug.cgi?id=224187
<rdar://problem/76219729>

Reviewed by Wenson Hsieh.

* UIProcess/ios/forms/WKDateTimeInputControl.mm:
(-[WKDateTimePicker datePickerStyle]):

Use UIDatePickerStyleWheels rather than UIDatePickerStyleInline, since
the inline style now requires an additional tap to present the editable
picker view.

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

20 months agoWeb Inspector: Grid overlay does not honor writing modes and RTL layout direction.
pangle@apple.com [Tue, 6 Apr 2021 15:56:18 +0000 (15:56 +0000)]
Web Inspector: Grid overlay does not honor writing modes and RTL layout direction.
https://bugs.webkit.org/show_bug.cgi?id=224127

Reviewed by BJ Burg.

Source/WebCore:

Grid overlays did not previous honor writing modes and RTL layout direction correctly. The underlying math was
correct, but the 'origin' of the element's grid, and the direction in which rows and columns increased, was not
handled correctly. This patch resolves this by taking writing mode and direction into account when calculating
row/column line positions as well as correctly orienting layout label arrows based on the current writing
mode/direction.

Area names have been moved to the center of their respective areas, which both helps to make sure the label is
within the area for all writing modes/direction/transformation, as well as improved legibility on smaller grids
where area names were previously behind other labels.

* inspector/InspectorOverlay.cpp:
(WebCore::InspectorOverlay::backgroundPathForLayoutLabel):
(WebCore::InspectorOverlay::drawLayoutLabel):
(WebCore::InspectorOverlay::drawGridOverlay):
- `backgroundPathForLayoutLabel`, `drawLayoutLabel`, and `drawGridOverlay` now interpret the `None` arrow direction
as using the label's location as its center, not top-left.
(WebCore::authoredGridTrackSizes):
- Drive-by removal of extra whitespace.
(WebCore::InspectorOverlay::buildGridOverlay):
- Use the element's computed style to determine writing mode and direction (which takes into account the `dir` attribute).
- Adjust columnLineAt and rowLineAt calculations based on writing mode and direction.
- Adjust all arrow directions and positions based on writing mode and direction.

Source/WebKit:

* UIProcess/Inspector/ios/WKInspectorHighlightView.mm:
(createLayoutLabelLayer):
- WebCore::backgroundPathForLayoutLabel now treats the `None` arrow direction as being centered on the label's
location.

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

20 months ago[PlayStation] Fix build of DiagnosticLoggingDomain.h
stephan.szabo@sony.com [Tue, 6 Apr 2021 15:41:57 +0000 (15:41 +0000)]
[PlayStation] Fix build of DiagnosticLoggingDomain.h
https://bugs.webkit.org/show_bug.cgi?id=224205

Reviewed by Don Olmstead.

No new tests, build fix only.

* page/DiagnosticLoggingDomain.h: Include wtf/EnumTraits.h

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

20 months ago[WPE] Enable Cog's GTK4 backend
commit-queue@webkit.org [Tue, 6 Apr 2021 14:58:36 +0000 (14:58 +0000)]
[WPE] Enable Cog's GTK4 backend
https://bugs.webkit.org/show_bug.cgi?id=224099

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-06
Reviewed by Adrian Perez de Castro.

Source/WebKit:

* wpe/wpe-webkit-uninstalled.pc.in: Fix paths to derived sources.

Tools:

The Cog GTK4 platform plugin is more suitable for developer builds on desktop, compared to
the fdo backend which provides no window decorations on most Wayland compositors.

* PlatformWPE.cmake:
* Scripts/webkitpy/port/wpe.py:
(WPEPort.run_minibrowser):

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

20 months agoREGRESSION(r274358) [GStreamer] http/tests/images/mp4-partial-load.html is flaky...
commit-queue@webkit.org [Tue, 6 Apr 2021 14:37:27 +0000 (14:37 +0000)]
REGRESSION(r274358) [GStreamer] http/tests/images/mp4-partial-load.html is flaky crashing inside GStreamer
https://bugs.webkit.org/show_bug.cgi?id=223636

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-06
Reviewed by Carlos Alberto Lopez Perez.

Source/WebCore:

Ensure the GStreamer messages are always processed synchronously, even when the handler is
called from another thread. Without blocking in the latter case, the select-streams event
might be sent to decodebin too late. It has to be sent as a synchronous reaction to the
stream-collection message.

* platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:
(WebCore::ImageDecoderGStreamer::InnerDecoder::handleMessage):
(WebCore::ImageDecoderGStreamer::InnerDecoder::preparePipeline):
* platform/graphics/gstreamer/ImageDecoderGStreamer.h:

LayoutTests:

* platform/glib/TestExpectations: Update tests expectations.
* platform/gtk/TestExpectations: Ditto.

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

20 months ago[LFC][Integration] Enable inline box support (RenderInline)
zalan@apple.com [Tue, 6 Apr 2021 13:55:35 +0000 (13:55 +0000)]
[LFC][Integration] Enable inline box support (RenderInline)
https://bugs.webkit.org/show_bug.cgi?id=220148
<rdar://problem/72768785>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

* web-platform-tests/css/css-flexbox/orthogonal-flex-item-crash-expected.txt:
* web-platform-tests/css/css-text/word-break/word-break-break-all-inline-007-expected.html:
* web-platform-tests/css/css-text/word-break/word-break-break-all-inline-007.html:
* web-platform-tests/html/dom/elements/the-innertext-idl-attribute/getter-expected.txt:
* web-platform-tests/innerText/getter-expected.txt:

Source/WebCore:

Use the modern line layout for content like <span>content inside an inline box</span>.

* layout/integration/LayoutIntegrationCoverage.cpp:

Tools:

* TestWebKitAPI/Tests/ios/AccessibilityTestsIOS.mm:
(TestWebKitAPI::TEST):

LayoutTests:

- correctness progressions
- output progressions
- 1px rounding diffs
- misc

* editing/execCommand/delete-hidden-crash.html:
* fast/css/empty-inline-003-quirksmode-expected.txt:
* fast/css3-text/css3-text-decoration/text-underline-position/underline-visual-overflow-with-subpixel-position-expected.txt:
* fast/css3-text/css3-text-decoration/text-underline-position/underline-visual-overflow-with-subpixel-position.html:
* fast/invalid/018-expected.txt:
* fast/text/line-break-between-text-nodes-latin1-expected.html:
* imported/blink/fast/css/first-letter-all-inherit-td-crash-expected.html: Removed.
* imported/blink/fast/css/first-letter-all-inherit-td-crash-expected.txt: Added.
* imported/blink/fast/css/first-letter-all-inherit-td-crash.html:
* platform/ios-wk2/css2.1/t100801-c544-valgn-03-d-agi-expected.txt:
* platform/ios-wk2/imported/w3c/web-platform-tests/css/css-flexbox/orthogonal-flex-item-crash-expected.txt:
* platform/ios/css1/box_properties/border-expected.txt:
* platform/ios/css1/box_properties/width-expected.txt:
* platform/ios/css1/text_properties/text_decoration-expected.txt:
* platform/ios/css1/text_properties/vertical_align-expected.txt:
* platform/ios/css1/text_properties/word_spacing-expected.txt:
* platform/ios/css2.1/t0803-c5505-mrgn-00-b-ag-expected.txt:
* platform/ios/css2.1/t100801-c544-valgn-03-d-agi-expected.txt:
* platform/ios/fast/block/basic/014-expected.txt:
* platform/ios/fast/block/margin-collapse/block-inside-inline/001-expected.txt:
* platform/ios/fast/block/margin-collapse/block-inside-inline/005-expected.txt:
* platform/ios/fast/block/positioning/057-expected.txt:
* platform/ios/fast/body-propagation/background-image/010-expected.txt:
* platform/ios/fast/body-propagation/background-image/010-xhtml-expected.txt:
* platform/ios/fast/css-generated-content/after-duplicated-after-split-expected.txt:
* platform/ios/fast/css/child-style-can-override-visited-style-expected.txt:
* platform/ios/fast/css/empty-inline-003-quirksmode-expected.txt:
* platform/ios/fast/css/inline-element-line-break-expected.txt:
* platform/ios/fast/css/word-space-extra-expected.txt:
* platform/ios/fast/dom/HTMLProgressElement/progress-element-expected.txt:
* platform/ios/fast/forms/select-change-listbox-size-expected.txt:
* platform/ios/fast/images/image-map-anchor-children-expected.txt:
* platform/ios/fast/inline-block/003-expected.txt:
* platform/ios/fast/inline/002-expected.txt:
* platform/ios/fast/inline/drawStyledEmptyInlines-expected.txt:
* platform/ios/fast/invalid/003-expected.txt:
* platform/ios/fast/lists/marker-before-empty-inline-expected.txt:
* platform/ios/fast/selectors/visited-descendant-expected.txt:
* platform/ios/fast/table/border-collapsing/004-expected.txt:
* platform/ios/fast/table/frame-and-rules-expected.txt:
* platform/ios/fast/table/table-display-types-strict-expected.txt:
* platform/ios/fast/text/basic/007-expected.txt:
* platform/ios/fast/text/basic/012-expected.txt:
* platform/ios/fast/text/whitespace/018-expected.txt:
* platform/ios/fast/text/whitespace/span-in-word-space-causes-overflow-expected.txt:
* platform/ios/fonts/sans-serif-expected.txt:
* platform/ios/fonts/serif-expected.txt:
* platform/ios/svg/custom/svg-fonts-in-html-expected.txt:
* platform/ios/svg/custom/svg-fonts-word-spacing-expected.txt:
* platform/ios/svg/hixie/processing-model/003-expected.txt:
* platform/ios/svg/hixie/processing-model/004-expected.txt:
* platform/ios/tables/mozilla/bugs/adforce_imgis_com-expected.txt:
* platform/ios/tables/mozilla/bugs/bug113235-1-expected.txt:
* platform/ios/tables/mozilla/bugs/bug113235-2-expected.txt:
* platform/ios/tables/mozilla/bugs/bug113235-3-expected.txt:
* platform/ios/tables/mozilla/bugs/bug113424-expected.txt:
* platform/ios/tables/mozilla/bugs/bug1188-expected.txt:
* platform/ios/tables/mozilla/bugs/bug126742-expected.txt:
* platform/ios/tables/mozilla/bugs/bug1318-expected.txt:
* platform/ios/tables/mozilla/bugs/bug14323-expected.txt:
* platform/ios/tables/mozilla/bugs/bug18359-expected.txt:
* platform/ios/tables/mozilla/bugs/bug22513-expected.txt:
* platform/ios/tables/mozilla/bugs/bug2267-expected.txt:
* platform/ios/tables/mozilla/bugs/bug38916-expected.txt:
* platform/ios/tables/mozilla/bugs/bug4527-expected.txt:
* platform/ios/tables/mozilla/bugs/bug4849-2-expected.txt:
* platform/ios/tables/mozilla/bugs/bug57300-expected.txt:
* platform/ios/tables/mozilla/bugs/bug59354-expected.txt:
* platform/ios/tables/mozilla/bugs/bug7342-expected.txt:
* platform/ios/tables/mozilla/core/bloomberg-expected.txt:
* platform/ios/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt:
* platform/ios/tables/mozilla/other/wa_table_tr_align-expected.txt:
* platform/ios/tables/mozilla_expected_failures/bugs/bug89315-expected.txt:
* platform/mac-catalina/tables/mozilla/bugs/bug18359-expected.txt:
* platform/mac-catalina/tables/mozilla/bugs/bug7342-expected.txt:
* platform/mac-catalina/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt:
* platform/mac-catalina/tables/mozilla/other/wa_table_tr_align-expected.txt:
* platform/mac-wk1/fast/inline-block/003-expected.txt:
* platform/mac/css1/box_properties/width-expected.txt:
* platform/mac/css1/text_properties/vertical_align-expected.txt:
* platform/mac/css1/text_properties/word_spacing-expected.txt:
* platform/mac/css2.1/t100801-c544-valgn-03-d-agi-expected.txt:
* platform/mac/editing/selection/previous-line-position-expected.txt:
* platform/mac/fast/block/basic/014-expected.txt:
* platform/mac/fast/block/margin-collapse/block-inside-inline/001-expected.txt:
* platform/mac/fast/block/margin-collapse/block-inside-inline/005-expected.txt:
* platform/mac/fast/block/positioning/057-expected.txt:
* platform/mac/fast/css-generated-content/after-duplicated-after-split-expected.txt:
* platform/mac/fast/css/child-style-can-override-visited-style-expected.txt:
* platform/mac/fast/css/inline-element-line-break-expected.txt:
* platform/mac/fast/css/resize-corner-tracking-transformed-expected.txt:
* platform/mac/fast/css/word-space-extra-expected.txt:
* platform/mac/fast/dom/HTMLProgressElement/progress-element-expected.txt:
* platform/mac/fast/encoding/utf-16-big-endian-expected.txt:
* platform/mac/fast/encoding/utf-16-little-endian-expected.txt:
* platform/mac/fast/images/image-map-anchor-children-expected.txt:
* platform/mac/fast/inline-block/003-expected.txt:
* platform/mac/fast/inline/002-expected.txt:
* platform/mac/fast/inline/drawStyledEmptyInlines-expected.txt:
* platform/mac/fast/invalid/003-expected.txt:
* platform/mac/fast/invalid/missing-end-tag-expected.txt:
* platform/mac/fast/lists/marker-before-empty-inline-expected.txt:
* platform/mac/fast/parser/nofoo-tags-inside-paragraph-expected.txt:
* platform/mac/fast/parser/xhtml-alternate-entities-expected.txt:
* platform/mac/fast/selectors/visited-descendant-expected.txt:
* platform/mac/fast/table/frame-and-rules-expected.txt:
* platform/mac/fast/table/table-display-types-strict-expected.txt:
* platform/mac/fast/text/basic/007-expected.txt:
* platform/mac/fast/text/basic/012-expected.txt:
* platform/mac/fast/text/basic/generic-family-reset-expected.txt:
* platform/mac/fast/text/text-letter-spacing-expected.txt:
* platform/mac/fast/text/textIteratorNilRenderer-expected.txt:
* platform/mac/fast/text/wbr-expected.txt:
* platform/mac/fast/text/whitespace/018-expected.txt:
* platform/mac/fast/text/whitespace/span-in-word-space-causes-overflow-expected.txt:
* platform/mac/fonts/sans-serif-expected.txt:
* platform/mac/fonts/serif-expected.txt:
* platform/mac/svg/custom/svg-fonts-in-html-expected.txt:
* platform/mac/svg/custom/svg-fonts-word-spacing-expected.txt:
* platform/mac/svg/hixie/processing-model/003-expected.txt:
* platform/mac/svg/hixie/processing-model/004-expected.txt:
* platform/mac/tables/mozilla/bugs/adforce_imgis_com-expected.txt:
* platform/mac/tables/mozilla/bugs/bug113235-1-expected.txt:
* platform/mac/tables/mozilla/bugs/bug113235-2-expected.txt:
* platform/mac/tables/mozilla/bugs/bug113235-3-expected.txt:
* platform/mac/tables/mozilla/bugs/bug113424-expected.txt:
* platform/mac/tables/mozilla/bugs/bug1188-expected.txt:
* platform/mac/tables/mozilla/bugs/bug126742-expected.txt:
* platform/mac/tables/mozilla/bugs/bug1318-expected.txt:
* platform/mac/tables/mozilla/bugs/bug14323-expected.txt:
* platform/mac/tables/mozilla/bugs/bug16252-expected.txt:
* platform/mac/tables/mozilla/bugs/bug18359-expected.txt:
* platform/mac/tables/mozilla/bugs/bug22513-expected.txt:
* platform/mac/tables/mozilla/bugs/bug2267-expected.txt:
* platform/mac/tables/mozilla/bugs/bug38916-expected.txt:
* platform/mac/tables/mozilla/bugs/bug4527-expected.txt:
* platform/mac/tables/mozilla/bugs/bug4849-2-expected.txt:
* platform/mac/tables/mozilla/bugs/bug57300-expected.txt:
* platform/mac/tables/mozilla/bugs/bug57828-2-expected.txt:
* platform/mac/tables/mozilla/bugs/bug59354-expected.txt:
* platform/mac/tables/mozilla/bugs/bug60804-expected.txt:
* platform/mac/tables/mozilla/bugs/bug60807-expected.txt:
* platform/mac/tables/mozilla/bugs/bug7342-expected.txt:
* platform/mac/tables/mozilla/core/bloomberg-expected.txt:
* platform/mac/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt:
* platform/mac/tables/mozilla/other/wa_table_tr_align-expected.txt:
* platform/mac/tables/mozilla_expected_failures/bugs/bug89315-expected.txt:

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

20 months ago[GStreamer][WebRTC] Audio is not played from an audio element when the srcObject...
commit-queue@webkit.org [Tue, 6 Apr 2021 13:53:24 +0000 (13:53 +0000)]
[GStreamer][WebRTC] Audio is not played from an audio element when the srcObject object has unstarted video tracks
https://bugs.webkit.org/show_bug.cgi?id=209163

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-06
Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Ensure no MediaStream (active) video tracks can be added in a pipeline representing an <audio> element.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::sourceSetup):
(WebCore::MediaPlayerPrivateGStreamer::hasFirstSampleReachedSink const):
(WebCore::MediaPlayerPrivateGStreamer::videoSinkCapsChanged):
(WebCore::MediaPlayerPrivateGStreamer::playbackPosition const):
(WebCore::MediaPlayerPrivateGStreamer::updateTracks):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
* platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
(webkitMediaStreamSrcPostStreamCollection):
(webkitMediaStreamSrcSetStream):
* platform/mediastream/gstreamer/GStreamerMediaStreamSource.h:

LayoutTests:

* platform/glib/TestExpectations: Unflag now-passing test.

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

20 months ago[GStreamer] Test harness should use a mock audio output device
commit-queue@webkit.org [Tue, 6 Apr 2021 13:38:16 +0000 (13:38 +0000)]
[GStreamer] Test harness should use a mock audio output device
https://bugs.webkit.org/show_bug.cgi?id=223888

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-06
Reviewed by Adrian Perez de Castro.

Prioritize the new fakeaudiosink over other platform sinks when running the layout and API
tests. Mute and volume handling will still be tested (mocked, actually) but no actual
rendering will be performed.

The pulseaudio "sanitizer" can't work with a pipewire-pulse server because dynamic module
(un)loading is heavily restricted in this new wrapper. Moreover relying on the default sinks
when running on desktop machines easily triggers unintended beeps when running the tests.

* Scripts/webkitpy/port/gtk.py:
(GtkPort.__init__):
(GtkPort.setup_test_run):
(GtkPort.setup_environ_for_server):
(GtkPort.clean_up_test_run): Deleted.
* Scripts/webkitpy/port/gtk_unittest.py:
(GtkPortTest):
(GtkPortTest.make_port): Deleted.
* Scripts/webkitpy/port/pulseaudio_sanitizer.py: Removed.
* Scripts/webkitpy/port/pulseaudio_sanitizer_mock.py: Removed.
* Scripts/webkitpy/port/wpe.py:
(WPEPort.setup_environ_for_server):
* Scripts/webkitpy/port/wpe_unittest.py:
(WPEPortTest):
(WPEPortTest.make_port): Deleted.

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

20 months ago[GTK][GStreamer] Web Audio - Media element source - Audio is cracking.
commit-queue@webkit.org [Tue, 6 Apr 2021 13:30:45 +0000 (13:30 +0000)]
[GTK][GStreamer] Web Audio - Media element source - Audio is cracking.
https://bugs.webkit.org/show_bug.cgi?id=196293

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-06
Reviewed by Xabier Rodriguez-Calvar.

The provider client might request samples faster than the current clock speed, so this sink
should process buffers as fast as possible. The cracks were consequence of the audio sink of
the AudioDestination starving off.

* platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:
(WebCore::AudioSourceProviderGStreamer::handleNewDeinterleavePad):

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

20 months ago[GStreamer] Heap allocation exceptions
commit-queue@webkit.org [Tue, 6 Apr 2021 13:25:01 +0000 (13:25 +0000)]
[GStreamer] Heap allocation exceptions
https://bugs.webkit.org/show_bug.cgi?id=224188

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-06
Reviewed by Xabier Rodriguez-Calvar.

The current GStreamer audio-related backends can't yet avoid heap allocations in the audio
thread, so we need exceptions for those cases.

* platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:
(WebCore::AudioSourceProviderGStreamer::provideInput):
* platform/graphics/gstreamer/GstAllocatorFastMalloc.cpp:
(gstMemoryFastMallocNew):
* platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp:
(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::audioSamplesAvailable):

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

20 months ago[GStreamer][MediaStream] AudioSource triggering critical warnings
commit-queue@webkit.org [Tue, 6 Apr 2021 13:24:32 +0000 (13:24 +0000)]
[GStreamer][MediaStream] AudioSource triggering critical warnings
https://bugs.webkit.org/show_bug.cgi?id=224180

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-06
Reviewed by Xabier Rodriguez-Calvar.

Keep track of audio channel offsets and store them as metadata in audio buffers. This is
used by downstream elements such as the audio convert elements.

* Modules/webaudio/MediaStreamAudioSourceGStreamer.cpp:
(WebCore::copyBusData):
(WebCore::MediaStreamAudioSource::consumeAudio):

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

20 months ago[LFC][Integration] Disable LFC if paginated context has inline boxes
antti@apple.com [Tue, 6 Apr 2021 13:18:50 +0000 (13:18 +0000)]
[LFC][Integration] Disable LFC if paginated context has inline boxes
https://bugs.webkit.org/show_bug.cgi?id=224222

Reviewed by Zalan Bujtas.

There are no known problems with this combination but it is untested.

* layout/integration/LayoutIntegrationCoverage.cpp:
(WebCore::LayoutIntegration::canUseForChild):

Pass in the RenderBlockFlow and move the existing test requiring it here too.

(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

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

20 months agoCloneDeserializer should use ArrayBuffer::tryCreate
keith_miller@apple.com [Tue, 6 Apr 2021 13:18:10 +0000 (13:18 +0000)]
CloneDeserializer should use ArrayBuffer::tryCreate
https://bugs.webkit.org/show_bug.cgi?id=224218

Reviewed by Antti Koivisto.

Source/WebCore:

Right now CloneDeserializer assumes that every ArrayBuffer allocation during
deserialization will succeed. This is silly since it's an array-like object.
It should call tryCreate and fail the deserialization instead.

Test: fast/dom/Window/post-message-large-array-buffer-should-not-crash.html

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

LayoutTests:

This test was generated by a fuzzer so it allocates a large Array backing store
by doing Object.defineProperty on a large offset. That said, I chose to leave it
because it's sometimes useful to do things in different ways for testing.

Also, skip the test on windows because we seem to throw a stack overflow error.
Not sure why this happens but it's not super important that this particular
test runs on all ports as we're mostly trying to just unblock the fuzzer.

* fast/dom/Window/post-message-large-array-buffer-should-not-crash-expected.txt: Added.
* fast/dom/Window/post-message-large-array-buffer-should-not-crash.html: Added.
* platform/win/TestExpectations:

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

20 months ago[GStreamer][MediaStream] Unreviewed micro-gardening
aboya@igalia.com [Tue, 6 Apr 2021 12:58:20 +0000 (12:58 +0000)]
[GStreamer][MediaStream] Unreviewed micro-gardening
https://bugs.webkit.org/show_bug.cgi?id=224233

* platform/glib/TestExpectations:

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

20 months ago[resultsdbpy] Remove obsolete BuildbotEightURLFactory
aakash_jain@apple.com [Tue, 6 Apr 2021 12:13:55 +0000 (12:13 +0000)]
[resultsdbpy] Remove obsolete BuildbotEightURLFactory
https://bugs.webkit.org/show_bug.cgi?id=223796

Reviewed by Jonathan Bedard.

* Scripts/libraries/resultsdbpy/resultsdbpy/example/environment.py:
* Scripts/libraries/resultsdbpy/resultsdbpy/model/ci_context.py:
(BuildbotEightURLFactory): Deleted.
(BuildbotEightURLFactory.__init__): Deleted.
(BuildbotEightURLFactory.url): Deleted.
* Scripts/libraries/resultsdbpy/resultsdbpy/model/ci_context_unittest.py:
(URLFactoryTest.test_old_builder_url): Deleted.
(URLFactoryTest.test_old_worker_url): Deleted.

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

20 months agoWebGL conformance tests are missing files due to too widely matching .gitignore
commit-queue@webkit.org [Tue, 6 Apr 2021 11:46:27 +0000 (11:46 +0000)]
WebGL conformance tests are missing files due to too widely matching .gitignore
https://bugs.webkit.org/show_bug.cgi?id=223988

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-04-06
Reviewed by Alexey Proskuryakov.

Add the missing tests that were hidden by the .gitignore.

* webgl/1.0.x/conformance/ogles/GL/build/*: Added.
* webgl/2.0.y/conformance/ogles/GL/build/*: Added.
* webgl/resources/webgl_test_files/conformance/ogles/GL/build/*: Added.

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

20 months ago[PlayStation] Change mediaControlsLocalizedStrings to use unicode escapes
stephan.szabo@sony.com [Tue, 6 Apr 2021 11:25:34 +0000 (11:25 +0000)]
[PlayStation] Change mediaControlsLocalizedStrings to use unicode escapes
https://bugs.webkit.org/show_bug.cgi?id=224195

Reviewed by Yusuke Suzuki.

* en.lproj/mediaControlsLocalizedStrings.js:

Switch from literal smart quotes to unicode escapes.

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

20 months ago[Flatpak SDK] Enable high bit depth in libvpx
commit-queue@webkit.org [Tue, 6 Apr 2021 11:22:08 +0000 (11:22 +0000)]
[Flatpak SDK] Enable high bit depth in libvpx
https://bugs.webkit.org/show_bug.cgi?id=224049

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-06
Reviewed by Adrian Perez de Castro.

10 and 12-bit formats are needed for profile 2 and 3 VP9 decoding.

* elements/freedesktop-sdk.bst:
* patches/fdo-0001-libvpx-Enable-high-bit-depth-support.patch: Added.

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

20 months agoMigrate layout ascents and descents to LayoutUnits instead of ints
commit-queue@webkit.org [Tue, 6 Apr 2021 10:49:33 +0000 (10:49 +0000)]
Migrate layout ascents and descents to LayoutUnits instead of ints
https://bugs.webkit.org/show_bug.cgi?id=133040

Patch by Rob Buis <rbuis@igalia.com> on 2021-04-06
Reviewed by Zalan Bujtas.

Migrate layout ascents and descents to LayoutUnits instead of ints.
The actual ascent/descent values are still integral.

* rendering/InlineFlowBox.cpp:
(WebCore::InlineFlowBox::adjustMaxAscentAndDescent):
(WebCore::InlineFlowBox::computeLogicalBoxHeights):
* rendering/InlineFlowBox.h:
* rendering/RootInlineBox.cpp:
(WebCore::RootInlineBox::alignBoxesInBlockDirection):
(WebCore::setAscentAndDescent):
(WebCore::RootInlineBox::ascentAndDescentForBox const):
* rendering/RootInlineBox.h:

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

20 months agoIPC::decodeObject null dereference in decodeArrayInternal()
rniwa@webkit.org [Tue, 6 Apr 2021 10:01:28 +0000 (10:01 +0000)]
IPC::decodeObject null dereference in decodeArrayInternal()
https://bugs.webkit.org/show_bug.cgi?id=224214

Patch by Ian Gilbert <iang@apple.com> on 2021-04-06
Reviewed by Ryosuke Niwa.

Add null pointer check to decodeArrayInternal.

Source/WebKit:

Test: ipc/decode-object-array-crash.html

* Shared/Cocoa/ArgumentCodersCocoa.mm:
(IPC::decodeArrayInternal):

LayoutTests:

* ipc/decode-object-array-crash-expected.txt: Added.
* ipc/decode-object-array-crash.html: Added.

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

20 months agoBidiContext caching is not thread-safe
clord@igalia.com [Tue, 6 Apr 2021 09:59:36 +0000 (09:59 +0000)]
BidiContext caching is not thread-safe
https://bugs.webkit.org/show_bug.cgi?id=224179

Reviewed by Darin Adler.

Make BidiContext ThreadSafeRefCounted and make shared context creation
thread-safe. This is needed by OffscreenCanvas to use text in Workers.

No new tests, covered by existing tests.

* platform/text/BidiContext.cpp:
(WebCore::BidiContext::create):
* platform/text/BidiContext.h:

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

20 months agoDisable WebSQL in WebKitTestRunner
rniwa@webkit.org [Tue, 6 Apr 2021 09:51:51 +0000 (09:51 +0000)]
Disable WebSQL in WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=224144

Reviewed by Sihui Liu.

Tools:

Disabled WebSQL in WebKitTestRunner.

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

LayoutTests:

Skipped various WebSQL tests on WebKit2 and removed references to openDatabase in some tests.

* fast/dom/Window/resources/WindowProperties.js: Removed openDatabase from the list of properties to test.
* fast/dom/Window/window-function-frame-getter-precedence-expected.txt:
* fast/dom/Window/window-function-name-getter-precedence-expected.txt:
* fast/frames/resources/sandboxed-iframe-storage-allowed.html: Ditto.
* fast/frames/resources/sandboxed-iframe-storage-disallowed.html: Ditto.
* fast/frames/sandboxed-iframe-storage-expected.txt:
* http/tests/security/cross-frame-access-call-expected.txt:
* http/tests/security/cross-frame-access-call.html: Ditto.
* inspector/runtime/CommandLineAPI-inspect-expected.txt:
* inspector/runtime/CommandLineAPI-inspect.html: Ditto.
* js/dom/callback-function-with-handle-event-expected.txt:
* js/dom/callback-function-with-handle-event.html: Use requestAnimationFrame instead of openDatabase.
* js/dom/exceptions-thrown-in-callbacks-expected.txt:
* js/dom/exceptions-thrown-in-callbacks.html: Ditto and use geolocation.getCurrentLocation.
* platform/glib/TestExpectations: Removed entries under storage/websql since they're all skipped now.
* platform/gtk/TestExpectations: Ditto.
* platform/ios-wk2/TestExpectations: Ditto.
* platform/mac-wk1/TestExpectations: Moved flaky timeout expectation on a test here from mac-wk2.
* platform/mac-wk2/TestExpectations: Removed an entry to skip storage/websql as it's now skipped for all WK2 ports.
* platform/mac/TestExpectations: Removed flaky timeout expectation since this will force the test to run
in WebKitTestRunner, which isn't what we want to do.
* platform/wincairo/TestExpectations: Removed entries under storage/websql since they're all skipped now.
* platform/wk2/TestExpectations: Skip all the tests for WebSQL.
* platform/wpe/TestExpectations: Removed entries under storage/websql since they're all skipped now.

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

20 months agoNullptr crash in EventPath::eventTargetRespectingTargetRules
commit-queue@webkit.org [Tue, 6 Apr 2021 09:22:20 +0000 (09:22 +0000)]
Nullptr crash in EventPath::eventTargetRespectingTargetRules
https://bugs.webkit.org/show_bug.cgi?id=222718

Patch by Frédéric Wang <fwang@igalia.com> on 2021-04-06
Reviewed by Ryosuke Niwa.

Source/WebCore:

During executions of "undo" and "redo" commands, beforeinput and input events are dispatched
on root editable elements. It is however possible that these elements had been disconnected,
causing nullptr crash. This patch exits the command execution early if that's the case.

Test: editing/undo/undo-with-disconnected-editable-element-crash.html

* editing/CompositeEditCommand.cpp:
(WebCore::EditCommandComposition::areRootEditabledElementsConnected): Add helper function
to check whether m_startingRootEditableElement and m_endingRootEditableElement are still
connected.
(WebCore::EditCommandComposition::unapply): Exit early if root editable elements are no
longer connected. Put this after the layout update.
(WebCore::EditCommandComposition::reapply): Ditto.
* editing/CompositeEditCommand.h: Declare new helper function.

LayoutTests:

Add regression test.

* editing/undo/undo-with-disconnected-editable-element-crash-expected.txt: Added.
* editing/undo/undo-with-disconnected-editable-element-crash.html: Added.
* editing/undo/undo-with-disconnected-editable-element-crash.js: Added.
(runTests.window.parent.onwebkitanimationiteration):
(runTests):

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

20 months agoResync web-platform-tests/css/css-sizing/aspect-ratio from upstream
commit-queue@webkit.org [Tue, 6 Apr 2021 09:00:08 +0000 (09:00 +0000)]
Resync web-platform-tests/css/css-sizing/aspect-ratio from upstream
https://bugs.webkit.org/show_bug.cgi?id=222266

Patch by Rob Buis <rbuis@igalia.com> on 2021-04-06
Reviewed by Manuel Rego Casasnovas.

Resync web-platform-tests/css/css-sizing/aspect-ratio from upstream 8837d4e994.

* web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-025.html:
* web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-026.html:
* web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-003.html:
* web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-dynamic-aspect-ratio.html:
* web-platform-tests/css/css-sizing/aspect-ratio/w3c-import.log:

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

20 months agoEnable NSURLSession WebSocket code path by default
youenn@apple.com [Tue, 6 Apr 2021 08:54:06 +0000 (08:54 +0000)]
Enable NSURLSession WebSocket code path by default
https://bugs.webkit.org/show_bug.cgi?id=224102

Reviewed by Alex Christensen.

* Scripts/Preferences/WebPreferencesExperimental.yaml:

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

20 months ago[css-grid] Initialize auto-repeat data in RenderStyle in applyInitialGridTemplate...
svillar@igalia.com [Tue, 6 Apr 2021 08:39:45 +0000 (08:39 +0000)]
[css-grid] Initialize auto-repeat data in RenderStyle in applyInitialGridTemplate{Columns|Rows}
https://bugs.webkit.org/show_bug.cgi?id=222852

Reviewed by Antti Koivisto.

We should initialize the auto repeat data (like auto repeat tracks or the insertion point) whenever
applyInitialGridTemplateXXX is called. That method is normally called using different RenderStyle's
but under some circumstances it might be the same. For those cases we wouldn't like to end up with
obsolete data from a previous style resolution.

The same applies also to the applyInheritGridTemplateXXX calls. We're also removing a duplicate call
to setGridAutoRepeat{Row|Column}sInsertionPoint() that is not needed at all.

In order to have a single place with all the style properties affecting columns and rows, all the set
calls were moved to a macro that is used by all the apply{Initial|Inherit}GridTemplate{Columns|Rows}
methods. This would allow us to prevent eventual out-of-sync issues like this one.

* style/StyleBuilderCustom.h:
(WebCore::Style::BuilderCustom::applyInitialGridTemplateColumns):
(WebCore::Style::BuilderCustom::applyInheritGridTemplateColumns):
(WebCore::Style::BuilderCustom::applyInitialGridTemplateRows):
(WebCore::Style::BuilderCustom::applyInheritGridTemplateRows):

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

20 months agoMove synthesizedBaselineFromBorderBox to RenderBox
commit-queue@webkit.org [Tue, 6 Apr 2021 08:37:33 +0000 (08:37 +0000)]
Move synthesizedBaselineFromBorderBox to RenderBox
https://bugs.webkit.org/show_bug.cgi?id=224186

Patch by Rob Buis <rbuis@igalia.com> on 2021-04-06
Reviewed by Javier Fernandez.

Move synthesizedBaselineFromBorderBox to RenderBox since there are
various call sites using it.

* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::inlineBlockBaseline const):
* rendering/RenderBox.cpp:
(WebCore::synthesizedBaselineFromBorderBox):
* rendering/RenderBox.h:
* rendering/RenderFlexibleBox.cpp:
(WebCore::synthesizedBaselineFromBorderBox): Deleted.
* rendering/RenderGrid.cpp:
(WebCore::synthesizedBaselineFromBorderBox): Deleted.

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

20 months agoWeb Inspector: Layout sidebar grid overlay color swatch tooltip shouldn't include...
rcaliman@apple.com [Tue, 6 Apr 2021 07:28:30 +0000 (07:28 +0000)]
Web Inspector: Layout sidebar grid overlay color swatch tooltip shouldn't include "switch format" hint
https://bugs.webkit.org/show_bug.cgi?id=223418
<rdar://problem/75825793>

Reviewed by BJ Burg.

* UserInterface/Views/CSSGridSection.js:
(WI.CSSGridSection.prototype.layout):
* UserInterface/Views/InlineSwatch.js:
(WI.InlineSwatch):
(WI.InlineSwatch.prototype.set shiftClickColorEnabled):
(WI.InlineSwatch.prototype._updateSwatch):
(WI.InlineSwatch.prototype._allowChangingColorFormats):

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

20 months agoAllow the WebAuthn UI to inform users about BiometryLockout
jiewen_tan@apple.com [Tue, 6 Apr 2021 04:49:45 +0000 (04:49 +0000)]
Allow the WebAuthn UI to inform users about BiometryLockout
https://bugs.webkit.org/show_bug.cgi?id=224124
<rdar://74815938>

Reviewed by Brent Fulgham.

* UIProcess/WebAuthentication/Cocoa/LocalService.mm:
(WebKit::LocalService::isAvailable):
The LocalService is still available within the BiometryLockout period.

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

20 months ago[macOS] Image preview context menu action should be shown conditionally
wenson_hsieh@apple.com [Tue, 6 Apr 2021 04:31:13 +0000 (04:31 +0000)]
[macOS] Image preview context menu action should be shown conditionally
https://bugs.webkit.org/show_bug.cgi?id=224126
<rdar://problem/76162272>

Reviewed by Devin Rousso.

Add a page client hook to return whether or not the "reveal image" context menu item should be enabled, given
the image URL and decoded image bitmap; we then use this method to conditionally insert a context menu item for
revealing the image in context menu data.

* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/PageClient.h:
(WebKit::PageClient::computeCanRevealImage):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::computeCanRevealImage):
* UIProcess/WebPageProxy.h:
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::computeCanRevealImage):
* UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::createMenuActionItem):

Pull logic for mapping a `WebContextMenuItemData` of type `ActionType` or `CheckableActionType` to a platform
`NSMenuItem` out into a separate helper function. Use this helper in `getContextMenuItem`, as well as the
completion handler for the call to `computeCanRevealImage`. Note that this also requires moving the
`menuItemIdentifier` function up above `getContextMenuFromItems`.

(WebKit::WebContextMenuProxyMac::getContextMenuFromItems):

Special case the `ContextMenuItemTagRevealImage` item; instead of adding this item to the context menu right
away, we hide it by default, and only reinsert it if the page client indicates that we require the item (via
`computeCanRevealImage`).

(WebKit::WebContextMenuProxyMac::getContextMenuItem):

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

20 months ago[JSC] Shrink some of Vectors in JSC
ysuzuki@apple.com [Tue, 6 Apr 2021 04:25:33 +0000 (04:25 +0000)]
[JSC] Shrink some of Vectors in JSC
https://bugs.webkit.org/show_bug.cgi?id=224162

Reviewed by Simon Fraser.

Source/JavaScriptCore:

1. Add XXXStatus::shrinkToFit to shrink underlying dynamic Vectors.
2. Replace tierUpInLoopHierarchy's Vector with RefCountedArray since it is constructed-once-lookup-only data.
3. Use MemoryCompactLookupOnlyRobinHoodHashSet for StringTables since this is constructed-once-lookup-only data. We also add
   MemoryCompactLookupOnlyRobinHoodHashSet support for CachedTypes.
4. Use resizeToFit for StringSwitchJumpTables and SwitchJumpTables.
5. JITStubRoutineSet's Vector should be shrunk.
6. BlockDirectoryBits's Vector's initial size should be small.
7. Make PolyProtoAccessChain RefCounted, and use RefCountedArray for its Vector<StructureID>. And remove PolyProtoAccessChain::clone.
   Just having Ref is enough since this is immutable data.
8. Use RefCountedArray for UnlinkedFunctionExecutable's m_classFieldLocations.
9. Use RefCountedArray for JSWebAssemblyInstance.

* bytecode/AccessCase.cpp:
(JSC::AccessCase::AccessCase):
(JSC::AccessCase::create):
(JSC::AccessCase::createTransition):
* bytecode/AccessCase.h:
(JSC::AccessCase::AccessCase): Deleted.
* bytecode/CallLinkInfo.cpp:
(JSC::CallLinkInfo::setFrameShuffleData):
* bytecode/CheckPrivateBrandStatus.cpp:
(JSC::CheckPrivateBrandStatus::shrinkToFit):
(JSC::CheckPrivateBrandStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::CheckPrivateBrandStatus::merge):
* bytecode/CheckPrivateBrandStatus.h:
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finishCreation):
* bytecode/DeleteByStatus.cpp:
(JSC::DeleteByStatus::shrinkToFit):
(JSC::DeleteByStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::DeleteByStatus::merge):
* bytecode/DeleteByStatus.h:
* bytecode/GetByStatus.cpp:
(JSC::GetByStatus::shrinkToFit):
(JSC::GetByStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::GetByStatus::computeFor):
(JSC::GetByStatus::merge):
* bytecode/GetByStatus.h:
* bytecode/GetterSetterAccessCase.cpp:
(JSC::GetterSetterAccessCase::GetterSetterAccessCase):
(JSC::GetterSetterAccessCase::create):
* bytecode/GetterSetterAccessCase.h:
* bytecode/InByIdStatus.cpp:
(JSC::InByIdStatus::shrinkToFit):
(JSC::InByIdStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::InByIdStatus::merge):
* bytecode/InByIdStatus.h:
* bytecode/InstanceOfStatus.cpp:
(JSC::InstanceOfStatus::shrinkToFit):
(JSC::InstanceOfStatus::computeForStubInfo):
* bytecode/InstanceOfStatus.h:
* bytecode/IntrinsicGetterAccessCase.cpp:
(JSC::IntrinsicGetterAccessCase::IntrinsicGetterAccessCase):
(JSC::IntrinsicGetterAccessCase::create):
* bytecode/IntrinsicGetterAccessCase.h:
* bytecode/JumpTable.h:
* bytecode/PolyProtoAccessChain.cpp:
(JSC::PolyProtoAccessChain::tryCreate):
(JSC::PolyProtoAccessChain::create): Deleted.
* bytecode/PolyProtoAccessChain.h:
(JSC::PolyProtoAccessChain::clone): Deleted.
(JSC::PolyProtoAccessChain::chain const): Deleted.
(JSC::PolyProtoAccessChain::operator!= const): Deleted.
(JSC::PolyProtoAccessChain::forEach const): Deleted.
(JSC::PolyProtoAccessChain::slotBaseStructure const): Deleted.
* bytecode/PolymorphicAccess.cpp:
(JSC::PolymorphicAccess::visitWeak const):
(JSC::PolymorphicAccess::regenerate):
* bytecode/PolymorphicAccess.h:
* bytecode/ProxyableAccessCase.cpp:
(JSC::ProxyableAccessCase::ProxyableAccessCase):
(JSC::ProxyableAccessCase::create):
* bytecode/ProxyableAccessCase.h:
* bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::shrinkToFit):
(JSC::PutByIdStatus::computeForStubInfo):
(JSC::PutByIdStatus::computeFor):
(JSC::PutByIdStatus::merge):
* bytecode/PutByIdStatus.h:
* bytecode/SetPrivateBrandStatus.cpp:
(JSC::SetPrivateBrandStatus::shrinkToFit):
(JSC::SetPrivateBrandStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::SetPrivateBrandStatus::merge):
* bytecode/SetPrivateBrandStatus.h:
* bytecode/UnlinkedCodeBlock.h:
* bytecode/UnlinkedFunctionExecutable.cpp:
(JSC::generateUnlinkedFunctionCodeBlock):
* bytecode/UnlinkedFunctionExecutable.h:
* dfg/DFGJITCode.h:
* dfg/DFGPlan.h:
(JSC::DFG::Plan::tierUpInLoopHierarchy):
* dfg/DFGTierUpCheckInjectionPhase.cpp:
(JSC::DFG::TierUpCheckInjectionPhase::run):
* heap/BlockDirectoryBits.h:
* heap/JITStubRoutineSet.cpp:
(JSC::JITStubRoutineSet::deleteUnmarkedJettisonedStubRoutines):
* jit/CallFrameShuffleData.h:
(JSC::CallFrameShuffleData::shrinkToFit):
* jit/GCAwareJITStubRoutine.h:
* jit/PolymorphicCallStubRoutine.h:
* jit/Repatch.cpp:
(JSC::tryCacheGetBy):
(JSC::tryCachePutByID):
(JSC::tryCacheInByID):
* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::parseClassFieldInitializerSourceElements):
* parser/Parser.h:
(JSC::Parser<LexerType>::parse):
(JSC::parse):
* runtime/CachedTypes.cpp:
(JSC::CachedFunctionExecutableRareData::encode):
(JSC::CachedFunctionExecutableRareData::decode const):
* runtime/VM.cpp:
(JSC::VM::popAllCheckpointOSRSideStateUntil):
* wasm/js/JSWebAssemblyInstance.cpp:
(JSC::JSWebAssemblyInstance::visitChildrenImpl):
* wasm/js/JSWebAssemblyInstance.h:

Source/WTF:

Add rbegin and rend to make RefCountedArray usable for Vector clients who use these features.

* wtf/RefCountedArray.h:
(WTF::RefCountedArray::begin):
(WTF::RefCountedArray::end):
(WTF::RefCountedArray::begin const):
(WTF::RefCountedArray::end const):
(WTF::RefCountedArray::rbegin):
(WTF::RefCountedArray::rend):
(WTF::RefCountedArray::rbegin const):
(WTF::RefCountedArray::rend const):

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

20 months agoWasted vector capacity in CSSSegmentedFontFace
simon.fraser@apple.com [Tue, 6 Apr 2021 04:18:26 +0000 (04:18 +0000)]
Wasted vector capacity in CSSSegmentedFontFace
https://bugs.webkit.org/show_bug.cgi?id=224167

Reviewed by Myles C. Maxfield.

Shrink FontRanges.m_ranges. This saves about 12KB on youtube.com.

* css/CSSSegmentedFontFace.cpp:
(WebCore::CSSSegmentedFontFace::fontRanges):
* platform/graphics/FontRanges.h:
(WebCore::FontRanges::shrinkToFit):

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

20 months agoREGRESSION(r267763) NetworkProcess never terminates
commit-queue@webkit.org [Tue, 6 Apr 2021 04:03:31 +0000 (04:03 +0000)]
REGRESSION(r267763) NetworkProcess never terminates
https://bugs.webkit.org/show_bug.cgi?id=224191
<rdar://problem/76124590>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-05
Reviewed by Chris Dumez.

Source/WebKit:

Before r267763, when a WebProcessPool was deallocated, the NetworkProcess it owned was terminated.
Since then, once you start using a NetworkProcess, it will be kept until your app closes or it crashes.
To reclaim these resources in a way similar to how we did before, we now terminate the network process in two situations:
1. If all WebsiteDataStores associated with it are deallocated.  This happens if you have never used the default WKWebsiteDataStore.
2. If all WebProcessPools are deallocated.  This can still happen if you do use the default WKWebsiteDataStore, which is never deallocated.

Covered by API tests.

* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(+[WKWebsiteDataStore _defaultNetworkProcessExists]):
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::defaultNetworkProcessExists):
(WebKit::NetworkProcessProxy::removeSession):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::~WebProcessPool):

Tools:

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

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

20 months agoReduce crash inside getAuditToken
commit-queue@webkit.org [Tue, 6 Apr 2021 04:02:40 +0000 (04:02 +0000)]
Reduce crash inside getAuditToken
https://bugs.webkit.org/show_bug.cgi?id=224196
<rdar://74536285>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-05
Reviewed by David Kilzer.

Something is crashing inside the call to getAuditToken, and I believe it is happening during teardown of the network process.
After many days of head scratching and many previous attempts at fixing this problem, it persists.
Since direct strategies at fixing this problem have failed, I now try something different.
Instead of calling getAuditToken at the beginning of every resource load to ask if the parent process has an entitlement,
I now call it only once per process.  That should make things faster and less crashy.  Otherwise no change in behavior.

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::activateSessionCleanup):
(WebKit::NetworkSessionCocoa::sessionWrapperForTask):
* Shared/Cocoa/DefaultWebBrowserChecks.h:
* Shared/Cocoa/DefaultWebBrowserChecks.mm:
(WebKit::doesParentProcessHaveITPEnabled):
(WebKit::isParentProcessAFullWebBrowser):
* WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:
(WebKit::WebCore::isWebBrowser):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::isParentProcessAWebBrowser const):

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

20 months agoMake sure we no longer show the previous page when running a JS prompt
cdumez@apple.com [Tue, 6 Apr 2021 03:19:38 +0000 (03:19 +0000)]
Make sure we no longer show the previous page when running a JS prompt
https://bugs.webkit.org/show_bug.cgi?id=215782
<rdar://problem/67698601>

Reviewed by Darin Adler.

Source/WebCore:

Add linked-on-after check for the behavior change to minimize the risk of
breakage.

* platform/cocoa/VersionChecks.h:

Source/WebKit:

Make sure we no longer show the previous page when running a JS prompt.
If we have not yet done a layer tree commit since the last load commit, then
we are likely still showing the previous page. If we are asked to run a JS
prompt / alert / confirm at this point, it would be confusing to still show
the previous page. In order to address the issue, we now make the view blank
in such scenario (ideally, we'd have painted the new page but this is
currently not a trivial thing to do).

To make the view blank, the approach chosen is the set the opacity of our
root layer to 0 when the JS prompt is requested (before the first paint) and
set the opacity back to 1 after the first paint.

To minimize the risks of breakage, the behavior change is behind a
linked-on-after check. Also, we only trigger this behavior if the WKWebView
client actually implements the corresponding JS prompt delegate.

* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::runJavaScriptAlert):
(WebKit::UIDelegate::UIClient::runJavaScriptConfirm):
(WebKit::UIDelegate::UIClient::runJavaScriptPrompt):
* UIProcess/PageClient.h:
(WebKit::PageClient::makeViewBlank):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::stopMakingViewBlankDueToLackOfRenderingUpdate):
(WebKit::WebPageProxy::makeViewBlankIfUnpaintedSinceLastLoadCommit):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::runJavaScriptAlert):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::makeViewBlank):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::didCommitLayerTree):
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::makeViewBlank):
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::didUpdateRenderingAfterCommittingLoad):
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::runJavaScriptAlert):
(WebKit::WebChromeClient::runJavaScriptConfirm):
(WebKit::WebChromeClient::runJavaScriptPrompt):
Add flag to make sure pending async messages are processed *before* the JS prompt sync IPCs.
Without this, it was possible for the UIProcess to receive the JS prompt IPC *before* the
DidCommitLoadForFrame IPC, which would confuse our logic, since we would think this is a JS
prompt for the previous page.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didCommitLoad):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::sendSyncWithDelayedReply):
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::updateRendering):
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::didUpdateRendering):

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

20 months agoResurrect Mac CMake build
commit-queue@webkit.org [Tue, 6 Apr 2021 03:19:14 +0000 (03:19 +0000)]
Resurrect Mac CMake build
https://bugs.webkit.org/show_bug.cgi?id=224084

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-05
Reviewed by Tim Horton.

.:

* Source/cmake/OptionsMac.cmake:

Source/JavaScriptCore:

* PlatformMac.cmake:

Source/ThirdParty/ANGLE:

* PlatformMac.cmake: Added.

Source/ThirdParty/libwebrtc:

* CMakeLists.txt:

Source/WebCore:

* PlatformMac.cmake:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/mac/WebGLBlocklist.mm:
* platform/text/cocoa/LocalizedDateCache.h: Renamed from Source/WebCore/platform/text/ios/LocalizedDateCache.h.
* platform/text/cocoa/LocalizedDateCache.mm: Renamed from Source/WebCore/platform/text/ios/LocalizedDateCache.mm.
(WebCore::localizedDateCache):
(WebCore::_localeChanged):
(WebCore::LocalizedDateCache::LocalizedDateCache):
(WebCore::LocalizedDateCache::~LocalizedDateCache):
(WebCore::LocalizedDateCache::localeChanged):
(WebCore::LocalizedDateCache::formatterForDateType):
(WebCore::LocalizedDateCache::maximumWidthForDateType):
(WebCore::LocalizedDateCache::createFormatterForType):
(WebCore::LocalizedDateCache::calculateMaximumWidth):
* testing/cocoa/WebViewVisualIdentificationOverlay.mm:

Source/WebCore/PAL:

* pal/PlatformMac.cmake:

Source/WebKit:

* NetworkProcess/PrivateClickMeasurementNetworkLoader.cpp:
(WebKit::PrivateClickMeasurementNetworkLoader::didReceiveBuffer):
* PlatformMac.cmake:
* Shared/Cocoa/SandboxExtensionCocoa.mm:
* SourcesCocoa.txt:
* UIProcess/Media/MediaSessionCoordinatorProxyPrivate.h:

Source/WebKitLegacy:

* PlatformMac.cmake:

Source/WTF:

* wtf/PlatformMac.cmake:

Tools:

* TestWebKitAPI/PlatformMac.cmake:
* WebKitTestRunner/PlatformMac.cmake:

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

20 months agoWasted vector capacity in SVGPathByteStream
simon.fraser@apple.com [Tue, 6 Apr 2021 03:08:15 +0000 (03:08 +0000)]
Wasted vector capacity in SVGPathByteStream
https://bugs.webkit.org/show_bug.cgi?id=224165

Reviewed by Said Abou-Hallawa.

On youtube.com, about 50KB of vector capacity is wasted in SVGPathByteStream,
so shrink them after parsing.

* svg/SVGPathByteStream.h:
(WebCore::SVGPathByteStream::shrinkToFit):
* svg/SVGPathParser.cpp:
(WebCore::SVGPathParser::parseToByteStream):

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

20 months agoDocument how to use logging in WebKit
commit-queue@webkit.org [Tue, 6 Apr 2021 02:46:54 +0000 (02:46 +0000)]
Document how to use logging in WebKit
https://bugs.webkit.org/show_bug.cgi?id=224152

Patch by Tyler Wilcock <twilco.o@protonmail.com> on 2021-04-05
Reviewed by Simon Fraser.

Add documentation about how to use logging in WebKit.

* Introduction.md:

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

20 months agoWasted vector capacity in CSSVariableData
simon.fraser@apple.com [Tue, 6 Apr 2021 02:46:02 +0000 (02:46 +0000)]
Wasted vector capacity in CSSVariableData
https://bugs.webkit.org/show_bug.cgi?id=224164

Reviewed by Anders Carlsson.

Shrink m_tokens. This saves 2.7MB on youtube.com.

* css/CSSVariableData.cpp:
(WebCore::CSSVariableData::CSSVariableData):

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

20 months agoREGRESSION: ASSERTION FAILED: settings().textAutosizingEnabled() && settings().textAu...
wenson_hsieh@apple.com [Tue, 6 Apr 2021 02:36:12 +0000 (02:36 +0000)]
REGRESSION: ASSERTION FAILED: settings().textAutosizingEnabled() && settings().textAutosizingUsesIdempotentMode() on various tests
https://bugs.webkit.org/show_bug.cgi?id=209450
<rdar://problem/60799255>

Reviewed by Tim Horton.

Source/WebCore:

When running layout tests without idempotent text autosizing after layout tests with idempotent text autosizing
enabled, it's possible to get into a state where the text size adjustment timer (which is used to schedule
idempotent text autosizing style adjustments) is scheduled, but idempotent text autosizing is disabled before
the timer fires. This causes the assertion in `resetIdempotentTextAutosizingIfNeeded` to fail, leading to a
debug assertion.

To prevent this, we simply add a client method to call out to WebPage to stop its idempotent text autosizing
timer when the idempotent text autosizing WebCore setting changes to disabled.

This fixes assertions on these four tests, which are normally run after fast/text-autosizing:
- fast/text/control-characters/visible-control-characters-1.html
- fast/text/firstline/001.html
- fast/text-indicator/text-indicator-empty-link.html
- fast/text/basic/001.html

* page/ChromeClient.h:
(WebCore::ChromeClient::textAutosizingUsesIdempotentModeChanged):

Add the new chrome client hook (see WebKit2 change for more details).

* page/SettingsBase.cpp:
(WebCore::SettingsBase::textAutosizingUsesIdempotentModeChanged):

Replace the existing settings change handler (`setNeedsRecalcStyleInAllFrames`) with a custom change handler
(`textAutosizingUsesIdempotentModeChanged`) that invokes the client hook above, in addition to flagging all
frames for a style recalc.

* page/SettingsBase.h:

Source/WebKit:

See WebCore for more details.

* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::textAutosizingUsesIdempotentModeChanged):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::textAutosizingUsesIdempotentModeChanged):

Stop the idempotent text autosizing recomputation timer (`m_textAutoSizingAdjustmentTimer`) when idempotent text
autosizing is disabled.

* WebProcess/WebPage/WebPage.h:

Source/WTF:

Replace the call to `setNeedsRecalcStyleInAllFrames` with `textAutosizingUsesIdempotentModeChanged` when
changing whether idempotent text autosizing is enabled.

* Scripts/Preferences/WebPreferencesInternal.yaml:

LayoutTests:

Remove crashing expectations for several tests that previously hit this assertion, due to running immediately
after some layout tests in `fast/text-autosizing` that enable idempotent text autosizing.

* platform/ios-wk2/TestExpectations:

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

20 months agoShrink the Vector<> of keyframe values
simon.fraser@apple.com [Tue, 6 Apr 2021 02:34:10 +0000 (02:34 +0000)]
Shrink the Vector<> of keyframe values
https://bugs.webkit.org/show_bug.cgi?id=224154

Reviewed by Sam Weinig.

The Vector<double> returned by CSSParserImpl::consumeKeyframeKeyList()
wasted 152KB of vector capacity on nytimes.com pages, so shrink it.

* css/parser/CSSParserImpl.cpp:
(WebCore::CSSParserImpl::consumeKeyframeKeyList):

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

20 months agoNo need to update the list marker number during internal move (e.g. result of anonymo...
zalan@apple.com [Tue, 6 Apr 2021 02:33:10 +0000 (02:33 +0000)]
No need to update the list marker number during internal move (e.g. result of anonymous collapsing)
https://bugs.webkit.org/show_bug.cgi?id=224142
<rdar://76101241>

Reviewed by Antti Koivisto.

Let's not update the marker numbers when the reason for re-parenting is "internal move"
which means the renderer's insertion point remains the same (e.g collapsing its anonymous parent).

* rendering/RenderElement.cpp:
(WebCore::RenderElement::insertedIntoTree):
(WebCore::RenderElement::willBeRemovedFromTree):
* rendering/RenderElement.h:
* rendering/RenderFragmentContainer.cpp:
(WebCore::RenderFragmentContainer::insertedIntoTree):
(WebCore::RenderFragmentContainer::willBeRemovedFromTree):
* rendering/RenderFragmentContainer.h:
* rendering/RenderListItem.cpp:
(WebCore::RenderListItem::insertedIntoTree):
(WebCore::RenderListItem::willBeRemovedFromTree):
* rendering/RenderListItem.h:
* rendering/RenderMultiColumnFlow.cpp:
(WebCore::RenderMultiColumnFlow::willBeRemovedFromTree):
* rendering/RenderMultiColumnFlow.h:
* rendering/RenderObject.cpp:
(WebCore::RenderObject::insertedIntoTree):
(WebCore::RenderObject::willBeRemovedFromTree):
* rendering/RenderObject.h:
* rendering/RenderQuote.cpp:
(WebCore::RenderQuote::insertedIntoTree):
(WebCore::RenderQuote::willBeRemovedFromTree):
* rendering/RenderQuote.h:
* rendering/RenderTableCaption.cpp:
(WebCore::RenderTableCaption::insertedIntoTree):
(WebCore::RenderTableCaption::willBeRemovedFromTree):
* rendering/RenderTableCaption.h:
* rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::willBeRemovedFromTree):
* rendering/RenderTableCell.h:
* rendering/RenderTableCol.cpp:
(WebCore::RenderTableCol::insertedIntoTree):
(WebCore::RenderTableCol::willBeRemovedFromTree):
* rendering/RenderTableCol.h:
* rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::willBeRemovedFromTree):
* rendering/RenderTableRow.h:
* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::willBeRemovedFromTree):
* rendering/RenderTableSection.h:
* rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::insertedIntoTree):
(WebCore::RenderSVGRoot::willBeRemovedFromTree):
* rendering/svg/RenderSVGRoot.h:
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::attachToRenderElementInternal):
(WebCore::RenderTreeBuilder::move):
(WebCore::RenderTreeBuilder::detachFromRenderElement):
* rendering/updating/RenderTreeBuilder.h:

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

20 months agoWebSocketChannel buffers use memory after going idle (64K wasted on facebook.com
commit-queue@webkit.org [Tue, 6 Apr 2021 02:19:32 +0000 (02:19 +0000)]
WebSocketChannel buffers use memory after going idle (64K wasted on facebook.com
https://bugs.webkit.org/show_bug.cgi?id=224193

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-05
Reviewed by Simon Fraser.

* Modules/websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::processFrame):

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

20 months ago[METAL ANGLE] Stencil only formats being used as the depth attachment.
commit-queue@webkit.org [Tue, 6 Apr 2021 02:16:53 +0000 (02:16 +0000)]
[METAL ANGLE] Stencil only formats being used as the depth attachment.
https://bugs.webkit.org/show_bug.cgi?id=224183

Patch by John Cunningham <johncunnigham@apple.com> on 2021-04-05
Reviewed by Jon Lee.

* src/compiler/translator/TranslatorMetalDirect/ProgramPrelude.cpp:
* src/compiler/translator/TranslatorMetalDirect/RewriteOutArgs.cpp:
(sh::Rewriter::argAlreadyProcessed):
* src/libANGLE/renderer/metal/ContextMtl.mm:
(rx::ContextMtl::setupDraw):
* src/libANGLE/renderer/metal/mtl_command_buffer.h:
* src/libANGLE/renderer/metal/mtl_command_buffer.mm:
(rx::mtl::RenderCommandEncoder::reset):
(rx::mtl::RenderCommandEncoder::setRenderPipelineState):
(rx::mtl::RenderCommandEncoder::draw):
(rx::mtl::RenderCommandEncoder::drawInstanced):
(rx::mtl::RenderCommandEncoder::drawIndexed):
(rx::mtl::RenderCommandEncoder::drawIndexedInstanced):
(rx::mtl::RenderCommandEncoder::drawIndexedInstancedBaseVertex):
* src/libANGLE/renderer/metal/mtl_utils.mm:
(rx::mtl::InitializeDepthStencilTextureContentsGPU):

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

20 months agoMake sure the Frame always gets destroyed on the main thread
cdumez@apple.com [Tue, 6 Apr 2021 02:16:30 +0000 (02:16 +0000)]
Make sure the Frame always gets destroyed on the main thread
https://bugs.webkit.org/show_bug.cgi?id=224213
<rdar://75131946>

Reviewed by Alex Christensen.

Make sure the Frame always gets destroyed on the main thread.

Since http://trac.webkit.org/changeset/181791, Frame is ThreadSafeRefCounted and captured
on other threads. We should make sure the Frame is always destroyed on the main thread
though, since it is a main thread object and we hold WeakPtrs to it in many places.

* page/AbstractFrame.h:

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

20 months agoProtect frame in WebPage::runJavaScriptInFrameInScriptWorld()
cdumez@apple.com [Tue, 6 Apr 2021 02:12:48 +0000 (02:12 +0000)]
Protect frame in WebPage::runJavaScriptInFrameInScriptWorld()
https://bugs.webkit.org/show_bug.cgi?id=224210

Reviewed by Alex Christensen.

Between the time we were getting the raw pointer to the frame, and the time were were passing it to
WebPage::runJavaScript(), we were potentially calling WebFrameLoaderClient::dispatchGlobalObjectAvailable().
It is possible in theory for those synchronous injected bundle calls to mess with the frame tree and cause
our frame to go bad. As a result, it is best to protect the frame as soon as we get it.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::runJavaScriptInFrameInScriptWorld):

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

20 months agoAdd a missing bounds check when mapping display list items from a shared display...
wenson_hsieh@apple.com [Tue, 6 Apr 2021 02:08:02 +0000 (02:08 +0000)]
Add a missing bounds check when mapping display list items from a shared display list handle
https://bugs.webkit.org/show_bug.cgi?id=224156
<rdar://problem/71805209>

Reviewed by Tim Horton.

Add a check to ensure that we don't end up with out-of-bounds memory access when attempting to map an `offset`
and `capacity` in shared display list data into a `WebCore::DisplayList`. It's possible for this to happen if
either the sum of `offset` and `capacity` (i.e. the extent of the mapped segment) overflows `size_t`, or the
extent exceeds the total length of the buffer in shared memory.

* GPUProcess/graphics/DisplayListReaderHandle.cpp:
(WebKit::DisplayListReaderHandle::displayListForReading const):

Note that returning `nullptr` here subsequently causes us to terminate the web process due to the message check
for `displayList` inside `nextDestinationImageBufferAfterApplyingDisplayLists`.

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

20 months agoDFG arity fixup nodes should exit to the caller's call opcode
keith_miller@apple.com [Tue, 6 Apr 2021 01:52:05 +0000 (01:52 +0000)]
DFG arity fixup nodes should exit to the caller's call opcode
https://bugs.webkit.org/show_bug.cgi?id=223278

Reviewed by Saam Barati.

JSTests:

* stress/dfg-arity-fixup-uses-callers-exit-origin.js: Added.
(main.v22):
(main.v30):
(main.try.v40):
(main.try.v47):
(main.try.v56):
(main.):
(main):

Source/JavaScriptCore:

Right now when we do arity fixup in the DFG we model it in the
same way that it executes, which means all the nodes are part of
the callee. Unfortunately, this causes PhantomInsertionPhase to
think those nodes could be replacing previously defined
VirtualRegisters as they are part of the callee's header (always
alive). When PhantomInsertionPhase then inserts a Phantom it will
put that node in the caller's frame as that's the first ExitOK
node. The caller however may have no knowledge of that
VirtualRegister though. For example:

--> foo: loc10 is a local in foo.
    ...
    1: MovHint(loc10)
    2: SetLocal(loc10)
<-- foo // loc10 ten is now out of scope for the InlineCallFrame of the caller.
...
// Phantom will be inserted here refering to loc10, which doesn't make sense.
--> bar // loc10 is an argument to bar and needs arity fixup.
    ... // All of these nodes are ExitInvalid
    3: MovHint(loc10, ExitInvalid)
    4: SetLocal(loc10, ExitInvalid)
    ...

* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::currentNodeOrigin):
(JSC::DFG::ByteCodeParser::inlineCall):

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

20 months agoWasted vector capacity in FEColorMatrix and filters
simon.fraser@apple.com [Tue, 6 Apr 2021 01:45:37 +0000 (01:45 +0000)]
Wasted vector capacity in FEColorMatrix and filters
https://bugs.webkit.org/show_bug.cgi?id=224169

Reviewed by Said Abou-Hallawa.

When building filter effects, avoid the inputEffects() having a larger
capacity than needed.

Shrink the Vector<float> which is input to FEColorMatrix.

This saves around 40KB on facebook.com feed pages.

* platform/graphics/filters/FEColorMatrix.cpp:
(WebCore::FEColorMatrix::FEColorMatrix):
(WebCore::FEColorMatrix::create):
* platform/graphics/filters/FEColorMatrix.h:
* rendering/CSSFilter.cpp:
(WebCore::CSSFilter::build):
(WebCore::endMatrixRow): Deleted.
(WebCore::lastMatrixRow): Deleted.
* rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::buildPrimitives const):
* svg/SVGFEColorMatrixElement.cpp:
(WebCore::SVGFEColorMatrixElement::build const):
* svg/SVGFEComponentTransferElement.cpp:
(WebCore::SVGFEComponentTransferElement::build const):
* svg/SVGFEConvolveMatrixElement.cpp:
(WebCore::SVGFEConvolveMatrixElement::build const):
* svg/SVGFEDiffuseLightingElement.cpp:
(WebCore::SVGFEDiffuseLightingElement::build const):
* svg/SVGFEDropShadowElement.cpp:
(WebCore::SVGFEDropShadowElement::build const):
* svg/SVGFEGaussianBlurElement.cpp:
(WebCore::SVGFEGaussianBlurElement::build const):
* svg/SVGFEMergeElement.cpp:
(WebCore::SVGFEMergeElement::build const):
* svg/SVGFEMorphologyElement.cpp:
(WebCore::SVGFEMorphologyElement::build const):
* svg/SVGFEOffsetElement.cpp:
(WebCore::SVGFEOffsetElement::build const):
* svg/SVGFESpecularLightingElement.cpp:
(WebCore::SVGFESpecularLightingElement::build const):
* svg/SVGFETileElement.cpp:
(WebCore::SVGFETileElement::build const):

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

20 months agoREGRESSION (r275332?): [ EWS macOS iOS wk2 ] http/tests/appcache/fail-on-update.html...
cgambrell@apple.com [Tue, 6 Apr 2021 01:38:32 +0000 (01:38 +0000)]
REGRESSION (r275332?): [ EWS macOS iOS wk2 ] http/tests/appcache/fail-on-update.html is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=224120
<rdar://problem/76157112>

Reviewed by Jonathan Bedard.

* http/tests/appcache/fail-on-update-2.html:
* http/tests/appcache/fail-on-update.html:

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

20 months ago[ macOS ] media/webaudio-background-playback.html is a flakey text failure
commit-queue@webkit.org [Tue, 6 Apr 2021 01:13:53 +0000 (01:13 +0000)]
[ macOS ] media/webaudio-background-playback.html is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=221935
<rdar://problem/74370844>

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-05
Reviewed by Eric Carlson.

The test was flaky because it was checking if the destination had processed new buffers
immediately after an asynchronous state change. The proposed solution is to monitor the
statechange event and do the actual test after another additional 100 milli-seconds have
passed.

* media/webaudio-background-playback.html:

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

20 months agoEnable QuotaExceededError on non GSTREAMER platforms
sbarati@apple.com [Tue, 6 Apr 2021 01:06:22 +0000 (01:06 +0000)]
Enable QuotaExceededError on non GSTREAMER platforms
https://bugs.webkit.org/show_bug.cgi?id=224136
<rdar://71219720>

Reviewed by Jer Noble.

Source/WebCore:

This fixes a memory leak in Disney+ where we end up queuing up the entire
video because we never communicate to the page that they should stop queuing
more data.

* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::appendBufferInternal):

LayoutTests:

* platform/mac/media/media-source/media-source-append-before-last-range-no-quota-exceeded-expected.txt:

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

20 months agoMake sure service workers use a ScriptSourceCode backed by file-mapped memory when...
cdumez@apple.com [Tue, 6 Apr 2021 01:05:24 +0000 (01:05 +0000)]
Make sure service workers use a ScriptSourceCode backed by file-mapped memory when possible
https://bugs.webkit.org/show_bug.cgi?id=224088

Reviewed by Yusuke Suzuki.

Source/WebCore:

To run a worker, we were constructing a ScriptSourceCode from the source String and calling
JSC::evaluate. ScriptSourceCode would construct a JSC::StringSourceProvider, which would
keep the source String alive for the lifetime of the provider. This is problematic since
those worker scripts may be big and keeping heap-allocated version of them in memory is
expensive.

To address the issue, this patch introduces a new JSC::SourceProvider subclass named
ScriptBufferSourceProvider, which uses a ScriptBuffer internally. ScriptBuffer has the
benefit of being able to hold file-mapped data. We only convert the ScriptBuffer to
a String whenever necessary (When the script contains non-ascii characters and JSC
requests a StringView to the script). If we do end up converting the ScriptBuffer to
a String, this String will get cleared on memory pressure. This is similar to what
CachedScriptSourceProvider / CachedScript do on the main thread.

In the warm case, where the service worker script is coming from disk, we create
the ScriptBufferSourceProvider right away from a file-mapped ScriptBuffer, thus
greatly reducing dirty memory use. In the cold case, we initially construct the
ScriptBufferSourceProvider using a ScriptBuffer that is not file-mapped. However,
once the script is saved to disk (via SWScriptStorage), we replace the
ScriptBufferSourceProvider's ScriptBuffer with the new file-mapped version in
order to reduce dirty memory use in this case too.

* WebCore.xcodeproj/project.pbxproj:
Add ScriptBufferSourceProvider.h to the project.

* bindings/js/ScriptBufferSourceProvider.h: Added.
- Add new ScriptBufferSourceProvider, which is a JSC::SourceProvider subclass that
uses a ScriptBuffer as backing instead of a String. This allows us to use file-mapped
memory whenever possible, thus reducing dirty memory use. This provider provides
similar functionality to CachedScriptSourceProvider / CachedScript but works with
a ScriptBuffer and can be used off the main thread.
- We only transform the SharedBuffer into a String when strictly necessary, meaning
  that the ScriptBuffer contains non-ascii characters and JSC is asking for a StringView
  to the script.
- The class supports clearing the String copy of the script (done on memory pressure)
  and replacing the ScriptBuffer (with a new file-mapped version).

* bindings/js/ScriptSourceCode.h:
(WebCore::ScriptSourceCode::ScriptSourceCode):
(WebCore::ScriptSourceCode::m_code):
(WebCore::ScriptSourceCode::provider):
Add new constructors taking a ScriptBuffer instead of a String for the source code.
We then use the new ScriptBufferSourceProvider internally instead of the
StringSourceProvider.

* workers/DedicatedWorkerThread.cpp:
(WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
* workers/DedicatedWorkerThread.h:
Use ScriptBuffer instead of String.

* workers/ScriptBuffer.cpp:
(WebCore::ScriptBuffer::empty):
(WebCore::ScriptBuffer::append):
(WebCore::operator!=):
* workers/ScriptBuffer.h:
(WebCore::ScriptBuffer::isEmpty const):
Add some functionality to SCriptBuffer to make it more convenient to use.

* workers/Worker.cpp:
(WebCore::Worker::notifyFinished):
Convert ScriptBuffer to a String since this is what WebInspector expects.

* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::importScripts):
- When importing a new script, we now construct a ScriptSourceCode from a
ScriptBuffer instead of a String.
- We also store a weak pointer to the ScriptBufferSourceProvider used by the ScriptSourceCode
  on the WorkerGlobalScope. This is so that we can ask those ScriptBufferSourceProvider objects
  to clear their cached String representation of the script source on memory pressure. It is
  also needed so we can replace the ScriptBufferSourceProvider's ScriptBuffer with a file-mapped
  version when one becomes available.

(WebCore::WorkerGlobalScope::releaseMemory):
In addition to deleting JS code and doing garbage collection, we now also ask the
ScriptBufferSourceProvider objects to clear their cached String representation of the script
source.

(WebCore::WorkerGlobalScope::deleteJSCodeAndGC):
Moved the logic to delete JS code and doing GC from releaseMemory() to a new function, now
that releaseMemory() needs to do more things.

(WebCore::WorkerGlobalScope::setMainScriptSourceProvider):
(WebCore::WorkerGlobalScope::addImportedScriptSourceProvider):
Functions used to store the CachedScriptSourceProvider objects for the scripts used by the
worker on the WorkerGlobalScope. We keep weak pointers to those.

(WebCore::WorkerGlobalScope::clearDecodedScriptData):
Function used to ask the ScriptBufferSourceProvider objects to clear their cached String
representation of the script source on memory pressure.

(WebCore::WorkerGlobalScope::updateSourceProviderBuffers):
Function used to ask the ScriptBufferSourceProvider objects to replace their ScriptBuffers
with file-backed versions.

* workers/WorkerGlobalScope.h:
* workers/WorkerGlobalScopeProxy.h:
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):
* workers/WorkerMessagingProxy.h:
Use ScriptBuffer instead of String.

* workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::WorkerScriptLoader):
(WebCore::WorkerScriptLoader::loadSynchronously):
(WebCore::WorkerScriptLoader::didReceiveData):
* workers/WorkerScriptLoader.h:
(WebCore::WorkerScriptLoader::script):
Use ScriptBuffer instead of String to hold the script source. We eventually need a ScriptBuffer
since this is what the Worker now needs to launch. Also, in the service worker case, we may
get a ScriptBuffer right away from the scriptResourceMap, without going to the network at all.

* workers/WorkerThread.cpp:
(WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
(WebCore::WorkerThread::WorkerThread):
Use ScriptBuffer instead of String.

(WebCore::WorkerThread::evaluateScriptIfNecessary):
- When evaluating the main worker script, we now construct a ScriptSourceCode from a
ScriptBuffer instead of a String.
- We also store a weak pointer to the ScriptBufferSourceProvider used by the ScriptSourceCode
  on the WorkerGlobalScope. This is so that we can ask those ScriptBufferSourceProvider objects
  to clear their cached String representation of the script source on memory pressure. It is
  also needed so we can replace the ScriptBufferSourceProvider's ScriptBuffer with a file-mapped
  version when one becomes available.

* workers/WorkerThread.h:
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::jobFinishedLoadingScript):
* workers/service/ServiceWorkerContainer.h:
* workers/service/ServiceWorkerFetchResult.h:
* workers/service/ServiceWorkerGlobalScope.cpp:
(WebCore::ServiceWorkerGlobalScope::didSaveScriptsToDisk):
* workers/service/ServiceWorkerJobClient.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::ServiceWorkerThread):
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::updateWorker):
* workers/service/server/SWServer.h:
* workers/service/server/SWServerJobQueue.cpp:
(WebCore::SWServerJobQueue::scriptFetchFinished):
Use ScriptBuffer instead of String.

Source/WebKit:

* NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.cpp:
(WebKit::ServiceWorkerSoftUpdateLoader::didFinishLoading):

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

20 months ago[Flatpak SDK] Update dav1d and libavif
commit-queue@webkit.org [Tue, 6 Apr 2021 00:50:50 +0000 (00:50 +0000)]
[Flatpak SDK] Update dav1d and libavif
https://bugs.webkit.org/show_bug.cgi?id=224177

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-05
Reviewed by Adrian Perez de Castro.

* elements/freedesktop-sdk.bst: Update dav1d to version 0.8.2.
* elements/sdk/libavif.bst: Update to version 0.9.0.
* patches/fdo-0001-dav1d-Bump-to-version-0.8.2.patch: Added.

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

20 months ago[Win][WK2] Implement IPC::Semaphore to run WebGL in GPU process
Hironori.Fujii@sony.com [Tue, 6 Apr 2021 00:50:05 +0000 (00:50 +0000)]
[Win][WK2] Implement IPC::Semaphore to run WebGL in GPU process
https://bugs.webkit.org/show_bug.cgi?id=224014

Reviewed by Don Olmstead.

Source/WebCore:

* platform/graphics/PlatformDisplay.cpp:
(WebCore::PlatformDisplay::sharedDisplay): GPU process calls this
function in IPC thread. Removed the assertion checking the main
thread.
* platform/graphics/opengl/GraphicsContextGLOpenGL.h:
* platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:
(WebCore::GraphicsContextGLOpenGL::createForGPUProcess): Added.

Source/WebKit:

* GPUProcess/graphics/RemoteGraphicsContextGL.cpp:
* GPUProcess/graphics/RemoteGraphicsContextGLWin.cpp: Added.
(WebKit::RemoteGraphicsContextGL::create):
(WebKit::RemoteGraphicsContextGLWin::RemoteGraphicsContextGLWin):
(WebKit::RemoteGraphicsContextGLWin::platformWorkQueueInitialize):
(WebKit::RemoteGraphicsContextGL::prepareForDisplay):
* Platform/IPC/IPCSemaphore.cpp:
* Platform/IPC/IPCSemaphore.h:
* Platform/IPC/StreamClientConnection.cpp:
(IPC::StreamClientConnection::setWakeUpSemaphore):
(IPC::StreamClientConnection::wakeUpServer):
* Platform/IPC/StreamClientConnection.h:
(IPC::StreamClientConnection::tryAcquire):
(IPC::StreamClientConnection::tryAcquireAll):
* Platform/IPC/StreamConnectionWorkQueue.cpp:
(IPC::StreamConnectionWorkQueue::StreamConnectionWorkQueue):
(IPC::StreamConnectionWorkQueue::removeStreamConnection):
(IPC::StreamConnectionWorkQueue::stop):
(IPC::StreamConnectionWorkQueue::wakeUp):
(IPC::StreamConnectionWorkQueue::wakeUpProcessingThread):
* Platform/IPC/StreamConnectionWorkQueue.h:
* Platform/IPC/StreamServerConnection.cpp:
(IPC::StreamServerConnectionBase::release):
(IPC::StreamServerConnectionBase::releaseAll):
* Platform/IPC/win/IPCSemaphoreWin.cpp: Added.
(IPC::Semaphore::Semaphore):
(IPC::Semaphore::~Semaphore):
(IPC::Semaphore::operator=):
(IPC::Semaphore::signal):
(IPC::Semaphore::wait):
(IPC::Semaphore::waitFor):
(IPC::Semaphore::encode const):
(IPC::Semaphore::decode):
(IPC::Semaphore::destroy):
* PlatformWin.cmake:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createGraphicsContextGL const):

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

20 months agoFix max-content on tables with percentage cell widths.
heycam@apple.com [Tue, 6 Apr 2021 00:42:08 +0000 (00:42 +0000)]
Fix max-content on tables with percentage cell widths.
https://bugs.webkit.org/show_bug.cgi?id=221165

Reviewed by Zalan Bujtas.

Source/WebCore:

When `width: max-content` is specified on an element, any percentages
on content inside the element that are relative to the containing block
width should be treated as auto.  Percentages on table cells and columns
in tables using auto table layout are not quite relative to the
containing block width, but do have a similar influence.  So when
computing the intrinsic width of a table for the purpose of determining
the max-content value to use, ignore any percentages specified on table
cells and columns.

This change makes us match Firefox and Chrome on the test case.

Test: fast/table/percent-width-max-content.html

* rendering/AutoTableLayout.cpp:
(WebCore::AutoTableLayout::computeIntrinsicLogicalWidths):
* rendering/AutoTableLayout.h:
* rendering/FixedTableLayout.cpp:
(WebCore::FixedTableLayout::computeIntrinsicLogicalWidths):
* rendering/FixedTableLayout.h:
* rendering/RenderBox.cpp:
(WebCore::RenderBox::computeIntrinsicLogicalWidthUsing const): Call
into the new computeIntrinsicKeywordLogicalWidths function so that
tables can return different values for layout and intrinsic keyword
calculation.
* rendering/RenderBox.h:
(WebCore::RenderBox::computeIntrinsicKeywordLogicalWidths const):
Added to support computing intrinsic keyword lengths that differ from
those returned by computeIntrinsicLogicalWidths.
* rendering/RenderTable.cpp:
(WebCore::RenderTable::computeIntrinsicLogicalWidths const): Factored
this out to allow specifying an argument for whether the intrinsics
being computed are for layout or for instrinsic keyword calculation,
like max-content.
(WebCore::RenderTable::computeIntrinsicKeywordLogicalWidths const):
Added.  This is the only override of the default implementation in
RenderBox.
* rendering/RenderTable.h:
* rendering/TableLayout.h:

LayoutTests:

Fix max-content on tables with percentage cell widths.

* fast/table/percent-width-max-content-expected.html: Added.
* fast/table/percent-width-max-content.html: Added.

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

20 months ago[Flatpak SDK] Backport GStreamer fakeaudiosink
commit-queue@webkit.org [Tue, 6 Apr 2021 00:39:47 +0000 (00:39 +0000)]
[Flatpak SDK] Backport GStreamer fakeaudiosink
https://bugs.webkit.org/show_bug.cgi?id=224053

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-05
Reviewed by Adrian Perez de Castro.

This audio sink will be used for the media layout and API tests.

* elements/sdk/gst-plugins-bad.bst:
* patches/gst-plugins-bad-0001-debugutils-Add-fakeaudiosink-element.patch: Added.

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

20 months agoVersioning.
rubent_22@apple.com [Tue, 6 Apr 2021 00:27:58 +0000 (00:27 +0000)]
Versioning.

WebKit-7

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

20 months ago[GPU Process] Simplify DisplayList::Iterator part 1: Require encoding/decoding delega...
mmaxfield@apple.com [Tue, 6 Apr 2021 00:22:02 +0000 (00:22 +0000)]
[GPU Process] Simplify DisplayList::Iterator part 1: Require encoding/decoding delegates for non-inline display list items
https://bugs.webkit.org/show_bug.cgi?id=223849

Reviewed by Wenson Hsieh.

Source/WebCore:

Requiring delegates for non-inline display list items has these advantages:
- DisplayList::Iterator::updateCurrentItem() only has 2 codepaths instead of 3.
- ItemBuffer::m_itemsToDestroyInAllocatedBuffers can be deleted entirely.
- The conditional inside ItemBuffer::append() can be simplified from
      !T::isInlineItem && m_writingClient to just !T::isInlineItem, which I think makes the
      function significantly more readable.

There are a few places where we were using non-inline display list items without a delegate:
This patch adds two new "null" delegates, and hooks them up to a subclass of DisplayList,
called InMemoryDisplayList. Clients who want to use in-memory display lists (like the
DrawGlyphs cache) can just use this class, and retain their calling pattern they were using
before. Also, this patch adds InMemoryDisplayList without adding any virtual functions to
DisplayList.

No new tests because there is no behavior change.

* Headers.cmake:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* html/HTMLCanvasElement.cpp:
* platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::displayListForTextRun const):
* platform/graphics/FontCascade.h:
(WebCore::FontCascade::displayListForTextRun):
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::recursiveCommitChanges):
(WebCore::GraphicsLayerCA::platformCALayerPaintContents):
* platform/graphics/ca/GraphicsLayerCA.h:
* platform/graphics/displaylists/DisplayList.cpp:
(WebCore::DisplayList::DisplayList::iterator::updateCurrentItem):
* platform/graphics/displaylists/DisplayListDrawingContext.h:
(WebCore::DisplayList::DrawingContext::replayedDisplayList const):
* platform/graphics/displaylists/DisplayListImageBuffer.h:
(WebCore::DisplayList::ImageBuffer::ImageBuffer):
* platform/graphics/displaylists/DisplayListItemBuffer.cpp:
(WebCore::DisplayList::copyInto):
(WebCore::DisplayList::ItemBuffer::ItemBuffer):
(WebCore::DisplayList::ItemBuffer::operator=):
(WebCore::DisplayList::ItemBuffer::clear):
(WebCore::DisplayList::ItemBuffer::append):
(WebCore::DisplayList::m_allocatedBuffers): Deleted.
* platform/graphics/displaylists/DisplayListItemBuffer.h:
(WebCore::DisplayList::ItemHandle::get const):
(WebCore::DisplayList::ItemBufferWritingClient::~ItemBufferWritingClient):
(WebCore::DisplayList::ItemBufferWritingClient::createItemBuffer):
(WebCore::DisplayList::ItemBufferWritingClient::requiredSizeForItem const):
(WebCore::DisplayList::ItemBufferWritingClient::encodeItemOutOfLine const):
(WebCore::DisplayList::ItemBufferWritingClient::encodeItemInline const):
(WebCore::DisplayList::ItemBufferWritingClient::didAppendData):
(WebCore::DisplayList::ItemBuffer::append):
* platform/graphics/displaylists/DisplayListReplayer.cpp:
(WebCore::DisplayList::Replayer::replay):
* platform/graphics/displaylists/DisplayListReplayer.h:
* platform/graphics/displaylists/InMemoryDisplayList.cpp: Added.
(WebCore::DisplayList::InMemoryDisplayList::WritingClient::requiredSizeForItem const):
(WebCore::DisplayList::InMemoryDisplayList::WritingClient::encodeItemInline const):
(WebCore::DisplayList::InMemoryDisplayList::ReadingClient::decodeItem):
(WebCore::DisplayList::InMemoryDisplayList::InMemoryDisplayList):
(WebCore::DisplayList::InMemoryDisplayList::~InMemoryDisplayList):
* platform/graphics/displaylists/InMemoryDisplayList.h: Copied from Source/WebCore/platform/graphics/displaylists/DisplayListDrawingContext.h.
* rendering/GlyphDisplayListCache.h:

Source/WebKit:

* WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

Tools:

* TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebCore/cg/DisplayListTestsCG.cpp:

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

20 months ago[MediaSession] Small refactoring of MediaSession implementation classes
jer.noble@apple.com [Tue, 6 Apr 2021 00:11:27 +0000 (00:11 +0000)]
[MediaSession] Small refactoring of MediaSession implementation classes
https://bugs.webkit.org/show_bug.cgi?id=224141

Reviewed by Eric Carlson.

A smorgasboard of small refactoring changes:

Source/WebCore:

- Don't call action handlers by default in response to coordinator requests.
- Since we don't call the action handlers, we don't need the internal methods.
- Simplify the call site by defining the action details inline.

* Modules/mediasession/MediaSessionCoordinator.cpp:
(WebCore::MediaSessionCoordinator::seekSessionToTime):
(WebCore::MediaSessionCoordinator::playSession):
(WebCore::MediaSessionCoordinator::pauseSession):
(WebCore::MediaSessionCoordinator::setSessionTrack):
(WebCore::MediaSessionCoordinator::internalSeekTo): Deleted.
(WebCore::MediaSessionCoordinator::internalPlay): Deleted.
(WebCore::MediaSessionCoordinator::internalPause): Deleted.
(WebCore::MediaSessionCoordinator::internalSetTrack): Deleted.
* Modules/mediasession/MediaSessionCoordinator.h:
* Modules/mediasession/MediaSessionCoordinatorPrivate.h:

Source/WebKit:

- MediaSessionCoordinatorProxyPrivate should use an Optional<ExceptionData> rather than
  an actual ExceptionData, to handle the case where no exception was encoutered.
- RemoteMediaSessionCoordinatorProxy::create() should just return a Ref, not a RefPtr.
- Logging inside a completion handler requires access to this.
- Add RemoteMediaSessionCoordinatorProxy.cpp to the build.

* UIProcess/Media/MediaSessionCoordinatorProxyPrivate.h:
* UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp:
(WebKit::RemoteMediaSessionCoordinatorProxy::create):
(WebKit::RemoteMediaSessionCoordinatorProxy::RemoteMediaSessionCoordinatorProxy):
(WebKit::RemoteMediaSessionCoordinatorProxy::join):
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinateSeekTo):
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinatePlay):
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinatePause):
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinateSetTrack):
(WebKit::RemoteMediaSessionCoordinatorProxy::pauseSession):
(WebKit::RemoteMediaSessionCoordinatorProxy::setSessionTrack):
(WebKit::RemoteMediaSessionCoordinatorProxy::logChannel const):
(WebKit::RemoteMediaSessionCoordinatorProxy::::coordinateSetTrack): Deleted.
* UIProcess/Media/RemoteMediaSessionCoordinatorProxy.h:
(WebKit::RemoteMediaSessionCoordinatorProxy::logger const):
(WebKit::RemoteMediaSessionCoordinatorProxy::logIdentifier const):
(WebKit::RemoteMediaSessionCoordinatorProxy::logClassName const):

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

20 months agoDefine AtomString(ASCIILiteral) and use ASCIILiteral more to avoid memory allocation
ysuzuki@apple.com [Tue, 6 Apr 2021 00:09:31 +0000 (00:09 +0000)]
Define AtomString(ASCIILiteral) and use ASCIILiteral more to avoid memory allocation
https://bugs.webkit.org/show_bug.cgi?id=224125

Reviewed by Saam Barati.

Source/WebCore:

We apply "..."_s more. This avoids allocating of string storage when creating StringImpl.

* accessibility/AccessibilityObject.cpp:
(WebCore::initializeRoleMap):
* dom/ScriptElement.cpp:
(WebCore::isLegacySupportedJavaScriptLanguage):
* editing/EditorCommand.cpp:
(WebCore::createCommandMap):
* html/Autofill.cpp:
(WebCore::fieldNameMap):
* platform/LegacySchemeRegistry.cpp:
(WebCore::builtinLocalURLSchemes):
(WebCore::builtinSecureSchemes):
(WebCore::builtinSchemesWithUniqueOrigins):
(WebCore::builtinEmptyDocumentSchemes):
(WebCore::builtinCanDisplayOnlyIfCanRequestSchemes):
(WebCore::builtinCORSEnabledSchemes):
* platform/MIMETypeRegistry.cpp:
(WebCore::MIMETypeRegistry::systemPreviewMIMETypes):
* platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::hasValidAverageCharWidth const):
* platform/graphics/HEVCUtilities.cpp:
(WebCore::codecStringForDoViCodecType):
(WebCore::profileIDForAlphabeticDoViProfile):
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::staticMIMETypeList):
* platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm:
(WebCore::AVAssetMIMETypeCache::staticContainerTypeList):
* platform/graphics/cg/ImageSourceCGWin.cpp:
(WebCore::preferredExtensionForImageType):
* svg/SVGTests.cpp:
(WebCore::supportedSVGFeatures):

Source/WTF:

Add AtomString(ASCIILiteral). ASCIILiteral ensures that storage is constant non-heap string by its type.
So we can just use it as a literal (not allocating a string storage).

* wtf/text/AtomString.h:

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

20 months agoREGRESSION (r275358): [ iOS wk2 ] media/modern-media-controls/ios-inline-media-contro...
drousso@apple.com [Tue, 6 Apr 2021 00:04:26 +0000 (00:04 +0000)]
REGRESSION (r275358): [ iOS wk2 ] media/modern-media-controls/ios-inline-media-controls/ios-inline-media-dropping-controls.html is a constant text failure
https://bugs.webkit.org/show_bug.cgi?id=224130
<rdar://problem/76164289>

Unreviewed test fix.

* media/modern-media-controls/ios-inline-media-controls/ios-inline-media-dropping-controls.html:
* media/modern-media-controls/ios-inline-media-controls/ios-inline-media-dropping-controls-expected.txt:
Set a `maximumRightContainerButtonCountOverride` so that the collapsing behavior of the
overflow button doesn't affect the test (and force a layout to ensure it's picked up).

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

20 months ago[Cocoa] Calling AudioComponentFetchServerRegistrations on main thread causes launch...
jer.noble@apple.com [Tue, 6 Apr 2021 00:00:10 +0000 (00:00 +0000)]
[Cocoa] Calling AudioComponentFetchServerRegistrations on main thread causes launch time regression
https://bugs.webkit.org/show_bug.cgi?id=224137
<rdar://76137483>

Reviewed by Eric Carlson.

Run the command to fetch AudioComponent registration data on a generic background queue.

* UIProcess/Cocoa/WebProcessProxyCocoa.mm:
(WebKit::WebProcessProxy::sendAudioComponentRegistrations):

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

20 months ago[WinCairo] Enable Service Worker tests
chris.reid@sony.com [Mon, 5 Apr 2021 23:56:04 +0000 (23:56 +0000)]
[WinCairo] Enable Service Worker tests
https://bugs.webkit.org/show_bug.cgi?id=223591

Reviewed by Fujii Hironori.

Source/WebKit:

WPT HTTP tests were failing because SSL Connect errors weren't triggering authentication challenges.
Also Add a suggestedFilename implementation.

* NetworkProcess/curl/NetworkDataTaskCurl.cpp:
* NetworkProcess/curl/NetworkDataTaskCurl.h:

Tools:

Ignore cert errors with downloads and fix an issue with windows paths.

* WebKitTestRunner/TestController.cpp:
* WebKitTestRunner/TestController.h:

LayoutTests:

* platform/wincairo-wk1/TestExpectations:
* platform/wincairo/TestExpectations:

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

20 months ago[GLIB] Garden API test failure and flakiness after r275267
lmoura@igalia.com [Mon, 5 Apr 2021 23:55:30 +0000 (23:55 +0000)]
[GLIB] Garden API test failure and flakiness after r275267

Unreviewed test gardening.

* TestWebKitAPI/glib/TestExpectations.json:

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

20 months ago[GPUP][iPad] Audio only when airplaying a youtube video
peng.liu6@apple.com [Mon, 5 Apr 2021 23:43:41 +0000 (23:43 +0000)]
[GPUP][iPad] Audio only when airplaying a youtube video
https://bugs.webkit.org/show_bug.cgi?id=224132

Reviewed by Eric Carlson.

While `MediaPlayerPrivateAVFoundationObjC` only implements `setWirelessPlaybackTarget()`
on macOS, `MediaPlayerPrivateMediaSourceAVFObjC` implements it on both macOS and iOS.
Therefore, `RemoteMediaPlayerProxy` has to forward the calls of `setWirelessPlaybackTarget()`
from WebContent processes to "MediaPlayerPrivate*" on both macOS and iOS.

Manually tested.

* GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::setWirelessPlaybackTarget):

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

20 months agoPendingImageBitmap gets created on a stopped script execution context.
rniwa@webkit.org [Fri, 2 Apr 2021 23:27:29 +0000 (23:27 +0000)]
PendingImageBitmap gets created on a stopped script execution context.
https://bugs.webkit.org/show_bug.cgi?id=223971

Reviewed by Youenn Fablet.

Don't create a PendingImageBitmap in PendingImageBitmap::fetch
if the associated script execution context had already been stoppped.

The new behavior matches of Chrome although it's technically incorrect.

Correcting it to match the spec & Firefox will refactor a larger fix around
how script execution context is used by the threaded loader.

* html/ImageBitmap.cpp:
(WebCore::PendingImageBitmap::fetch):

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

20 months agoEnable PreferPageRenderingUpdatesNear60FPSEnabled by default
simon.fraser@apple.com [Fri, 2 Apr 2021 22:57:56 +0000 (22:57 +0000)]
Enable PreferPageRenderingUpdatesNear60FPSEnabled by default
https://bugs.webkit.org/show_bug.cgi?id=224133

Reviewed by Tim Horton.

Turn the PreferPageRenderingUpdatesNear60FPSEnabled internal setting on by default. This
means that requestAnimationFrame on 144Hz displays will fire at 72Hz. 60Hz displays are
unaffected.

Firing at "close to 60fps" was determined to be necessary for web compatibility and power.

* Scripts/Preferences/WebPreferencesInternal.yaml:

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

20 months ago[GPUP] Power regression: audio hardware is configured for 128 frame preferred buffer...
jer.noble@apple.com [Fri, 2 Apr 2021 22:44:37 +0000 (22:44 +0000)]
[GPUP] Power regression: audio hardware is configured for 128 frame preferred buffer size during VideoAudio playback
https://bugs.webkit.org/show_bug.cgi?id=224122

Reviewed by Eric Carlson.

The RemoteAudioHardwareListenerProxy tracks when audio hardware changes, and updates the WebContent process with
the supported properies of the new default audio device, including supported buffer sizes. However, it only does
so when the current audio devices changes, and not initially. Instead, ensure the WebContent process is immediately
update with the correct values for supported buffer sizes. This allows VideoAudio playback to enter a lower-power
playback mode by specifying a large preferred buffer size (4096).

* GPUProcess/media/RemoteAudioHardwareListenerProxy.cpp:
(WebKit::RemoteAudioHardwareListenerProxy::RemoteAudioHardwareListenerProxy):

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

20 months agoAdd WKURLSchemeTask redirect API.
beidson@apple.com [Fri, 2 Apr 2021 22:39:22 +0000 (22:39 +0000)]
Add WKURLSchemeTask redirect API.
https://bugs.webkit.org/show_bug.cgi?id=224119

Reviewed by Alex Christensen.

Source/WebKit:

Covered by new API tests.

Instead of the existing "did do a redirect" SPI without completion handler, this one has
a completion handler with a new request for the task, proposed by WebKit.

* UIProcess/API/Cocoa/WKURLSchemeTask.h:
* UIProcess/API/Cocoa/WKURLSchemeTask.mm:
(raiseExceptionIfNecessary):
(-[WKURLSchemeTaskImpl willPerformRedirection:newRequest:completionHandler:]):

* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration setURLSchemeHandler:forURLScheme:]):

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setURLSchemeHandlerForScheme):

* UIProcess/WebURLSchemeTask.cpp:
(WebKit::WebURLSchemeTask::willPerformRedirection):
(WebKit::WebURLSchemeTask::didPerformRedirection):
(WebKit::WebURLSchemeTask::didReceiveResponse):
(WebKit::WebURLSchemeTask::didReceiveData):
(WebKit::WebURLSchemeTask::didComplete):
* UIProcess/WebURLSchemeTask.h:
(WebKit::WebURLSchemeTask::waitingForRedirectCompletionHandlerCallback const):

* WebKit.xcodeproj/project.pbxproj:

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::urlSchemeTaskWillPerformRedirection):
(WebKit::WebPage::urlSchemeTaskDidPerformRedirection):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

* WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:
(WebKit::WebURLSchemeHandlerProxy::taskDidPerformRedirection):
* WebProcess/WebPage/WebURLSchemeHandlerProxy.h:

* WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:
(WebKit::WebURLSchemeTaskProxy::didPerformRedirection):
* WebProcess/WebPage/WebURLSchemeTaskProxy.h:

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:
(-[TaskSchemeHandler webView:startURLSchemeTask:]):
(TEST):
(-[HTTPRedirectTest webView:startURLSchemeTask:]):
(-[HTTPRedirectTest webView:stopURLSchemeTask:]):

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