Timeline



Jan 22, 2020:

10:50 PM Changeset in webkit [254966] by commit-queue@webkit.org
  • 2 edits
    1 add in trunk/LayoutTests

[GTK] Gardening HTTP tests
​https://bugs.webkit.org/show_bug.cgi?id=206640

Unreviewed test gardening.

Patch by Lauro Moura <Lauro Moura> on 2020-01-22

  • platform/gtk/TestExpectations:
  • platform/gtk/http/tests/security/xss-DENIED-xsl-external-entity-redirect-expected.txt: Added.
10:46 PM Changeset in webkit [254965] by Fujii Hironori
  • 5 edits
    2 adds in trunk

[WinCairo] Some of combining family glyphs are replaced by space glyphs
​https://bugs.webkit.org/show_bug.cgi?id=205485

Reviewed by Myles C. Maxfield.

Source/WebCore:

Although ComplexTextControllerUniscribe requires
glyph-to-character mapping (stringIndices), Uniscribe returns
character-to-glyph mapping (clusters). So, we are converting it.
And, this is not simple task due to the following reasons.

  1. ComplexTextControllerUniscribe replaces glyphs, which are

corresponding to space characters, with space glyphs.

For example, πŸ‘¨β€πŸ‘¦ (man+boy, U+1F468 ZWJ U+1F466) consists of a 5
length UTF-16 string.

Uniscribe returns:

glyphs: [6368 6318] (father and boy glyphs)
clusters: [0 0 1 1 1]

This means U+1F468 is mapping to the father glyph, and ZWJ U+1F466
are mapping to the boy glyph. If one simply converts this to
glyph-to-character mapping, it would be [0 2]. This means the
father glyph is mapping to U+1F468, and the boy glyph is mapping
to ZWJ. As the result, ComplexTextControllerUniscribe replaces the
boy glyph with a space glyph because it is mapped to ZWJ. So, by
somehow skipping space characters, we need to convert the clusters
to a glyph-to-character mapping [0 3].

  1. Uniscribe returns the rightmost glyphs for combining glyphs in

RTL text even though it returns the leftmost one for LTR.

For example, if a string "abc" are generating combining glyphs "AB",
Uniscribe returns clusters [0 0] for LTR text, but [1 1] for RTL text.

Test: fast/text/emoji-single-parent-family-3.html

  • platform/graphics/win/ComplexTextControllerUniscribe.cpp:

(WebCore::BidiRange::BidiRange): Added.
(WebCore::BidiRange::Iterator::Iterator):
(WebCore::BidiRange::Iterator::operator++):
(WebCore::BidiRange::Iterator::operator*):
(WebCore::BidiRange::Iterator::operator==):
(WebCore::BidiRange::Iterator::operator!=):
(WebCore::BidiRange::Iterator::index):
(WebCore::BidiRange::begin const):
(WebCore::BidiRange::end const):
(WebCore::stringIndicesFromClusters): Added.
(WebCore::ComplexTextController::collectComplexTextRunsForCharacters):

LayoutTests:

  • fast/text/emoji-single-parent-family-3-expected-mismatch.html: Added.
  • fast/text/emoji-single-parent-family-3.html: Added.
  • platform/win/TestExpectations: Marked fast/text/emoji-single-parent-family-3.html as ImageOnlyFailure.
  • platform/wincairo/TestExpectations: Changed the bug number for fast/text/stale-TextLayout-from-first-line.html.
10:31 PM Changeset in webkit [254964] by jonlee@apple.com
  • 14 edits in trunk/Source

[Media in GPU process] Pipe more MediaPlayerPrivate and client methods
​https://bugs.webkit.org/show_bug.cgi?id=206468

Reviewed by Eric Carlson.

Source/WebCore:

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerCurrentPlaybackTargetIsWirelessChanged):

  • html/HTMLMediaElement.h:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::currentPlaybackTargetIsWirelessChanged):

  • platform/graphics/MediaPlayer.h: Add resourceNotSupported() to call up to the client.

(WebCore::MediaPlayerClient::mediaPlayerCurrentPlaybackTargetIsWirelessChanged):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::playbackTargetIsWirelessChanged):

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

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setShouldPlayToPlaybackTarget):

Source/WebKit:

Pipe more of the media player and client functions. Generally, these are void functions
that require no parameters.

Also, the client *changed() functions, when implemented, tend to call the accessor of the property
that just changed. This seems rather circuitous. The client methods ought to just also pass along
the value of the new changed value. This patch refactors mediaPlayerCurrentPlaybackTargetIsWirelessChanged
to do exactly that.

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::mediaPlayerResourceNotSupported):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerEngineUpdated):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerActiveSourceBuffersChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerWaitingForKeyChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerCurrentPlaybackTargetIsWirelessChanged):
(WebKit::RemoteMediaPlayerProxy::setWirelessVideoPlaybackDisabled):
(WebKit::RemoteMediaPlayerProxy::setShouldPlayToPlaybackTarget):
(WebKit::RemoteMediaPlayerProxy::keyAdded):
(WebKit::RemoteMediaPlayerProxy::beginSimulatedHDCPError):
(WebKit::RemoteMediaPlayerProxy::endSimulatedHDCPError):
(WebKit::RemoteMediaPlayerProxy::notifyActiveSourceBuffersChanged):
(WebKit::RemoteMediaPlayerProxy::applicationWillResignActive):
(WebKit::RemoteMediaPlayerProxy::applicationDidBecomeActive):

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::setWirelessVideoPlaybackDisabled):
(WebKit::MediaPlayerPrivateRemote::currentPlaybackTargetIsWirelessChanged): Cache value in new member variable.
(WebKit::MediaPlayerPrivateRemote::isCurrentPlaybackTargetWireless const): Return value.
(WebKit::MediaPlayerPrivateRemote::setShouldPlayToPlaybackTarget):
(WebKit::MediaPlayerPrivateRemote::keyAdded):
(WebKit::MediaPlayerPrivateRemote::waitingForKeyChanged):
(WebKit::MediaPlayerPrivateRemote::beginSimulatedHDCPError):
(WebKit::MediaPlayerPrivateRemote::endSimulatedHDCPError):
(WebKit::MediaPlayerPrivateRemote::notifyActiveSourceBuffersChanged):
(WebKit::MediaPlayerPrivateRemote::applicationWillResignActive):
(WebKit::MediaPlayerPrivateRemote::applicationDidBecomeActive):
(WebKit::MediaPlayerPrivateRemote::resourceNotSupported):
(WebKit::MediaPlayerPrivateRemote::engineUpdated):
(WebKit::MediaPlayerPrivateRemote::activeSourceBuffersChanged):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in:
8:54 PM Changeset in webkit [254963] by jiewen_tan@apple.com
  • 2 edits in trunk/Tools

Unreviewed, rolling out r254955.

Broke internal builds

Reverted changeset:

"WebKitTestRunner: move code sign configurations from
WebKitTestRunner.xcconfig to DebugRelease.xcconfig"
​https://bugs.webkit.org/show_bug.cgi?id=206607
​https://trac.webkit.org/changeset/254955

8:50 PM Changeset in webkit [254962] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Restore nullification of DFG::Plan::m_vm when the plan is cancelled.
​https://bugs.webkit.org/show_bug.cgi?id=206633
<rdar://problem/58811967>

Reviewed by Robin Morisset.

In r253243, I replaced the nullification of Plan::m_vm in Plan::cancel() with
code to decorate the m_vm pointer with a nuke bit. The thinking is that keeping
the VM pointer in nuked form allows us to do certain assertions, as well as
implementing code in support of keeping Box<Identifier>s alive. It is only
correct to use the nuked VM pointer if and only if the VM is guaranteed to
outlive the Plan. r253243 guarantees this condition.

In r254464, I replaced the use of Box<Identifier> with CacheableIdentifier.
This obviated all the support code added above, and rolled out most of it.
However, I opted to keep the nuked VM pointer in the DFG::Plan to as a debugging
aid (it's nice to be able to know which VM the Plan came from).

However, r254464 also undid the guarantee that the VM will outlive the Plan.
As a result, a nuked VM pointer is no longer guaranteed to point to a valid VM.
Some worker layout tests, run on an ASAN build, detected that the pointer is
pointing to an already freed VM and failed with a crash.

This patch fixes this issue by completely reverting the nuked VM pointer code,
and restores nullification of the m_vm pointer in Plan::cancel().

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::computeCompileTimes const):
(JSC::DFG::Plan::cancel):

  • dfg/DFGPlan.h:

(JSC::DFG::Plan::vm const):
(JSC::DFG::Plan::unnukedVM const): Deleted.
(JSC::DFG::Plan::nuke): Deleted.
(JSC::DFG::Plan::unnuke): Deleted.

8:49 PM Changeset in webkit [254961] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Use "inline box" or "atomic inline level box" instead of inline container
​https://bugs.webkit.org/show_bug.cgi?id=206592
<rdar://problem/58799970>

Reviewed by Antti Koivisto.

Inline container is not a spec term.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeHorizontalAndVerticalGeometry):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::collectInlineContentIfNeeded):

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::isInlineBox const):
(WebCore::Layout::Box::isAtomicInlineLevelBox const):

  • layout/layouttree/LayoutBox.h:

(WebCore::Layout::Box::isContainer const):
(WebCore::Layout::Box::isBlockContainer const): Deleted.
(WebCore::Layout::Box::isInlineContainer const): Deleted.

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::outputLayoutBox):

7:52 PM Changeset in webkit [254960] by keith_miller@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Remove DFGAbstractHeap::typeInfoType since it's immutable
​https://bugs.webkit.org/show_bug.cgi?id=206638

Reviewed by Yusuke Suzuki.

  • dfg/DFGAbstractHeap.h:
  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

6:58 PM Changeset in webkit [254959] by keith_miller@apple.com
  • 7 edits
    1 add in trunk

InternalField and CheckNeutered DFG nodes are not always safe to execute
​https://bugs.webkit.org/show_bug.cgi?id=206632

Reviewed by Saam Barati.

JSTests:

  • stress/for-of-bad-internal-field-hoist.js: Added.

(foo):

Source/JavaScriptCore:

We currently mark (Get/Set)InternalField/CheckNeutered nodes as safe to execute everywhere. However,
GetInternalField, etc. rely on a proof that the cell passed to it is a subclass of InteralFieldObject.
This combination means we may hoist the nodes past the check guarding them.

Also, remove a bogus assertion that we will have proven the value passed to CheckNeutered is a TypedArray.
It's not valid to require that AI preserve a precise model of all invariants since phases can make changes
that AI doesn't understand.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCheckNeutered):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCheckNeutered):

6:45 PM Changeset in webkit [254958] by don.olmstead@sony.com
  • 11 edits
    20 adds in trunk

[OpenSSL] Add stubs and build for Web Crypto
​https://bugs.webkit.org/show_bug.cgi?id=206449

Reviewed by Jiewen Tan.

.:

Enable Web Crypto as an experiment for WinCairo and PlayStation. Add the USE_OPENSSL
definition to platforms using OpenSSL.

  • Source/cmake/OptionsFTW.cmake:
  • Source/cmake/OptionsPlayStation.cmake:
  • Source/cmake/OptionsWin.cmake:
  • Source/cmake/OptionsWinCairo.cmake:

Source/WebCore:

Add stubs for an OpenSSL implementation of Web Crypto. Add the associated CMake
files for OpenSSL platforms and reference them on the platforms using OpenSSL.

Tests will be enabled as functionality lands.

  • PlatformFTW.cmake:
  • PlatformPlayStation.cmake:
  • PlatformWinCairo.cmake:
  • crypto/keys/CryptoKeyEC.h:
  • crypto/keys/CryptoKeyRSA.h:
  • crypto/openssl/CryptoAlgorithmAES_CBCOpenSSL.cpp: Added.

(WebCore::CryptoAlgorithmAES_CBC::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CBC::platformDecrypt):

  • crypto/openssl/CryptoAlgorithmAES_CFBOpenSSL.cpp: Added.

(WebCore::CryptoAlgorithmAES_CFB::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CFB::platformDecrypt):

  • crypto/openssl/CryptoAlgorithmAES_CTROpenSSL.cpp: Added.

(WebCore::CryptoAlgorithmAES_CTR::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CTR::platformDecrypt):

  • crypto/openssl/CryptoAlgorithmAES_GCMOpenSSL.cpp: Added.

(WebCore::CryptoAlgorithmAES_GCM::platformEncrypt):
(WebCore::CryptoAlgorithmAES_GCM::platformDecrypt):

  • crypto/openssl/CryptoAlgorithmAES_KWOpenSSL.cpp: Added.

(WebCore::CryptoAlgorithmAES_KW::platformWrapKey):
(WebCore::CryptoAlgorithmAES_KW::platformUnwrapKey):

  • crypto/openssl/CryptoAlgorithmECDHOpenSSL.cpp: Added.

(WebCore::CryptoAlgorithmECDH::platformDeriveBits):

  • crypto/openssl/CryptoAlgorithmECDSAOpenSSL.cpp: Added.

(WebCore::CryptoAlgorithmECDSA::platformSign):
(WebCore::CryptoAlgorithmECDSA::platformVerify):

  • crypto/openssl/CryptoAlgorithmHKDFOpenSSL.cpp: Added.

(WebCore::CryptoAlgorithmHKDF::platformDeriveBits):

  • crypto/openssl/CryptoAlgorithmHMACOpenSSL.cpp: Added.

(WebCore::CryptoAlgorithmHMAC::platformSign):
(WebCore::CryptoAlgorithmHMAC::platformVerify):

  • crypto/openssl/CryptoAlgorithmPBKDF2OpenSSL.cpp: Added.

(WebCore::CryptoAlgorithmPBKDF2::platformDeriveBits):

  • crypto/openssl/CryptoAlgorithmRSAES_PKCS1_v1_5OpenSSL.cpp: Added.

(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt):

  • crypto/openssl/CryptoAlgorithmRSASSA_PKCS1_v1_5OpenSSL.cpp: Added.

(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign):
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify):

  • crypto/openssl/CryptoAlgorithmRSA_OAEPOpenSSL.cpp: Added.

(WebCore::CryptoAlgorithmRSA_OAEP::platformEncrypt):
(WebCore::CryptoAlgorithmRSA_OAEP::platformDecrypt):

  • crypto/openssl/CryptoAlgorithmRSA_PSSOpenSSL.cpp: Added.

(WebCore::CryptoAlgorithmRSA_PSS::platformSign):
(WebCore::CryptoAlgorithmRSA_PSS::platformVerify):

  • crypto/openssl/CryptoAlgorithmRegistryOpenSSL.cpp: Added.

(WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms):

  • crypto/openssl/CryptoKeyECOpenSSL.cpp: Added.

(WebCore::CryptoKeyEC::keySizeInBits const):
(WebCore::CryptoKeyEC::platformSupportedCurve):
(WebCore::CryptoKeyEC::platformGeneratePair):
(WebCore::CryptoKeyEC::platformImportRaw):
(WebCore::CryptoKeyEC::platformImportJWKPublic):
(WebCore::CryptoKeyEC::platformImportJWKPrivate):
(WebCore::CryptoKeyEC::platformImportSpki):
(WebCore::CryptoKeyEC::platformImportPkcs8):
(WebCore::CryptoKeyEC::platformExportRaw const):
(WebCore::CryptoKeyEC::platformAddFieldElements const):
(WebCore::CryptoKeyEC::platformExportSpki const):
(WebCore::CryptoKeyEC::platformExportPkcs8 const):

  • crypto/openssl/CryptoKeyRSAOpenSSL.cpp: Added.

(WebCore::CryptoKeyRSA::create):
(WebCore::CryptoKeyRSA::isRestrictedToHash const):
(WebCore::CryptoKeyRSA::keySizeInBits const):
(WebCore::CryptoKeyRSA::generatePair):
(WebCore::CryptoKeyRSA::importSpki):
(WebCore::CryptoKeyRSA::importPkcs8):
(WebCore::CryptoKeyRSA::exportSpki const):
(WebCore::CryptoKeyRSA::exportPkcs8 const):
(WebCore::CryptoKeyRSA::exportData const):

  • crypto/openssl/SerializedCryptoKeyWrapOpenSSL.cpp: Added.

(WebCore::getDefaultWebCryptoMasterKey):
(WebCore::wrapSerializedCryptoKey):
(WebCore::unwrapSerializedCryptoKey):

  • platform/OpenSSL.cmake: Added.
6:27 PM Changeset in webkit [254957] by sbarati@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

Add an option for logging total phase times
​https://bugs.webkit.org/show_bug.cgi?id=206623

Reviewed by Robin Morisset and Keith Miller.

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):

  • jsc.cpp:

(runJSC):

  • runtime/OptionsList.h:
  • tools/CompilerTimingScope.cpp:

(JSC::CompilerTimingScope::CompilerTimingScope):
(JSC::CompilerTimingScope::~CompilerTimingScope):
(JSC::logTotalPhaseTimes):

  • tools/CompilerTimingScope.h:
6:25 PM Changeset in webkit [254956] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WTF

uniqueLogIdentifier() should generate a unique identifiers
​https://bugs.webkit.org/show_bug.cgi?id=206612

Reviewed by Brent Fulgham.

  • wtf/LoggerHelper.h:

(WTF::LoggerHelper::uniqueLogIdentifier):

6:14 PM Changeset in webkit [254955] by jiewen_tan@apple.com
  • 2 edits in trunk/Tools

WebKitTestRunner: move code sign configurations from WebKitTestRunner.xcconfig to DebugRelease.xcconfig
​https://bugs.webkit.org/show_bug.cgi?id=206607
<rdar://problem/56087327>

Reviewed by Alexey Proskuryakov.

  • WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig:
5:53 PM Changeset in webkit [254954] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

preprocess-idls.pl: CygwinPathIfNeeded should use Cygwin::win_to_posix_path instead of invoking cygpath
​https://bugs.webkit.org/show_bug.cgi?id=206407

Reviewed by Chris Dumez.

preprocess-idls.pl was invoking cygpath command for all input IDL
files. Use Cygwin::win_to_posix_path function instead.

  • bindings/scripts/preprocess-idls.pl: Changed the way to load idlFilesList as well as generate-bindings-all.pl does.

(CygwinPathIfNeeded): Copied from CygwinPathIfNeeded of generate-bindings-all.pl.

4:27 PM Changeset in webkit [254953] by dino@apple.com
  • 3 edits in trunk/Source/ThirdParty/ANGLE

REGRESSION (r253926): webgl/1.0.3/conformance/rendering/many-draw-calls.html is much slower, times out in debug
​https://bugs.webkit.org/show_bug.cgi?id=205668

Disable asserts when compiling ANGLE in release mode by defining
NDEBUG.

Patch by James Darpinian <James Darpinian> on 2020-01-22
Reviewed by Dean Jackson.

  • Configurations/ANGLE.xcconfig:
4:24 PM Changeset in webkit [254952] by dbates@webkit.org
  • 3 edits in trunk/Source/WebKitLegacy/mac

Legacy WebKit: Add SPI variant of -setSelectedDOMRange that can perform the selection as if triggered by the user
​https://bugs.webkit.org/show_bug.cgi?id=206622

Reviewed by Wenson Hsieh.

Add a new -setSelectedDOMRange SPI variant that takes a boolean to indicate whether the selection
was triggered by the user.

While I am here, I simplified and modernized the code. This includes moving the null check of
Frame::page() to the top of the function. This let me eliminate the null check for Frame::view()
because every frame that has a page must have a non-null view. I imported WebEditorClient.h
to get WebKit::core(NSSelectionAffinity) and remove a C-style cast to WebCore::EAffinity.
I also used more "auto".

  • WebView/WebFrame.mm:

(-[WebFrame setSelectedDOMRange:affinity:closeTyping:]): Modified to call the newly added variant,
passing "userTriggered:NO" to keep the current behavior.
(-[WebFrame setSelectedDOMRange:affinity:closeTyping:userTriggered:]): Added.

  • WebView/WebFramePrivate.h:
4:20 PM Changeset in webkit [254951] by rniwa@webkit.org
  • 3 edits in trunk/Source/WebCore

Make a Ref to WindowEventLoop when the timer to run tasks fires
​https://bugs.webkit.org/show_bug.cgi?id=206568

Reviewed by Antti Koivisto.

Keep WindowEventLoop alive explicitly while invoking EventLoop::run.

  • dom/WindowEventLoop.cpp:

(WebCore::WindowEventLoop::WindowEventLoop):
(WebCore::WindowEventLoop::didReachTimeToRun):

  • dom/WindowEventLoop.h:
3:48 PM Changeset in webkit [254950] by beidson@apple.com
  • 4 edits in trunk

REGRESSION (r253519): [WKWebView evaluateJavaScript:completionHandler:] gives a non-nil, non-Error result even when JavaScript cannot be evaluated
<rdar://problem/58544942> and ​https://bugs.webkit.org/show_bug.cgi?id=206608

Reviewed by Alex Christensen.

Source/WebCore:

Covered by new API test.

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::executeScriptInWorld): Address a FIXME added in 253519 which had predicted this problem.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:

(TEST):

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

REGRESSION: [ Mac WK2 ] webgpu/vertex-buffer-triangle-strip.html is a flakey image failure
​https://bugs.webkit.org/show_bug.cgi?id=198942

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:25 PM Changeset in webkit [254948] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

Remove unused enable macro ENABLE_JIT_CONSTANT_BLINDING
​https://bugs.webkit.org/show_bug.cgi?id=206415

Patch by Sam Weinig <​weinig@apple.com> on 2020-01-22
Reviewed by Anders Carlsson.

  • wtf/PlatformEnable.h:

ENABLE_JIT_CONSTANT_BLINDING is not used anywhere in WebKit so can be removed.

3:12 PM Changeset in webkit [254947] by Caio Lima
  • 8 edits in trunk/Source/JavaScriptCore

[32-bits][JIT] Fix build issues.
​https://bugs.webkit.org/show_bug.cgi?id=206603

Reviewed by Yusuke Suzuki.

This patch is adjusting places to use VirtualRegister instead of
offset directly, to make 32-bit JIT compilable again. Original authors
of this patch are Paulo Matos and Guillaume Emont.

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

(JSC::JIT::emit_compareAndJump):
(JSC::JIT::emit_compareUnsignedAndJump):
(JSC::JIT::emit_compareUnsigned):
(JSC::JIT::emit_compareAndJumpSlow):
(JSC::JIT::emit_op_unsigned):
(JSC::JIT::emit_op_inc):
(JSC::JIT::emit_op_dec):
(JSC::JIT::emitBinaryDoubleOp):

  • jit/JITCall32_64.cpp:

(JSC::JIT::emitPutCallResult):
(JSC::JIT::emit_op_ret):
(JSC::JIT::compileSetupFrame):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileOpCall):

  • jit/JITInlines.h:

(JSC::JIT::emitLoadTag):
(JSC::JIT::emitLoadPayload):
(JSC::JIT::emitGetVirtualRegister):
(JSC::JIT::emitJumpSlowCaseIfNotJSCell):
(JSC::JIT::getOperandConstantInt):
(JSC::JIT::emitGet): Deleted.

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_mov):
(JSC::JIT::emit_op_end):
(JSC::JIT::emit_op_new_object):
(JSC::JIT::emitSlow_op_new_object):
(JSC::JIT::emit_op_overrides_has_instance):
(JSC::JIT::emit_op_instanceof):
(JSC::JIT::emitSlow_op_instanceof):
(JSC::JIT::emitSlow_op_instanceof_custom):
(JSC::JIT::emit_op_is_empty):
(JSC::JIT::emit_op_is_undefined):
(JSC::JIT::emit_op_is_undefined_or_null):
(JSC::JIT::emit_op_is_boolean):
(JSC::JIT::emit_op_is_number):
(JSC::JIT::emit_op_is_cell_with_type):
(JSC::JIT::emit_op_is_object):
(JSC::JIT::emit_op_to_primitive):
(JSC::JIT::emit_op_set_function_name):
(JSC::JIT::emit_op_not):
(JSC::JIT::emit_op_jfalse):
(JSC::JIT::emit_op_jtrue):
(JSC::JIT::emit_op_jeq_null):
(JSC::JIT::emit_op_jneq_null):
(JSC::JIT::emit_op_jundefined_or_null):
(JSC::JIT::emit_op_jnundefined_or_null):
(JSC::JIT::emit_op_jneq_ptr):
(JSC::JIT::emit_op_eq):
(JSC::JIT::emitSlow_op_eq):
(JSC::JIT::emit_op_jeq):
(JSC::JIT::emit_op_neq):
(JSC::JIT::emitSlow_op_neq):
(JSC::JIT::emit_op_jneq):
(JSC::JIT::compileOpStrictEq):
(JSC::JIT::compileOpStrictEqJump):
(JSC::JIT::emit_op_eq_null):
(JSC::JIT::emit_op_neq_null):
(JSC::JIT::emit_op_throw):
(JSC::JIT::emit_op_to_number):
(JSC::JIT::emit_op_to_numeric):
(JSC::JIT::emit_op_to_string):
(JSC::JIT::emit_op_to_object):
(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_get_parent_scope):
(JSC::JIT::emit_op_switch_imm):
(JSC::JIT::emit_op_switch_char):
(JSC::JIT::emit_op_switch_string):
(JSC::JIT::emit_op_enter):
(JSC::JIT::emit_op_get_scope):
(JSC::JIT::emit_op_create_this):
(JSC::JIT::emit_op_to_this):
(JSC::JIT::emit_op_check_tdz):
(JSC::JIT::emit_op_has_structure_property):
(JSC::JIT::emit_op_has_indexed_property):
(JSC::JIT::emitSlow_op_has_indexed_property):
(JSC::JIT::emit_op_get_direct_pname):
(JSC::JIT::emit_op_enumerator_structure_pname):
(JSC::JIT::emit_op_enumerator_generic_pname):
(JSC::JIT::emit_op_profile_type):
(JSC::JIT::emit_op_log_shadow_chicken_prologue):
(JSC::JIT::emit_op_log_shadow_chicken_tail):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_put_getter_by_id):
(JSC::JIT::emit_op_put_setter_by_id):
(JSC::JIT::emit_op_put_getter_setter_by_id):
(JSC::JIT::emit_op_put_getter_by_val):
(JSC::JIT::emit_op_put_setter_by_val):
(JSC::JIT::emit_op_del_by_id):
(JSC::JIT::emit_op_del_by_val):
(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emitSlow_op_get_by_val):
(JSC::JIT::emit_op_put_by_val):
(JSC::JIT::emitGenericContiguousPutByVal):
(JSC::JIT::emitArrayStoragePutByVal):
(JSC::JIT::emitPutByValWithCachedId):
(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emitSlow_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emitSlow_op_get_by_id_with_this):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitSlow_op_put_by_id):
(JSC::JIT::emit_op_in_by_id):
(JSC::JIT::emitSlow_op_in_by_id):
(JSC::JIT::emitResolveClosure):
(JSC::JIT::emit_op_resolve_scope):
(JSC::JIT::emitLoadWithStructureCheck):
(JSC::JIT::emitGetClosureVar):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::emitSlow_op_get_from_scope):
(JSC::JIT::emitPutGlobalVariable):
(JSC::JIT::emitPutGlobalVariableIndirect):
(JSC::JIT::emitPutClosureVar):
(JSC::JIT::emit_op_put_to_scope):
(JSC::JIT::emit_op_get_from_arguments):
(JSC::JIT::emit_op_put_to_arguments):
(JSC::JIT::emit_op_get_internal_field):
(JSC::JIT::emit_op_put_internal_field):

  • jit/JSInterfaceJIT.h:

