Timeline
Jan 22, 2020:
- 10:50 PM Changeset in webkit [254966] by
-
- 2 edits1 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
-
- 5 edits2 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.
- 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].
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 7 edits1 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
-
- 11 edits20 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 9 edits2 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
-
- 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
-
- 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
ldron 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
-
- 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
-
- 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
-
- 5 edits3 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
-
- 6 edits1 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
-
- 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
-
- 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
-
- 22 edits1 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 43 edits1 copy1 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 2 edits1 delete in trunk/LayoutTests/imported/w3c
Fix fetch/api/policies/referrer-origin-worker.html
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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 1 copy in releases/WebKitGTK/webkit-2.26.3
WebKitGTK 2.26.3
- 3:21 AM Changeset in webkit [254914] by
-
- 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
-
- 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
-
- 4 edits2 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
-
- 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
-
- 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
-
- 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
-
- 3 edits2 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
-
- 3 edits2 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
-
- 4 edits2 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
- (diff)
- 2:19 AM Changeset in webkit [254905] by
-
- 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
-
- 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
-
- 3 edits2 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
-
- 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
-
- 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
-
- 9 edits1 move1 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
-
- 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
-
- 9 edits2 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 36 edits2 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
-
- 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
-
- 1 copy in tags/Safari-608.5.12
Tag Safari-608.5.12.
- 3:38 PM Changeset in webkit [254890] by
-
- 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
-
- 1 copy in tags/Safari-609.1.15
Tag Safari-609.1.15.
- 3:32 PM Changeset in webkit [254888] by
-
- 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
-
- 2 edits in trunk/Source/WebCore
Build fix.
- rendering/updating/RenderTreeBuilderInline.cpp:
Add missing include.
- 3:10 PM Changeset in webkit [254886] by
-
- 18 edits2 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 10 edits2 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 3 edits1 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
locationPromotedHeapLocation(@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
-
- 183 edits7 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
-
- 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
-
- 3 edits2 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
-
- 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
-
- 26 edits16 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
-
- 2 edits2 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
-
- 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:
- 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.
- Make StorageAreaMap::connect() private as it is never called from outside the class
- Reorder data members for better packing
- Use modern loops in the implementation
- 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.
- Mark class as final
- Replace LOG_ERROR() with RELEASE_LOG_ERROR() so that we can see error logging in sysdiagnoses
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 2 edits1 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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.