(JSC::JSInterfaceJIT::emitJumpIfNotJSCell):
(JSC::JSInterfaceJIT::emitLoadInt32):
(JSC::JSInterfaceJIT::emitLoadDouble):

2:31 PM Changeset in webkit [254946] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix build with recent SDKs.

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

(WebCore::MediaPlaybackTargetPickerMac::externalOutputDeviceAvailable):
(WebCore::MediaPlaybackTargetPickerMac::devicePicker):
(WebCore::MediaPlaybackTargetPickerMac::showPlaybackTargetPicker):

2:00 PM Changeset in webkit [254945] by commit-queue@webkit.org
  • 9 edits
    2 adds in trunk

Automatic link replacement via "Smart links" should emit "insertLink" input events
​https://bugs.webkit.org/show_bug.cgi?id=191306
Source/WebCore:

<rdar://problem/58491514>

Patch by Nikos Mouchtaris <Nikos Mouchtaris> on 2020-01-22
Reviewed by Wenson Hsieh.

Added support for outputting "insertLink" for input type and the url for the
data of the input event when smart link is used.

Test: fast/events/input-event-insert-link.html

  • editing/CreateLinkCommand.h:
  • editing/EditCommand.cpp:

(WebCore::inputTypeNameForEditingAction):

LayoutTests:

Patch by Nikos Mouchtaris <Nikos Mouchtaris> on 2020-01-22
Reviewed by Wenson Hsieh.

Due to webkit.org/b/162081 this test is skipped for WebKit2.

  • fast/events/input-event-insert-link-expected.txt: Added.
  • fast/events/input-event-insert-link.html: Added.
  • platform/gtk/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/win/TestExpectations:
  • platform/wincairo/TestExpectations:
1:58 PM Changeset in webkit [254944] by Jonathan Bedard
  • 2 edits in trunk/Tools

webkitpy: WebSocket server doesn't support Python 3 (Workaround)
​https://bugs.webkit.org/show_bug.cgi?id=206546

Reviewed by Alexey Proskuryakov.

websocket_server.py doesn't support Python 3, and needs to be run with
Python 2.

  • Scripts/webkitpy/layout_tests/servers/websocket_server.py:

(PyWebSocket._prepare_config): Use Python 2 explicitly.

1:42 PM Changeset in webkit [254943] by Caio Lima
  • 2 edits in trunk/Source/JavaScriptCore

[ARMv7] Assembler is generating wrong instruction for ldr r2, [r3, #7]
​https://bugs.webkit.org/show_bug.cgi?id=206231

Reviewed by Mark Lam.

When generating code for ldr on ARMv7, we were encoding immediates not
multiple of 4 using Encoding T1, which only accepts multiple of 4 as
immediates. This patch fixes such issue and allow us generate proper
code when offset imemdiates are not multiple of 4.

  • assembler/ARMv7Assembler.h:

(JSC::ARMv7Assembler::ldr):

1:33 PM Changeset in webkit [254942] by basuke.suzuki@sony.com
  • 2 edits in trunk/Tools

[build-webkit] Add option for toggling unified build
​https://bugs.webkit.org/show_bug.cgi?id=206597

Reviewed by Adrian Perez de Castro.

Added command line option for build-webkit script to toggle unified build.

  • Scripts/webkitperl/FeatureList.pm:
1:32 PM Changeset in webkit [254941] by commit-queue@webkit.org
  • 9 edits in trunk/Source/WebCore

Remove ImageBuffer::sizeForDestinationSize()
​https://bugs.webkit.org/show_bug.cgi?id=206541

Patch by Said Abou-Hallawa <​sabouhallawa@apple.com> on 2020-01-22
Reviewed by Tim Horton.

-- Remove ImageBuffer::sizeForDestinationSize() since it is currently

doing nothing. For CG and D2D ports, it scales a rect by the ratio
backingStoreSize / internalSize which is always 1. The constructor
ImageBuffer::ImageBuffer() sets m_size and m_data.backingStoreSize
to the same value always.

-- Remove ImageBuffer::isCompatibleWithContext() since it is not used.

-- Remove ImageBuffer::fastCopyImageMode() since it returns

DontCopyBackingStore on all ports.

  • html/CustomPaintCanvas.cpp:

(WebCore::CustomPaintCanvas::copiedImage const):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::texSubImage2D):
(WebCore::WebGLRenderingContextBase::texImage2D):
(WebCore::WebGLRenderingContextBase::drawImageIntoBuffer):

  • platform/graphics/ImageBuffer.cpp:

(WebCore::ImageBuffer::sizeForDestinationSize const): Deleted.
(WebCore::ImageBuffer::isCompatibleWithContext const): Deleted.

  • platform/graphics/ImageBuffer.h:

(WebCore::ImageBuffer::logicalSize const):

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::fastCopyImageMode): Deleted.

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::clipToImageBuffer):

  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::ImageBuffer::ImageBuffer):
(WebCore::createBitmapImageAfterScalingIfNeeded):
(WebCore::ImageBuffer::copyImage const):
(WebCore::ImageBuffer::sinkIntoImage):
(WebCore::ImageBuffer::toCFData const):
(WebCore::scaleSizeToUserSpace): Deleted.
(WebCore::ImageBuffer::sizeForDestinationSize const): Deleted.
(WebCore::ImageBuffer::fastCopyImageMode): Deleted.

  • platform/graphics/win/ImageBufferDirect2D.cpp:

(WebCore::scaleSizeToUserSpace): Deleted.
(WebCore::ImageBuffer::sizeForDestinationSize const): Deleted.
(WebCore::ImageBuffer::fastCopyImageMode): Deleted.

1:21 PM Changeset in webkit [254940] by don.olmstead@sony.com
  • 5 edits
    3 deletes in trunk/Tools

Share InjectedBundleController::platformInitialize
​https://bugs.webkit.org/show_bug.cgi?id=206598

Reviewed by Konstantin Tokarev.

Add a stub for platformInitialize in InjectedBundleController.cpp which is
used for non-Cocoa ports. Remove the platform specific stubs.

  • TestWebKitAPI/InjectedBundleController.cpp:

(TestWebKitAPI::InjectedBundleController::platformInitialize):

  • TestWebKitAPI/PlatformGTK.cmake:
  • TestWebKitAPI/PlatformWPE.cmake:
  • TestWebKitAPI/PlatformWin.cmake:
  • TestWebKitAPI/gtk/InjectedBundleControllerGtk.cpp: Removed.
  • TestWebKitAPI/win/InjectedBundleControllerWin.cpp: Removed.
  • TestWebKitAPI/wpe/InjectedBundleControllerWPE.cpp: Removed.
12:55 PM Changeset in webkit [254939] by ysuzuki@apple.com
  • 6 edits
    1 add in trunk

[JSC] DateMath should accept more ISO-8601 timezone designators even if they are not included in ECMA262 to produce expected results in the wild code
​https://bugs.webkit.org/show_bug.cgi?id=160287

Reviewed by Ross Kirsling.

JSTests:

  • stress/relaxed-timezone-designators.js: Added.

(shouldBe):
(parsedDate):

Source/WTF:

While ECMA262[1] always requires ":" in a timezone designator between hours and minutes (like, "hh:mm"),
ISO-8601 can accept additional forms, "+hh" and "+hhmm". This patch relaxes our Date parsing to accept this
type of timezone designators so that we can accept wider forms of date time formats. This addition does not
break the existing parsing rules since '+-' prefix can clarify that following sequences are timezones.

[1]: ​https://tc39.es/ecma262/#sec-date-time-string-format
[2]: ​https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators

  • wtf/DateMath.cpp:

(WTF::parseES5TimePortion):
(WTF::parseES5DateFromNullTerminatedCharacters):

LayoutTests:

  • js/date-parse-test-expected.txt:
  • js/script-tests/date-parse-test.js:
12:52 PM Changeset in webkit [254938] by Keith Rollin
  • 3 edits in trunk/Source/WebKit

Fix SDK availability macros
​https://bugs.webkit.org/show_bug.cgi?id=206463
<rdar://problem/58581906>

Reviewed by Timothy Hatcher.

Bug 197841 updated WebKit.xcconfig with regards to when it runs a
header post-processing script. This post-processing script grovels
over our exported headers, changing macros like WK_API_AVAILABLE to
the standard API_AVAILABLE. Because of the change in Bug 197841, the
script was no longer being run when preparing macOS 10.15 SDKs, which
was breaking those SDKs. Fix this by reverting the change, allowing
the macros to be replaced for macOS 10.15.

We also need to touch WKFoundation.h in order to support incremental
builds. If we don't, then the version of WKFoundation.h that was
exported in the previous build and that was incorrectly post-processed
would remain incorrectly post-processed. Touch the file so that it
will get re-exported and re-post-processed.

No new tests - no added or changed functionality.

  • Configurations/WebKit.xcconfig:
  • Shared/API/Cocoa/WKFoundation.h:
12:49 PM Changeset in webkit [254937] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Gardening, update TestExpectations
​https://bugs.webkit.org/show_bug.cgi?id=206590

Unreviewed gardening.

  • platform/gtk/TestExpectations:
12:45 PM Changeset in webkit [254936] by ysuzuki@apple.com
  • 22 edits
    1 add in trunk

[JSC] Add CheckArrayOrEmpty to handle the case when hoisting CheckArray for places where input can be empty
​https://bugs.webkit.org/show_bug.cgi?id=206571
<rdar://problem/58757016>

Reviewed by Saam Barati.

JSTests:

  • stress/check-array-or-empty.js: Added.

(C):

Source/JavaScriptCore:

Since we hoist CheckArray too in DFGTypeCheckHoistingPhase, we have the same problem to CheckStructureOrEmpty: we
could insert CheckArray where the input can include Empty. We should have CheckArrayOrEmpty as we have CheckStructureOrEmpty
for CheckStructure: CheckArrayOrEmpty accepts empty or cell with specified array-modes.

  • dfg/DFGAbstractInterpreter.h:

(JSC::DFG::AbstractInterpreter::filterArrayModes):

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGAbstractValue.cpp:

(JSC::DFG::AbstractValue::filterArrayModes):

  • dfg/DFGAbstractValue.h:
  • dfg/DFGArgumentsEliminationPhase.cpp:
  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGNode.h:

(JSC::DFG::Node::convertCheckArrayOrEmptyToCheckArray):
(JSC::DFG::Node::hasArrayMode):

  • dfg/DFGNodeType.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::checkArray):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGTypeCheckHoistingPhase.cpp:

(JSC::DFG::TypeCheckHoistingPhase::run):

  • dfg/DFGValidate.cpp:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckArrayOrEmpty):

12:39 PM Changeset in webkit [254935] by dino@apple.com
  • 2 edits in trunk/LayoutTests

[WebGL] Skip tests on WebGL bot that are skipped on trunk/master
​https://bugs.webkit.org/show_bug.cgi?id=206609

Reviewed by Antoine Quint.

These three tests fail when trying to get external resources.

  • webgl/TestExpectations:
12:31 PM Changeset in webkit [254934] by ysuzuki@apple.com
  • 10 edits in trunk/Source/JavaScriptCore

[JSC] Attempt to fix BytecodeIndex handling in 32bit
​https://bugs.webkit.org/show_bug.cgi?id=206577

Reviewed by Keith Miller.

This patch mechanically lists up places using Instruction* as BytecodeIndex and fixes it,
since 32bit also starts using an offset as BytecodeIndex. This patch also fixes several
places where LLInt PB is not handled correctly in 32bit after we start using PB register
even in 32bit.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::bytecodeIndexFromCallSiteIndex):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::reifyInlinedCallFrames):
(JSC::DFG::adjustAndJumpToTarget):

  • jit/JITCall32_64.cpp:

(JSC::JIT::compileOpCall):

  • jit/JITInlines.h:

(JSC::JIT::updateTopCallFrame):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_log_shadow_chicken_tail):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emitPutByValWithCachedId):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emit_op_in_by_id):

  • llint/LLIntData.cpp:

(JSC::LLInt::Data::performAssertions):

  • llint/LowLevelInterpreter.cpp:

(JSC::CLoop::execute):

  • runtime/SamplingProfiler.cpp:

(JSC::tryGetBytecodeIndex):
(JSC::SamplingProfiler::processUnverifiedStackTraces):

11:45 AM Changeset in webkit [254933] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC] Do not create a FormattingContext to compute intrinsic width unless there's some content.
​https://bugs.webkit.org/show_bug.cgi?id=206581
<rdar://problem/58798593>

Reviewed by Antti Koivisto.

We should only construct a formatting context when it has some content.

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::FormattingContext):

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::intrinsicWidthConstraints):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):

11:45 AM Changeset in webkit [254932] by Alan Bujtas
  • 2 edits in trunk/Source/WebKitLegacy/mac

REGRESSION (r254923): [mac-wk1] http/tests/inspector/network/har/har-page.html crashing in WebCore::Display::Box::contentBox()
​https://bugs.webkit.org/show_bug.cgi?id=206600

Unreviewed.

r254923 missed this one place to turn off LFC integration.

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):

11:31 AM Changeset in webkit [254931] by Chris Dumez
  • 43 edits
    1 copy
    1 move in trunk/Source

Frequent NetworkConnectionToWebProcess::CookiesEnabled sync IPC when browsing reddit.com
​https://bugs.webkit.org/show_bug.cgi?id=206450

Reviewed by Darin Adler.

Source/WebCore:

Move HTTPCookieAcceptPolicy.h header from WebKit to WebCore so that the HTTPCookieAcceptPolicy enum
can be used in NetworkStorageSession. Replace NetworkStorageSession::cookiesEnabled() with a more
detailed NetworkStorageSession::cookieAcceptPolicy() method.

  • WebCore.xcodeproj/project.pbxproj:
  • loader/CookieJar.cpp:

(WebCore::CookieJar::cookiesEnabled const):

  • platform/network/HTTPCookieAcceptPolicy.h: Renamed from Source/WebKit/Shared/HTTPCookieAcceptPolicy.h.
  • platform/network/NetworkStorageSession.cpp:
  • platform/network/NetworkStorageSession.h:
  • platform/network/cf/NetworkStorageSessionCFNetWin.cpp:

(WebCore::NetworkStorageSession::cookieAcceptPolicy const):

  • platform/network/cocoa/NetworkStorageSessionCocoa.mm:

(WebCore::NetworkStorageSession::cookieAcceptPolicy const):

  • platform/network/curl/NetworkStorageSessionCurl.cpp:

(WebCore::NetworkStorageSession::cookieAcceptPolicy const):

  • platform/network/soup/NetworkStorageSessionSoup.cpp:

(WebCore::NetworkStorageSession::cookieAcceptPolicy const):

Source/WebKit:

Frequent NetworkConnectionToWebProcess::CookiesEnabled sync IPC when browsing reddit.com. This
happens every time the page script calls navigator.cookieEnabled. To address the issue, we now
store the "cookie accept policy" on the WebContent process side. This allows us to know
synchronously on the WebContent process if cookies are enabled or not and without any IPC to
the network process. To achieve this, I added a new cookieAcceptPolicy member to
NetworkProcessConnectionInfo so that the WebContent process is aware of the initial policy when
it connects to the network process. The policy on the WebContent process side is then kept up
to date via IPCs from the network process to the WebContent processes whenever the cookie
accept policy changes.

  • NetworkProcess/Cookies/WebCookieManager.cpp:

(WebKit::WebCookieManager::setHTTPCookieAcceptPolicy):
(WebKit::WebCookieManager::getHTTPCookieAcceptPolicy):

  • NetworkProcess/Cookies/WebCookieManager.h:
  • NetworkProcess/Cookies/WebCookieManager.messages.in:
  • NetworkProcess/Cookies/curl/WebCookieManagerCurl.cpp:
  • NetworkProcess/Cookies/mac/WebCookieManagerMac.mm:
  • NetworkProcess/Cookies/soup/WebCookieManagerSoup.cpp:
  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::cookieAcceptPolicyChanged):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
(WebKit::NetworkProcess::cookieAcceptPolicyChanged):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkProcessCreationParameters.h:
  • Shared/WebProcessCreationParameters.h:
  • UIProcess/API/APIHTTPCookieStore.cpp:

(API::HTTPCookieStore::setHTTPCookieAcceptPolicy):
(API::HTTPCookieStore::setHTTPCookieAcceptPolicyInDefaultUIProcessCookieStore):

  • UIProcess/API/APIHTTPCookieStore.h:
  • UIProcess/API/C/WKAPICast.h:

(WebKit::toHTTPCookieAcceptPolicy):
(WebKit::toAPI):

  • UIProcess/API/Cocoa/APIHTTPCookieStoreCocoa.mm:

(API::toNSHTTPCookieAcceptPolicy):
(API::HTTPCookieStore::setHTTPCookieAcceptPolicyInDefaultUIProcessCookieStore):

  • UIProcess/API/Cocoa/WKHTTPCookieStore.mm:
  • UIProcess/API/Cocoa/WKProcessPool.mm:

(toHTTPCookieAcceptPolicy):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::openNetworkProcessConnection):

  • UIProcess/WebCookieManagerProxy.h:
  • UIProcess/WebProcessPool.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Network/NetworkProcessConnection.cpp:

(WebKit::NetworkProcessConnection::NetworkProcessConnection):
(WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles):
(WebKit::NetworkProcessConnection::cookiesEnabled):
(WebKit::NetworkProcessConnection::cookieAcceptPolicyChanged):

  • WebProcess/Network/NetworkProcessConnection.h:

(WebKit::NetworkProcessConnection::create):

  • WebProcess/Network/NetworkProcessConnection.messages.in:
  • WebProcess/Network/NetworkProcessConnectionInfo.h:

(WebKit::NetworkProcessConnectionInfo::encode const):
(WebKit::NetworkProcessConnectionInfo::decode):

  • WebProcess/WebPage/WebCookieJar.cpp:

(WebKit::WebCookieJar::cookiesEnabled const):

  • Return false early if the document has no frame / page (cookie-averse as per spec)
  • Return false early if ITP is enabled and it is a third-party iframe without storage access. This bypasses the sync IPC call completely for such iframes.
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::ensureNetworkProcessConnection):

11:29 AM Changeset in webkit [254930] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Stop doing synchronous DecidePolicyForNavigationActionSync IPCs for initially empty document loads
​https://bugs.webkit.org/show_bug.cgi?id=206458

Reviewed by Alex Christensen.

Stop doing synchronous DecidePolicyForNavigationActionSync IPCs for initially empty document loads. Instead, we
now do regular asynchronous DecidePolicyForNavigationAction IPCs for such loads and we ignore the response from
the client, allowing WebCore to proceed with the load synchronously.

  • loader/PolicyChecker.cpp:

(WebCore::PolicyChecker::checkNavigationPolicy):

10:55 AM Changeset in webkit [254929] by Jonathan Bedard
  • 6 edits in trunk/Tools

webkitpy: Make logging during ImageDiff crashes accurate
​https://bugs.webkit.org/show_bug.cgi?id=206542

Reviewed by Aakash Jain.

When ImageDiff crashes, the generated logs are not accurate, they
reference a crash in test output when the test will actually fail
with an Image failure. The owner of a ServerProcess should be able
to customize this error message.

  • Scripts/webkitpy/port/image_diff.py:

(ImageDiffer._start): Pass ImageDiff specific crash message.

  • Scripts/webkitpy/port/port_testcase.py:

(PortTestCase.test_diff_image.make_proc): Match ImageDiff calcite.
(PortTestCase.test_diff_image_passed): Ditto.
(PortTestCase.test_diff_image_failed): Ditto.
(PortTestCase.test_diff_image_crashed.make_proc): Ditto.

  • Scripts/webkitpy/port/server_process.py:

(ServerProcess.init): Support a custom message when the process crashes.
(ServerProcess.write): Ditto.
(ServerProcess._wait_for_data_and_update_buffers_using_select): Ditto.
(ServerProcess.has_crashed): Ditto.

  • Scripts/webkitpy/port/server_process_mock.py:

(MockServerProcess.init): Match the ServerProcess constructor.

  • Scripts/webkitpy/port/simulator_process.py:

(SimulatorProcess.init): Support a custom message when the process crashes.

10:19 AM Changeset in webkit [254928] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Flaky Test: svg/wicd/rightsizing-grid.xhtml
​https://bugs.webkit.org/show_bug.cgi?id=203222

Unreviewed test gardening.

  • platform/ios/TestExpectations: Mark test as flaky.
  • platform/mac/TestExpectations: Ditto.
9:07 AM Changeset in webkit [254927] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC] Do not create a FormattingContext unless there's content to layout.
​https://bugs.webkit.org/show_bug.cgi?id=206570
<rdar://problem/58785735>

Reviewed by Antti Koivisto.

We still construct "no-op" FormattingContexts through the computeIntrinsicWidth* codepath (see webkit.org/b/206581).

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::FormattingContext):
(WebCore::Layout::FormattingContext::layoutOutOfFlowContent):

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layoutInFlowContent):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot):

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::layoutTableCellBox):

9:06 AM Changeset in webkit [254926] by sbarati@apple.com
  • 8 edits in trunk/Source/JavaScriptCore

Throw away baseline code if there is an optimized replacement
​https://bugs.webkit.org/show_bug.cgi?id=202503
<rdar://problem/58552041>

Reviewed by Yusuke Suzuki.

This patch's goal is to help us save JIT executable memory by throwing
away baseline code when it has an optimized replacement. To make it
easy to reason about, we do this when finalizing a GC, when the CodeBlock
is not on the stack, and when no OSR exits are linked to jump to the baseline
code. Also, as a measure to combat a performance regression, we only throw
away code on the second GC cycle in which it is eligible for this.
When we downgrade Baseline to LLInt, we also throw away all JIT data
and unlink all incoming calls.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::resetJITData):
(JSC::CodeBlock::optimizedReplacement):
(JSC::CodeBlock::hasOptimizedReplacement):
(JSC::CodeBlock::tallyFrequentExitSites):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::setJITCode):

  • dfg/DFGDriver.cpp:

(JSC::DFG::compileImpl):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::callerReturnPC):
(JSC::DFG::adjustAndJumpToTarget):

  • heap/CodeBlockSet.cpp:

(JSC::CodeBlockSet::isCurrentlyExecuting):

  • heap/CodeBlockSet.h:
  • heap/Heap.cpp:

(JSC::Heap::finalizeUnconditionalFinalizers):
(JSC::Heap::runEndPhase):

8:59 AM Changeset in webkit [254925] by Matt Lewis
  • 5 edits in trunk/Tools

Test history links on the dashboard should go to the new results database
​https://bugs.webkit.org/show_bug.cgi?id=205821

Reviewed by Jonathan Bedard.

Made changes to the various locations that we use the old database in the main dashboard
and test results pages.

  • BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:

(ui.urlForFlakinessDashboard):

  • BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:

(ui.results.FlakinessData.base._handleMessage):

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitTestHistory.js:

(TestHistory):
(TestHistory.prototype.historyPageURLForTest):

  • BuildSlaveSupport/build.webkit.org-config/templates/root.html:
8:51 AM Changeset in webkit [254924] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC Hardening] Only process Messages::NetworkProcess messages when sent by the UIProcess
​https://bugs.webkit.org/show_bug.cgi?id=206558

Unreviewed post-landing review comments from Darin Adler after r254892.

  • Platform/IPC/StringReference.h:

(IPC::operator==):
(IPC::operator!=):
(IPC::StringReference::Hash::equal):
(IPC::StringReference::operator==): Deleted.
(IPC::StringReference::operator!=): Deleted.

7:43 AM Changeset in webkit [254923] by Antti Koivisto
  • 14 edits in trunk

[LFC][Integration] Disable integration to see performance impact
​https://bugs.webkit.org/show_bug.cgi?id=206576
<rdar://problem/58562185>

Reviewed by Zalan Bujtas.

Source/WebCore:

Disable by default for now to get a clearer picture of the performance impact.

  • page/RuntimeEnabledFeatures.h:

Source/WebKit:

  • Shared/WebPreferences.yaml:

Tools:

  • DumpRenderTree/TestOptions.h:

LayoutTests:

  • fast/dom/Range/getBoundingClientRect-expected.txt:
  • platform/ios/fast/text/whitespace/pre-break-word-expected.txt:
  • platform/ios/fast/text/word-break-expected.txt:
  • platform/mac/fast/text/hyphenate-limit-lines-expected.txt:
  • platform/mac/fast/text/whitespace/pre-break-word-expected.txt:
  • platform/mac/fast/text/word-break-expected.txt:
7:40 AM Changeset in webkit [254922] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][BFC] No need to special case formatting context root layout
​https://bugs.webkit.org/show_bug.cgi?id=206569
<rdar://problem/58784767>

Reviewed by Antti Koivisto.

Let's move out all the formatting context layout logic from layoutFormattingContextRoot.

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layoutInFlowContent):
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot): Deleted.

  • layout/blockformatting/BlockFormattingContext.h:
7:19 AM Changeset in webkit [254921] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][BFC] Move float avoider special available width handling to BlockFormattingContext::computeWidthAndMargin
​https://bugs.webkit.org/show_bug.cgi?id=206567
<rdar://problem/58783979>

Reviewed by Antti Koivisto.

Now we can move the compute* functions from layoutFormattingContextRoot to the main loop in layoutInFlowContent.

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layoutInFlowContent):
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot):
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin):

  • layout/blockformatting/BlockFormattingContext.h:
6:48 AM Changeset in webkit [254920] by commit-queue@webkit.org
  • 2 edits
    1 delete in trunk/LayoutTests/imported/w3c

Fix fetch/api/policies/referrer-origin-worker.html

​https://bugs.webkit.org/show_bug.cgi?id=206520

Patch by Rob Buis <​rbuis@igalia.com> on 2020-01-22
Reviewed by Youenn Fablet.

Revert, it was the wrong way to fix this

  • web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt:
  • web-platform-tests/fetch/api/policies/referrer-origin-worker.html.headers: Removed.
6:26 AM Changeset in webkit [254919] by youenn@apple.com
  • 12 edits in trunk

Add logging of the source of a response used to respond a fetch event
​https://bugs.webkit.org/show_bug.cgi?id=206426

Reviewed by Darin Adler.

Source/WebCore:

Add a DOMCache response source value.
This is set on responses created by DOMCache.
Update code that checks the source to handle this new value similary to ApplicationCache.
No change of behavior.

Add an internal test to verify a fetch response grabbed from DOM cache has the right source.

  • Modules/cache/DOMCache.cpp:

(WebCore::DOMCache::updateRecords):

  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::responseSource):

  • loader/ResourceLoader.cpp:

(WebCore::logResourceResponseSource):

  • platform/network/ResourceResponseBase.h:
  • testing/Internals.cpp:

(WebCore::responseSourceToString):

  • workers/service/context/ServiceWorkerFetch.cpp:

(WebCore::ServiceWorkerFetch::processResponse):
Remove setting of the source to service worker, this is done in NetworkProcess
just before sending the response to the WebProcess.

Source/WebKit:

  • NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:

(WebKit::ServiceWorkerFetchTask::didReceiveResponse):
Log the source of the response.

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::havePerformedSecurityChecks const):
Add case of DOMCache, similar to ServiceWorker.

LayoutTests:

  • http/wpt/cache-storage/cache-put-keys.https.any.js:

(cache_test):

6:08 AM Changeset in webkit [254918] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.26/Source/JavaScriptCore

Unreviewed. Fix non-unified build

  • runtime/NativeErrorConstructor.h: Add missing inclusion of JSGlobalObject.h.
6:08 AM Changeset in webkit [254917] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.26/Source/JavaScriptCore

Merged r254637 - Offlineasm warnings with newer Ruby versions
​https://bugs.webkit.org/show_bug.cgi?id=206233

Reviewed by Yusuke Suzuki.

Avoid a warning about using Object#=~ on Annotation instances, which
has been deprecated in Ruby 2.7.

  • offlineasm/parser.rb: Swap checks to prevent applying the =~ operator

to Annotation instances, which do not define it.

5:15 AM Changeset in webkit [254916] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION (r254893): Apple Win 10 Debug build failure

Introduced by:

Make RenderingMode and AlphaPremultiplication enum classes and move them to separate headers
​https://bugs.webkit.org/show_bug.cgi?id=206516

  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::ImageBuffer::ImageBuffer): Use RenderingMode::Unaccelerated.

3:21 AM Changeset in webkit [254915] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.26.3

WebKitGTK 2.26.3

3:21 AM Changeset in webkit [254914] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.26

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.26.3 release

.:

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

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.26.3.
2:42 AM Changeset in webkit [254913] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.26/LayoutTests

Merge r254185 - [GTK] fast/text/atsui-rtl-override-selection.html is failing since r254114
​https://bugs.webkit.org/show_bug.cgi?id=205898

Unreviewed test gardening.

Patch by Fujii Hironori <​fujii.hironori@gmail.com> on 2020-01-07

  • platform/gtk/fast/text/atsui-rtl-override-selection-expected.png:
  • platform/gtk/fast/text/atsui-rtl-override-selection-expected.txt:
2:42 AM Changeset in webkit [254912] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.26

Merge r254114 - ComplexTextController::offsetForPosition returns a wrong offset for a glyph boundary in a RTL text
​https://bugs.webkit.org/show_bug.cgi?id=205486

Reviewed by Ross Kirsling.

Source/WebCore:

ComplexTextController::offsetForPosition had the following code:

unsigned hitIndex = hitGlyphStart + (hitGlyphEnd - hitGlyphStart) * (m_run.ltr() ? x / adjustedAdvance : 1 - x / adjustedAdvance);

If m_run.ltr() was false and x == 0, hitIndex would become hitGlyphEnd.
This is not expected. It expects hitIndex < hitGlyphEnd if hitGlyphStart β‰  hitGlyphEnd.
Let hitIndex be hitGlyphStart-1 in the such condition.

Above change makes fast/text/ellipsis-text-rtl.html starting to
fail because offsetForPosition returns the character offset of the
next glyph if the argument 'h' is in a glyph boundary. In RTL
text, offsetForPosition should return a character offset of the
previous glyph in case of a glyph boundary. Use '<=' instead of '<'
for RTL text in order to select previous glyphs for glyph
boundaries.

Test: fast/dom/Document/CaretRangeFromPoint/rtl.html

  • platform/graphics/ComplexTextController.cpp:

(WebCore::ComplexTextController::offsetForPosition): Compute correct hitGlyphEnd for RTL.

LayoutTests:

  • fast/dom/Document/CaretRangeFromPoint/rtl-expected.txt: Added.
  • fast/dom/Document/CaretRangeFromPoint/rtl.html: Added.
  • platform/gtk/TestExpectations: Unmarked imported/blink/editing/selection/offset-from-point-complex-scripts.html.
2:42 AM Changeset in webkit [254911] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.26

Merge r254190 - [HarfBuzz][GTK] fast/text/complex-first-glyph-with-initial-advance.html is failing
​https://bugs.webkit.org/show_bug.cgi?id=118221

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Arabic diacritics made glyphs vertically unaligned if the first
glyph had a vertical offset.

The initial advance should be same with the first glyph origin for
HarfBuzz. See the diagram in ComplexTextController.h for details.
<​https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/platform/graphics/ComplexTextController.h?rev=224007#L109>

drawGlyphs of Cairo port was assuming upward y-axis for glyph
advances even though those of Mac and AppleWin port are assuming
downward y-axis. This is a problem for Windows ports because
AppleWin and WinCairo port are sharing the code calculating
advances.

Covered by existing tests.

  • platform/graphics/cairo/FontCairo.cpp:

(WebCore::FontCascade::drawGlyphs):

  • platform/graphics/cairo/GraphicsContextImplCairo.cpp:

(WebCore::GraphicsContextImplCairo::drawGlyphs):
Sum up the height of advances into yOffset instead of subtraction.

  • platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:

(WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun):
Don't negate offsetY. Set m_initialAdvance as the first item of
m_glyphOrigins.

LayoutTests:

  • platform/gtk/TestExpectations: Unmarked

fast/text/complex-first-glyph-with-initial-advance.html and
fast/text/initial-advance-in-intermediate-run-complex.html.

  • platform/wincairo/TestExpectations: Unmarked

fast/text/complex-first-glyph-with-initial-advance.html and
fast/text/complex-initial-advance.html.

2:42 AM Changeset in webkit [254910] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.26/Source/WebCore

Merge r253470 - [HarfBuzz] WebKitWebProcess crashes when displaying a KaTeX formula
​https://bugs.webkit.org/show_bug.cgi?id=204689

Reviewed by Carlos Alberto Lopez Perez.

We are creating and caching an hb_font_t for the given FontPlatformData's FT_Face, but the face is not
referenced so it is destroyed eventually while the hb_font_t is still alive. We need to keep a reference of the
FT_Face while the hb_font_t is alive.

  • platform/graphics/freetype/FontPlatformDataFreeType.cpp:

(WebCore::FontPlatformData::createOpenTypeMathHarfBuzzFont const): Create the hb_face_t with
hb_ft_face_create_referenced() instead of hb_ft_face_create_cached().

2:42 AM Changeset in webkit [254909] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.26/Source/WebKit

Merge r254119 - [SOUP] HSTS Support causes page loading to fail with "Operation was cancelled"
​https://bugs.webkit.org/show_bug.cgi?id=203620

Reviewed by Michael Catanzaro.

The problem is that we are assuming that request cancellation happens synchronously, but it can happen that the
async ready callback for the previous request is called after the new one has started.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::sendRequestCallback): Return early if this is a previous request already cancelled.

2:26 AM Changeset in webkit [254908] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.26

Merge r251957 - SVG pair properties must be detached from their owner before it's deleted
​https://bugs.webkit.org/show_bug.cgi?id=203545

Reviewed by Simon Fraser.

Source/WebCore:

SVGAnimatedPropertyPairAccessor needs to override its detach() method so
each of its pair properties detaches itself from the owner.
SVGPointerMemberAccessor does the same thing but for a single property
which covers all the list properties as well.

Test: svg/custom/pair-properties-detach.html

  • svg/properties/SVGAnimatedPropertyPairAccessor.h:

LayoutTests:

  • svg/custom/pair-properties-detach-expected.txt: Added.
  • svg/custom/pair-properties-detach.html: Added.
2:26 AM Changeset in webkit [254907] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.26

Merge r250929 - RunResolver::rangeForRendererWithOffsets should check for range end
​https://bugs.webkit.org/show_bug.cgi?id=202761
<rdar://problem/55917924>

Reviewed by Antti Koivisto.

Source/WebCore:

This patch ensures that when rangeForRenderer comes back with a collapsed run (empty range), rangeForRendererWithOffsets returns an empty range as well.

Test: fast/text/simple-line-layout-range-check-end.html

  • rendering/SimpleLineLayoutResolver.cpp:

(WebCore::SimpleLineLayout::RunResolver::rangeForRendererWithOffsets const):

LayoutTests:

  • fast/text/simple-line-layout-range-check-end-expected.txt: Added.
  • fast/text/simple-line-layout-range-check-end.html: Added.
2:26 AM Changeset in webkit [254906] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.26

Merge r250585 - ObjectAllocationSinkingPhase shouldn't insert hints for allocations which are no longer valid
​https://bugs.webkit.org/show_bug.cgi?id=199361
<rdar://problem/52454940>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/allocation-sinking-hints-are-valid-ssa-2.js: Added.

(main.fn):
(main.executor):
(main):

  • stress/allocation-sinking-hints-are-valid-ssa.js: Added.

(main.fn):
(main.executor):
(main):

Source/JavaScriptCore:

In a prior fix to the object allocation sinking phase, I added code where we
made sure to insert PutHints over Phis for fields of an object at control flow
merge points. However, that code didn't consider that the base of the PutHint
may no longer be a valid heap location. This could cause us to emit invalid
SSA code by referring to a node which does not dominate the PutHint location.
This patch fixes the bug to only emit the PutHints when valid.

This patch also makes it so that DFGValidate actually validates that the graph
is in valid SSA form. E.g, any use of a node N must be dominated by N.

  • dfg/DFGObjectAllocationSinkingPhase.cpp:
  • dfg/DFGValidate.cpp:
2:19 AM WebKitGTK/2.26.x edited by Carlos Garcia Campos
(diff)
2:19 AM Changeset in webkit [254905] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.26/Source/WebCore

Merge r252398 - [GStreamer] Several issues while trying to play a video on NextCloud
​https://bugs.webkit.org/show_bug.cgi?id=203194

Reviewed by Philippe Normand.

First problem was the loader not being restarted in PAUSED, so
sometimes playback never started since buffering never reached
100%.

Then, after investigating blocksizes and not being a viable
solution, reducing the 200_ms to 100_ms wait for new data was the
trick to avoid choppyness.

During investigation several issues were fixed like turning
GstQuery* into GRefPtr for MediaPlayerPrivateGStreamer::buffered,
making blocksize unsigned instead of uint64_t as it is in
GStreamer and creating and using WEBKIT_WEB_SRC_CAST since many
uses of WEBKIT_WEB_SRC cast were already protected by
WEBKIT_IS_WEB_SRC.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::buffered const): GRefPtr<GstQuery>.
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::sourceSetup):
(WebCore::MediaPlayerPrivateGStreamer::didPassCORSAccessCheck const):
Use WEBKIT_WEB_SRC_CAST.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcCreate): Reduce wait for data down to 100_ms and
request download restart also in PAUSED.
(CachedResourceStreamingClient::checkUpdateBlocksize): Turn
blocksize to unsigned.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.h: Add

WEBKIT_WEB_SRC_CAST.

2:19 AM Changeset in webkit [254904] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.26/Source/WebCore

Merge r253284 - [GStreamer] Crashes in MediaPlayerPrivateGStreamer::ensureGstGLContext
​https://bugs.webkit.org/show_bug.cgi?id=204848

Reviewed by Michael Catanzaro.

Make sure the GL video sink uses a valid WebKit shared GL context.

  • platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:

(ensureGstGLContext):
(webKitGLVideoSinkProbePlatform):

2:19 AM Changeset in webkit [254903] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.26

Merge r251680 - Hidden framesets should provide default edgeInfo value
​https://bugs.webkit.org/show_bug.cgi?id=203506
<rdar://problem/56233726>

Reviewed by Simon Fraser.

Source/WebCore:

The grid information (and certain associated structures e.g. edegeInfo) for a frameset is updated through the layout() call.
When the used height/width computes to zero on a frameset child (frame or nested frameset), we don't run layout on the renderer thus
hidden nested framesets can only provide the default edge info.
This patch changes this behaviour and we now call layout on those hidden renderers the same way we do it on iOS.

Test: fast/frames/hidden-frameset.html

  • rendering/RenderFrameSet.cpp:

(WebCore::RenderFrameSet::edgeInfo const):

LayoutTests:

  • fast/frames/hidden-frameset-expected.txt: Added.
  • fast/frames/hidden-frameset.html: Added.
2:19 AM Changeset in webkit [254902] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.26/Source

Merge r250747 - Fix build with icu 65.1
​https://bugs.webkit.org/show_bug.cgi?id=202600

Patch by Heiko Becker <​heirecka@exherbo.org> on 2019-10-04
Reviewed by Konstantin Tokarev.

Source/WebCore:

  • dom/Document.cpp:

(WebCore::isValidNameNonASCII):
(WebCore::Document::parseQualifiedName):

Source/WTF:

  • wtf/URLHelpers.cpp:

(WTF::URLHelpers::allCharactersInIDNScriptWhiteList):

2:19 AM Changeset in webkit [254901] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.26/Source/WebKit

Merge r250743 - Unreviewed WinCairo build fix for r250717.

  • WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h:

(WebKit::LayerTreeHost::invalidate): Deleted.

Jan 21, 2020:

11:00 PM Changeset in webkit [254900] by commit-queue@webkit.org
  • 9 edits
    1 move
    1 add in trunk/Source/WebCore

Move ImageBuffer utilities function to separate files
​https://bugs.webkit.org/show_bug.cgi?id=206519

Patch by Said Abou-Hallawa <​sabouhallawa@apple.com> on 2020-01-21
Reviewed by Tim Horton.

These utilities function are merely related to the ImageData.

  • SourcesGTK.txt:
  • html/HTMLCanvasElement.cpp:
  • platform/SourcesCairo.txt:
  • platform/graphics/ImageBuffer.h:
  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::toData const):
(WebCore::writeFunction): Deleted.
(WebCore::encodeImage): Deleted.

  • platform/graphics/cairo/ImageBufferUtilitiesCairo.cpp: Added.

(WebCore::writeFunction):
(WebCore::encodeImage):
(WebCore::data):

  • platform/graphics/cairo/ImageBufferUtilitiesCairo.h: Added.
  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::jpegUTI): Deleted.
(WebCore::utiFromImageBufferMIMEType): Deleted.
(WebCore::encodeImage): Deleted.
(WebCore::dataURL): Deleted.
(WebCore::dataVector): Deleted.
(WebCore::cfData): Deleted.
(WebCore::data): Deleted.

  • platform/graphics/cg/ImageBufferDataCG.h:
  • platform/graphics/cg/ImageBufferUtilitiesCG.cpp:

(WebCore::jpegUTI):
(WebCore::utiFromImageBufferMIMEType):
(WebCore::encodeImage):
(WebCore::cfData):
(WebCore::dataURL):
(WebCore::dataVector):
(WebCore::data):

  • platform/graphics/cg/ImageBufferUtilitiesCG.h:
  • platform/graphics/gtk/ImageBufferGtk.cpp: Removed.
7:11 PM Changeset in webkit [254899] by Ross Kirsling
  • 5 edits in trunk/Source

[JSC] Date parse logic should be less redundant
​https://bugs.webkit.org/show_bug.cgi?id=206560

Reviewed by Darin Adler.

Source/JavaScriptCore:

Our date parsing logic is doing an excessive amount of NaN-checking;
let's streamline this by having one JSC-side helper function instead of two.

  • runtime/JSDateMath.cpp:

(JSC::parseDate):
(JSC::parseDateFromNullTerminatedCharacters): Deleted.
(JSC::parseES5DateFromNullTerminatedCharacters): Deleted.

Source/WTF:

  • wtf/DateMath.cpp:

(WTF::parseDateFromNullTerminatedCharacters):

  • wtf/DateMath.h:

Align function signature with parseES5DateFromNullTerminatedCharacters.
Namely, drop the integer out param and flip the boolean one.

5:59 PM Changeset in webkit [254898] by Fujii Hironori
  • 9 edits
    2 adds in trunk

A partially selected RTL text is placed at a wrong vertical position if it has a vertical initial advance
​https://bugs.webkit.org/show_bug.cgi?id=205990

Reviewed by Darin Adler.

Source/WebCore:

FontCascade::getGlyphsAndAdvancesForComplexText returned only X
position of the first glyph, but Y position.

Because GlyphBuffer is using glyph advances instead glyph
positions, it's not simple to get the first glyph position of the
part of a RTL texts.
FontCascade::getGlyphsAndAdvancesForComplexText is calculating the
X position of it by subtracting right side part width from the
total width. It should do same for Y position.

macOS and iOS ports don't use the code to draw selected texts.

Test: fast/text/initial-advance-selected-text.html

  • platform/graphics/ComplexTextController.cpp:

(WebCore::ComplexTextController::offsetForPosition):
(WebCore::ComplexTextController::adjustGlyphsAndAdvances):

  • platform/graphics/ComplexTextController.h: Replaced m_totalWidth with m_totalAdvance.

(WebCore::ComplexTextController::totalWidth const): Removed.
(WebCore::ComplexTextController::totalAdvance const): Added.

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::glyphBufferForTextRun const): Changed the return type from float to FloatSize.
(WebCore::FontCascade::drawText const):
(WebCore::FontCascade::displayListForTextRun const):
(WebCore::FontCascade::getGlyphsAndAdvancesForComplexText const): Changed the return type from float to FloatSize.
(WebCore::FontCascade::drawGlyphBuffer const):
(WebCore::FontCascade::floatWidthForComplexText const):
(WebCore::FontCascade::adjustSelectionRectForComplexText const):
(WebCore::FontCascade::drawEmphasisMarksForComplexText const):
(WebCore::FontCascade::dashesForIntersectionsWithRect const):

  • platform/graphics/FontCascade.h:
  • platform/graphics/GlyphBuffer.h:

(WebCore::toFloatSize): Added.

Tools:

  • TestWebKitAPI/Tests/WebCore/ComplexTextController.cpp:

Replaced all "controller.totalWidth()" with "controller.totalAdvance().width()".

LayoutTests:

  • fast/text/initial-advance-selected-text-expected.html: Added.
  • fast/text/initial-advance-selected-text.html: Added.
5:54 PM Changeset in webkit [254897] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

[Win][WK2] Pressing space key on text input form scrolls the page
​https://bugs.webkit.org/show_bug.cgi?id=201632

Reviewed by Ross Kirsling.

r223262 was add WebPage::performDefaultBehaviorForKeyEvent for
Windows port by copying GTK port's implementation. But, Windows
port is using unique key event processing. It dispatches
WebEvent::RawKeyDown and WebEvent::Char separately even though
other ports dispatch only WebEvent::KeyDown by unifying them.

Because WebPage::performDefaultBehaviorForKeyEvent handled
WebEvent::RawKeyDown of space key to scroll page, and consumed the
event, the keypress event of space key wasn't dispatched.

The keypress event of a space key is handled in
EventHandler::defaultSpaceEventHandler.
performDefaultBehaviorForKeyEvent don't need to do it.

Tests: Coverted by fast/events/space-scroll-event.html

  • WebProcess/WebPage/win/WebPageWin.cpp:

(WebKit::WebPage::performDefaultBehaviorForKeyEvent): Don't handle VK_SPACE.

5:45 PM Changeset in webkit [254896] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[EME] Only emit an array of persistent-usage-records when we discover > 1
​https://bugs.webkit.org/show_bug.cgi?id=206205
<rdar://problem/58691769>

Patch by Jer Noble <​jer.noble@apple.com> on 2020-01-21
Reviewed by Eric Carlson.

The persistent-usage-record cache should never have more than one record per sessionId, but
that assumption is not enforced in the file format. To not break clients that aren't
expecting a serialized plist array, only emit an array when more than one matching data item
is found.

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

(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::removeSessionData):

5:30 PM Changeset in webkit [254895] by achristensen@apple.com
  • 4 edits in trunk/Source/WebCore

Add missing NS_NOESCAPE to CFNetwork SPI
​https://bugs.webkit.org/show_bug.cgi?id=206561
<rdar://problem/58774422>

Reviewed by Joe Pecoraro.

Source/WebCore:

  • platform/network/cocoa/NetworkStorageSessionCocoa.mm:

Source/WebCore/PAL:

  • pal/spi/cf/CFNetworkSPI.h:
5:25 PM Changeset in webkit [254894] by jiewen_tan@apple.com
  • 5 edits in trunk

[WebAuthn] Incorporate more detailed UnknownError messages for LocalAuthenticator
​https://bugs.webkit.org/show_bug.cgi?id=191530

Reviewed by Brent Fulgham.

Source/WebKit:

This patch replaces UnknownError messages within LocalAuthenticator with the LOG_ERROR
messages. At the meantime, it enhances MockLocalConnection::getAttestation to return
errors instead of assertions.

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticator::makeCredential):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterUserConsented):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
(WebKit::LocalAuthenticator::getAssertion):
(WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented):

  • UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:

(WebKit::MockLocalConnection::getAttestation const):

LayoutTests:

  • http/wpt/webauthn/public-key-credential-create-failure-local.https.html:
4:26 PM Changeset in webkit [254893] by commit-queue@webkit.org
  • 36 edits
    2 copies in trunk/Source

Make RenderingMode and AlphaPremultiplication enum classes and move them to separate headers
​https://bugs.webkit.org/show_bug.cgi?id=206516

Patch by Said Abou-Hallawa <​sabouhallawa@apple.com> on 2020-01-21
Reviewed by Tim Horton.

Source/WebCore:

RenderingMode and AlphaPremultiplication need to be encoded and decoded
when they are sent from the WebProcess to the GPUProcess.

  • Headers.cmake:
  • Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:

(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::sanitizeDataIfNeeded):

  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneDeserializer::readImageBitmap):

  • css/CSSFilterImageValue.cpp:

(WebCore::CSSFilterImageValue::image):

  • html/CustomPaintCanvas.cpp:

(WebCore::CustomPaintCanvas::copiedImage const):

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createImageBuffer const):

  • html/ImageBitmap.cpp:
  • html/OffscreenCanvas.cpp:

(WebCore::OffscreenCanvas::transferToImageBitmap):
(WebCore::OffscreenCanvas::createImageBuffer const):
(WebCore::OffscreenCanvas::takeImageBuffer const):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::createCompositingBuffer):
(WebCore::CanvasRenderingContext2DBase::createPattern):

  • html/canvas/ImageBitmapRenderingContext.cpp:

(WebCore::ImageBitmapRenderingContext::isAccelerated const):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::LRUImageBufferCache::imageBuffer):

  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlTextTrackContainerElement::createTextTrackRepresentationImage):

  • page/FrameSnapshotting.cpp:

(WebCore::snapshotFrameRectWithClip):

  • platform/graphics/AlphaPremultiplication.h: Added.
  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::nativeImageForCurrentFrameRespectingOrientation):

  • platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContext::renderingMode const):

  • platform/graphics/GraphicsTypes.cpp:
  • platform/graphics/GraphicsTypes.h:
  • platform/graphics/ImageBuffer.h:
  • platform/graphics/RenderingMode.h: Added.
  • platform/graphics/ShadowBlur.cpp:

(WebCore::ScratchBuffer::getScratchBuffer):
(WebCore::ShadowBlur::drawRectShadowWithoutTiling):
(WebCore::ShadowBlur::drawInsetShadowWithoutTiling):
(WebCore::ShadowBlur::drawRectShadowWithTiling):
(WebCore::ShadowBlur::drawInsetShadowWithTiling):
(WebCore::ShadowBlur::drawShadowLayer):

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBufferData::~ImageBufferData):
(WebCore::ImageBuffer::ImageBuffer):

  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::ImageBuffer::ImageBuffer):

  • platform/graphics/cg/ImageBufferDataCG.h:
  • platform/graphics/filters/Filter.h:
  • platform/graphics/texmap/BitmapTexture.cpp:

(WebCore::BitmapTexture::updateContents):

  • platform/graphics/win/ImageBufferDirect2D.cpp:

(WebCore::ImageBuffer::ImageBuffer):

  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::imageBuffer const):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::calculateClipRects const):

  • rendering/shapes/Shape.cpp:

(WebCore::Shape::createRasterShape):

  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::applyClippingToContext):

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::applyResource):

  • rendering/svg/RenderSVGResourceMasker.cpp:

(WebCore::RenderSVGResourceMasker::applyResource):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::nativeImageForCurrentFrame):

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebContextMenuClient.mm:

(WebContextMenuClient::imageForCurrentSharingServicePickerItem):

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

[IPC Hardening] Only process Messages::NetworkProcess messages when sent by the UIProcess
​https://bugs.webkit.org/show_bug.cgi?id=206558
<rdar://problem/58733679>

Reviewed by Alex Christensen.

Port UpdateQuotaBasedOnSpaceUsageForTesting IPC from the NetworkProcess to the NetworkConnectionToWebProcess
since it is sent by the WebContent process. As a result, we can now stop forwarding all Messages::NetworkProcess
IPC messages from the WebContent process to the NetworkProcess class.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
(WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage):
(WebKit::NetworkConnectionToWebProcess::updateQuotaBasedOnSpaceUsageForTesting):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::didReceiveMessage):
(WebKit::NetworkProcess::didReceiveSyncMessage):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • Platform/IPC/StringReference.h:

(IPC::StringReference::operator!=):

  • WebProcess/Cache/WebCacheStorageConnection.cpp:

(WebKit::WebCacheStorageConnection::updateQuotaBasedOnSpaceUsage):

3:53 PM Changeset in webkit [254891] by Alan Coon
  • 1 copy in tags/Safari-608.5.12

Tag Safari-608.5.12.

3:38 PM Changeset in webkit [254890] by commit-queue@webkit.org
  • 46 edits in trunk

Unreviewed, rolling out r254807 and r254849.
​https://bugs.webkit.org/show_bug.cgi?id=206559

Broke page up/page down on macOW (Requested by smfr on
#webkit).

Reverted changesets:

"Add support for scroll behavior relies on ScrollAnimation of
the Web process"
​https://bugs.webkit.org/show_bug.cgi?id=204882
​https://trac.webkit.org/changeset/254807

"Add support for scroll behavior relies on ScrollAnimation of
the Web process"
​https://bugs.webkit.org/show_bug.cgi?id=204882
​https://trac.webkit.org/changeset/254849

3:33 PM Changeset in webkit [254889] by Alan Coon
  • 1 copy in tags/Safari-609.1.15

Tag Safari-609.1.15.

3:32 PM Changeset in webkit [254888] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

imported/w3c/web-platform-tests/html/dom/idlharness.worker.html is timing out on Mojave wk1 debug EWS
​https://bugs.webkit.org/show_bug.cgi?id=206503

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations: Mark the test as failing to speed up EWS while we investigate.
3:27 PM Changeset in webkit [254887] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Build fix.

  • rendering/updating/RenderTreeBuilderInline.cpp:

Add missing include.

3:10 PM Changeset in webkit [254886] by dbates@webkit.org
  • 18 edits
    2 adds in trunk

Add Legacy WebKit SPI and WebKit IPI to show and hide placeholder
​https://bugs.webkit.org/show_bug.cgi?id=206459
<rdar://problem/58700534>

Reviewed by Wenson Hsieh.

Source/WebCore:

Adds setter and getter to update whether the placeholder can be shown.

Test: fast/forms/placeholder-show-and-hide-via-setCanShowPlaceholder.html

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::HTMLTextFormControlElement): Initialize state. Default to can show
the placeholder to keep the behavior we have currently.
(WebCore::HTMLTextFormControlElement::placeholderShouldBeVisible const): Modified to account for m_canShowPlaceholder.
(WebCore::HTMLTextFormControlElement::setCanShowPlaceholder): Added. Update state and invalidate style.

  • html/HTMLTextFormControlElement.h:

(WebCore::HTMLTextFormControlElement::canShowPlaceholder const): Added.

  • testing/Internals.cpp:

(WebCore::Internals::setCanShowPlaceholder): Added. For testing purposes.

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

Source/WebKit:

Add Modern WebKit IPI to control whether the placeholder can be shown or not when a form
control is empty. This is for aesthetics.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setCanShowPlaceholder): Added.

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setCanShowPlaceholder): Added. Maps the input text to its element. If it's
a HTML text form control element then calls through to HTMLTextFormControlElement::setCanShowPlaceholder().

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Added new message.

Source/WebKitLegacy/mac:

Add Legacy WebKit SPI to allow a client to control whether the placeholder can be shown or
not when a form control is empty. This is for aesthetics.

  • DOM/DOMHTMLInputElement.mm:

(-[DOMHTMLInputElement canShowPlaceholder]): Added.
(-[DOMHTMLInputElement setCanShowPlaceholder:]): Added.

  • DOM/DOMHTMLInputElementPrivate.h:
  • DOM/DOMHTMLTextAreaElement.mm:

(-[DOMHTMLTextAreaElement canShowPlaceholder]): Added.
(-[DOMHTMLTextAreaElement setCanShowPlaceholder:]): Added.

  • DOM/DOMHTMLTextAreaElementPrivate.h:

LayoutTests:

Adds a new test to ensure that HTMLTextFormControlElement::setCanShowPlaceholder() works.

  • fast/forms/placeholder-show-and-hide-via-setCanShowPlaceholder-expected.txt: Added.
  • fast/forms/placeholder-show-and-hide-via-setCanShowPlaceholder.html: Added.
2:57 PM Changeset in webkit [254885] by sihui_liu@apple.com
  • 2 edits in trunk/Tools

REGRESSION (r254856?): [Win] http/tests/security/same-origin-websql-blocked.html and 2 fast/dom/Window/window-function-* tests failing
​https://bugs.webkit.org/show_bug.cgi?id=206552

Unreviewed fix after r254856. r254856 wanted to enable WebSQL on layout tests but enableWebSQL was set to false.

  • DumpRenderTree/TestOptions.h:
2:51 PM Changeset in webkit [254884] by jiewen_tan@apple.com
  • 6 edits in trunk

ProvisionalPageProxy::loadData should pass last navigation's shouldOpenExternalURLsPolicy flag to WebPageProxy
​https://bugs.webkit.org/show_bug.cgi?id=206462
<rdar://problem/57468718>

Reviewed by Chris Dumez.

Source/WebKit:

Covered by API tests.

This patch also does it for ProvisionalPageProxy::loadRequest.

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::loadData):
(WebKit::ProvisionalPageProxy::loadRequest):

  • UIProcess/ProvisionalPageProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::continueNavigationInNewProcess):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

(TestWebKitAPI::TEST):

2:33 PM Changeset in webkit [254883] by commit-queue@webkit.org
  • 22 edits in trunk

Add build flag for stale-while-revalidate
​https://bugs.webkit.org/show_bug.cgi?id=204169

Patch by Rob Buis <​rbuis@igalia.com> on 2020-01-21
Reviewed by Youenn Fablet.

.:

Add build flag for stale-while-revalidate to make it
independent from the NETWORK_CACHE_SPECULATIVE_REVALIDATION build flag.

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

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit:

  • Configurations/FeatureDefines.xcconfig:
  • NetworkProcess/cache/AsyncRevalidation.cpp:
  • NetworkProcess/cache/AsyncRevalidation.h:
  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::responseNeedsRevalidation):
(WebKit::NetworkCache::makeStoreDecision):
(WebKit::NetworkCache::Cache::retrieve):

  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
2:13 PM Changeset in webkit [254882] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

IPC::Decoder should use nullptr as invalid value
<​https://webkit.org/b/203880>
<rdar://problem/53159906>

Follow-up fix noticed by Chris Dumez.

  • Platform/IPC/Decoder.cpp:

(IPC::alignedBufferIsLargeEnoughToContain): Fix typo in comment.

2:05 PM Changeset in webkit [254881] by ysuzuki@apple.com
  • 19 edits in trunk

[WTF] AtomStringTable should be small
​https://bugs.webkit.org/show_bug.cgi?id=206400

Reviewed by Sam Weinig.

Source/WebCore:

  • dom/GCReachableRef.h:

(WebCore::GCReachableRef::GCReachableRef):

  • dom/QualifiedName.h:

(WebCore::QualifiedName::hashTableDeletedValue):

Source/WTF:

AtomStringTable is the largest hashtable typically. It takes more
than 256KB per WebProcess (sometimes, it took 1MB or more).
This patch leverages PackedPtr to compact it from 8 bytes per entry
to 6 bytes per entry.

While this is still large, we should investigate how to compact C++
pointers in 4 bytes[1] to shrink memory footprint, since WebKit
memory is used by Vector and HashTable fulfilled with pointers.

[1]: ​https://bugs.webkit.org/show_bug.cgi?id=206469

  • wtf/DumbPtrTraits.h:

(WTF::DumbPtrTraits::hashTableDeletedValue):
(WTF::DumbPtrTraits::isHashTableDeletedValue):

  • wtf/Forward.h:
  • wtf/HashTraits.h:
  • wtf/Packed.h:

(WTF::Packed<T::Packed):
(WTF::Packed<T::isHashTableDeletedValue const):
(WTF::GetPtrHelper<PackedPtr<T>>::getPtr):
(WTF::PackedPtrTraits::hashTableDeletedValue):
(WTF::PackedPtrTraits::isHashTableDeletedValue):
(WTF::alignof): Deleted.

  • wtf/Ref.h:

(WTF::Ref::Ref):
(WTF::Ref::isHashTableDeletedValue const):
(WTF::Ref::hashTableDeletedValue): Deleted.

  • wtf/RefPtr.h:

(WTF::RefPtr::RefPtr):
(WTF::RefPtr::isHashTableDeletedValue const):
(WTF::RefPtr::hashTableDeletedValue): Deleted.

  • wtf/text/AtomStringImpl.cpp:

(WTF::addToStringTable):
(WTF::CStringTranslator::equal):
(WTF::CStringTranslator::translate):
(WTF::UCharBufferTranslator::equal):
(WTF::UCharBufferTranslator::translate):
(WTF::HashAndUTF8CharactersTranslator::equal):
(WTF::HashAndUTF8CharactersTranslator::translate):
(WTF::SubstringTranslator::translate):
(WTF::SubstringTranslator8::equal):
(WTF::SubstringTranslator16::equal):
(WTF::LCharBufferTranslator::equal):
(WTF::LCharBufferTranslator::translate):
(WTF::BufferFromStaticDataTranslator::equal):
(WTF::BufferFromStaticDataTranslator::translate):
(WTF::AtomStringImpl::addSlowCase):
(WTF::AtomStringImpl::remove):
(WTF::AtomStringImpl::lookUpSlowCase):
(WTF::AtomStringImpl::lookUp):

  • wtf/text/AtomStringTable.cpp:

(WTF::AtomStringTable::~AtomStringTable):

  • wtf/text/AtomStringTable.h:

(WTF::AtomStringTable::table):
(): Deleted.

  • wtf/text/StringHash.h:

(WTF::StringHash::hash):
(WTF::StringHash::equal):
(WTF::ASCIICaseInsensitiveHash::hash):
(WTF::ASCIICaseInsensitiveHash::equal):

  • wtf/text/StringImpl.h:

Tools:

  • TestWebKitAPI/Tests/WTF/HashMap.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/HashSet.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/Packed.cpp:

(TestWebKitAPI::TEST):

2:04 PM Changeset in webkit [254880] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

[macOS] Add managed preference to allow synchronous XHR during page dismissal
​https://bugs.webkit.org/show_bug.cgi?id=206540
<rdar://problem/58644447>

Reviewed by Alex Christensen.

Add managed preference to allow synchronous XHR during page dismissal. This is temporarily needed by some
enterprise products until they can update their code.

  • Shared/WebPreferences.yaml:
  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultDisallowSyncXHRDuringPageDismissalEnabled):

  • Shared/WebPreferencesDefaultValues.h:
2:02 PM Changeset in webkit [254879] by Ryan Haddad
  • 2 edits in trunk/Source/WebKit

Unreviewed, rolling out r254876.

Broke Catalina builds.

Reverted changeset:

"Fix SDK availability macros"
​https://bugs.webkit.org/show_bug.cgi?id=206463
​https://trac.webkit.org/changeset/254876

1:44 PM Changeset in webkit [254878] by commit-queue@webkit.org
  • 10 edits
    2 moves in trunk/Source

[iPad] YouTube does not automatically AirPlay when a route is selected from Control Center
​https://bugs.webkit.org/show_bug.cgi?id=206539
Source/WebCore:

Patch by Jer Noble <​jer.noble@apple.com> on 2020-01-21
Reviewed by Eric Carlson.

No new tests; change affects an interaction with two platform features (local AirPlay
route picking and actual remote playback over AirPlay routes) that is not testable in
an automated fashion.

The underlying source of the bug is the difference in how the platform communitcates that an
AirPlay route was picked between iOS and macOS. On iOS, route changes are global and are
generally pushed up from AVPlayer notifications. On macOS, route changes are local to the
app and are pushed down from the UIProcess. But when MSE playback was enabled on iPadOS,
there was now a limbo where media playback was no longer using an AVPlayer, but at the same
time, route changes could be initiated globally. The end result is that MSE-based media
elements are never notified that they "should play to playback target", and no remote
playback events are ever fired.

To re-create the same macOS behavior when MSE-backed media elements are used on iPadOS,
re-use the existing route change detection logic in MediaSessionManageriOS to query whether
the newly established route supports AirPlay Video, and if so, send a message to the "now
playing" media element that it should begin AirPlaying, which will fail, but will trigger
the YouTube player to switch to a HLS-backed media element.

This requires renaming MediaPlaybackTargetMac -> MediaPlaybackTargetCocoa.

  • SourcesCocoa.txt:
  • PlatformMac.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/audio/ios/MediaSessionManagerIOS.h:
  • platform/audio/ios/MediaSessionManagerIOS.mm:

(WebCore::MediaSessionManageriOS::activeVideoRouteDidChange):
(-[WebMediaSessionHelper activeAudioRouteDidChange:]):

  • platform/graphics/avfoundation/MediaPlaybackTargetCocoa.h: Renamed from Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.h.

(WebCore::MediaPlaybackTargetCocoa::outputContext const):

  • platform/graphics/avfoundation/MediaPlaybackTargetCocoa.mm: Renamed from Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.mm.

(WebCore::MediaPlaybackTargetCocoa::create):
(WebCore::MediaPlaybackTargetCocoa::MediaPlaybackTargetCocoa):
(WebCore::MediaPlaybackTargetCocoa::~MediaPlaybackTargetCocoa):
(WebCore::MediaPlaybackTargetCocoa::targetContext const):
(WebCore::MediaPlaybackTargetCocoa::hasActiveRoute const):
(WebCore::MediaPlaybackTargetCocoa::deviceName const):
(WebCore::toMediaPlaybackTargetCocoa):

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

(WebCore::MediaPlaybackTargetPickerMac::playbackTarget):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget):

Source/WebKit:

<rdar://problem/54173689>

Patch by Jer Noble <​jer.noble@apple.com> on 2020-01-21
Reviewed by Eric Carlson.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::playbackTargetSelected const):

1:25 PM Changeset in webkit [254877] by commit-queue@webkit.org
  • 17 edits in trunk

Add SPI on WKURLSchemeTask to access WKFrameInfo of originating frame
​https://bugs.webkit.org/show_bug.cgi?id=204265
<rdar://57193883>

Patch by Alex Christensen <​achristensen@webkit.org> on 2020-01-21
Reviewed by Brady Eidson.

Source/WebKit:

Covered by API tests.

  • Shared/URLSchemeTaskParameters.cpp:

(WebKit::URLSchemeTaskParameters::encode const):
(WebKit::URLSchemeTaskParameters::decode):

  • Shared/URLSchemeTaskParameters.h:
  • UIProcess/API/Cocoa/WKURLSchemeTask.mm:

(-[WKURLSchemeTaskImpl _frame]):

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

(WebKit::WebPageProxy::startURLSchemeTaskShared):
(WebKit::WebPageProxy::loadSynchronousURLSchemeTask):

  • UIProcess/WebURLSchemeHandler.cpp:

(WebKit::WebURLSchemeHandler::startTask):

  • UIProcess/WebURLSchemeHandler.h:
  • UIProcess/WebURLSchemeTask.cpp:

(WebKit::WebURLSchemeTask::create):
(WebKit::WebURLSchemeTask::WebURLSchemeTask):

  • UIProcess/WebURLSchemeTask.h:

(WebKit::WebURLSchemeTask::frameInfo const):

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::tryLoadingUsingURLSchemeHandler):

  • WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:

(WebKit::WebURLSchemeHandlerProxy::startNewTask):

  • WebProcess/WebPage/WebURLSchemeHandlerProxy.h:
  • WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:

(WebKit::WebURLSchemeTaskProxy::WebURLSchemeTaskProxy):
(WebKit::WebURLSchemeTaskProxy::startLoading):
(WebKit::WebURLSchemeTaskProxy::stopLoading):
(WebKit::WebURLSchemeTaskProxy::didComplete):
(WebKit::WebURLSchemeTaskProxy::hasLoader):

  • WebProcess/WebPage/WebURLSchemeTaskProxy.h:

(WebKit::WebURLSchemeTaskProxy::create):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:

(-[FrameSchemeHandler waitForAllRequests]):
(-[FrameSchemeHandler setExpectedWebView:]):
(-[FrameSchemeHandler webView:startURLSchemeTask:]):
(-[FrameSchemeHandler webView:stopURLSchemeTask:]):

1:12 PM Changeset in webkit [254876] by Keith Rollin
  • 2 edits in trunk/Source/WebKit

Fix SDK availability macros
​https://bugs.webkit.org/show_bug.cgi?id=206463
<rdar://problem/58581906>

Reviewed by Timothy Hatcher.

Bug 197841 updated WebKit.xcconfig with regards to when it runs a
header post-processing script. This post-processing script grovels
over our exported headers, changing macros like WK_API_AVAILABLE to
the standard API_AVAILABLE. Because of the change in Bug 197841, the
script was no longer being run when preparing macOS 10.15 SDKs, which
was breaking those SDKs. Fix this by reverting the change, allowing
the macros to be replaced for macOS 10.15.

No new tests - no added or changed functionality.

  • Configurations/WebKit.xcconfig:
1:08 PM Changeset in webkit [254875] by Antti Koivisto
  • 12 edits in trunk/Source/WebCore

[LFC] Typed accessors for formatting states
​https://bugs.webkit.org/show_bug.cgi?id=206538

Reviewed by Zalan Bujtas.

Almost all clients know what sort of formatting state they want and immediately cast it.

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):
(WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):

  • layout/LayoutContext.cpp:

(WebCore::Layout::LayoutContext::createFormattingContext):

  • layout/LayoutState.cpp:

(WebCore::Layout::LayoutState::formattingStateForBox const):
(WebCore::Layout::LayoutState::establishedFormattingState const):
(WebCore::Layout::LayoutState::establishedInlineFormattingState const):
(WebCore::Layout::LayoutState::establishedBlockFormattingState const):
(WebCore::Layout::LayoutState::establishedTableFormattingState const):

Typed function for getting established states.

(WebCore::Layout::LayoutState::ensureFormattingState):
(WebCore::Layout::LayoutState::ensureInlineFormattingState):

Also add a fast path for integrated layout.

(WebCore::Layout::LayoutState::ensureBlockFormattingState):
(WebCore::Layout::LayoutState::ensureTableFormattingState):

Typed function for creating states.

(WebCore::Layout::LayoutState::createFormattingStateForFormattingRootIfNeeded): Deleted.

  • layout/LayoutState.h:

(WebCore::Layout::LayoutState::hasInlineFormattingState const):
(WebCore::Layout::LayoutState::hasFormattingState const): Deleted.

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):

  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough const):

  • layout/displaytree/DisplayPainter.cpp:

(WebCore::Display::paintSubtree):
(WebCore::Display::Painter::paintInlineFlow):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::alignContentVertically):
(WebCore::Layout::LineBuilder::adjustBaselineAndLineHeight):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

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

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::outputInlineRuns):

1:07 PM Changeset in webkit [254874] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

macCatalyst: Two-finger click is dispatched to DOM as left click
​https://bugs.webkit.org/show_bug.cgi?id=206549

Reviewed by Simon Fraser.

  • UIProcess/ios/WKMouseGestureRecognizer.mm:

(-[WKMouseGestureRecognizer createMouseEventWithType:forEvent:]):
(-[WKMouseGestureRecognizer touchesBegan:withEvent:]):
(-[WKMouseGestureRecognizer touchesMoved:withEvent:]):
(-[WKMouseGestureRecognizer touchesEnded:withEvent:]):
(-[WKMouseGestureRecognizer _hoverEntered:withEvent:]):
(-[WKMouseGestureRecognizer _hoverMoved:withEvent:]):
(-[WKMouseGestureRecognizer _hoverExited:withEvent:]):
(-[WKMouseGestureRecognizer createMouseEventWithType:]): Deleted.
We correctly say button=2 for ctrl-click, but not for secondary-button click.

12:58 PM Changeset in webkit [254873] by achristensen@apple.com
  • 11 edits in trunk/Source/WebKit

Revert suppressesConnectionTerminationOnSystemChange part of r254081
​https://bugs.webkit.org/show_bug.cgi?id=205751
<rdar://problem/58725096>

There was an API client that still hadn't migrated to the replacement SPI.

  • NetworkProcess/NetworkProcess.h:

(WebKit::NetworkProcess::suppressesConnectionTerminationOnSystemChange const):

  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::copy):

  • UIProcess/API/APIProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:

(-[_WKProcessPoolConfiguration suppressesConnectionTerminationOnSystemChange]):
(-[_WKProcessPoolConfiguration setSuppressesConnectionTerminationOnSystemChange:]):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

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

Performance tests fail if stderr logging is encountered
​https://bugs.webkit.org/show_bug.cgi?id=206544
<rdar://problem/58714766>

Reviewed by Per Arne Vollan.

Switch to LOG_ERROR, rather than WTFLogAlways, to avoid confusing the PerformanceTests system.

  • Shared/Cocoa/SandboxExtensionCocoa.mm:

(WebKit::SandboxExtension::createHandleForReadByAuditToken):

12:33 PM Changeset in webkit [254871] by basuke.suzuki@sony.com
  • 3 edits in trunk/Source/bmalloc

[bmalloc] Make use of LockHolder strict in some methods of Scavenger
​https://bugs.webkit.org/show_bug.cgi?id=206460

Reviewed by Darin Adler.

For instance, Scavenger::runHoldingLock() assume the caller has lock and express that by its function name. This rule can be
strict by passing LockHolder and that's the way as other code do.

Same change to runSoonHoldingLock and scheduleIfUnderMemoryPressureHoldingLock.

  • bmalloc/Scavenger.cpp:

(bmalloc::Scavenger::run):
(bmalloc::Scavenger::runSoon):
(bmalloc::Scavenger::scheduleIfUnderMemoryPressure):
(bmalloc::Scavenger::schedule):
(bmalloc::Scavenger::runHoldingLock): Renamed.
(bmalloc::Scavenger::runSoonHoldingLock): Renamed.
(bmalloc::Scavenger::scheduleIfUnderMemoryPressureHoldingLock): Renamed.

  • bmalloc/Scavenger.h:
12:05 PM Changeset in webkit [254870] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[ews] commit-queue should check cq+ flag
​https://bugs.webkit.org/show_bug.cgi?id=206530

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

ValidatePatch._is_patch_cq_plus): Method to check cq+ flag on patch.
(ValidatePatch.start):

  • BuildSlaveSupport/ews-build/factories.py:
  • BuildSlaveSupport/ews-build/factories_unittest.py: Updated unit-tests.
11:48 AM Changeset in webkit [254869] by Justin Fan
  • 10 edits in trunk

[WebGL2] Sampler objects
​https://bugs.webkit.org/show_bug.cgi?id=126941
<rdar://problem/15002402>

Source/WebCore:

Implement enough of Samplers to pass the "samplers" conformance tests with ANGLE enabled.

Reviewed by Dean Jackson.

Covered by webgl/2.0.0/conformance2/samplers directory of tests.

  • bindings/js/JSDOMConvertWebGL.cpp:

(WebCore::convertToJSValue):

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::WebGL2RenderingContext):
(WebCore::WebGL2RenderingContext::initializeSamplerCache):
(WebCore::WebGL2RenderingContext::createSampler):
(WebCore::WebGL2RenderingContext::deleteSampler):
(WebCore::WebGL2RenderingContext::isSampler):
(WebCore::WebGL2RenderingContext::bindSampler):
(WebCore::WebGL2RenderingContext::samplerParameteri):
(WebCore::WebGL2RenderingContext::samplerParameterf):
(WebCore::WebGL2RenderingContext::getSamplerParameter):
(WebCore::WebGL2RenderingContext::bindTransformFeedback):
(WebCore::WebGL2RenderingContext::getParameter):

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGLAny.h:
  • html/canvas/WebGLSampler.cpp:

(WebCore::WebGLSampler::WebGLSampler):
(WebCore::WebGLSampler::deleteObjectImpl):

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::createSampler):
(WebCore::GraphicsContextGLOpenGL::deleteSampler):
(WebCore::GraphicsContextGLOpenGL::isSampler):
(WebCore::GraphicsContextGLOpenGL::bindSampler):
(WebCore::GraphicsContextGLOpenGL::samplerParameteri):
(WebCore::GraphicsContextGLOpenGL::samplerParameterf):
(WebCore::GraphicsContextGLOpenGL::getSamplerParameterfv):
(WebCore::GraphicsContextGLOpenGL::getSamplerParameteriv):

LayoutTests:

Reviewed by Dean Jackson.

Update to passing expectations, though these tests remain skipped until ANGLE backend is enabled.

  • webgl/2.0.0/conformance2/samplers/sampler-drawing-test-expected.txt:
  • webgl/2.0.0/conformance2/samplers/samplers-expected.txt:
11:40 AM Changeset in webkit [254868] by Keith Rollin
  • 9 edits in trunk

Fix tvOS values in SUPPORTED_PLATFORMS
​https://bugs.webkit.org/show_bug.cgi?id=206435
<rdar://problem/58674587>

Reviewed by Alexey Proskuryakov.

A number of targets in WebKit have 'tvos' and 'tvsimulator' in
SUPPORTED_PLATFORMS. The correct values are 'appletvos' and
'appletvsimulator'. These should be updated to the correct ones as the
wrong values prevent the tvOS run destination from being usable in the
UI to build for tvOS.

Source/ThirdParty:

  • gtest/xcode/Config/General.xcconfig:

Source/WebInspectorUI:

  • Configurations/Base.xcconfig:

Tools:

  • DumpRenderTree/mac/Configurations/Base.xcconfig:
  • ImageDiff/cg/Configurations/Base.xcconfig:
  • MiniBrowser/Configurations/Base.xcconfig:
  • WebKitTestRunner/Configurations/Base.xcconfig:
11:36 AM Changeset in webkit [254867] by youenn@apple.com
  • 6 edits in trunk/Source/WebKit

Provide camera/microphone sandbox extensions to GPUProcess
​https://bugs.webkit.org/show_bug.cgi?id=206531

Reviewed by Eric Carlson.

Send at creation of GPUProcess sandbox extensions to camera and microphone.
This is currently gated by the UIProcess application being Safari.
This should be changed to checks based on camera/microphone entitlements.

Extensions are provided at creation of the GPUProcess as it is as trusted as the UIProcess.
We do not make it conditional to getUserMedia being enabled as GPUProcess may be created for more than one configuration.

Relax the GPUProcess sandbox on MacOS to allow microphone access until we can use microphone sandbox extension for that purpose.

Manually tested by capturing audio/video with real devices.

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::initializeGPUProcess):

  • GPUProcess/GPUProcessCreationParameters.cpp:

(WebKit::GPUProcessCreationParameters::encode const):
(WebKit::GPUProcessCreationParameters::decode):

  • GPUProcess/GPUProcessCreationParameters.h:
  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::isSafari):
(WebKit::shouldCreateCameraSandboxExtension):
(WebKit::shouldCreateMicrophoneSandboxExtension):
(WebKit::GPUProcessProxy::singleton):

11:36 AM Changeset in webkit [254866] by Tadeu Zagallo
  • 3 edits
    1 add in trunk

JSTests:
Object allocation sinking is missing PutHint for allocations unreachable in the graph
​https://bugs.webkit.org/show_bug.cgi?id=203799
<rdar://problem/56852162>

Reviewed by Saam Barati.

  • stress/allocation-sinking-puthint-control-flow-2.js: Added.

(f.handler.construct):
(f):

Source/JavaScriptCore:
Object allocation sinking is missing PutHint for sunken allocations
​https://bugs.webkit.org/show_bug.cgi?id=203799
<rdar://problem/56852162>

Reviewed by Saam Barati.

Consider the following graph:

Block #0:

1: PhantomCreateActivation()
2: PhantomNewFunction()
PutHint(@2, @1, FunctionActivationPLoc)
Branch(#1, #2)

Block #1:

3: MaterializeCreateActivation()
PutHint(@2, @3, FunctionActivationPLoc)
Upsilon(@3, 5)
Jump(#3)

Block #2:

4: MaterializeCreateActivation()
PutHint(@2, @4, FunctionActivationPLoc)
Upsilon(@4, 5)
Jump(#3)

Block #3:

5: Phi()
ExitOK()

On Block #3, we need to emit a PutHint after the Phi, since we might exit after it. However,
object allocation sinking skipped this Phi because it was checking whether the base of the
location that caused us to create this Phi (@2) was live, but it's dead in the graph (there
are no pointers to it). The issue is that, even though there are no pointers to the base, the
location PromotedHeapLocation(@2, FunctionActivationPLoc) is still live, so we should PutHint
to it. We fix it by checking for liveness of the location rather than its base.

  • dfg/DFGObjectAllocationSinkingPhase.cpp:
11:30 AM Changeset in webkit [254865] by Alan Coon
  • 183 edits
    7 deletes in branches/safari-609-branch

Cherry-pick r254632. rdar://problem/58764714

Revert bytecode checkpoints since it breaks watch
​https://bugs.webkit.org/show_bug.cgi?id=206301

Unreviewed, revert.

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

11:16 AM Changeset in webkit [254864] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r254125. rdar://problem/58353217

Fix non GPUProcess build issue in UserMediaCaptureManager
​https://bugs.webkit.org/show_bug.cgi?id=205851

Reviewed by Eric Carlson.

Build fix, no change of behavior.

  • WebProcess/cocoa/UserMediaCaptureManager.cpp: (WebKit::UserMediaCaptureManager::Source::connection):

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

10:58 AM Changeset in webkit [254863] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Disallow setting SVGElement currentScale to non-finite values
​https://bugs.webkit.org/show_bug.cgi?id=206019

Align SVGElement currentScale definition to SVG2 section 5.14.2
(​https://www.w3.org/TR/SVG2/struct.html#InterfaceSVGSVGElement)

Patch by Sunny He <​sunny_he@apple.com> on 2020-01-21
Reviewed by Darin Adler.

Source/WebCore:

Test: svg/dom/set-currentScale-nonfinite.html

  • svg/SVGSVGElement.idl:

LayoutTests:

  • svg/dom/set-currentScale-nonfinite-expected.txt: Added.
  • svg/dom/set-currentScale-nonfinite.html: Added.
10:42 AM Changeset in webkit [254862] by beidson@apple.com
  • 8 edits in trunk/Source/WebKit

API::(User)ContentWorld cleanup
​https://bugs.webkit.org/show_bug.cgi?id=206509

Reviewed by Darin Adler.

No behavior change.

  • Give (User)ContentWorld a shared base class for upcoming work.
  • Reference them by identifier instead of object instance whenever possible.
  • Other shared class cleanup.
  • UIProcess/API/APIContentWorld.cpp:

(API::ContentWorldBase::generateIdentifier):
(API::ContentWorld::ContentWorld):
(API::ContentWorld::~ContentWorld):

  • UIProcess/API/APIContentWorld.h:

(API::ContentWorldBase::identifier const):
(API::ContentWorldBase::name const):
(API::ContentWorldBase::worldData const):
(API::ContentWorldBase::ContentWorldBase):

  • UIProcess/API/APIUserContentWorld.cpp:

(API::UserContentWorld::UserContentWorld):
(API::UserContentWorld::generateIdentifier): Deleted.

  • UIProcess/API/APIUserContentWorld.h:
  • UIProcess/UserContent/WebScriptMessageHandler.h:

(WebKit::WebScriptMessageHandler::world):
(WebKit::WebScriptMessageHandler::userContentWorld const): Deleted.
(WebKit::WebScriptMessageHandler::userContentWorld): Deleted.

  • UIProcess/UserContent/WebUserContentControllerProxy.cpp:

(WebKit::WebUserContentControllerProxy::addProcess):
(WebKit::WebUserContentControllerProxy::addUserContentWorldUse):
(WebKit::WebUserContentControllerProxy::shouldSendRemoveUserContentWorldsMessage):
(WebKit::WebUserContentControllerProxy::addUserScriptMessageHandler):
(WebKit::WebUserContentControllerProxy::removeUserMessageHandlerForName):
(WebKit::WebUserContentControllerProxy::removeAllUserMessageHandlers):

  • UIProcess/UserContent/WebUserContentControllerProxy.h:
10:28 AM Changeset in webkit [254861] by commit-queue@webkit.org
  • 26 edits
    16 adds in trunk

-webkit-image-set should support all the image functions WebKit supports, not just url()
​https://bugs.webkit.org/show_bug.cgi?id=81941

Patch by Noam Rosenthal <Noam Rosenthal> on 2020-01-21
Reviewed by Darin Adler.

Source/WebCore:

Separate StyleCachedImage to 4 classes:

  • StyleCachedImage: for single images only
  • StyleMultiImage: for values that can contain multiple images: like cursor/image-set
  • StyleImageSet
  • StyleCursorImage

The new classes only deal with their own value type. Before, ImageSet and cursor were resolved
as a StyleCachedImage, which is no longer a valid assumption if image-set can contain generated images.
Though cursors still can only contain cached images, it was cleaner to refactor it out as well.

Refactored best-fit image selection from loading. Now StyleCachedImage is in charge of loading
the actual image, and StyleImageSet/StyleCursorImage perform the source selection.

Also, added the necessary logic in the CSS parser to consume generated images inside image-sets, excluding
when the image-set is a cursor value.

Tests: fast/css/image-set-parsing-generated.html

fast/hidpi/image-set-cross-fade.html
fast/hidpi/image-set-gradient-multi.html
fast/hidpi/image-set-gradient-single.html
fast/hidpi/image-set-gradient.html

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

Added new files

  • css/CSSCursorImageValue.cpp:

(WebCore::CSSCursorImageValue::selectBestFitImage):
(WebCore::CSSCursorImageValue::loadImage): Deleted.

  • css/CSSCursorImageValue.h:

Instead of cursor loading the image, it selects an image CSS value

  • css/CSSImageSetValue.cpp:

(WebCore::CSSImageSetValue::CSSImageSetValue):
(WebCore::CSSImageSetValue::fillImageSet):
(WebCore::CSSImageSetValue::cachedImage const):
(WebCore::CSSImageSetValue::selectBestFitImage):
(WebCore::CSSImageSetValue::updateDeviceScaleFactor):
(WebCore::CSSImageSetValue::imageSetWithStylesResolved):
(WebCore::CSSImageSetValue::traverseSubresources const):
(WebCore::CSSImageSetValue::loadBestFitImage): Deleted.

  • css/CSSImageSetValue.h:

Refactor CSSImageSetValue to include non-cachedImage images

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeCursor):

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::consumeImageSet):
(WebCore::CSSPropertyParserHelpers::consumeImage):
(WebCore::CSSPropertyParserHelpers::consumeUrlOrStringAsStringView): Deleted.

  • css/parser/CSSPropertyParserHelpers.h:
  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::blendFunc):

When blending two images, get the selected images in case it is an image-set

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintFillLayerExtended):

  • rendering/RenderImageResourceStyleImage.cpp:

(WebCore::RenderImageResourceStyleImage::initialize):

  • rendering/RenderLayerBacking.cpp:

(WebCore::canDirectlyCompositeBackgroundBackgroundImage):

  • rendering/style/ShapeValue.cpp:

(WebCore::ShapeValue::isImageValid const):

Use hasCachedImage() instead of isCachedImage() as a StyleImageSet is no longer an isCachedImage()

  • rendering/style/StyleCachedImage.cpp:

(WebCore::StyleCachedImage::StyleCachedImage):
(WebCore::StyleCachedImage::imageURL):
(WebCore::StyleCachedImage::load):

  • rendering/style/StyleCachedImage.h:
  • rendering/style/StyleCursorImage.h:
  • rendering/style/StyleCursorImage.cpp:
  • rendering/style/StyleMultiImage.h:
  • rendering/style/StyleMultiImage.cpp:
  • rendering/style/StyleImageSet.h:
  • rendering/style/StyleImageSet.cpp:
  • rendering/style/StyleImage.h:

(WebCore::StyleImage::selectedImage):
(WebCore::StyleImage::selectedImage const):
(WebCore::StyleImage::isCursorImage const):
(WebCore::StyleImage::isImageSet const):
(WebCore::StyleImage::hasCachedImage const):
(WebCore::StyleImage::StyleImage):

Separate cursor/image-set related stuff away from StyleCachedImage.

  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyValueContent):

  • style/StyleBuilderState.cpp:

(WebCore::Style::BuilderState::resolveImageStyles):
(WebCore::Style::BuilderState::createStyleImage):

  • style/StyleBuilderState.h:

Match the CSS values with the correct Style class. Also, ensure image-sets resolve their
images' styles as they may contain gradients and other context-aware values.

LayoutTests:

  • fast/css/cursor-parsing-expected.txt:
  • fast/css/cursor-parsing.html:

Added parsing test to ensure arrow image-sets disable generated images

  • fast/css/image-set-parsing-generated-expected.txt: Added.
  • fast/css/image-set-parsing-generated.html: Added.
  • fast/css/image-set-parsing-invalid-expected.txt:
  • fast/css/image-set-parsing-invalid.html:

Added parsing tests for new generated-inside-image-set use cases
Test that image-set inside image-set is not supported

  • fast/hidpi/image-set-cross-fade-expected.html: Added.
  • fast/hidpi/image-set-cross-fade.html: Added.
  • fast/hidpi/image-set-gradient-expected.html: Added.
  • fast/hidpi/image-set-gradient-multi-expected.html: Added.
  • fast/hidpi/image-set-gradient-multi.html: Added.
  • fast/hidpi/image-set-gradient-single-expected.html: Added.
  • fast/hidpi/image-set-gradient-single.html: Added.
  • fast/hidpi/image-set-gradient.html: Added.

Added ref-tests for several generated-inside-image-set use-cases

10:07 AM Changeset in webkit [254860] by Chris Dumez
  • 2 edits
    2 adds in trunk/LayoutTests

Regression r254652: fast/xmlhttprequest/xmlhttprequest-multiple-sync-xhr-during-unload.html fails on windows
​https://bugs.webkit.org/show_bug.cgi?id=206474

Unreviewed, land Windows-specific baseline and unskip the test.

  • platform/win/TestExpectations:
  • platform/win/fast/xmlhttprequest/xmlhttprequest-multiple-sync-xhr-during-unload-expected.txt: Added.
9:57 AM Changeset in webkit [254859] by Chris Dumez
  • 15 edits in trunk/Source

Minor improvements to StorageAreaMap
​https://bugs.webkit.org/show_bug.cgi?id=206433

Reviewed by Darin Adler.

Source/WebCore:

Use inline initialization for some of StorageMap's data member.
Also specify uint8_t as underlying type of StorageType enum class for better packing.

  • inspector/InspectorInstrumentation.h:
  • storage/StorageArea.h:
  • storage/StorageMap.cpp:

(WebCore::StorageMap::StorageMap):

  • storage/StorageMap.h:
  • storage/StorageType.h:

Source/WebKit:

Minor improvements to StorageAreaMap:

  1. The class does not need to be RefCounted, as it is solely owned by StorageNamespaceImpl. Having it RefCounted was actually dangerous because StorageAreaMap had a raw pointer data member to its owner: m_storageNamespace. This raw pointer could become stale if you extend the lifetime of the StorageAreaMap object to outlive its StorageNamespaceImpl.
  2. Make StorageAreaMap::connect() private as it is never called from outside the class
  3. Reorder data members for better packing
  4. Use modern loops in the implementation
  5. Rename loadValuesIfNeeded() to ensureStorageMap() and have it return the StorageMap object. This makes calls site more concise and it makes it clearer when this method needs to be called.
  6. Mark class as final
  7. Replace LOG_ERROR() with RELEASE_LOG_ERROR() so that we can see error logging in sysdiagnoses
  8. Use more references instead of raw pointers to make it clear when null checks are not needed
  • WebProcess/WebStorage/StorageAreaImpl.cpp:

(WebKit::StorageAreaImpl::create):
(WebKit::StorageAreaImpl::StorageAreaImpl):

  • WebProcess/WebStorage/StorageAreaImpl.h:
  • WebProcess/WebStorage/StorageAreaMap.cpp:

(WebKit::StorageAreaMap::StorageAreaMap):
(WebKit::StorageAreaMap::length):
(WebKit::StorageAreaMap::key):
(WebKit::StorageAreaMap::item):
(WebKit::StorageAreaMap::setItem):
(WebKit::StorageAreaMap::removeItem):
(WebKit::StorageAreaMap::clear):
(WebKit::StorageAreaMap::contains):
(WebKit::StorageAreaMap::resetValues):
(WebKit::StorageAreaMap::ensureStorageMap):
(WebKit::StorageAreaMap::applyChange):
(WebKit::StorageAreaMap::dispatchSessionStorageEvent):
(WebKit::StorageAreaMap::dispatchLocalStorageEvent):
(WebKit::StorageAreaMap::connect):
(WebKit::StorageAreaMap::disconnect):

  • WebProcess/WebStorage/StorageAreaMap.h:
  • WebProcess/WebStorage/StorageAreaMap.messages.in:
  • WebProcess/WebStorage/StorageNamespaceImpl.cpp:

(WebKit::StorageNamespaceImpl::storageArea):

  • WebProcess/WebStorage/StorageNamespaceImpl.h:
9:55 AM Changeset in webkit [254858] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, add comment to make it clearer that the code restored in r254857 is not dead

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::prewarmLocalStorageIfNecessary):

9:52 AM Changeset in webkit [254857] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

Unreviewed, rolling out r254753.

It turns out this is not dead code

Reverted changeset:

"Drop dead code related to local storage prewarming"
​https://bugs.webkit.org/show_bug.cgi?id=206418
​https://trac.webkit.org/changeset/254753

9:51 AM Changeset in webkit [254856] by sihui_liu@apple.com
  • 17 edits in trunk

Disable WebSQL everywhere by default except in tests
​https://bugs.webkit.org/show_bug.cgi?id=204907

Reviewed by Ryosuke Niwa.

Source/WebCore:

No new tests. All WebSQL tests are enabled for now.

  • page/RuntimeEnabledFeatures.h:

Source/WebKitLegacy/mac:

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences webSQLEnabled]):
(-[WebPreferences setWebSQLEnabled:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKitLegacy/win:

  • Interfaces/IWebPreferencesPrivate.idl:
  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp:

(WebPreferences::initializeDefaultSettings):
(WebPreferences::webSQLEnabled):
(WebPreferences::setWebSQLEnabled):

  • WebPreferences.h:
  • WebView.cpp:

(WebView::notifyPreferencesChanged):

Tools:

  • DumpRenderTree/TestOptions.h:
  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(setWebPreferencesForTestOptions):

9:05 AM Changeset in webkit [254855] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Add build and layout-test steps for commit-queue in new ews
​https://bugs.webkit.org/show_bug.cgi?id=206510

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/factories.py:
8:12 AM Changeset in webkit [254854] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GTK][WPE] Gardening, mark remote-playback tests as failure
​https://bugs.webkit.org/show_bug.cgi?id=206529

Unreviewed gardening.

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
8:07 AM Changeset in webkit [254853] by Antti Koivisto
  • 7 edits in trunk/Source/WebCore

[LFC][Integration] Use InlineFormattingContext directly
​https://bugs.webkit.org/show_bug.cgi?id=206526

Reviewed by Zalan Bujtas.

Stop using LayoutContext (which is more of a full tree layout thing) and use InlineFormattingContext directly instead.
This has a side benefit of not needing to setup a root display box.

  • layout/LayoutContext.cpp:

(WebCore::Layout::LayoutContext::layoutFormattingContextSubtree):

  • layout/blockformatting/BlockFormattingContext.h:
  • layout/inlineformatting/InlineFormattingContext.h:
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::LineLayout):
(WebCore::LayoutIntegration::LineLayout::layout):
(WebCore::LayoutIntegration::LineLayout::displayInlineContent const):
(WebCore::LayoutIntegration::LineLayout::prepareRootGeometryForLayout): Deleted.

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/tableformatting/TableFormattingContext.h:
7:39 AM Changeset in webkit [254852] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] TestWebKitUserContentFilterStore is crashing
​https://bugs.webkit.org/show_bug.cgi?id=206527

Patch by Alejandro G. Castro <​alex@igalia.com> on 2020-01-21
Reviewed by Adrian Perez de Castro.

We are asserting looking for a category of error when converting
in the toGError function, but depending on the function called the
category can be different.

  • UIProcess/API/glib/WebKitUserContentFilterStore.cpp:

(toGError):
(webkitUserContentFilterStoreSaveBytes): Moved the ASSERT to the
function that uses this category, the other functions calling
toGError were already ASSERTing the correct category.

7:38 AM Changeset in webkit [254851] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Layout Test fast/xmlhttprequest/xmlhttprequest-multiple-sync-xhr-during-unload.html is failing
​https://bugs.webkit.org/show_bug.cgi?id=206515

Unreviewed test gardening.

  • platform/win/TestExpectations:
5:30 AM Changeset in webkit [254850] by commit-queue@webkit.org
  • 2 edits
    1 add in trunk/LayoutTests/imported/w3c

Fix fetch/api/policies/referrer-origin-worker.html
​https://bugs.webkit.org/show_bug.cgi?id=206520

Patch by Rob Buis <​rbuis@igalia.com> on 2020-01-21
Reviewed by Youenn Fablet.

Fix fetch/api/policies/referrer-origin-worker.html by adding
referrer-origin-worker.html.headers, which got lost in the
automated import process.

  • web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt:
  • web-platform-tests/fetch/api/policies/referrer-origin-worker.html.headers: Added.
4:25 AM Changeset in webkit [254849] by cathiechen
  • 46 edits in trunk

Add support for scroll behavior relies on ScrollAnimation of the Web process
​https://bugs.webkit.org/show_bug.cgi?id=204882

Reviewed by FrΓ©dΓ©ric Wang

Based on the patch by FrΓ©dΓ©ric Wang.

LayoutTests/imported/w3c:

Enable CSSOMViewSmoothScrollingEnabled on scroll behavior tests and update expectations.

  • web-platform-tests/css/cssom-view/scroll-behavior-default-css-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-default-css.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-element-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-element.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-smooth-positions.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-root-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-root.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-window-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html:

Source/WebCore:

This patch introduces a programmatic smooth scrolling in WebKit from the CSSOM View
specification [1]. To use this effect, web developers can pass a behavior parameter (auto,
smooth, or instant) to Element.scroll, Element.scrollTo, Element.scrollBy,
Element.scrollIntoView, Window.scroll, Window.scrollTo or Window.scrollBy [2]. When behavior
is auto, the instant/smooth characteristic is actually taken from the value of a new CSS
scroll-behavior property [3]. Both the new CSS and DOM behavior are protected by a runtime
flag.

[1] ​https://drafts.csswg.org/cssom-view
[2] ​https://drafts.csswg.org/cssom-view/#dictdef-scrolloptions
[3] ​https://drafts.csswg.org/cssom-view/#propdef-scroll-behavior

Tests: imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-default-css.html

imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-element.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-smooth-positions.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-subframe-root.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html

  • Sources.txt: Build ScrollAnimationSmooth.cpp on all platforms.
  • SourcesGTK.txt: Remove ScrollAnimationSmooth.cpp since it is built on all platforms now.
  • dom/Element.cpp:

(WebCore::Element::scrollIntoView): Pass scroll behavior, if any.
(WebCore::Element::scrollBy):
(WebCore::Element::scrollTo): Handle the case when scroll behavior is smooth.
(WebCore::Element::setScrollLeft): Handle the case when scroll behavior is smooth.
(WebCore::Element::setScrollTop): Handle the case when scroll behavior is smooth.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::scrollBy const):
(WebCore::DOMWindow::scrollTo const): Handle the case when scroll behavior is smooth.
The optimization of cancel (0, 0) scrolling is skipped if an animated scroll is in progress.
Otherwise, the previous scroll won't be stopped by a follow-up scroll.

  • page/FrameView.cpp:

(WebCore::FrameView::setScrollPosition):
(WebCore::FrameView::scrollToOffsetWithAnimation): Start an animated scroll.

  • page/FrameView.h:
  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):

  • platform/ScrollAnimation.h:

(WebCore::ScrollAnimation::scroll): Function to animate scrolling to a specified position.

  • platform/ScrollAnimationSmooth.cpp: Build this file on all platforms. Add a

smoothFactorForProgrammaticScroll parameter to slow down the smooth scrolling.
(WebCore::ScrollAnimationSmooth::scroll):
(WebCore::ScrollAnimationSmooth::updatePerAxisData): Scale the time parameters of the
animation so that it looks smoother.

  • platform/ScrollAnimationSmooth.h: Declare the class on all platforms.
  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::ScrollAnimator): Initialize animation member for programmatic scrolling.
(WebCore::ScrollAnimator::scrollToOffset): Animate scrolling to the specified position.
(WebCore::ScrollAnimator::cancelAnimations): Copy logic from ScrollAnimationSmooth.cpp.
(WebCore::ScrollAnimator::serviceScrollAnimations): Ditto.
(WebCore::ScrollAnimator::willEndLiveResize): Ditto.
(WebCore::ScrollAnimator::didAddVerticalScrollbar): Ditto.
(WebCore::ScrollAnimator::didAddHorizontalScrollbar): Ditto.

  • platform/ScrollAnimator.h: New animation member for smooth programmatic scrolling.

(WebCore::ScrollAnimator::ScrollAnimator::cancelAnimations): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::serviceScrollAnimations): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::willEndLiveResize): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::didAddVerticalScrollbar): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::didAddHorizontalScrollbar): Deleted.

  • platform/ScrollTypes.h: Add ScrollBehaviorStatus to indicate the status of scrolling.
  • platform/ScrollView.cpp:

(WebCore::ScrollView::setScrollPosition): Follow the CSSOM View spec: If a scroll is in
progress, we interrupt it and continue the scroll call (even when we are at the final position).

  • platform/ScrollView.h:
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::scrollToOffsetWithAnimation):
(WebCore::ScrollableArea::setScrollOffsetFromInternals):
(WebCore::ScrollableArea::setScrollOffsetFromAnimation): To avoid iterate calling,
move the requestScrollPositionUpdate(position) checking out of setScrollOffsetFromAnimation().

  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::currentScrollBehaviorStatus const): Maintain currentScrollBehaviorStatus.
(WebCore::ScrollableArea::setScrollBehaviorStatus):

  • platform/generic/ScrollAnimatorGeneric.cpp:

(WebCore::ScrollAnimatorGeneric::updatePosition):

  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::cancelAnimations): Call parent member to handle programmatic scrolling.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::setScrollLeft): Add flag to indicate animated or not.
(WebCore::RenderBox::setScrollTop): Ditto.
(WebCore::RenderBox::setScrollPosition):

  • rendering/RenderBox.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollToXPosition): Ditto.
(WebCore::RenderLayer::scrollToYPosition): Ditto.
(WebCore::RenderLayer::scrollToPosition):
(WebCore::RenderLayer::scrollToOffset): Follow the CSSOM View spec: If a scroll is in
progress, we interrupt it and continue the scroll call (even when we are at the final
position). It's ScrollBehaviorType::Instant scroll.
(WebCore::RenderLayer::requestScrollPositionUpdate):
(WebCore::RenderLayer::scrollToOffsetWithAnimation): Ditto. This is similar to scrollToOffset
but animates the scroll. It's ScrollBehaviorType::Smooth scroll.
(WebCore::RenderLayer::scrollTo):
(WebCore::RenderLayer::scrollRectToVisible): Again don't do an early return if scroll is in
progress. We call scrollToOffsetWithAnimation instead of scrollToOffset when appropriate.
Note that this function may not work well for several nested scroll boxes with at least one
element with smooth behavior. It will handled in bug Follow.

  • rendering/RenderLayer.h: Add scroll behavior to ScrollTectToVisibleOptions.
  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::setScrollLeft): Add animated flag.
(WebCore::RenderListBox::setScrollTop): Ditto.

  • rendering/RenderListBox.h:
  • rendering/RenderTextControlSingleLine.cpp:

(WebCore::RenderTextControlSingleLine::setScrollLeft):
(WebCore::RenderTextControlSingleLine::setScrollTop):

  • rendering/RenderTextControlSingleLine.h:
  • testing/Internals.cpp:

(WebCore::Internals::unconstrainedScrollTo):

LayoutTests:

  • platform/mac-wk1/TestExpectations: Skip these tests on WK1 as they don't work for now.
3:28 AM Changeset in webkit [254848] by Carlos Garcia Campos
  • 4 edits in trunk

[GTK][WPE] Enable WebGL by default
​https://bugs.webkit.org/show_bug.cgi?id=205335

Reviewed by Adrian Perez de Castro.

Source/WebKit:

  • UIProcess/API/glib/WebKitSettings.cpp:

(webkit_settings_class_init):

Tools:

Update the unit test.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:

(testWebKitSettings):

3:15 AM Changeset in webkit [254847] by Carlos Garcia Campos
  • 4 edits in trunk

[GTK][WPE] Enable WebAudio by default
​https://bugs.webkit.org/show_bug.cgi?id=205334

Reviewed by Adrian Perez de Castro.

Source/WebKit:

  • UIProcess/API/glib/WebKitSettings.cpp:

(webkit_settings_class_init):

Tools:

Update the unit test.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:

(testWebKitSettings):

1:41 AM Changeset in webkit [254846] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Rename JSPromiseFields abstract heap to JSInternalFields.
​https://bugs.webkit.org/show_bug.cgi?id=206518
<rdar://problem/58751778>

Reviewed by Yusuke Suzuki.

This is because it is used for all internal fields, not just the ones in JSPromise.

  • dfg/DFGAbstractHeap.h:
  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

12:03 AM Changeset in webkit [254845] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Log the destination of a load when hitting network process
​https://bugs.webkit.org/show_bug.cgi?id=206422

Reviewed by Darin Adler.

  • NetworkProcess/NetworkResourceLoader.cpp:

No change of behavior, adding more precise logging.

Jan 20, 2020:

11:21 PM Changeset in webkit [254844] by Diego Pino Garcia
  • 2 edits
    8 adds in trunk/LayoutTests

[GTK] Gardening, update TestExpectations and baselines
​https://bugs.webkit.org/show_bug.cgi?id=206501

Unreviewed gardening.

  • platform/gtk/TestExpectations:
  • platform/gtk/compositing/visibility/visibility-change-in-subframe-expected.txt: Added.
  • platform/gtk/editing/input/scroll-to-edge-if-line-break-at-end-of-document-contenteditable-expected.txt: Added.
  • platform/gtk/fast/block/basic/fieldset-stretch-to-legend-expected.txt: Added.
  • platform/gtk/js/dom/navigator-maxtouchpoints-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/color-prop-02-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/color-prop-03-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.txt: Added.
8:01 PM Changeset in webkit [254843] by weinig@apple.com
  • 40 edits in trunk

Platform.h is out of control Part 8: Macros are used inconsistently
​https://bugs.webkit.org/show_bug.cgi?id=206425

Reviewed by Darin Adler.

Source/bmalloc:

  • bmalloc/BPlatform.h:

Update OS_EFFECTIVE_ADDRESS_WIDTH to match WTF definition, add needed OS macros.

Source/JavaScriptCore:

  • assembler/ARM64Assembler.h:

(JSC::ARM64Assembler::cacheFlush):
(JSC::ARM64Assembler::xOrSp):
(JSC::ARM64Assembler::xOrZr):

  • assembler/ARM64Registers.h:
  • assembler/ARMv7Assembler.h:

(JSC::ARMv7Assembler::cacheFlush):

  • assembler/ARMv7Registers.h:
  • assembler/AssemblerCommon.h:

(JSC::isDarwin):

  • b3/air/AirCCallingConvention.cpp:
  • jit/ExecutableAllocator.h:
  • jit/ThunkGenerators.cpp:
  • jsc.cpp:
  • runtime/MathCommon.cpp:

Use OS(DARWIN) more consistently for darwin level functionality.

  • bytecode/CodeOrigin.h:
  • runtime/JSString.h:

Update to use OS_CONSTANT.

  • disassembler/ARM64/A64DOpcode.cpp:
  • disassembler/ARM64Disassembler.cpp:
  • disassembler/UDis86Disassembler.cpp:
  • disassembler/UDis86Disassembler.h:
  • disassembler/X86Disassembler.cpp:
  • disassembler/udis86/udis86.c:
  • disassembler/udis86/udis86_decode.c:
  • disassembler/udis86/udis86_itab_holder.c:
  • disassembler/udis86/udis86_syn-att.c:
  • disassembler/udis86/udis86_syn-intel.c:
  • disassembler/udis86/udis86_syn.c:
  • interpreter/Interpreter.cpp:
  • interpreter/Interpreter.h:
  • interpreter/InterpreterInlines.h:

(JSC::Interpreter::getOpcodeID):

  • llint/LowLevelInterpreter.cpp:
  • tools/SigillCrashAnalyzer.cpp:

Switch to using ENABLE rather than USE for features internal to WebKit

Source/WTF:

Start addressing FIXMEs added to Platform.h (and helper files) during previous
cleanup work.

  • Renames WTF_CPU_EFFECTIVE_ADDRESS_WIDTH to WTF_OS_CONSTANT_EFFECTIVE_ADDRESS_WIDTH, making it available via new macro OS_CONSTANT(...), and syncs bmalloc redefinition.
  • Renames:

USE_LLINT_EMBEDDED_OPCODE_ID to ENABLE_LLINT_EMBEDDED_OPCODE_ID
USE_UDIS86 to ENABLE_UDIS86
USE_ARM64_DISASSEMBLER to ENABLE_ARM64_DISASSEMBLER

Enable is more appropriate here as these enable functionality within webkit.

  • Removes undefs that are no longer needed due to only defining the macro once now.
  • Removes dead defined(LP64) check after PLATFORM(MAC) macOS is always 64-bit these days.
  • wtf/Packed.h:

(WTF::alignof):

  • wtf/Platform.h:
  • wtf/PlatformEnable.h:
  • wtf/PlatformOS.h:
  • wtf/WTFAssertions.cpp:
  • wtf/text/StringCommon.h:

Tools:

  • TestWebKitAPI/Tests/WTF/Packed.cpp:

(TestWebKitAPI::TEST):
Update to use OS_CONSTANT.

7:48 PM Changeset in webkit [254842] by commit-queue@webkit.org
  • 9 edits
    1 add in trunk

Remove own toString from NativeError prototype
​https://bugs.webkit.org/show_bug.cgi?id=204629

Patch by Gus Caplan <​me@gus.host> on 2020-01-20
Reviewed by Ross Kirsling.

NativeError prototypes are expected to inherit toString from
Error.prototype. See ​https://github.com/tc39/ecma262/issues/1794
for additional details.

JSTests:

  • stress/nativeerror-prototype-tostring.js:

Source/JavaScriptCore:

  • runtime/ErrorPrototype.cpp:

(JSC::ErrorPrototypeBase::ErrorPrototypeBase):
(JSC::ErrorPrototypeBase::finishCreation):
(JSC::ErrorPrototype::ErrorPrototype):
(JSC::ErrorPrototype::create): Deleted.
(JSC::ErrorPrototype::finishCreation): Deleted.

  • runtime/ErrorPrototype.h:

(JSC::ErrorPrototype::createStructure): Deleted.

  • runtime/NativeErrorPrototype.cpp:

(JSC::NativeErrorPrototype::NativeErrorPrototype):

  • runtime/NativeErrorPrototype.h:

LayoutTests:

  • http/tests/security/regress-52192-expected.txt:
  • http/tests/security/regress-52192.html:
6:54 PM Changeset in webkit [254841] by commit-queue@webkit.org
  • 9 edits
    6 adds in trunk

EXIF orientation is ignored for some CSS images
​https://bugs.webkit.org/show_bug.cgi?id=203355

Patch by Said Abou-Hallawa <​sabouhallawa@apple.com> on 2020-01-20
Reviewed by Simon Fraser.

Source/WebCore:

Unlike GraphicsContext::drawNativeImage(), GraphicsContext::drawPattern()
can't change the coordinates system before drawing the image to respect
the EXIF orientation. Drawing a pattern tries to fill the destination
rectangle with the image according to the GraphicsContext origin and the
direction of its axes. So we need to create temporary NativeImage with
respecting the EXIF orientation and then use it to draw the pattern.

Tests: fast/images/exif-orientation-background-image-no-repeat.html

fast/images/exif-orientation-background-image-repeat.html
fast/images/exif-orientation-border-image.html

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::nativeImageForCurrentFrameRespectingOrientation):
(WebCore::BitmapImage::drawPattern):

  • platform/graphics/BitmapImage.h:
  • platform/graphics/Image.h:

(WebCore::Image::nativeImage):
(WebCore::Image::nativeImageForCurrentFrameRespectingOrientation):
(WebCore::Image::nativeImageOfSize):

  • platform/graphics/ImageBuffer.h:
  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::drawPattern):

  • platform/graphics/cg/NativeImageCG.cpp:

(WebCore::drawNativeImage):

  • rendering/style/NinePieceImage.cpp:

(WebCore::NinePieceImage::paint const):

LayoutTests:

  • fast/images/exif-orientation-background-image-no-repeat-expected.html: Added.
  • fast/images/exif-orientation-background-image-no-repeat.html: Added.
  • fast/images/exif-orientation-background-image-repeat-expected.html: Added.
  • fast/images/exif-orientation-background-image-repeat.html: Added.
  • fast/images/exif-orientation-border-image-expected.html: Added.
  • fast/images/exif-orientation-border-image.html: Added.
5:48 PM Changeset in webkit [254840] by mjs@apple.com
  • 2 edits in trunk/Source/WebCore

Update status of Resize Observer to "Supported In Preview"
​https://bugs.webkit.org/show_bug.cgi?id=206513

Reviewed by Darin Adler.

No new tests. Just updating status.

  • features.json: Update Resize Observer to "Supported In Preview"
5:35 PM Changeset in webkit [254839] by Fujii Hironori
  • 47 edits in trunk

Unreviewed, rolling out r254807.

Breaks Apple internal builds.

Reverted changeset:

"Add support for scroll behavior relies on ScrollAnimation of
the Web process"
​https://bugs.webkit.org/show_bug.cgi?id=204882
​https://trac.webkit.org/changeset/254807

3:55 PM Changeset in webkit [254838] by sbarati@apple.com
  • 2 edits in trunk/Tools

REGRESSION(r254788): mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla fails
​https://bugs.webkit.org/show_bug.cgi?id=206477
<rdar://problem/58714886>

Unreviewed.

In r232603 when we added test specific options, the implementation did not
clear the test specific options before parsing each test inside a yaml
file. It only worked for tests where we ran each js file inside a directory.
This patch makes it also work for yaml files.

  • Scripts/run-jsc-stress-tests:
3:32 PM Changeset in webkit [254837] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] InlineFormattingContext::lineLayout should take a InlineItem range
​https://bugs.webkit.org/show_bug.cgi?id=206507
<rdar://problem/58742468>

Reviewed by Antti Koivisto.

This is in preparation for being able to run inline layout on partial IFC content.

  • layout/inlineformatting/InlineFormattingContext.cpp:

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

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

(WebCore::Layout::nextWrapOpportunity):
(WebCore::Layout::LineLayoutContext::layoutLine):
(WebCore::Layout::LineLayoutContext::close):
(WebCore::Layout::LineLayoutContext::nextContentForLine):

  • layout/inlineformatting/LineLayoutContext.h:
1:21 PM Changeset in webkit [254836] by ddkilzer@apple.com
  • 42 edits
    5 deletes in trunk

Fix missing header guards and clean up empty files in WebCore, WebKitLegacy, WebKit, Tools
<​https://webkit.org/b/206505>

Reviewed by Eric Carlson.

Source/WebCore:

  • bindings/js/StructuredClone.h:
  • bridge/npruntime_internal.h:
  • editing/cocoa/AutofillElements.h:
  • platform/graphics/FormatConverter.h:
  • platform/graphics/ImageBufferData.h:
  • platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h:
  • platform/ios/wak/WebCoreThreadSystemInterface.h:
  • platform/network/mac/WebCoreURLResponse.h:
  • Add #pragma once statement.
  • platform/cocoa/SystemVersion.h:
  • platform/mac/WebNSAttributedStringExtras.h:
  • Add @class declarations as hint that this header is only used by Objective-C[++] source files.
  • platform/mediastream/libwebrtc/VideoToolBoxDecoderFactory.cpp: Remove.
  • platform/mediastream/libwebrtc/VideoToolBoxDecoderFactory.h: Remove.
  • platform/mediastream/libwebrtc/VideoToolBoxEncoderFactory.cpp: Remove.
  • platform/mediastream/libwebrtc/VideoToolBoxEncoderFactory.h: Remove.
  • Remove unused, empty files.
  • platform/network/HTTPStatusCodes.h: Remove.
  • Remove unused header.

Source/WebCore/PAL:

  • pal/ios/QuickLookSoftLink.h:
  • pal/spi/ios/SQLite3SPI.h:
  • Add #pragma once statement.

Source/WebKit:

  • Platform/IPC/Attachment.h:
  • Fix "# pragma" formatting. (It functioned, but WebKit style doesn't indent macros like this.)
  • Platform/ios/AccessibilityIOS.h:
  • Shared/ShareSheetCallbackID.h:
  • Shared/mac/SecItemShim.h:
  • UIProcess/API/C/WKPageRenderingProgressEventsInternal.h:
  • UIProcess/API/Cocoa/WKNavigationData.h:
  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/API/Cocoa/WKWebArchive.h:
  • Add #pragma once statement.

Source/WebKitLegacy:

  • WebCoreSupport/WebViewGroup.h:
  • Add #pragma once statement.

Source/WebKitLegacy/mac:

  • Misc/WebKitStatisticsPrivate.h:
  • Misc/WebLocalizableStrings.h: Modernize OBJC and cplusplus checks.
  • Misc/WebTypesInternal.h:
  • WebView/WebMediaPlaybackTargetPicker.h:
  • Add #pragma once statement.

Source/WebKitLegacy/win:

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebContextMenuClient.h:
  • WebCoreSupport/WebDesktopNotificationsDelegate.h:
  • WebCoreSupport/WebDragClient.h:
  • WebDocumentLoader.h:
  • WebKitStatisticsPrivate.h:
  • WebPreferenceKeysPrivate.h:
  • Add #pragma once statement.

Tools:

  • DumpRenderTree/TestNetscapePlugIn/TestObject.h:
  • TestWebKitAPI/JavaScriptTest.h:
  • TestWebKitAPI/Tests/WebCore/DFAHelpers.h:
  • Add #pragma once statement.
1:00 PM Changeset in webkit [254835] by Devin Rousso
  • 4 edits in trunk/LayoutTests

inspector/heap/getRemoteObject.html is a flaky failure
​https://bugs.webkit.org/show_bug.cgi?id=156077
<rdar://problem/25469998>

Reviewed by Darin Adler.

Instead of blindly assuming that the first object is the window global object, iterate all
the objects found by WI.HeapSnapshotProxy.prototype.instancesWithClassName and check that
we see at least one window global object.

  • inspector/heap/getRemoteObject.html:
  • inspector/heap/getRemoteObject-expected.txt:
  • platform/mac-wk2/TestExpectations:
12:51 PM Changeset in webkit [254834] by Devin Rousso
  • 4 edits in trunk/LayoutTests

REGRESSION (r250655?): [ Mac Debug ] inspector/runtime/promise-native-getter.html is a flaky timeout
​https://bugs.webkit.org/show_bug.cgi?id=206303
<rdar://problem/58612520>

Reviewed by Darin Adler.

Rework the test to not be reliant on real world timing.

  • inspector/runtime/promise-native-getter.html:
  • inspector/runtime/promise-native-getter-expected.txt:
  • platform/mac/TestExpectations:
12:24 PM Changeset in webkit [254833] by Wenson Hsieh
  • 2 edits
    2 adds in trunk/LayoutTests

Add a test to verify that the callout bar appears after selecting a word
​https://bugs.webkit.org/show_bug.cgi?id=206488
<rdar://problem/58661768>

Reviewed by Darin Adler.

  • editing/selection/ios/show-callout-bar-after-selecting-word-expected.txt: Added.
  • editing/selection/ios/show-callout-bar-after-selecting-word.html: Added.

Add the new layout test.

  • resources/ui-helper.js:

(window.UIHelper.rectForMenuAction):

Wrap this UI script in its own function scope, such that it can be used multiple times in the same layout test.

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

Fix missing header guards and clean up empty files in bmalloc, WTF, JavaScriptCore
<​https://webkit.org/b/206481>

Reviewed by Darin Adler.

Source/bmalloc:

  • bmalloc/PerThread.cpp: Remove empty file.
  • bmalloc/ScopeExit.h: Add #pragma once.

Source/JavaScriptCore:

  • dfg/DFGPrePostNumbering.cpp: Remove empty file.
  • dfg/DFGPrePostNumbering.h: Remove empty file.
  • runtime/OptionEntry.h: Remove empty file.
  • API/JSCallbackObjectFunctions.h:
  • b3/testb3.h:
  • heap/IsoInlinedHeapCellType.h:
  • wasm/WasmGeneratorTraits.h:
  • Add #pragma once.

Source/WTF:

  • wtf/cocoa/Entitlements.h:
  • wtf/win/PathWalker.h:
  • Add #pragma once.
10:07 AM Changeset in webkit [254831] by ddkilzer@apple.com
  • 3 edits in trunk/Tools

check-webkit-style: Improve header guard checks
<​https://webkit.org/b/206480>

Reviewed by Darin Adler.

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

(check_for_header_guard):

  • Add file_path (filename) argument to check for config.h and *Prefix.h headers.
  • Use hints in header file to determine if this is a header file only used by Objective-C or not.
  • Change #ifndef/#define check to use both lines instead of assuming a format for the macro.
  • Emit new 'build/header_guard_missing' error.

(_process_lines):

  • Pass filename argument to check_for_header_guard().

(CppChecker):

  • Enable new 'build/header_guard_missing' check.
  • Scripts/webkitpy/style/checkers/cpp_unittest.py:

(CppStyleTestBase.perform_header_guard_check):
(CppStyleTestBase.assert_header_guard):

  • Move default filename argument from perform_header_guard_check() to assert_header_guard() so tests may pass in different values for header paths.

(CppStyleTest):

  • Add tests for config.h, *Prefix.h headers.
  • Update test for `build/header_guard' (legacy header guard) error.
  • Update test for missing header guard so that it now expects a 'build/header_guard_missing' error message.
  • Add tests for Objective-C headers with and without OBJC checks.
8:56 AM Changeset in webkit [254830] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.27.4

WPE WebKit 2.27.4

8:55 AM Changeset in webkit [254829] by Adrian Perez de Castro
  • 4 edits in trunk

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

.:

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

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.27.4
8:17 AM Changeset in webkit [254828] by zandobersek@gmail.com
  • 12 edits
    2 adds in trunk

[WPE] Add WebKitRectangle, use it for WebKitWebView's SHOW_MENU signal
​https://bugs.webkit.org/show_bug.cgi?id=206495

Reviewed by Carlos Garcia Campos.

Source/WebKit:

Add WebKitRectangle, a new boxed-type API containing information about
a simple rectangle consisting of integer coordinates. This would
correspond to types like GdkRectangle or cairo_rectangle_int_t.

Objects of this type are for now needed to inform the position and size
of the option menu. The show-menu signal signature is adjusted
accordingly.

No new tests -- the relevant test was updated.

  • PlatformWPE.cmake:
  • SourcesWPE.txt:
  • UIProcess/API/glib/WebKitWebView.cpp:

(WebKitWebViewClient::showOptionMenu):
(webkit_web_view_class_init):
(webkitWebViewShowOptionMenu):

  • UIProcess/API/glib/WebKitWebViewPrivate.h:
  • UIProcess/API/wpe/WebKitPopupMenu.cpp:

(WebKit::WebKitPopupMenu::showPopupMenu):

  • UIProcess/API/wpe/WebKitRectangle.cpp: Added.

(webkit_rectangle_copy):
(webkit_rectangle_free):

  • UIProcess/API/wpe/WebKitRectangle.h: Added.
  • UIProcess/API/wpe/WebKitWebView.h:
  • UIProcess/API/wpe/WebKitWebViewClient.h:
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt:
  • UIProcess/API/wpe/docs/wpe-docs.sgml:

Tools:

Update the TestOptionMenu test case for WPE now that a rectangle object
is also passed through to the signal handler.

  • TestWebKitAPI/Tests/WebKitGLib/TestOptionMenu.cpp:

(OptionMenuTest::showOptionMenuCallback):
(OptionMenuTest::showOptionMenu):

8:06 AM Changeset in webkit [254827] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Add support for the rare case of revert
​https://bugs.webkit.org/show_bug.cgi?id=206486
<rdar://problem/58720638>

Reviewed by Antti Koivisto.

This patch re-introduces the support for revert when a previous wrap position turns out to be the line end position.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::initialize):
(WebCore::Layout::LineBuilder::clearContent):

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

(WebCore::Layout::LineLayoutContext::layoutLine):
(WebCore::Layout::LineLayoutContext::rebuildLineForRevert):

  • layout/inlineformatting/LineLayoutContext.h:
7:52 AM Changeset in webkit [254826] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit

[GTK][WPE] InputMethodFilter: do not notify about focus in when only content type changed
​https://bugs.webkit.org/show_bug.cgi?id=206502

Reviewed by Adrian Perez de Castro.

That's unbalancing the focus in/out notifications.

  • UIProcess/API/glib/InputMethodFilter.cpp:

(WebKit::InputMethodFilter::setContext): Always call notifyContentType().
(WebKit::InputMethodFilter::setState): Only call notifyFocusedIn() and notifyFocusedOut when there's a focus change.
(WebKit::InputMethodFilter::notifyContentType): Notify content type if changed.
(WebKit::InputMethodFilter::notifyFocusedIn): Move the content type notification to its own function.

  • UIProcess/API/glib/InputMethodFilter.h:
7:43 AM Changeset in webkit [254825] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebCore

Invalid usage of ENABLE() before it's defined in WebCore/layout/integration/LayoutIntegrationBoxTree.cpp
​https://bugs.webkit.org/show_bug.cgi?id=206500

Reviewed by Ε½an DoberΕ‘ek.

No new tests needed.

  • layout/integration/LayoutIntegrationBoxTree.cpp: Include "config.h"

before using the ENABLE() macro, to make sure that it gets defined.

7:20 AM Changeset in webkit [254824] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GTK] Gardening, remove expected to fail but pass
​https://bugs.webkit.org/show_bug.cgi?id=206493

Unreviewed gardening.

  • platform/gtk/TestExpectations:
7:07 AM Changeset in webkit [254823] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

REGRESSION: ( r254256 ) [ Mojave wk2 ] http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-gpuprocess.html is a flaky failure
​https://bugs.webkit.org/show_bug.cgi?id=206437
<rdar://problem/58692880>

Reviewed by Eric Carlson.

Hypothesis from flakiness is that, in GPUProcess, the call to stopRecording is not synchronously followed by a call to fetchData.
If too much time happened between the two calls, stopRecording will trigger setting m_isStopped and m_hasStartedWriting to false.
Any further call to fetchData will then fail.

To circumvent this issue, we add a flag m_isStopping.
If we are stopping, the completionHandler to fetchData call is delayed until stopRecording is fully finished.
When stopping will be finished, the completionHandler will send back the data.
This also allows to read the file in a background thread.

No new tests, this should unflake the flaky test.

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

(WebCore::MediaRecorderPrivateWriter::stopRecording):
(WebCore::MediaRecorderPrivateWriter::fetchData):

6:46 AM Changeset in webkit [254822] by Carlos Garcia Campos
  • 14 edits in trunk

[GTK][WPE] Also include the selection index in webkit_input_method_context_notify_surrounding()
​https://bugs.webkit.org/show_bug.cgi?id=206497

Reviewed by Adrian Perez de Castro.

Source/WebKit:

Input methods also want to know the selection.

  • Shared/EditorState.cpp:

(WebKit::EditorState::PostLayoutData::encode const): Encode paragraphContextSelectionPosition.
(WebKit::EditorState::PostLayoutData::decode): Decode paragraphContextSelectionPosition.

  • Shared/EditorState.h: Add paragraphContextSelectionPosition.
  • UIProcess/API/glib/InputMethodFilter.cpp:

(WebKit::InputMethodFilter::notifySurrounding): Also include the selection index.

  • UIProcess/API/glib/InputMethodFilter.h:
  • UIProcess/API/glib/WebKitInputMethodContext.cpp:

(webkit_input_method_context_notify_surrounding):

  • UIProcess/API/gtk/WebKitInputMethodContext.h:
  • UIProcess/API/gtk/WebKitInputMethodContextImplGtk.cpp:

(webkitInputMethodContextImplGtkNotifySurrounding): Ignore the selection index, since GtkIMContext doesn't
support it.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseUpdateTextInputState): Pass paragraphContextSelectionPosition to InputMethodFilter::notifySurrounding().

  • UIProcess/API/wpe/WPEView.cpp:

(WKWPE::View::selectionDidChange): Ditto.

  • UIProcess/API/wpe/WebKitInputMethodContext.h:
  • WebProcess/WebPage/glib/WebPageGLib.cpp:

(WebKit::WebPage::platformEditorState const): Get the selection index too.

Tools:

Add new test case to check the selection index when there's a selection.

  • TestWebKitAPI/Tests/WebKitGLib/TestInputMethodContext.cpp:

(webkitInputMethodContextMockNotifySurrounding):
(webkitInputMethodContextMockReset):
(testWebKitInputMethodContextSurrounding):

6:43 AM Changeset in webkit [254821] by commit-queue@webkit.org
  • 4 edits in trunk

Implement "create a potential-CORS request"
​https://bugs.webkit.org/show_bug.cgi?id=205326

Patch by Rob Buis <​rbuis@igalia.com> on 2020-01-20
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Update improved test result.

  • web-platform-tests/html/semantics/scripting-1/the-script-element/script-crossorigin-network-expected.txt:

Source/WebCore:

The storedCredentialsPolicy should be calculated using a same origin
check when credentials are computed as same-origin.

Test: imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/script-crossorigin-network.html

  • loader/CrossOriginAccessControl.cpp:

(WebCore::createPotentialAccessControlRequest):

6:28 AM Changeset in webkit [254820] by Caio Lima
  • 9 edits in trunk/JSTests

Skip tests when there is no JIT build on ARMv7 and MIPS
​https://bugs.webkit.org/show_bug.cgi?id=206496

Unreviewed gardening.

  • microbenchmarks/bit-test-constant.js:
  • microbenchmarks/bit-test-nonconstant.js:
  • microbenchmarks/memcpy-typed-loop-large.js:
  • microbenchmarks/memcpy-typed-loop-small.js:
  • microbenchmarks/mul-immediate-sub.js:
  • stress/dont-range-based-iterate-vector-that-is-mutated.js:
  • stress/int8-repeat-in-then-out-of-bounds.js:
  • stress/sampling-profiler-richards.js:
3:24 AM Changeset in webkit [254819] by zandobersek@gmail.com
  • 14 edits
    6 adds
    1 delete in trunk

[WPE] Expose the WebKitOptionMenu APIs
​https://bugs.webkit.org/show_bug.cgi?id=206287

Source/WebKit:

Reviewed by Carlos Garcia Campos.

Enable the GLib-based API covering option menu functionality for WPE.

Most of this can be shared with the GTK port. The only difference is in
the two additional parameters emitted on the WebKitWebView's "show-menu"
signal (GdkEvent and GdkRectangle) that WPE doesn't support at the
moment. The rectangle information will be possible to emit in the near
future once a usable API type is available for this information.

The WebKitPopupMenu implementation for WPE would only work with the
GLib-based API. To avoid using it with other APIs, this is implemented
only on the WebKitWebViewClient interface (renamed from 'WebViewClient'
and its declaration moved into a separate header file) inheriting from
API::ViewClient.

The relevant API test is enabled for WPE.

  • PlatformWPE.cmake:
  • SourcesWPE.txt:
  • UIProcess/API/glib/WebKitWebView.cpp:

(WebKitWebViewClient::WebKitWebViewClient):
(WebKitWebViewClient::showOptionMenu):
(WebKitWebViewClient::handleDownloadRequest):
(WebKitWebViewClient::frameDisplayed):
(WebKitWebViewClient::willStartLoad):
(WebKitWebViewClient::didChangePageID):
(WebKitWebViewClient::didReceiveUserMessage):
(webkitWebViewConstructed):
(webkit_web_view_class_init):
(webkitWebViewShowOptionMenu):

  • UIProcess/API/glib/WebKitWebViewPrivate.h:
  • UIProcess/API/wpe/APIViewClient.h:

(API::ViewClient::isGLibBasedAPI):

  • UIProcess/API/wpe/PageClientImpl.cpp:

(WebKit::PageClientImpl::createPopupMenuProxy):

  • UIProcess/API/wpe/WPEView.h:

(WKWPE::View::client const):

  • UIProcess/API/wpe/WebKitOptionMenu.h: Added.
  • UIProcess/API/wpe/WebKitOptionMenuItem.h: Added.
  • UIProcess/API/wpe/WebKitPopupMenu.cpp: Added.

(WebKit::WebKitPopupMenu::create):
(WebKit::WebKitPopupMenu::WebKitPopupMenu):
(WebKit::menuCloseCallback):
(WebKit::WebKitPopupMenu::showPopupMenu):
(WebKit::WebKitPopupMenu::hidePopupMenu):
(WebKit::WebKitPopupMenu::cancelTracking):
(WebKit::WebKitPopupMenu::selectItem):
(WebKit::WebKitPopupMenu::activateItem):

  • UIProcess/API/wpe/WebKitPopupMenu.h: Added.
  • UIProcess/API/wpe/WebKitWebView.h:
  • UIProcess/API/wpe/WebKitWebViewClient.h: Added.
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt:
  • UIProcess/API/wpe/webkit.h:

Tools:

Move TestOptionMenu under the WebKitGLib directory, adding the
appropriate adjustments for the WPE variant of the API

  • TestWebKitAPI/Tests/WebKitGLib/TestOptionMenu.cpp: Renamed from Tools/TestWebKitAPI/Tests/WebKitGtk/TestOptionMenu.cpp.

(OptionMenuTest::OptionMenuTest):
(OptionMenuTest::~OptionMenuTest):
(OptionMenuTest::destroyMenu):
(OptionMenuTest::showOptionMenuCallback):
(OptionMenuTest::menuCloseCallback):
(OptionMenuTest::showOptionMenu):
(OptionMenuTest::clickAtPositionAndWaitUntilOptionMenuShown):
(OptionMenuTest::close):
(OptionMenuTest::activateItem):
(OptionMenuTest::selectItem):
(testOptionMenuSimple):
(testOptionMenuGroups):
(testOptionMenuActivate):
(testOptionMenuSelect):
(beforeAll):
(afterAll):

  • TestWebKitAPI/glib/CMakeLists.txt:
  • TestWebKitAPI/glib/PlatformGTK.cmake:
2:59 AM Changeset in webkit [254818] by commit-queue@webkit.org
  • 5 edits in trunk

Make isValidUserAgentHeaderValue GLib only
​https://bugs.webkit.org/show_bug.cgi?id=206475

Patch by Rob Buis <​rbuis@igalia.com> on 2020-01-20
Reviewed by Youenn Fablet.

Source/WebCore:

The function isValidUserAgentHeaderValue is only used
by code that requires GLib, so move it behind USE(GLIB).

  • platform/network/HTTPParsers.cpp:
  • platform/network/HTTPParsers.h:

Tools:

Make the unit test that tests isValidUserAgentHeaderValue
depend on USE(GLIB) as well.

  • TestWebKitAPI/Tests/WebCore/HTTPParsers.cpp:
2:39 AM Changeset in webkit [254817] by youenn@apple.com
  • 26 edits
    3 copies
    10 adds in trunk/Source

Add support for MediaStream video track rendering in GPUProcess
​https://bugs.webkit.org/show_bug.cgi?id=206286

Reviewed by Eric Carlson.

Source/WebCore:

Add a way for WebKit layer to create its own specific SampleBufferDisplayLayer.
WebKit layer can set a function pointer that will be used to create SampleBufferDisplayLayer.
If none is provided, LocalSampleBufferDisplayLayer is used.

Update MediaPlayerPrivateMediaStreamAVFObjC to monitor itself its root layer bounds change.
Conversely, LocalSampleBufferDisplayLayer no longer monitors its root layer bounds change.
This removes the need for SampleBufferDisplayLayer::Client to be notified of bounds change.
We add an API to update the root layer bounds of a LocalSampleBufferDisplayLayer as well,
this API being used by GPUProcess to mirror changes done to WebProcess root layer.

WebRTC incoming video tracks do not have presentation timestamps so we mark them as kCMSampleAttachmentKey_DisplayImmediately.
This is currently lost when doing IPC from WebProcess to NetworkProcess. Add this information for every enqueued sample in LocalSampleBufferDisplayLayer.
We might want in the future to serialize all attachments of the sample.

Manually tested.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/avfoundation/SampleBufferDisplayLayer.cpp: Added.

(WebCore::SampleBufferDisplayLayer::setCreator):
(WebCore::SampleBufferDisplayLayer::create):

  • platform/graphics/avfoundation/SampleBufferDisplayLayer.h:
  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.h:
  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm:

(-[WebAVSampleBufferStatusChangeListener invalidate]):
(-[WebAVSampleBufferStatusChangeListener start]):
(-[WebAVSampleBufferStatusChangeListener stop]):
(-[WebAVSampleBufferStatusChangeListener observeValueForKeyPath:ofObject:change:context:]):
(WebCore::LocalSampleBufferDisplayLayer::LocalSampleBufferDisplayLayer):
(WebCore::LocalSampleBufferDisplayLayer::~LocalSampleBufferDisplayLayer):
(WebCore::LocalSampleBufferDisplayLayer::updateBoundsAndPosition):
(WebCore::LocalSampleBufferDisplayLayer::enqueueSample):

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

(-[WebRootSampleBufferBoundsChangeListener initWithParent:]):
(-[WebRootSampleBufferBoundsChangeListener dealloc]):
(-[WebRootSampleBufferBoundsChangeListener invalidate]):
(-[WebRootSampleBufferBoundsChangeListener start]):
(-[WebRootSampleBufferBoundsChangeListener stop]):
(-[WebRootSampleBufferBoundsChangeListener observeValueForKeyPath:ofObject:change:context:]):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::~MediaPlayerPrivateMediaStreamAVFObjC):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::rootLayer const):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateDisplayLayer):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::rootLayerBoundsDidChange):

  • platform/graphics/cg/PDFDocumentImage.cpp:

Unified build fix.

Source/WebKit:

Implement WebProcess SampleBufferDisplayLayer and GPUProcess RemoteSampleBufferDisplayLayer.
RemoteSampleBufferDisplayLayer is a wrapper around LocalSampleBufferDisplayLayer.

A synchronous IPC is used at creation time of the layer to make sure we have a shared layer synchronously.
Future refactoring should allow to remove that constraint as done in regular video playing.

Override SampleBufferDisplayLayer create function pointer when rendering is to be done in GPUProcess.

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

(WebKit::GPUConnectionToWebProcess::sampleBufferDisplayLayerManager):
(WebKit::GPUConnectionToWebProcess::didReceiveMessage):
(WebKit::GPUConnectionToWebProcess::didReceiveSyncMessage):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp: Added.

(WebKit::RemoteSampleBufferDisplayLayer::create):
(WebKit::RemoteSampleBufferDisplayLayer::RemoteSampleBufferDisplayLayer):
(WebKit::RemoteSampleBufferDisplayLayer::~RemoteSampleBufferDisplayLayer):
(WebKit::RemoteSampleBufferDisplayLayer::contextID):
(WebKit::RemoteSampleBufferDisplayLayer::bounds const):
(WebKit::RemoteSampleBufferDisplayLayer::updateDisplayMode):
(WebKit::RemoteSampleBufferDisplayLayer::updateAffineTransform):
(WebKit::RemoteSampleBufferDisplayLayer::updateBoundsAndPosition):
(WebKit::RemoteSampleBufferDisplayLayer::flush):
(WebKit::RemoteSampleBufferDisplayLayer::flushAndRemoveImage):
(WebKit::RemoteSampleBufferDisplayLayer::enqueueSample):
(WebKit::RemoteSampleBufferDisplayLayer::clearEnqueuedSamples):
(WebKit::RemoteSampleBufferDisplayLayer::messageSenderConnection const):
(WebKit::RemoteSampleBufferDisplayLayer::sampleBufferDisplayLayerStatusDidChange):
(WebKit::RemoteSampleBufferDisplayLayer::streamTime const):

  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.h: Added.
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.messages.in: Added.
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.cpp: Added.

(WebKit::RemoteSampleBufferDisplayLayerManager::RemoteSampleBufferDisplayLayerManager):
(WebKit::RemoteSampleBufferDisplayLayerManager::didReceiveLayerMessage):
(WebKit::RemoteSampleBufferDisplayLayerManager::createLayer):
(WebKit::RemoteSampleBufferDisplayLayerManager::releaseLayer):

  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.h: Added.
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.messages.in: Added.
  • Scripts/webkit/messages.py:
  • Shared/WebCoreArgumentCoders.h:
  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::ArgumentCoder<CGRect>::encode):
(IPC::ArgumentCoder<CGRect>::decode):
(IPC::ArgumentCoder<CGSize>::encode):
(IPC::ArgumentCoder<CGSize>::decode):
(IPC::ArgumentCoder<CGPoint>::encode):
(IPC::ArgumentCoder<CGPoint>::decode):
(IPC::ArgumentCoder<CGAffineTransform>::encode):
(IPC::ArgumentCoder<CGAffineTransform>::decode):

  • Sources.txt:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::sampleBufferDisplayLayerManager):
(WebKit::GPUProcessConnection::didReceiveMessage):

  • WebProcess/GPU/GPUProcessConnection.h:
  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:

(WebKit::RemoteMediaPlayerManager::updatePreferences):

  • WebProcess/GPU/webrtc/SampleBufferDisplayLayer.cpp: Added.

(WebKit::SampleBufferDisplayLayer::create):
(WebKit::SampleBufferDisplayLayer::SampleBufferDisplayLayer):
(WebKit::SampleBufferDisplayLayer::~SampleBufferDisplayLayer):
(WebKit::SampleBufferDisplayLayer::didFail const):
(WebKit::SampleBufferDisplayLayer::updateDisplayMode):
(WebKit::SampleBufferDisplayLayer::bounds const):
(WebKit::SampleBufferDisplayLayer::updateAffineTransform):
(WebKit::SampleBufferDisplayLayer::updateBoundsAndPosition):
(WebKit::SampleBufferDisplayLayer::flush):
(WebKit::SampleBufferDisplayLayer::flushAndRemoveImage):
(WebKit::SampleBufferDisplayLayer::enqueueSample):
(WebKit::SampleBufferDisplayLayer::clearEnqueuedSamples):
(WebKit::SampleBufferDisplayLayer::rootLayer):
(WebKit::SampleBufferDisplayLayer::setDidFail):
(WebKit::SampleBufferDisplayLayer::boundsChanged):

  • WebProcess/GPU/webrtc/SampleBufferDisplayLayer.h: Added.
  • WebProcess/GPU/webrtc/SampleBufferDisplayLayer.messages.in: Added.
  • WebProcess/GPU/webrtc/SampleBufferDisplayLayerIdentifier.h: Added.
  • WebProcess/GPU/webrtc/SampleBufferDisplayLayerManager.cpp: Added.

(WebKit::SampleBufferDisplayLayerManager::didReceiveLayerMessage):
(WebKit::SampleBufferDisplayLayerManager::createLayer):
(WebKit::SampleBufferDisplayLayerManager::addLayer):
(WebKit::SampleBufferDisplayLayerManager::removeLayer):

  • WebProcess/GPU/webrtc/SampleBufferDisplayLayerManager.h: Added.
  • WebProcess/WebProcess.h:
1:49 AM Changeset in webkit [254816] by commit-queue@webkit.org
  • 2 edits
    6 moves in trunk/LayoutTests

[css-grid] Import grid-align-content-distribution tests to WebKit
​https://bugs.webkit.org/show_bug.cgi?id=205926

Patch by Rossana Monteriso <​rmonteriso@igalia.com> on 2020-01-20
Reviewed by Javier Fernandez.

LayoutTests/imported/w3c:

Add align-content-distribution tests, checked and adapted to the WPT project,
to the css-grid/alignment folder for imported tests inside WebKit.

  • web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html:
  • web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html:
  • web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html:

LayoutTests:

Remove align-content-distribution tests that are being replaced by newer tests, adapted to the WPT project and imported
to the corresponding css-grid folder inside WebKit.

  • fast/css-grid-layout/grid-align-content-distribution-expected.txt: Removed.
  • fast/css-grid-layout/grid-align-content-distribution-vertical-lr-expected.txt: Removed.
  • fast/css-grid-layout/grid-align-content-distribution-vertical-rl-expected.txt: Removed.
  • fast/css-grid-layout/grid-align-content-distribution.html: Removed.
  • fast/css-grid-layout/grid-align-content-distribution-vertical-lr.html: Removed.
  • fast/css-grid-layout/grid-align-content-distribution-vertical-rl.html: Removed.
1:44 AM Changeset in webkit [254815] by youenn@apple.com
  • 3 edits in trunk/Source/ThirdParty/libwebrtc

Setting kVTCompressionPropertyKey_DataRateLimits on RTCVideoEncoderH264 fails
​https://bugs.webkit.org/show_bug.cgi?id=206402

Reviewed by Eric Carlson.

Add helper routine dedicated to setting VTB/VCP array value properties.
Logging shows the bitrate is then set appropriately.

  • Source/webrtc/sdk/objc/components/video_codec/helpers.cc:
  • Source/webrtc/sdk/objc/components/video_codec/helpers.h:
1:23 AM Changeset in webkit [254814] by youenn@apple.com
  • 4 edits
    4 adds in trunk

Video sound sometimes keeps playing in page cache
​https://bugs.webkit.org/show_bug.cgi?id=206408
<rdar://problem/58654047>

Reviewed by Eric Carlson.

Source/WebCore:

In r253375, we made sure to enqueue calls that would trigger state changes, to ensure we would not start playing while in page cache.
But this delayed the order to pause the video when entering page cache.
Fix this by synchronously updating playing state when being suspended for page cache.

Test: http/tests/navigation/page-cache-video.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::pauseAndUpdatePlayStateImmediately):
(WebCore::HTMLMediaElement::stopWithoutDestroyingMediaPlayer):

  • html/HTMLMediaElement.h:

LayoutTests:

  • http/tests/media/resources/sound_5.mp3: Added.

File comes from WPT and is 5 seconds long.

  • http/tests/navigation/page-cache-video-expected.txt: Added.
  • http/tests/navigation/page-cache-video.html: Added.
  • http/tests/navigation/resources/page-cache-video-helper.html: Added.
1:19 AM Changeset in webkit [254813] by youenn@apple.com
  • 5 edits
    3 adds in trunk/Source/WebCore

Introduce an abstract SampleBufferDisplayLayer
​https://bugs.webkit.org/show_bug.cgi?id=206066

Reviewed by Eric Carlson.

Move use of display layers in MediaPlayerPrivateMediaStreamAVFObjC to a new class LocalSampleBufferDisplayLayer
that implements an interface named SampleBufferDisplayLayer.
A future patch will implement this interface by IPCing to GPUProcess.
We move both layers and handling of the sample queue to LocalSampleBufferDisplayLayer.

Contrary to previously, we do not call again enqueueVideoSample in case we enqueued a sample for later use in the display layer.
Instead, we directly render it, which should not change much since this is a realtime track and in the future the buffer will be in GPUProcess anyway.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/avfoundation/SampleBufferDisplayLayer.h: Added.

(WebCore::SampleBufferDisplayLayer::SampleBufferDisplayLayer):

  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.h: Added.
  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm: Added.

(-[WebAVSampleBufferStatusChangeListener initWithParent:]):
(-[WebAVSampleBufferStatusChangeListener dealloc]):
(-[WebAVSampleBufferStatusChangeListener invalidate]):
(-[WebAVSampleBufferStatusChangeListener beginObservingLayers]):
(-[WebAVSampleBufferStatusChangeListener stopObservingLayers]):
(-[WebAVSampleBufferStatusChangeListener observeValueForKeyPath:ofObject:change:context:]):
(WebCore::runWithoutAnimations):
(WebCore::LocalSampleBufferDisplayLayer::LocalSampleBufferDisplayLayer):
(WebCore::LocalSampleBufferDisplayLayer::~LocalSampleBufferDisplayLayer):
(WebCore::LocalSampleBufferDisplayLayer::layerStatusDidChange):
(WebCore::LocalSampleBufferDisplayLayer::layerErrorDidChange):
(WebCore::LocalSampleBufferDisplayLayer::rootLayerBoundsDidChange):
(WebCore::LocalSampleBufferDisplayLayer::displayLayer):
(WebCore::LocalSampleBufferDisplayLayer::rootLayer):
(WebCore::LocalSampleBufferDisplayLayer::didFail const):
(WebCore::LocalSampleBufferDisplayLayer::updateDisplayMode):
(WebCore::LocalSampleBufferDisplayLayer::bounds const):
(WebCore::LocalSampleBufferDisplayLayer::updateAffineTransform):
(WebCore::LocalSampleBufferDisplayLayer::updateBoundsAndPosition):
(WebCore::LocalSampleBufferDisplayLayer::ensureLayers):
(WebCore::LocalSampleBufferDisplayLayer::flush):
(WebCore::LocalSampleBufferDisplayLayer::flushAndRemoveImage):
(WebCore::LocalSampleBufferDisplayLayer::enqueueSample):
(WebCore::LocalSampleBufferDisplayLayer::removeOldSamplesFromPendingQueue):
(WebCore::LocalSampleBufferDisplayLayer::addSampleToPendingQueue):
(WebCore::LocalSampleBufferDisplayLayer::clearEnqueuedSamples):
(WebCore::LocalSampleBufferDisplayLayer::requestNotificationWhenReadyForVideoData):

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

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::~MediaPlayerPrivateMediaStreamAVFObjC):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueCorrectedVideoSample):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::sampleBufferDisplayLayerStatusDidChange):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::applicationDidBecomeActive):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::flushRenderers):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::destroyLayers):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::platformLayer const):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::displayLayer):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateDisplayMode):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::checkSelectedVideoTrack):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setBufferingPolicy):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateDisplayLayer):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::sampleBufferDisplayLayerBoundsDidChange):

1:02 AM Changeset in webkit [254812] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

ASSERT in case a service worker cannot be terminated in a timely manner
​https://bugs.webkit.org/show_bug.cgi?id=206413

Reviewed by Alexey Proskuryakov.

No change of behavior, the process will still exit if it does not succeed in stopping a service worker.
In Debug, a crash log will be collected which will allow to help identifying other crashes.

  • workers/service/context/SWContextManager.cpp:

(WebCore::SWContextManager::serviceWorkerFailedToTerminate):

12:07 AM Changeset in webkit [254811] by commit-queue@webkit.org
  • 6 edits
    1 add in trunk

KeyedDecoderGeneric crashes when it accesses data with non-existing key
​https://bugs.webkit.org/show_bug.cgi?id=205902

Patch by Takashi Komori <​Takashi.Komori@sony.com> on 2020-01-20
Reviewed by Fujii Hironori.

Source/WebCore:

Add null check function for KeyedDecoderGeneric.

Test: TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp

  • platform/generic/KeyedDecoderGeneric.cpp:

(WebCore::KeyedDecoderGeneric::Dictionary::get):
(WebCore::KeyedDecoderGeneric::getPointerFromDictionaryStack):
(WebCore::KeyedDecoderGeneric::decodeSimpleValue):
(WebCore::KeyedDecoderGeneric::decodeBytes):
(WebCore::KeyedDecoderGeneric::decodeBool):
(WebCore::KeyedDecoderGeneric::decodeUInt32):
(WebCore::KeyedDecoderGeneric::decodeUInt64):
(WebCore::KeyedDecoderGeneric::decodeInt32):
(WebCore::KeyedDecoderGeneric::decodeInt64):
(WebCore::KeyedDecoderGeneric::decodeFloat):
(WebCore::KeyedDecoderGeneric::decodeDouble):
(WebCore::KeyedDecoderGeneric::decodeString):
(WebCore::KeyedDecoderGeneric::beginObject):
(WebCore::KeyedDecoderGeneric::beginArray):

  • platform/generic/KeyedDecoderGeneric.h:

Tools:

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/KeyedCoding.cpp: Added.

(TestWebKitAPI::checkDecodedBytes):
(TestWebKitAPI::TEST):
(TestWebKitAPI::testSimpleValue):
(TestWebKitAPI::KeyedCodingTestObject::encode):
(TestWebKitAPI::KeyedCodingTestObject::decode):
(TestWebKitAPI::KeyedCodingTestObject::KeyedCodingTestObject):
(TestWebKitAPI::KeyedCodingTestObject::equals const):
(TestWebKitAPI::operator==):

Jan 19, 2020:

11:12 PM Changeset in webkit [254810] by zandobersek@gmail.com
  • 8 edits in trunk/Tools

[WPE] HeadlessViewBackend should hande SHM-based buffer exports
​https://bugs.webkit.org/show_bug.cgi?id=206283

Reviewed by Adrian Perez de Castro.

The ViewBackend class should also handle any SHM-based exports from
the wpe_view_backend_exportable_fdo_egl instance. In case of such an
export, the buffer is transported down into the implementing object.

For WindowViewBackend, we do nothing with this yet, except emit a
warning. For HeadlessViewBackend, we repeat what's currently done with
EGL exports, storing pending updates until the update timer is fired
and we move the buffer into the locked position, clearing up any
previous locked buffer.

Upon creating a snapshot of the current contents, we add additional
separation in how EGL and SHM exports are handled. Nothing changes
for the former, while for the latter we simply retrieve the
wl_shm_buffer object, map it, copy data from it into the pixel data
storage that's basis for the returned Cairo surface, and unmap it.

  • Scripts/webkitpy/port/wpe.py:

(WPEPort.setup_environ_for_server): Copy the LIBGL_ALWAYS_SOFTWARE
environment variable, if present. This variable is normally used to
force Mesa into software rasterizing mode.

  • wpe/backends/HeadlessViewBackend.cpp:

(WPEToolingBackends::HeadlessViewBackend::~HeadlessViewBackend):
(WPEToolingBackends::HeadlessViewBackend::createSnapshot):
(WPEToolingBackends::HeadlessViewBackend::createEGLSnapshot):
(WPEToolingBackends::HeadlessViewBackend::createSHMSnapshot):
(WPEToolingBackends::HeadlessViewBackend::performUpdate):
(WPEToolingBackends::HeadlessViewBackend::displayBuffer):

  • wpe/backends/HeadlessViewBackend.h:
  • wpe/backends/ViewBackend.cpp:

(WPEToolingBackends::ViewBackend::initialize):

  • wpe/backends/ViewBackend.h:
  • wpe/backends/WindowViewBackend.cpp:
  • wpe/backends/WindowViewBackend.h:
7:18 PM Changeset in webkit [254809] by eric.carlson@apple.com
  • 16 edits
    1 add in trunk/Source/WebKit

Make MediaPlayerPrivateRemote a message receiver
​https://bugs.webkit.org/show_bug.cgi?id=206487
<rdar://problem/58721559>

Reviewed by Dean Jackson.

Make MediaPlayerPrivateRemote a message receiver so we don't need a trampoline
for every method in the MediaPlayerPrivateRemoteManager.

No new tests, no change of behavior.

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

(WebKit::RemoteAudioTrackProxy::RemoteAudioTrackProxy):
(WebKit::RemoteAudioTrackProxy::configurationChanged):
(WebKit::RemoteAudioTrackProxy::willRemove):

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:
  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::requestResource):
(WebKit::RemoteMediaPlayerProxy::removeResource):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerNetworkStateChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerReadyStateChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerVolumeChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerMuteChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerTimeChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerDurationChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerRateChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerEngineFailedToLoad const):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerPlaybackStateChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerCharacteristicChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerFirstVideoFrameAvailable):
(WebKit::RemoteMediaPlayerProxy::sendCachedState):

  • GPUProcess/media/RemoteMediaResourceManager.cpp:
  • GPUProcess/media/RemoteVideoTrackProxy.cpp:

(WebKit::RemoteVideoTrackProxy::RemoteVideoTrackProxy):
(WebKit::RemoteVideoTrackProxy::configurationChanged):
(WebKit::RemoteVideoTrackProxy::willRemove):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::didReceiveMessage):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::requestResource):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in: Added.
  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:

(WebKit::RemoteMediaPlayerManager::didReceivePlayerMessage):
(WebKit::RemoteMediaPlayerManager::networkStateChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::readyStateChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::volumeChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::muteChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::timeChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::durationChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::rateChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::playbackStateChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::engineFailedToLoad): Deleted.
(WebKit::RemoteMediaPlayerManager::characteristicChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::sizeChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::addRemoteAudioTrack): Deleted.
(WebKit::RemoteMediaPlayerManager::removeRemoteAudioTrack): Deleted.
(WebKit::RemoteMediaPlayerManager::remoteAudioTrackConfigurationChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::addRemoteVideoTrack): Deleted.
(WebKit::RemoteMediaPlayerManager::removeRemoteVideoTrack): Deleted.
(WebKit::RemoteMediaPlayerManager::remoteVideoTrackConfigurationChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::firstVideoFrameAvailable): Deleted.
(WebKit::RemoteMediaPlayerManager::requestResource): Deleted.
(WebKit::RemoteMediaPlayerManager::removeResource): Deleted.
(WebKit::RemoteMediaPlayerManager::updateCachedState): Deleted.

  • WebProcess/GPU/media/RemoteMediaPlayerManager.h:

(WebKit::RemoteMediaPlayerManager::didReceiveMessageFromGPUProcess): Deleted.

  • WebProcess/GPU/media/RemoteMediaPlayerManager.messages.in:
9:08 AM Changeset in webkit [254808] by Antti Koivisto
  • 7 edits in trunk/Source/WebCore

[LFC] Devirtualize FormattingState
​https://bugs.webkit.org/show_bug.cgi?id=206485

Reviewed by Zalan Bujtas.

The only reason it is virtual is the destructor.

  • layout/FormattingState.h:
  • layout/LayoutState.cpp:

(WebCore::Layout::LayoutState::createFormattingStateForFormattingRootIfNeeded):

  • layout/LayoutState.h:
  • layout/blockformatting/BlockFormattingState.h:
  • layout/inlineformatting/InlineFormattingState.h:
  • layout/tableformatting/TableFormattingState.h:
8:43 AM Changeset in webkit [254807] by cathiechen
  • 47 edits in trunk

Add support for scroll behavior relies on ScrollAnimation of the Web process
​https://bugs.webkit.org/show_bug.cgi?id=204882

Reviewed by FrΓ©dΓ©ric Wang

Based on the patch by FrΓ©dΓ©ric Wang.

LayoutTests/imported/w3c:

Enable CSSOMViewSmoothScrollingEnabled on scroll behavior tests and update expectations.

  • web-platform-tests/css/cssom-view/scroll-behavior-default-css-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-default-css.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-element-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-element.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-smooth-positions.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-root-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-root.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-window-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html:

Source/WebCore:

This patch introduces a programmatic smooth scrolling in WebKit from the CSSOM View
specification [1]. To use this effect, web developers can pass a behavior parameter (auto,
smooth, or instant) to Element.scroll, Element.scrollTo, Element.scrollBy,
Element.scrollIntoView, Window.scroll, Window.scrollTo or Window.scrollBy [2]. When behavior
is auto, the instant/smooth characteristic is actually taken from the value of a new CSS
scroll-behavior property [3]. Both the new CSS and DOM behavior are protected by a runtime
flag.

[1] ​https://drafts.csswg.org/cssom-view
[2] ​https://drafts.csswg.org/cssom-view/#dictdef-scrolloptions
[3] ​https://drafts.csswg.org/cssom-view/#propdef-scroll-behavior

Tests: imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-default-css.html

imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-element.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-smooth-positions.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-subframe-root.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html

  • Sources.txt: Build ScrollAnimationSmooth.cpp on all platforms.
  • SourcesGTK.txt: Remove ScrollAnimationSmooth.cpp since it is built on all platforms now.
  • dom/Element.cpp:

(WebCore::Element::scrollIntoView): Pass scroll behavior, if any.
(WebCore::Element::scrollBy):
(WebCore::Element::scrollTo): Handle the case when scroll behavior is smooth.
(WebCore::Element::setScrollLeft): Handle the case when scroll behavior is smooth.
(WebCore::Element::setScrollTop): Handle the case when scroll behavior is smooth.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::scrollBy const):
(WebCore::DOMWindow::scrollTo const): Handle the case when scroll behavior is smooth.
The optimization of cancel (0, 0) scrolling is skipped if an animated scroll is in progress.
Otherwise, the previous scroll won't be stopped by a follow-up scroll.

  • page/FrameView.cpp:

(WebCore::FrameView::setScrollPosition):
(WebCore::FrameView::scrollToOffsetWithAnimation): Start an animated scroll.

  • page/FrameView.h:
  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):

  • platform/ScrollAnimation.h:

(WebCore::ScrollAnimation::scroll): Function to animate scrolling to a specified position.

  • platform/ScrollAnimationSmooth.cpp: Build this file on all platforms. Add a

smoothFactorForProgrammaticScroll parameter to slow down the smooth scrolling.
(WebCore::ScrollAnimationSmooth::scroll):
(WebCore::ScrollAnimationSmooth::updatePerAxisData): Scale the time parameters of the
animation so that it looks smoother.

  • platform/ScrollAnimationSmooth.h: Declare the class on all platforms.
  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::ScrollAnimator): Initialize animation member for programmatic scrolling.
(WebCore::ScrollAnimator::scrollToOffset): Animate scrolling to the specified position.
(WebCore::ScrollAnimator::cancelAnimations): Copy logic from ScrollAnimationSmooth.cpp.
(WebCore::ScrollAnimator::serviceScrollAnimations): Ditto.
(WebCore::ScrollAnimator::willEndLiveResize): Ditto.
(WebCore::ScrollAnimator::didAddVerticalScrollbar): Ditto.
(WebCore::ScrollAnimator::didAddHorizontalScrollbar): Ditto.

  • platform/ScrollAnimator.h: New animation member for smooth programmatic scrolling.

(WebCore::ScrollAnimator::ScrollAnimator::cancelAnimations): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::serviceScrollAnimations): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::willEndLiveResize): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::didAddVerticalScrollbar): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::didAddHorizontalScrollbar): Deleted.

  • platform/ScrollTypes.h: Add ScrollBehaviorStatus to indicate the status of scrolling.
  • platform/ScrollView.cpp:

(WebCore::ScrollView::setScrollPosition): Follow the CSSOM View spec: If a scroll is in
progress, we interrupt it and continue the scroll call (even when we are at the final position).

  • platform/ScrollView.h:
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::scrollToOffsetWithAnimation):
(WebCore::ScrollableArea::setScrollOffsetFromInternals):
(WebCore::ScrollableArea::setScrollOffsetFromAnimation): To avoid iterate calling,
move the requestScrollPositionUpdate(position) checking out of setScrollOffsetFromAnimation().

  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::currentScrollBehaviorStatus const): Maintain currentScrollBehaviorStatus.
(WebCore::ScrollableArea::setScrollBehaviorStatus):

  • platform/generic/ScrollAnimatorGeneric.cpp:

(WebCore::ScrollAnimatorGeneric::updatePosition):

  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::cancelAnimations): Call parent member to handle programmatic scrolling.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::setScrollLeft): Add flag to indicate animated or not.
(WebCore::RenderBox::setScrollTop): Ditto.
(WebCore::RenderBox::setScrollPosition):

  • rendering/RenderBox.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollToXPosition): Ditto.
(WebCore::RenderLayer::scrollToYPosition): Ditto.
(WebCore::RenderLayer::scrollToPosition):
(WebCore::RenderLayer::scrollToOffset): Follow the CSSOM View spec: If a scroll is in
progress, we interrupt it and continue the scroll call (even when we are at the final
position). It's ScrollBehaviorType::Instant scroll.
(WebCore::RenderLayer::requestScrollPositionUpdate):
(WebCore::RenderLayer::scrollToOffsetWithAnimation): Ditto. This is similar to scrollToOffset
but animates the scroll. It's ScrollBehaviorType::Smooth scroll.
(WebCore::RenderLayer::scrollTo):
(WebCore::RenderLayer::scrollRectToVisible): Again don't do an early return if scroll is in
progress. We call scrollToOffsetWithAnimation instead of scrollToOffset when appropriate.
Note that this function may not work well for several nested scroll boxes with at least one
element with smooth behavior. It will handled in bug Follow.

  • rendering/RenderLayer.h: Add scroll behavior to ScrollTectToVisibleOptions.
  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::setScrollLeft): Add animated flag.
(WebCore::RenderListBox::setScrollTop): Ditto.

  • rendering/RenderListBox.h:
  • rendering/RenderTextControlSingleLine.cpp:

(WebCore::RenderTextControlSingleLine::setScrollLeft):
(WebCore::RenderTextControlSingleLine::setScrollTop):

  • rendering/RenderTextControlSingleLine.h:
  • testing/Internals.cpp:

(WebCore::Internals::unconstrainedScrollTo):

LayoutTests:

  • platform/mac-wk1/TestExpectations: Skip these tests on WK1 as they don't work for now.
8:30 AM Changeset in webkit [254806] by Antti Koivisto
  • 11 edits
    1 copy
    1 add in trunk/Source/WebCore

[LFC][Integration] Use integration specific layout tree builder and data structures
​https://bugs.webkit.org/show_bug.cgi?id=206483

Reviewed by Zalan Bujtas.

The generic tree builder and the LayoutTreeContent class are not optimal for integrated layout.

This patch adds LayoutIntegration::BoxTree type for building and owning Layout::Boxes for a single flow.
It also devirtualizes Layout::Box for faster destruction (the only virtual function was the destructor).

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/integration/LayoutIntegrationBoxTree.cpp: Added.

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

Only handle supported content.

(WebCore::LayoutIntegration::BoxTree::layoutBoxForRenderer const):
(WebCore::LayoutIntegration::BoxTree::rendererForLayoutBox const):

For small content just traverse the vector. Construct lookup maps lazily for larger content.

  • layout/integration/LayoutIntegrationBoxTree.h: Copied from Source/WebCore/layout/layouttree/LayoutContainer.h.

(WebCore::LayoutIntegration::BoxTree::rootLayoutBox const):
(WebCore::LayoutIntegration::BoxTree::rootLayoutBox):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::LineLayout):
(WebCore::LayoutIntegration::LineLayout::layout):
(WebCore::LayoutIntegration::LineLayout::textBoxesFor const):
(WebCore::LayoutIntegration::LineLayout::elementBoxFor const):
(WebCore::LayoutIntegration::LineLayout::rootLayoutBox const):
(WebCore::LayoutIntegration::LineLayout::rootLayoutBox):
(WebCore::LayoutIntegration::LineLayout::hitTest):

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::~Box):

  • layout/layouttree/LayoutBox.h:

Devirtualize.

  • layout/layouttree/LayoutContainer.cpp:

(WebCore::Layout::Container::appendChild):

  • layout/layouttree/LayoutContainer.h:
  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createBox):
(WebCore::Layout::TreeBuilder::createTextBox):
(WebCore::Layout::TreeBuilder::createContainer):
(WebCore::Layout::TreeBuilder::createLayoutBox):

Factor ownership handling to these create functions.

(WebCore::Layout::TreeBuilder::buildTableStructure):
(WebCore::Layout::TreeBuilder::buildSubTree):

  • layout/layouttree/LayoutTreeBuilder.h:

(WebCore::Layout::LayoutTreeContent::addBox):
(WebCore::Layout::LayoutTreeContent::addContainer):

Put Boxes and Containers to different maps for correct destruction.

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

[LFC][IFC] Move away from placing individual InlineItems on the line
​https://bugs.webkit.org/show_bug.cgi?id=206479
<rdar://problem/58716223>

Reviewed by Antti Koivisto.

<div> text content and more </div>
[ ][text][ ][content][ ][and][ ]more[ ]

Instead of placing all these inline items on the line (LineBuilder::InlineItemRun) and merge them at InlineBuilder::close(),
let's expand existing runs(LineBuilder::Run) when possible ([text content and ][more]).
This helps performance and memory consumption when the line ends up having many inline itmes (e.g. white-space: nowrap).

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::TextContext::expand):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::LineBuilder):
(WebCore::Layout::LineBuilder::initialize):
(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::alignContentVertically):
(WebCore::Layout::LineBuilder::justifyRuns):
(WebCore::Layout::LineBuilder::alignHorizontally):
(WebCore::Layout::LineBuilder::removeTrailingTrimmableContent):
(WebCore::Layout::LineBuilder::visuallyCollapsePreWrapOverflowContent):
(WebCore::Layout::LineBuilder::collectHangingContent):
(WebCore::Layout::LineBuilder::append):
(WebCore::Layout::LineBuilder::appendNonBreakableSpace):
(WebCore::Layout::LineBuilder::appendInlineContainerEnd):
(WebCore::Layout::LineBuilder::appendTextContent):
(WebCore::Layout::LineBuilder::appendNonReplacedInlineBox):
(WebCore::Layout::LineBuilder::appendLineBreak):
(WebCore::Layout::LineBuilder::isVisuallyNonEmpty const):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::TrimmableTrailingContent):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::addFullyTrimmableContent):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::addPartiallyTrimmableContent):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::remove):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::removePartiallyTrimmableContent):
(WebCore::Layout::LineBuilder::Run::Run):
(WebCore::Layout::m_textContext):
(WebCore::Layout::LineBuilder::Run::expand):
(WebCore::Layout::LineBuilder::Run::hasTrailingLetterSpacing const):
(WebCore::Layout::LineBuilder::Run::trailingLetterSpacing const):
(WebCore::Layout::LineBuilder::Run::removeTrailingLetterSpacing):
(WebCore::Layout::LineBuilder::Run::removeTrailingWhitespace):
(WebCore::Layout::LineBuilder::Run::visuallyCollapseTrailingWhitespace):
(WebCore::Layout::LineBuilder::Run::adjustExpansionBehavior):
(WebCore::Layout::LineBuilder::Run::expansionBehavior const):
(WebCore::Layout::LineBuilder::Run::setComputedHorizontalExpansion):
(WebCore::Layout::LineBuilder::ContinuousContent::canInlineItemRunBeExpanded): Deleted.
(WebCore::Layout::LineBuilder::ContinuousContent::ContinuousContent): Deleted.
(WebCore::Layout::LineBuilder::ContinuousContent::isEligible const): Deleted.
(WebCore::Layout::LineBuilder::ContinuousContent::append): Deleted.
(WebCore::Layout::LineBuilder::ContinuousContent::close): Deleted.
(WebCore::Layout::m_isCollapsedToVisuallyEmpty): Deleted.
(WebCore::Layout::shouldPreserveLeadingContent): Deleted.
(WebCore::Layout::LineBuilder::revert): Deleted.
(WebCore::Layout::LineBuilder::justifyRuns const): Deleted.
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::append): Deleted.
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::removeTrailingRun): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::InlineItemRun): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isTrimmableWhitespace const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::hasTrailingLetterSpacing const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::trailingLetterSpacing const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::setCollapsesToZeroAdvanceWidth): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::removeTrailingLetterSpacing): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::hasEmptyTextContent const): Deleted.

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::Run::logicalWidth const):
(WebCore::Layout::LineBuilder::Run::shrinkHorizontally):
(WebCore::Layout::LineBuilder::Run::adjustLogicalTop):
(WebCore::Layout::LineBuilder::Run::hasTrailingWhitespace const):
(WebCore::Layout::LineBuilder::Run::hasCollapsibleTrailingWhitespace const):
(WebCore::Layout::LineBuilder::Run::hasCollapsedTrailingWhitespace const):
(WebCore::Layout::LineBuilder::Run::trailingWhitespaceWidth const):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::width const):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::isTrailingRunFullyTrimmable const):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::isTrailingRunPartiallyTrimmable const):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::reset):
(WebCore::Layout::LineBuilder::Run::trailingWhitespaceType const):
(WebCore::Layout::LineBuilder::Run::isCollapsedToVisuallyEmpty const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::layoutBox const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::style const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::logicalLeft const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::logicalWidth const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::textContext const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isText const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isBox const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isContainerStart const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isContainerEnd const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isLineBreak const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::type const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isCollapsed const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::moveHorizontally): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::adjustLogicalWidth): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isCollapsedToZeroAdvanceWidth const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isCollapsible const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isWhitespace const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::hasExpansionOpportunity const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::operator== const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::operator!= const): Deleted.
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::firstRunIndex): Deleted.

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::layoutLine):

7:19 AM Changeset in webkit [254804] by Claudio Saavedra
  • 4 edits in trunk/Source

[GTK] Remove usage of deprecated GTimeVal
​https://bugs.webkit.org/show_bug.cgi?id=206358

Reviewed by Ε½an DoberΕ‘ek.

Source/WebKit:

Use g_get_monotonic_time() for counting clicks instead of
deprecated and unsafe API.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(ClickCounter::currentClickCountForGdkButtonEvent):

Source/WTF:

Use g_get_real_time() directly instead of deprecated and unsafe API.

  • wtf/CurrentTime.cpp:

(WTF::currentTime):

5:52 AM Changeset in webkit [254803] by Diego Pino Garcia
  • 15 edits in trunk/LayoutTests

[WPE] Gardening, rebase lines and lint TestExpectations
​https://bugs.webkit.org/show_bug.cgi?id=206482

Unreviewed gardening.

  • platform/wpe/TestExpectations: Removed duplicated entries and

references to non-existing files

  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-events.https-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/idlharness.https-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-mode.any-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-mode.any.worker-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/import/color-prop-02-f-manual-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/import/color-prop-03-t-manual-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/import/shapes-intro-01-t-manual-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/import/types-dom-08-f-manual-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/path/distance/pathLength-positive-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/path/distance/pathLength-positive-percentage-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/shapes/reftests/pathlength-003-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/shapes/scripted/disabled-shapes-not-hit-expected.txt:

Jan 18, 2020:

10:02 PM Changeset in webkit [254802] by ddkilzer@apple.com
  • 3 edits in trunk/Source/WebCore

REGRESSION (r254790): Update DerivedSources-{input,output}.xcfilelist to fix build

Add support for scroll behavior parsing
<​https://bugs.webkit.org/show_bug.cgi?id=205009>

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • Update after commit r254790.
3:14 PM Changeset in webkit [254801] by caitp@igalia.com
  • 21 edits
    6 adds in trunk

[JSC] add DFG/FTL support for op_to_property_key
​https://bugs.webkit.org/show_bug.cgi?id=206368

JSTests:

Reviewed by Saam Barati.

  • stress/class-fields-to-property-key-const-string-ftl.js: Added.
  • stress/class-fields-to-property-key-const-symbol-ftl.js: Added.
  • stress/class-fields-to-property-key-slow-object-tostring-ftl.js: Added.
  • stress/class-fields-to-property-key-slow-object-valueof-ftl.js: Added.
  • stress/class-fields-to-property-key-string-object-ftl.js: Added.
  • stress/class-fields-to-property-key-string-or-string-object-ftl.js: Added.

Source/JavaScriptCore:

Reviewed by Saam Barati.

Implement DFG/FTL support for the op_to_property_key opcode. This operates
similar to the LLInt and base JIT implementations, in which we avoid invoking
the full ToPropertyKey operation if the source operand is already a String or
Symbol at runtime.

If DFG/FTL are confident the value will be a String or Symbol at compile time,
the operation is omitted entirely in the final graph.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGNode.h:

(JSC::DFG::Node::convertToToString):

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

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileToPrimitive):
(JSC::DFG::SpeculativeJIT::compileToPropertyKey):

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

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileToPropertyKey):

12:35 PM Changeset in webkit [254800] by Wenson Hsieh
  • 8 edits in trunk/Source/WebCore

Make pasteboard markup sanitization more robust
​https://bugs.webkit.org/show_bug.cgi?id=206379
<rdar://problem/58660859>

Reviewed by Ryosuke Niwa.

Makes markup sanitization when copying and pasting more robust in some circumstances (see the bug for additional
details).

  • editing/markup.cpp:

(WebCore::createPageForSanitizingWebContent):

Adopt the new setting when creating the temporary web page used to sanitize markup coming from the pasteboard.

  • html/parser/HTMLParserOptions.cpp:

(WebCore::HTMLParserOptions::HTMLParserOptions):

  • html/parser/HTMLParserOptions.h:

Rename scriptEnabled to scriptingFlag, since parsing script elements may now be allowed even when JavaScript
execution is disabled. The term "scripting flag" also closely matches the wording of the HTML parsing
specification.

  • html/parser/HTMLTokenizer.cpp:

(WebCore::HTMLTokenizer::updateStateFor):

  • html/parser/HTMLTreeBuilder.cpp:

(WebCore::HTMLTreeBuilder::processStartTagForInBody):
(WebCore::HTMLTreeBuilder::processStartTagForInHead):

  • page/Settings.yaml:

Add a new setting to determine whether to consider the scripting flag on when parsing HTML. By default, we will
only turn the scripting flag on if script execution is enabled; however, this may be set such that we may
consider the scripting flag set, even though script execution is disabled.

  • page/SettingsBase.h:
11:43 AM Changeset in webkit [254799] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[WPE] Gardening, synchronize with GTK TestExpectations
​https://bugs.webkit.org/show_bug.cgi?id=206473

Unreviewed gardening.

  • platform/wpe/TestExpectations:
9:51 AM Changeset in webkit [254798] by Kocsen Chung
  • 1 copy in tags/Safari-610.1.1.1

Tag Safari-610.1.1.1.

9:10 AM Changeset in webkit [254797] by Antti Koivisto
  • 11 edits in trunk/Source/WebCore

[LFC] LayoutState constructor shouldn't take LayoutTreeContent
​https://bugs.webkit.org/show_bug.cgi?id=206471

Reviewed by Zalan Bujtas.

It just needs the root container.

This is preparation for more performant layout box construction and ownership model in the integration code.

  • layout/LayoutContext.h:
  • layout/LayoutState.cpp:

(WebCore::Layout::LayoutState::LayoutState):

Take Document (to compute quirks mode) and the root box only.

(WebCore::Layout::LayoutState::displayBoxForRootLayoutBox):
(WebCore::Layout::LayoutState::setViewportSize):
(WebCore::Layout::LayoutState::viewportSize const):
(WebCore::Layout::LayoutState::setIsIntegratedRootBoxFirstChild):
(WebCore::Layout::LayoutState::isIntegratedRootBoxFirstChild const): Deleted.

Make this a bit set by the integration code.

  • layout/LayoutState.h:

(WebCore::Layout::LayoutState::root const):
(WebCore::Layout::LayoutState::isIntegratedRootBoxFirstChild const):
(WebCore::Layout::LayoutState::rootRenderer const): Deleted.

  • layout/Verification.cpp:

(WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::constraintsForLine):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::layout):

Also allocate LayoutState directly from LineLayout using Optional.

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::printLayoutTreeForLiveDocuments):

  • page/FrameViewLayoutContext.cpp:

(WebCore::FrameViewLayoutContext::layoutUsingFormattingContext):

  • rendering/updating/RenderTreeUpdater.cpp:
8:46 AM Changeset in webkit [254796] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Rename trailing collapsible content to trailing trimmable
​https://bugs.webkit.org/show_bug.cgi?id=206447
<rdar://problem/58697414>

Reviewed by Antti Koivisto.

Trimming is the spec term for removing trailing inline content (also this helps to not confuse
trailing trimming and whitespace collapsing.)

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::LineBuilder):
(WebCore::Layout::LineBuilder::initialize):
(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::revert):
(WebCore::Layout::LineBuilder::removeTrailingTrimmableContent):
(WebCore::Layout::LineBuilder::visuallyCollapsePreWrapOverflowContent):
(WebCore::Layout::LineBuilder::collectHangingContent):
(WebCore::Layout::LineBuilder::appendInlineContainerEnd):
(WebCore::Layout::LineBuilder::appendTextContent):
(WebCore::Layout::LineBuilder::appendNonReplacedInlineBox):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::TrimmableTrailingContent):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::append):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::remove):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::removeTrailingRun):
(WebCore::Layout::LineBuilder::InlineItemRun::isTrimmableWhitespace const):
(WebCore::Layout::LineBuilder::removeTrailingCollapsibleContent): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::CollapsibleContent): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::append): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::collapse): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::collapseTrailingRun): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isCollapsibleWhitespace const): Deleted.

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::trimmableTrailingWidth const):
(WebCore::Layout::LineBuilder::isTrailingRunFullyTrimmable const):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::isTrailingRunFullyTrimmable const):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::isTrailingRunPartiallyTrimmable const):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::reset):
(WebCore::Layout::LineBuilder::trailingCollapsibleWidth const): Deleted.
(WebCore::Layout::LineBuilder::isTrailingRunFullyCollapsible const): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::width const): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::firstRunIndex): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::isEmpty const): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::isTrailingRunFullyCollapsible const): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::isTrailingRunPartiallyCollapsible const): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::reset): Deleted.

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::tryAddingFloatItems):
(WebCore::Layout::LineLayoutContext::tryAddingInlineItems):

8:20 AM Changeset in webkit [254795] by Kocsen Chung
  • 8 edits in branches/safari-610.1.1-branch/Source

Versioning.

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

Unreviewed, rolling out r254780.
​https://bugs.webkit.org/show_bug.cgi?id=206472

fast/css/content/content-none.html asserts in
LineBuilder::CollapsibleContent::collapse() (Requested by
zalan on #webkit).

Reverted changeset:

"[LFC][IFC] Do not construct a dedicated run for the trailing
(fully) collapsed whitespace."
​https://bugs.webkit.org/show_bug.cgi?id=206428
​https://trac.webkit.org/changeset/254780

Note: See TracTimeline for information about the timeline view.