Timeline
Sep 21, 2020:
- 11:58 PM Changeset in webkit [267400] by
-
- 2 edits in trunk/Source/WebKit
Enable MediaRecorder by default on iOS
https://bugs.webkit.org/show_bug.cgi?id=216664
Reviewed by Darin Adler.
- Shared/WebPreferencesDefaultValues.cpp:
(WebKit::defaultMediaRecorderEnabled):
- 11:52 PM Changeset in webkit [267399] by
-
- 7 edits in trunk
[CMake] Use imported targets in find module for the ATK SPI2 bridge dependency
https://bugs.webkit.org/show_bug.cgi?id=216773
Reviewed by Don Olmstead.
.:
- Source/cmake/FindATKBridge.cmake: Rewrite to define an ATK::Bridge imported target.
- Source/cmake/OptionsWPE.cmake: Use the ATK::Bridge imported target.
Source/WebKit:
No new tests needed.
- PlatformWPE.cmake: Use the ATK::Bridge imported target.
Tools:
- wpe/backends/CMakeLists.txt: Use the ATK::Bridge imported target.
- 11:08 PM Changeset in webkit [267398] by
-
- 10 edits in trunk/Source
[GTK] Bump cairo version to support HiDPI
https://bugs.webkit.org/show_bug.cgi?id=133378
Reviewed by Carlos Garcia Campos.
Remove conditional compilation around cairo_{g,s}et_device_scale() as there is no need to
support older versions of Cairo which lack the functions. The minimum version of Cairo
being required by CMake is 1.14.0, which already includes them.
Source/WebCore:
No new tests needed.
- platform/graphics/cairo/BackingStoreBackendCairoImpl.cpp:
(WebCore::createCairoImageSurfaceWithFastMalloc): Use cairo_surface_set_device_scale()
directly.
(WebCore::BackingStoreBackendCairoImpl::scroll): Use cairo_surface_get_device_scale()
directly.
- platform/graphics/cairo/BackingStoreBackendCairoX11.cpp:
(WebCore::BackingStoreBackendCairoX11::BackingStoreBackendCairoX11): Use
cairo_surface_set_device_scale() directly.
(WebCore::BackingStoreBackendCairoX11::scroll): Use cairo_surface_get_device_scale()
directly.
- platform/graphics/cairo/CairoUtilities.cpp: Remove helper functions
cairoSurfaceSetDeviceScale() and cairoSurfaceGetDeviceScale().
- platform/graphics/cairo/CairoUtilities.h: Ditto.
Source/WebKit:
- Shared/cairo/ShareableBitmapCairo.cpp:
(WebKit::ShareableBitmap::paint): use cairo_surface_set_device_scale() directly.
- UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseTakeViewSnapshot): Ditto.
- UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
(WebKit::AcceleratedBackingStoreWayland::displayBuffer): Ditto.
(WebKit::AcceleratedBackingStoreWayland::downloadTexture): Ditto.
- UIProcess/gtk/AcceleratedBackingStoreX11.cpp:
(WebKit::AcceleratedBackingStoreX11::update): Ditto.
- 10:07 PM Changeset in webkit [267397] by
-
- 3 edits in trunk/Source/WebKitLegacy/mac
Remove deprecated script and stylesheet injection SPI, replaced with more inclusively-named SPI
https://bugs.webkit.org/show_bug.cgi?id=214936
Patch by Alex Christensen <achristensen@webkit.org> on 2020-09-21
Reviewed by Youenn Fablet.
rdar://64376341 tracks the adoption of the replacement. Once that is done, we can remove the old SPI.
- WebView/WebView.mm:
(+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:]): Deleted.
(+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]): Deleted.
(+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:]): Deleted.
(+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]): Deleted.
- WebView/WebViewPrivate.h:
- 10:03 PM Changeset in webkit [267396] by
-
- 3 edits1 delete in trunk/LayoutTests
[GLIB] Unreviewed test gardening. Update baselines after r267389.
- platform/glib/imported/w3c/web-platform-tests/selection/selection-select-all-move-input-crash-expected.txt:
- platform/glib/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner-expected.txt: Update after r267357.
- platform/glib/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation-expected.txt: Removed.
- 9:56 PM Changeset in webkit [267395] by
-
- 2 edits in trunk/Source/JavaScriptCore
Fix MIPS leai,leap when offset is nonzero
https://bugs.webkit.org/show_bug.cgi?id=216772
Reviewed by Mark Lam.
Fix required by change from webkit#216685
- offlineasm/mips.rb:
- 9:44 PM Changeset in webkit [267394] by
-
- 5 edits in trunk/Source
paper.io ad close buttons cannot be iteracted with via trackpad on iPad
https://bugs.webkit.org/show_bug.cgi?id=216812
<rdar://problem/68738585>
Reviewed by Wenson Hsieh.
Source/WebCore:
- platform/RuntimeApplicationChecks.h:
- platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::IOSApplication::isPaperIO):
Source/WebKit:
- UIProcess/ios/WKContentViewInteraction.mm:
(applicationIsKnownToIgnoreMouseEvents):
- 8:51 PM Changeset in webkit [267393] by
-
- 2 edits in branches/safari-610-branch/LayoutTests
Cherry-pick r266058. rdar://problem/69343370
[ macOS wk1 Debug ] inspector/animation/nameChanged.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=215767
Unreviewed test gardening.
- platform/mac-wk1/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266058 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 8:50 PM Changeset in webkit [267392] by
-
- 3 edits in branches/safari-610-branch/LayoutTests
Cherry-pick r266041. rdar://problem/69341725
Make fast/text/letter-spacing-shaping.html more robust
https://bugs.webkit.org/show_bug.cgi?id=215711
Unreviewed test gardening.
- fast/text/letter-spacing-shaping-expected.html:
- fast/text/letter-spacing-shaping.html:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266041 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 8:48 PM Changeset in webkit [267391] by
-
- 2 edits in branches/safari-610-branch/LayoutTests
Cherry-pick r266494. rdar://problem/69341549
Rebaseline after macOS build progression.
Rebaseline fast/block/margin-collapse/103 for Mojave
Unreviewed test gardening.
- platform/mac-mojave/fast/block/margin-collapse/103-expected.txt:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266494 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 8:48 PM Changeset in webkit [267390] by
-
- 2 edits in branches/safari-610-branch/LayoutTests
Cherry-pick r266490. rdar://problem/69341549
Rebaseline after macOS build progression.
Rebaseline fast/block/margin-collapse/103 for Catalina
Unreviewed test gardening.
- platform/mac-catalina/fast/block/margin-collapse/103-expected.txt:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266490 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 8:48 PM Changeset in webkit [267389] by
-
- 2 edits in trunk/LayoutTests
[GLIB] fast/mediastream/getUserMedia-webaudio.html is failing since 267383
Unreviewed test gardening.
- platform/glib/TestExpectations:
- 6:30 PM Changeset in webkit [267388] by
-
- 4 edits in trunk
Value returned by AudioParamTimeline::valuesForTimeRange() is sometimes incorrect for exponential ramps
https://bugs.webkit.org/show_bug.cgi?id=216811
Reviewed by Darin Adler.
Source/WebCore:
AudioParamTimeline::valuesForTimeRangeImpl() always need to return the *last* value since this is
what will be used to update AudioParam::m_value to its latest value. We had a bug in our exponential
ramp processing causing value to be multiplied one extra time.
No new tests, rebaselined existing test.
- Modules/webaudio/AudioParamTimeline.cpp:
(WebCore::AudioParamTimeline::valuesForTimeRangeImpl):
LayoutTests:
Rebaseline test that is now passing.
- webaudio/AudioParam/audioparam-update-value-attribute-expected.txt:
- 5:37 PM Changeset in webkit [267387] by
-
- 3 edits in trunk/Source/WebKit
Add some WKWebProcessPlugInFrame SPI needed by Safari.
https://bugs.webkit.org/show_bug.cgi?id=216809
rdar://problem/69336928
Reviewed by Brian Weinstein.
- WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:
(+[WKWebProcessPlugInFrame lookUpFrameFromJSContext:]): Added.
(-[WKWebProcessPlugInFrame _securityOrigin]): Added.
- WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFramePrivate.h:
- 5:17 PM Changeset in webkit [267386] by
-
- 5 edits in trunk
AudioBufferSourceNode should update grain parameters when buffer is set after rendering has started
https://bugs.webkit.org/show_bug.cgi?id=216808
Reviewed by Eric Carlson.
Source/WebCore:
AudioBufferSourceNode should update grain parameters when buffer is set after rendering has
started. The grain parameters need to be adjusted so that they make sense given the buffer
length. Previously, we would only update grain parameters in AudioBufferSourceNode::startPlaying(),
when a buffer is set. We would fail to update those grain parameters when the buffer is set,
in setBuffer(), if startPlaying() has already been called.
No new tests, rebaselined existing test.
- Modules/webaudio/AudioBufferSourceNode.cpp:
(WebCore::AudioBufferSourceNode::setBuffer):
(WebCore::AudioBufferSourceNode::startLater):
(WebCore::AudioBufferSourceNode::startPlaying):
(WebCore::AudioBufferSourceNode::updateGrainParameters):
- Modules/webaudio/AudioBufferSourceNode.h:
LayoutTests:
Rebaseline test that is now passing.
- webaudio/AudioBufferSource/audiobuffersource-loop-grain-no-duration-expected.txt:
- 4:49 PM Changeset in webkit [267385] by
-
- 3 edits in trunk/Source/WebKit
Make accessibility isolated tree a non-experimental feature.
https://bugs.webkit.org/show_bug.cgi?id=216792
Reviewed by Chris Fleizach.
Promote accessibility isolated tree from an experimental feature to a
non-experimental one. This avoids the problem where a user can turn off
the feature through the Safari > Develop > Experimental Features submenu,
while the accessibility request are still coming on a secondary thread,
which leads to random crashes.
- Shared/WebPreferences.yaml:
- Shared/WebPreferencesExperimental.yaml:
- 4:42 PM Changeset in webkit [267384] by
-
- 2 edits in trunk/LayoutTests
Unreviewed, unskip webaudio/Analyser/handle-silent-inputs.html.
This test should no longer be flaky now that it is passing.
- 4:27 PM Changeset in webkit [267383] by
-
- 14 edits2 deletes in trunk
Values returned by FFTFrame::doFFT() are twice as large as they should be
https://bugs.webkit.org/show_bug.cgi?id=216781
Reviewed by Darin Adler.
Source/WebCore:
To provide the best possible execution speeds, the vDSP library's functions don't always adhere strictly
to textbook formulas for Fourier transforms, and must be scaled accordingly [1].
In the case of a Real forward Transform like in FFTFrame::doFFT(): RFimp = RFmath * 2 so we need to
divide the output by 2 to get the correct value. We were failing to do this scaling and this was causing
AnalyserNode tests to fail.
[1] See https://developer.apple.com/library/archive/documentation/Performance/Conceptual/vDSP_Programming_Guide/UsingFourierTransforms/UsingFourierTransforms.html#//apple_ref/doc/uid/TP40005147-CH3-SW5
No new tests, rebaselined existing tests.
- Modules/webaudio/PeriodicWave.cpp:
(WebCore::PeriodicWave::createBandLimitedTables):
Update normalization factor now that FFTFrame::doInverseFFT() has been fixed. The new normalization factor
matches the value used by blink at:
- platform/audio/FFTFrame.cpp:
(WebCore::FFTFrame::multiply):
We were applying a 0.5 scaling factor to the output of vDSP_zvmul(). However, the documentation for vDSP_zvmul()
does not indicate that its output is twice as large as expected. Odds are that this was done because we used
to have a bug in FFTFrame::doFFT() that was returning values twice as large as expected. SInce this function
relies on VectorMath, there is no need for its implementation to be platform-specific.
- platform/audio/FFTFrameStub.cpp:
- platform/audio/gstreamer/FFTFrameGStreamer.cpp:
(WebCore::FFTFrame::doFFT):
(WebCore::FFTFrame::doInverseFFT):
Drop 2 factor in the GStreamer implementation that was added to try and be consistent with the incorrect Mac
implementation.
- platform/audio/mac/FFTFrameMac.cpp:
(WebCore::FFTFrame::doFFT):
Fix issue where the values returned by doFFT() were twice as large as expected due to the odd behavior of
vDSP_fft_zrip().
(WebCore::FFTFrame::doInverseFFT):
Drop 2 factor in doInverseFFT that was added because the output of doFFT() was twice as large as expected
and we wanted x == InverseFFT(FFT(x)).
LayoutTests:
- webaudio/Analyser/realtimeanalyser-downmix-expected.txt:
- webaudio/Analyser/realtimeanalyser-freq-data-expected.txt:
- webaudio/Analyser/realtimeanalyser-freq-data-smoothing-expected.txt:
- webaudio/Analyser/realtimeanalyser-multiple-calls-expected.txt:
Rebaseline tests that are passing now that the bug has been fixed.
- webaudio/realtimeanalyser-fft-scaling-expected.txt: Removed.
- webaudio/realtimeanalyser-fft-scaling.html: Removed.
Drop outdated test. This test was imported into WPT and now resides at:
- imported/w3c/web-platform-tests/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html
- 4:25 PM Changeset in webkit [267382] by
-
- 2 edits in trunk/Source/WebCore
[GPU Process] Several tests in canvas/philip/tests are failing with text diffs
https://bugs.webkit.org/show_bug.cgi?id=216800
Reviewed by Darin Adler.
When using the GPU process to render canvas elements, we currently fail the 7 tests in
canvas/philip/tests
below, due to gradient and pattern fill/stroke styles lingering on the 2D graphics context state after a fill or
stroke color is set, respectively.
This happens when:
- The fill color is set to a color
C. - A fill pattern or gradient is applied.
- The fill color is set to the color
Cagain.
In this case, after step (2), we propagate a graphics context state change indicating that the fill pattern has
changed, but we leave the fill color unchanged (i.e., it remains equal toC). In step (3), we then set the
fill color toCagain, which doesn't propagate a state change to the GPU process, since the fill color is the
same (C). As such, the state in the GPU process keeps its fill gradient, and we end up filling with this old
gradient instead of the fill colorC.
To fix this, we simply revert
fillColorandstrokeColorto the invalid color when setting a gradient or
pattern in the same way that we currently clear out the fill/stroke gradient and pattern when setting a fill/
stroke color, which ensures that a state change will be sent to the GPU process during step (3).
Fixes the following canvas-related layout tests when using the GPU process:
- canvas/philip/tests/2d.gradient.radial.cone.shape2.html
- canvas/philip/tests/2d.pattern.basic.nocontext.html
- canvas/philip/tests/2d.pattern.paint.norepeat.coord3.html
- canvas/philip/tests/2d.pattern.paint.repeatx.coord1.html
- canvas/philip/tests/2d.pattern.paint.repeatx.outside.html
- canvas/philip/tests/2d.pattern.paint.repeaty.coord1.html
- canvas/philip/tests/2d.pattern.paint.repeaty.outside.html
The entire canvas/ directory is currently skipped when enabling the GPU process for canvas rendering, but once
we're down to a smaller number of failures, I intend to unskip these directories for GPU process, and
individually track any remaining test failures.
- platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::setStrokePattern):
(WebCore::GraphicsContext::setFillPattern):
(WebCore::GraphicsContext::setStrokeGradient):
(WebCore::GraphicsContext::setFillGradient):
- 4:14 PM Changeset in webkit [267381] by
-
- 5 edits in trunk
Properly handle AudioParam.setTargetAtTime() followed by a ramp
https://bugs.webkit.org/show_bug.cgi?id=216804
Reviewed by Darin Adler.
Source/WebCore:
Properly handle AudioParam.setTargetAtTime() followed by a ramp:
- https://www.w3.org/TR/webaudio/#dom-audioparam-settargetattime
- https://www.w3.org/TR/webaudio/#dom-audioparam-linearramptovalueattime
- https://www.w3.org/TR/webaudio/#dom-audioparam-exponentialramptovalueattime
This is a merge of the following Blink change:
No new tests, rebaselined existing test.
- Modules/webaudio/AudioParamTimeline.cpp:
(WebCore::AudioParamTimeline::valuesForTimeRangeImpl):
(WebCore::AudioParamTimeline::processSetTargetFollowedByRamp):
- Modules/webaudio/AudioParamTimeline.h:
LayoutTests:
Rebaseline test that is now passing.
- webaudio/AudioParam/audioparam-setTargetAtTime-continuous-expected.txt:
- 4:10 PM Changeset in webkit [267380] by
-
- 4 edits in trunk/Tools
[webkitpy] Use webkitcorepy's auto installer for pytest packages
https://bugs.webkit.org/show_bug.cgi?id=215895
<rdar://problem/67885471>
Rubber-stamped by Aakash Jain.
- Scripts/webkitpy/init.py: Add pytest and it's dependencies.
- Scripts/webkitpy/thirdparty/init.py:
(AutoinstallImportHook.find_module): Remove pytest and pytest_timeout.
(AutoinstallImportHook._install_pytest_timeout): Deleted.
(AutoinstallImportHook._install_pytest): Deleted.
- Scripts/webkitpy/webdriver_tests/pytest_runner.py: Implicitly use webkitcorepy's autoinstaller.
- 4:09 PM Changeset in webkit [267379] by
-
- 4 edits in trunk/Source/WebInspectorUI
Web Inspector: Uncaught Exception: Missing node for given nodeId
https://bugs.webkit.org/show_bug.cgi?id=216067
<rdar://problem/68520144>
Reviewed by Devin Rousso.
- UserInterface/Views/ContentBrowserTabContentView.js:
(WI.ContentBrowserTabContentView.prototype.showDetailsSidebarPanels):
RewriteshowDetailsSidebarPanelsin such way that causes no more than one change of selectedSidebarPanel.
Previously,removeSidebarPanelwould cause the change of selectedSidebarPanel, resulting in showing
a panel with outdatedthis.domNode.
- UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
Display a useful error with a relevant location instead of a generic Connection.js error.
- UserInterface/Views/Sidebar.js:
(WI.Sidebar.prototype.removeSidebarPanel):
After removing a panel, don't select the nearest panel. There doesn't seem to be a useful case for it.
The selected panel is determined at the removeSidebarPanel callsites.
- 3:59 PM Changeset in webkit [267378] by
-
- 2 edits in branches/safari-610-branch/LayoutTests
REGRESSION (r264117): [ Mac iOS ] imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/blob.https.html
https://bugs.webkit.org/show_bug.cgi?id=214155
Unreviewed test gardening.
- platform/ios/TestExpectations:
- 3:56 PM Changeset in webkit [267377] by
-
- 3 edits in trunk/Source/WebCore
Remove unused NodeFlag::HasCSSAnimation
https://bugs.webkit.org/show_bug.cgi?id=216785
Reviewed by Antti Koivisto.
- dom/Element.h:
(WebCore::Element::hasCSSAnimation const): Deleted.
(WebCore::Element::setHasCSSAnimation): Deleted.
(WebCore::Element::clearHasCSSAnimation): Deleted.
- dom/Node.h:
- 3:50 PM Changeset in webkit [267376] by
-
- 9 edits in trunk
Throw when AudioConnect::connect() is called for an output that has no channels
https://bugs.webkit.org/show_bug.cgi?id=216802
Reviewed by Darin Adler.
LayoutTests/imported/w3c:
Rebaseline existing tests because I improved exception messages.
- web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining-expected.txt:
- web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-expected.txt:
Source/WebCore:
Throw when AudioConnect::connect() is called for an output that has no channels, for consistency
with Blink. The ScriptProcessorNode cannot have an output node that has zero channels.
No new tests, rebaselined existing tests.
- Modules/webaudio/AudioNode.cpp:
(WebCore::AudioNode::connect):
LayoutTests:
- webaudio/MediaElementAudioSource/mediaelementaudiosourcenode-expected.txt:
- webaudio/dom-exceptions-expected.txt:
Rebaseline existing tests because I improved exception messages.
- webaudio/ScriptProcessor/scriptprocessornode-0-output-channels-expected.txt:
Rebaseline test that is now passing.
- 3:29 PM Changeset in webkit [267375] by
-
- 1 copy in tags/Safari-610.2.7
Tag Safari-610.2.7.
- 3:21 PM Changeset in webkit [267374] by
-
- 2 edits in branches/safari-610-branch/LayoutTests
[iOS] Update fast/text/opticalFontWithTextStyle.html for iOS 14
https://bugs.webkit.org/show_bug.cgi?id=215667
Unreviewed test gardening.
- platform/ios/ios/fast/text/opticalFontWithTextStyle-expected.txt:
- 3:10 PM Changeset in webkit [267373] by
-
- 18 edits3 adds in trunk
[JSC] BigInt should work with Map / Set
https://bugs.webkit.org/show_bug.cgi?id=216667
JSTests:
<rdar://problem/69107221>
Reviewed by Robin Morisset.
- stress/bigint-and-map-set.js: Added.
(shouldBe):
(opaque1n):
(testMap):
(let.set new):
- stress/bigint-string-map-set.js: Added.
(shouldBe):
(testMap):
- stress/bigint32-map-set.js: Added.
(shouldBe):
(testMap):
Source/JavaScriptCore:
Reviewed by Robin Morisset.
This patch makes BigInt supported in Map / Set.
- In NormalizeMapKey, we always attempt to convert HeapBigInt to BigInt32 (if supported). So we ensure that,
normalized BigInt has one unique form for BigInt32 range. This allows us to use hashing for BigInt32 bit pattern directly.
- In MapHash, for BigInt32, we directly has the JSValue bits. For HeapBigInt, we calculate hash via Hasher.
- In GetMapBucket, we consider HeapBigInt case correctly.
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
- dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::fixupNormalizeMapKey):
- dfg/DFGOperations.cpp:
- dfg/DFGOperations.h:
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileNormalizeMapKey):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileMapHash):
(JSC::FTL::DFG::LowerDFGToB3::compileNormalizeMapKey):
(JSC::FTL::DFG::LowerDFGToB3::compileGetMapBucket):
- runtime/HashMapImpl.h:
(JSC::normalizeMapKey):
(JSC::jsMapHash):
(JSC::concurrentJSMapHash):
- runtime/JSBigInt.cpp:
(JSC::JSBigInt::concurrentHash):
- runtime/JSBigInt.h:
(JSC::tryConvertToBigInt32):
Source/WebCore:
<rdar://problem/69107221>
Reviewed by Robin Morisset.
Strongly ensure that BigInt32 is always selected since Map / Set could use it as a key.
- bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneDeserializer::readBigInt):
Source/WTF:
Reviewed by Robin Morisset.
- wtf/Hasher.h:
(WTF::Hasher::hash const):
(WTF::add):
- 3:03 PM Changeset in webkit [267372] by
-
- 2 edits in trunk/Source/WebCore
Tapping to zoom in and out causes video to become very small on some iPhone models
https://bugs.webkit.org/show_bug.cgi?id=216635
Reviewed by Jer Noble.
- platform/ios/VideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerLayer resolveBounds]): On some iPhone models, AVKit does not
change "bounds" of WebAVPlayerLayer after changing its video gravity. Therefore,
in this function, "modelVideoLayerFrame" and "bounds" might be the same. But we
still need to update the video layer frame in the Web process.
(-[WebAVPlayerLayer setVideoGravity:]): On some iPhone models, AVKit does
not call -[WebAVPlayerLayer:layoutSublayers] immediately after changing
the video gravity. Forcing a layout can fix that.
- 3:01 PM Changeset in webkit [267371] by
-
- 21 edits in trunk/Source
Move some LLInt globals into JSC::Config.
https://bugs.webkit.org/show_bug.cgi?id=216685
rdar://68964544
Reviewed by Keith Miller.
Source/bmalloc:
Introduce ConfigAlignment to match WTFConfig.h.
Added BENABLE(UNIFIED_AND_FREEZABLE_CONFIG_RECORD) support to match WTF.
- bmalloc/BPlatform.h:
- bmalloc/Gigacage.cpp:
(Gigacage::ensureGigacage):
- bmalloc/GigacageConfig.h:
- bmalloc/mbmalloc.cpp:
Source/JavaScriptCore:
- Moved the following into g_jscConfig:
Data::s_exceptionInstructions ==> g_jscConfig.llint.exceptionInstructions
Data::s_wasmExceptionInstructions ==> g_jscConfig.llint.wasmExceptionInstructions
g_opcodeMap ==> g_jscConfig.llint.opcodeMap
g_opcodeMapWide16 ==> g_jscConfig.llint.opcodeMapWide16
g_opcodeMapWide32 ==> g_jscConfig.llint.opcodeMapWide32
- Fixed cloop.rb so that it can take an offset for the leap offlineasm instruction.
- Fixed x86.rb so that it can take an offset for the leap offlineasm instruction.
- Fixed arm.rb so that it can take an offset for the leap offlineasm instruction.
Note: arm64.rb already does this right.
- Added JSC::Config::singleton() to return a reference to g_jscConfig. This is useful when debugging with lldb since g_jscConfig is not an actual label, but is a macro that computes the address of the Config record.
This patch has been smoke tested on arm64e, x86_64, and cloop (on x86_64 and armv7k).
- llint/LLIntData.cpp:
(JSC::LLInt::LLIntInitializeAssertScope::LLIntInitializeAssertScope):
(JSC::LLInt::LLIntInitializeAssertScope::~LLIntInitializeAssertScope):
(JSC::LLInt::LLIntInitializeAssertScope::assertInitializationIsAllowed):
(JSC::LLInt::initialize):
- llint/LLIntData.h:
(JSC::LLInt::exceptionInstructions):
(JSC::LLInt::wasmExceptionInstructions):
(JSC::LLInt::opcodeMap):
(JSC::LLInt::opcodeMapWide16):
(JSC::LLInt::opcodeMapWide32):
(JSC::LLInt::getOpcode):
(JSC::LLInt::getOpcodeWide16):
(JSC::LLInt::getOpcodeWide32):
- llint/LowLevelInterpreter.asm:
- llint/LowLevelInterpreter.cpp:
- llint/LowLevelInterpreter64.asm:
- llint/WebAssembly.asm:
- offlineasm/arm.rb:
- offlineasm/cloop.rb:
- offlineasm/x86.rb:
- runtime/JSCConfig.cpp:
(JSC::Config::singleton):
- runtime/JSCConfig.h:
Source/WTF:
- Introduce ConfigAlignment as a distinct value from ConfigSizeToProtect. This is because ConfigSizeToProtect is now larger than 1 CeilingOnPageSize on some platforms, but ConfigAlignment only needs to match CeilingOnPageSize.
- Introduced ENABLE(UNIFIED_AND_FREEZABLE_CONFIG_RECORD) to disable using the unified g_config record for Windows ports.
This is needed because WTF is built as a DLL on Windows. offlineasm does not
know how to resolve a DLL exported variable. Additionally, the Windows ports
have never supported freezing of the Config record to begin with. So, we're
working around this by disabling ENABLE(UNIFIED_AND_FREEZABLE_CONFIG_RECORD)
for Windows. This allows JSC to have its own g_jscConfig record, which solves
this issue for now.
- wtf/PlatformEnable.h:
- wtf/WTFConfig.cpp:
(WTF::Config::permanentlyFreeze):
- wtf/WTFConfig.h:
- 2:45 PM Changeset in webkit [267370] by
-
- 14 edits in trunk/Source
[WinCairo][PlayStation] Support different instances of listener client.
https://bugs.webkit.org/show_bug.cgi?id=216733
Reviewed by Don Olmstead.
Source/JavaScriptCore:
Currently RemoteInspectorSocketEndpoint support one client instance for all
listeners. This patch allows listeners to create its own listener client on
accept timing.
- inspector/remote/RemoteControllableTarget.h:
- inspector/remote/RemoteInspector.h:
- inspector/remote/socket/RemoteInspectorConnectionClient.cpp:
(Inspector::RemoteInspectorConnectionClient::didReceive):
- inspector/remote/socket/RemoteInspectorConnectionClient.h:
- inspector/remote/socket/RemoteInspectorServer.cpp:
(Inspector::RemoteInspectorServer::start):
(Inspector::RemoteInspectorServer::doAccept):
- inspector/remote/socket/RemoteInspectorServer.h:
- inspector/remote/socket/RemoteInspectorSocket.cpp:
(Inspector::RemoteInspector::didClose):
- inspector/remote/socket/RemoteInspectorSocket.h:
- inspector/remote/socket/RemoteInspectorSocketEndpoint.cpp:
(Inspector::RemoteInspectorSocketEndpoint::RemoteInspectorSocketEndpoint):
(Inspector::RemoteInspectorSocketEndpoint::~RemoteInspectorSocketEndpoint):
(Inspector::RemoteInspectorSocketEndpoint::listenInet):
(Inspector::RemoteInspectorSocketEndpoint::workerThread):
(Inspector::RemoteInspectorSocketEndpoint::generateConnectionID):
(Inspector::RemoteInspectorSocketEndpoint::createClient):
(Inspector::RemoteInspectorSocketEndpoint::disconnect):
(Inspector::RemoteInspectorSocketEndpoint::createListener):
(Inspector::RemoteInspectorSocketEndpoint::invalidateClient):
(Inspector::RemoteInspectorSocketEndpoint::invalidateListener):
(Inspector::RemoteInspectorSocketEndpoint::getPort const):
(Inspector::RemoteInspectorSocketEndpoint::recvIfEnabled):
(Inspector::RemoteInspectorSocketEndpoint::sendIfEnabled):
(Inspector::RemoteInspectorSocketEndpoint::send):
(Inspector::RemoteInspectorSocketEndpoint::acceptInetSocketIfEnabled):
- inspector/remote/socket/RemoteInspectorSocketEndpoint.h:
Source/WebKit:
Follows the change of RemoteInspectorSocketEndpoint::Client interface change.
No new tests because there's no behaivior change.
- UIProcess/Inspector/socket/RemoteInspectorClient.cpp:
(WebKit::RemoteInspectorClient::didClose):
- UIProcess/Inspector/socket/RemoteInspectorClient.h:
- 2:32 PM Changeset in webkit [267369] by
-
- 13 edits in trunk
[WebAuthn] Don't set the UV option if the authenticator doesn't support it
https://bugs.webkit.org/show_bug.cgi?id=215836
<rdar://problem/67817359>
Reviewed by Darin Adler.
Source/WebCore:
Covered by new API tests.
UV in the the CTAP 2.0 spec only means internal UV:
https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html#authenticatorGetInfo
If an authenticator supports ClientPin, it can set the uv bit in the responses to true but it
will not advertise itself supporting internal UV, which is the uv in the options.
https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html#authenticatorMakeCredential
Hence, setting it to true could result in error if the authenticator doesn't support internal UV even if it supports ClientPin.
It's not a way to ask the authenticator to set the uv bit in the response.
- Modules/webauthn/fido/DeviceRequestConverter.cpp:
(fido::encodeMakeCredenitalRequestAsCBOR):
(fido::encodeGetAssertionRequestAsCBOR):
Tools:
- TestWebKitAPI/Tests/WebCore/CtapRequestTest.cpp:
(TestWebKitAPI::TEST):
LayoutTests:
- http/wpt/webauthn/public-key-credential-create-failure-hid-silent.https.html:
- http/wpt/webauthn/public-key-credential-create-failure-hid.https.html:
- http/wpt/webauthn/public-key-credential-get-failure-hid-silent.https.html:
- http/wpt/webauthn/public-key-credential-get-failure-hid.https.html:
- 2:20 PM Changeset in webkit [267368] by
-
- 4 edits in trunk/Tools
[webkitpy] Use webkitcorepy's auto installer for moz* packages
https://bugs.webkit.org/show_bug.cgi?id=215889
<rdar://problem/67877935>
Rubber-stamped by Aakash Jain.
- Scripts/webkitpy/init.py: Add mozprocess, mozlog and mozterm to AutoInstalled packages.
- Scripts/webkitpy/thirdparty/init.py:
(AutoinstallImportHook.find_module): Remove mozlog and mozprocess.
(AutoinstallImportHook._install_mozlog): Deleted.
(AutoinstallImportHook._install_mozprocess): Deleted.
- Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py: Implicitly use webkitcorepy's auto-installer.
- 2:17 PM Changeset in webkit [267367] by
-
- 6 edits in trunk
AudioParam.exponentialRampToValueAtTime() does not properly deal with negative values
https://bugs.webkit.org/show_bug.cgi?id=216790
Reviewed by Eric Carlson.
Source/WebCore:
AudioParam.exponentialRampToValueAtTime() does not properly deal with negative values.
The specification [1] says:
"If V0 and V1 have opposite signs or if V0 is zero, then v(t) = V0 for T0 <= t < T1."
Our implementation did not match the specification and would just special-case if either
V0 or V1 was negative.
[1] https://www.w3.org/TR/webaudio/#dom-audioparam-exponentialramptovalueattime
No new tests, rebaselined existing test.
- Modules/webaudio/AudioParamTimeline.cpp:
(WebCore::AudioParamTimeline::valuesForTimeRangeImpl):
LayoutTests:
Rebaseline test that is now passing.
- webaudio/AudioParam/audioparam-negative-exponentialRamp-expected.txt:
- 1:57 PM Changeset in webkit [267366] by
-
- 7 edits2 adds in trunk
[iOS] MediaRecorder incorrect screen orientation handling
https://bugs.webkit.org/show_bug.cgi?id=198912
<rdar://problem/51802521>
Reviewed by Eric Carlson.
Source/WebCore:
Update MediaRecorderPrivateWriterCocoa to pass a MediaSample down to handle rotation.
Set AVAssetWriterInput transform according the first MediaSample rotation value.
Test: http/wpt/mediarecorder/video-rotation.html
- platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:
(WebCore::MediaRecorderPrivateAVFImpl::videoSampleAvailable):
- platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
- platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:
(WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):
Source/WebKit:
- GPUProcess/webrtc/RemoteMediaRecorder.cpp:
(WebKit::RemoteMediaRecorder::videoSampleAvailable):
LayoutTests:
- http/wpt/mediarecorder/video-rotation-expected.txt: Added.
- http/wpt/mediarecorder/video-rotation.html: Added.
- 1:55 PM Changeset in webkit [267365] by
-
- 2 edits in trunk/Tools
[webkitpy] Use webkitcorepy's auto installer for six
https://bugs.webkit.org/show_bug.cgi?id=215770
<rdar://problem/67683133>
Rubber-stamped by Aakash Jain.
- Scripts/webkitpy/thirdparty/init.py:
(AutoinstallImportHook._install_mechanize): Remove six.
(AutoinstallImportHook._install_pytest): Ditto.
(AutoinstallImportHook._install_six): Deleted.
- 1:41 PM Changeset in webkit [267364] by
-
- 56 edits in trunk/Source
Functions should consistently enumerate length before name
https://bugs.webkit.org/show_bug.cgi?id=216789
Reviewed by Yusuke Suzuki.
Source/JavaScriptCore:
In https://github.com/tc39/ecma262/pull/2116, which has been
approved to be merged into the main JS spec, it's expected that
all functions should have their length property enumerated before
the name property. To ensure this invariant, this patch moves the
length set into InternalFunction::finishCreation.
There are no new tests since tests will be added to test262 when
the spec PR is merged. Adding tests to stress just means we will
have the same test twice, which seems like a waste.
- API/JSCallbackFunction.cpp:
(JSC::JSCallbackFunction::finishCreation):
- API/ObjCCallbackFunction.mm:
(JSC::ObjCCallbackFunction::create):
- API/glib/JSCCallbackFunction.cpp:
(JSC::JSCCallbackFunction::create):
- runtime/AggregateErrorConstructor.cpp:
(JSC::AggregateErrorConstructor::finishCreation):
- runtime/ArrayConstructor.cpp:
(JSC::ArrayConstructor::finishCreation):
- runtime/AsyncFunctionConstructor.cpp:
(JSC::AsyncFunctionConstructor::finishCreation):
- runtime/AsyncGeneratorFunctionConstructor.cpp:
(JSC::AsyncGeneratorFunctionConstructor::finishCreation):
- runtime/BigIntConstructor.cpp:
(JSC::BigIntConstructor::finishCreation):
- runtime/BooleanConstructor.cpp:
(JSC::BooleanConstructor::finishCreation):
- runtime/DateConstructor.cpp:
(JSC::DateConstructor::finishCreation):
- runtime/ErrorConstructor.cpp:
(JSC::ErrorConstructor::finishCreation):
- runtime/FinalizationRegistryConstructor.cpp:
(JSC::FinalizationRegistryConstructor::finishCreation):
- runtime/FunctionConstructor.cpp:
(JSC::FunctionConstructor::finishCreation):
- runtime/FunctionPrototype.cpp:
(JSC::FunctionPrototype::finishCreation):
- runtime/GeneratorFunctionConstructor.cpp:
(JSC::GeneratorFunctionConstructor::finishCreation):
- runtime/InternalFunction.cpp:
(JSC::InternalFunction::finishCreation):
(JSC::InternalFunction::createFunctionThatMasqueradesAsUndefined):
- runtime/InternalFunction.h:
- runtime/IntlCollatorConstructor.cpp:
(JSC::IntlCollatorConstructor::finishCreation):
- runtime/IntlDateTimeFormatConstructor.cpp:
(JSC::IntlDateTimeFormatConstructor::finishCreation):
- runtime/IntlDisplayNamesConstructor.cpp:
(JSC::IntlDisplayNamesConstructor::finishCreation):
- runtime/IntlLocaleConstructor.cpp:
(JSC::IntlLocaleConstructor::finishCreation):
- runtime/IntlNumberFormatConstructor.cpp:
(JSC::IntlNumberFormatConstructor::finishCreation):
- runtime/IntlPluralRulesConstructor.cpp:
(JSC::IntlPluralRulesConstructor::finishCreation):
- runtime/IntlRelativeTimeFormatConstructor.cpp:
(JSC::IntlRelativeTimeFormatConstructor::finishCreation):
- runtime/IntlSegmenterConstructor.cpp:
(JSC::IntlSegmenterConstructor::finishCreation):
- runtime/JSArrayBufferConstructor.cpp:
(JSC::JSGenericArrayBufferConstructor<sharingMode>::finishCreation):
- runtime/JSGenericTypedArrayViewConstructorInlines.h:
(JSC::JSGenericTypedArrayViewConstructor<ViewClass>::finishCreation):
- runtime/JSTypedArrayViewConstructor.cpp:
(JSC::JSTypedArrayViewConstructor::finishCreation):
- runtime/MapConstructor.cpp:
(JSC::MapConstructor::finishCreation):
- runtime/NativeErrorConstructor.cpp:
(JSC::NativeErrorConstructorBase::finishCreation):
- runtime/NullGetterFunction.h:
- runtime/NullSetterFunction.h:
- runtime/NumberConstructor.cpp:
(JSC::NumberConstructor::finishCreation):
- runtime/ObjectConstructor.cpp:
(JSC::ObjectConstructor::finishCreation):
- runtime/ProxyConstructor.cpp:
(JSC::ProxyConstructor::finishCreation):
- runtime/ProxyRevoke.cpp:
(JSC::ProxyRevoke::finishCreation):
- runtime/RegExpConstructor.cpp:
(JSC::RegExpConstructor::finishCreation):
- runtime/SetConstructor.cpp:
(JSC::SetConstructor::finishCreation):
- runtime/StringConstructor.cpp:
(JSC::StringConstructor::finishCreation):
- runtime/SymbolConstructor.cpp:
(JSC::SymbolConstructor::finishCreation):
- runtime/WeakMapConstructor.cpp:
(JSC::WeakMapConstructor::finishCreation):
- runtime/WeakObjectRefConstructor.cpp:
(JSC::WeakObjectRefConstructor::finishCreation):
- runtime/WeakSetConstructor.cpp:
(JSC::WeakSetConstructor::finishCreation):
- wasm/js/WebAssemblyCompileErrorConstructor.cpp:
(JSC::WebAssemblyCompileErrorConstructor::finishCreation):
- wasm/js/WebAssemblyGlobalConstructor.cpp:
(JSC::WebAssemblyGlobalConstructor::finishCreation):
- wasm/js/WebAssemblyInstanceConstructor.cpp:
(JSC::WebAssemblyInstanceConstructor::finishCreation):
- wasm/js/WebAssemblyLinkErrorConstructor.cpp:
(JSC::WebAssemblyLinkErrorConstructor::finishCreation):
- wasm/js/WebAssemblyMemoryConstructor.cpp:
(JSC::WebAssemblyMemoryConstructor::finishCreation):
- wasm/js/WebAssemblyModuleConstructor.cpp:
(JSC::WebAssemblyModuleConstructor::finishCreation):
- wasm/js/WebAssemblyRuntimeErrorConstructor.cpp:
(JSC::WebAssemblyRuntimeErrorConstructor::finishCreation):
- wasm/js/WebAssemblyTableConstructor.cpp:
(JSC::WebAssemblyTableConstructor::finishCreation):
Source/WebCore:
RuntimeMethod inherits from InternalFunction which now sets length by default.
RuntimeMethod intercepts length in getOwnPropertySlot so the value we pick
doesn't actually matter. Technically, this uses a little extra memory but
that's not too big of a deal because RuntimeMethod's are rare (and I believe
deprecated).
- bridge/runtime_method.cpp:
(JSC::RuntimeMethod::finishCreation):
Source/WebKit:
JSNPMethod inherits from InternalFunction which now sets length by default.
I chose 0 because it looks like this function doesn't directly look at any
arguments and I doubt anyone is looking at the length anyway.
- WebProcess/Plugins/Netscape/JSNPMethod.cpp:
(WebKit::JSNPMethod::finishCreation):
- 1:28 PM Changeset in webkit [267363] by
-
- 41 edits in trunk/Source
Next step towards eliminating deprecated legacy positions
https://bugs.webkit.org/show_bug.cgi?id=216751
Reviewed by Sam Weinig.
Source/WebCore:
Eliminating our old deprecated legacy editing positions is probably a relatively long
road. This next step starts using the makeContainerOffsetPosition function in more
places, requesting that we not use any of the deprecated legacy position logic. Also
renames createLegacyEditingPosition to makeDeprecatedLegacyPosition. The hard part of
this project will be removing code that is not inside Position that depends on the old
style of position/offset pairs. For this patch, tried to stick to converting cases
where it seems clear we don't depend on the legacy behavior. Flaw in that is that we
might still depend on legacy behavior where it's unconditionally implemented, without
checking the flag on the m_isLegacyEditingPosition Position class; that will be a
problem long term, should not be in this patch.
- dom/Position.h:
(WebCore::createLegacyEditingPosition): Deleted.
- accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::visiblePositionForTextMarkerData):
(WebCore::AXObjectCache::rangeMatchesTextNearRange):
(WebCore::AXObjectCache::visiblePositionFromCharacterOffset):
(WebCore::AXObjectCache::localCaretRectForCharacterOffset):
(WebCore::AXObjectCache::indexForCharacterOffset):
- accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::stringForRange const):
- accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::linkClickPoint):
(WebCore::AccessibilityRenderObject::setSelectedTextRange):
(WebCore::AccessibilityRenderObject::setSelectedVisiblePositionRange const):
- accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper arrayOfTextForTextMarkers:attributed:]):
- accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange:spellCheck:]):
- dom/Position.cpp:
(WebCore::Position::previous const):
(WebCore::Position::next const):
(WebCore::Position::downstream const):
- dom/PositionIterator.cpp:
(WebCore::PositionIterator::operator Position const):
- dom/Range.cpp:
(WebCore::Range::expand):
- editing/AlternativeTextController.cpp:
(WebCore::AlternativeTextController::applyAutocorrectionBeforeTypingIfAppropriate):
(WebCore::AlternativeTextController::processMarkersOnTextToBeReplacedByResult):
(WebCore::AlternativeTextController::applyAlternativeTextToRange):
- editing/ApplyStyleCommand.cpp:
(WebCore::ApplyStyleCommand::applyBlockStyle):
- editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::moveParagraphs):
- editing/DeleteSelectionCommand.cpp:
(WebCore::DeleteSelectionCommand::handleGeneralDelete):
- editing/Editing.cpp:
(WebCore::visiblePositionForIndex):
(WebCore::visiblePositionForIndexUsingCharacterIterator):
(WebCore::isNodeVisiblyContainedWithin):
- editing/Editor.cpp:
(WebCore::Editor::canDeleteRange const):
(WebCore::Editor::selectComposition):
(WebCore::Editor::advanceToNextMisspelling):
(WebCore::Editor::markAndReplaceFor):
(WebCore::Editor::firstRectForRange const):
(WebCore::extendSelection):
(WebCore::Editor::adjustedSelectionRange):
- editing/FrameSelection.cpp:
(WebCore::FrameSelection::elementRangeContainingCaretSelection const):
- editing/InsertListCommand.cpp:
(WebCore::InsertListCommand::doApplyForSingleParagraph):
- editing/RenderedPosition.cpp:
(WebCore::RenderedPosition::positionAtLeftBoundaryOfBiDiRun const):
(WebCore::RenderedPosition::positionAtRightBoundaryOfBiDiRun const):
- editing/TextCheckingHelper.cpp:
(WebCore::expandToParagraphBoundary):
(WebCore::TextCheckingParagraph::expandRangeToNextEnd):
(WebCore::TextCheckingHelper::findFirstMisspelledWordOrUngrammaticalPhrase const):
- editing/TextIterator.cpp:
(WebCore::resolveCharacterRange):
- editing/VisiblePosition.cpp:
(WebCore::VisiblePosition::leftVisuallyDistinctCandidate const):
(WebCore::VisiblePosition::rightVisuallyDistinctCandidate const):
- editing/VisibleSelection.cpp:
(WebCore::VisibleSelection::appendTrailingWhitespace):
- editing/VisibleUnits.cpp:
(WebCore::previousRootInlineBoxCandidatePosition):
(WebCore::nextRootInlineBoxCandidatePosition):
(WebCore::previousBoundary):
(WebCore::nextBoundary):
(WebCore::startOfDocument):
(WebCore::endOfDocument):
(WebCore::closestWordBoundaryForPosition):
(WebCore::wordBoundaryForPositionWithoutCrossingLine):
- editing/cocoa/HTMLConverter.mm:
(HTMLConverter::HTMLConverter):
- editing/ios/EditorIOS.mm:
(WebCore::Editor::setTextAsChildOfElement):
- editing/markup.cpp:
(WebCore::serializePreservingVisualAppearance):
(WebCore::contextPreservesNewline):
(WebCore::createFragmentFromText):
- page/DragController.cpp:
(WebCore::DragController::insertDroppedImagePlaceholdersAtCaret):
- page/Page.cpp:
(WebCore::Page::replaceRangesWithText):
- page/ios/FrameIOS.mm:
(WebCore::Frame::interpretationsForCurrentRoot const):
- platform/DragImage.cpp:
(WebCore::createDragImageForRange):
- rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::positionForBox const):
- rendering/RenderObject.cpp:
(WebCore::RenderObject::createVisiblePosition const):
(WebCore::RenderObject::collectSelectionRectsInternal):
- testing/Internals.cpp:
(WebCore::Internals::setSelectionWithoutValidation):
Replaced calls to createLegacyEditingPosition with calls to
makeDeprecatedLegacyPosition or makeContainerOffsetPosition.
Source/WebKit:
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::selectWithGesture):
(WebKit::WebPage::extendSelection):
(WebKit::WebPage::updateSelectionWithExtentPointAndBoundary):
(WebKit::WebPage::requestAutocorrectionData):
(WebKit::WebPage::applyAutocorrectionInternal):
(WebKit::focusedElementPositionInformation):
(WebKit::dataDetectorLinkPositionInformation):
(WebKit::WebPage::requestDocumentEditingContext):
Replaced calls to createLegacyEditingPosition with calls to
makeDeprecatedLegacyPosition or makeContainerOffsetPosition.
Source/WebKitLegacy/ios:
- WebCoreSupport/WebVisiblePosition.mm:
(-[DOMNode startPosition]):
(-[DOMNode endPosition]):
Replaced calls to createLegacyEditingPosition with calls to
makeDeprecatedLegacyPosition or makeContainerOffsetPosition.
Source/WebKitLegacy/mac:
- DOM/DOMUIKitExtensions.mm:
(-[DOMNode rangeOfContainingParagraph]):
- WebView/WebFrame.mm:
(-[WebFrame spaceFollowsWordInRange:]):
(-[WebFrame caretRectAtNode:offset:affinity:]):
(-[WebFrame focusedNodeHasContent]):
Replaced calls to createLegacyEditingPosition with calls to
makeDeprecatedLegacyPosition or makeContainerOffsetPosition.
- 1:23 PM Changeset in webkit [267362] by
-
- 6 edits in trunk
Selection API: A few more refinements to DOMSelection and VisibleSelection to pass all WPT tests
https://bugs.webkit.org/show_bug.cgi?id=216756
Reviewed by Ryosuke Niwa.
Source/WebCore:
After these changes, we pass all the tests in imported/w3c/web-platform-tests/selection
with no failures except for one due to the rules about absorbing newlines at the start
and end <style> and <script> elements.
However, that's with the live selection range feature enabled, and there are likely issues
with other tests in that mode, so that testing still needs to be done. Then we also have to
decide how we are going to deal with the compatibility risk of changing the behavior to
match the standard.
- editing/VisibleSelection.cpp:
(WebCore::VisibleSelection::VisibleSelection): Updated to rename m_baseIsFirst to
m_anchorIsFirst. Not required for the fix, but helpful for clarity.
(WebCore::VisibleSelection::uncanonicalizedStart const): Ditto.
(WebCore::VisibleSelection::uncanonicalizedEnd const): Ditto.
(WebCore::VisibleSelection::setBaseAndExtentToDeepEquivalents): Compute whether
the anchor is first *before* canonicalization, otherwise we will reverse the two
if their canonical values are equal. Canonicalization is not allowed to change
the ordering other than making two values equal.
(WebCore::VisibleSelection::validate): Updated for name.
(WebCore::VisibleSelection::setWithoutValidation): Ditto, also tweaked other names in the
function and removed an if statement.
(WebCore::VisibleSelection::adjustSelectionToAvoidCrossingShadowBoundaries): Ditto.
(WebCore::VisibleSelection::adjustSelectionToAvoidCrossingEditingBoundaries): Ditto.
- editing/VisibleSelection.h: Renamed m_baseIsFirst to m_anchorIsFirst and improved the
comment about m_isDirectional.
- page/DOMSelection.cpp:
(WebCore::DOMSelection::anchorPosition const): Removed use of parentAnchoredEquivalent.
The name makes it sound like it would be useful, but really it just triggers some
editing behaviors that don't belong in Position code.
(WebCore::DOMSelection::focusPosition const): Ditto.
(WebCore::DOMSelection::basePosition const): Ditto.
(WebCore::DOMSelection::extentPosition const): Ditto.
(WebCore::DOMSelection::collapse): Reversed the order of the document check and the
check for invalid nodes and offsets. There are some inconsistencies between the
specification and WPT but for now matching WPT seems like the way to go.
(WebCore::DOMSelection::setBaseAndExtent): Ditto.
(WebCore::DOMSelection::extend): Use VisibleSelection::setExtent, which does exactly
what we want, rather than FrameSelection::setExtent, which does not. In the future
we may want to cut down on the number of subtly-different selection functions,
like these two, but for now this fixes this DOM method to work as specified.
LayoutTests:
- editing/inserting/insert-list-in-table-cell-07-expected.txt: Updated results
for a slight change in where the insertion point ends up. This is neither a
progression nor a regression, but this is also a very strange edge case. It
would be better at some point to enhance the editing code so the selection stays
intact, which I think means that the entire table body would be selected, but
the current behavior, before this patch and after, yields an insertion point.
- 1:22 PM Changeset in webkit [267361] by
-
- 9 edits in trunk
Remove emphasis/de-emphasis filters from DynamicsCompressor
https://bugs.webkit.org/show_bug.cgi?id=216796
Reviewed by Darin Adler.
Source/WebCore:
Remove emphasis/de-emphasis filters from DynamicsCompressor as these have been removed
from the specification.
This is a merge of the following Blink change:
No new tests, rebaselined existing tests.
- platform/audio/DynamicsCompressor.cpp:
(WebCore::DynamicsCompressor::DynamicsCompressor):
(WebCore::DynamicsCompressor::process):
(WebCore::DynamicsCompressor::reset):
(WebCore::DynamicsCompressor::setNumberOfChannels):
- platform/audio/DynamicsCompressor.h:
- platform/audio/DynamicsCompressorKernel.cpp:
(WebCore::DynamicsCompressorKernel::process):
(WebCore::DynamicsCompressorKernel::tailTime const):
- platform/audio/DynamicsCompressorKernel.h:
LayoutTests:
Rebaseline tests that are now passing.
- webaudio/AudioParam/audioparam-processing-expected.txt:
- webaudio/DynamicsCompressor/dynamicscompressor-clear-internal-state-expected.txt:
- webaudio/DynamicsCompressor/dynamicscompressor-simple-expected.txt:
- 1:08 PM Changeset in webkit [267360] by
-
- 5 edits in trunk/Source/WebInspectorUI
Web Inspector: Timelines: remove "stop requested" marker
https://bugs.webkit.org/show_bug.cgi?id=216423
Patch by Patrick Angle <Patrick Angle> on 2020-09-21
Reviewed by Devin Rousso.
Removed the "Stop Requested" timeline marker, which was made unneccesary in r267038 which makes the recording
head marker stop at the moment the stop was requested, even if more time is required to complete the processing
of incoming data.
- UserInterface/Models/TimelineMarker.js:
- UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview):
(WI.TimelineOverview.prototype._recordingReset):
(WI.TimelineOverview.prototype._handleTimelineCapturingStateChanged):
- UserInterface/Views/TimelineRuler.css:
(.timeline-ruler > .markers > .marker.current-time::after):
(.timeline-ruler > .markers > .marker.stopping-time): Deleted.
(.timeline-ruler > .markers > .marker:matches(.stopping-time, .current-time)::after): Deleted.
(@media (prefers-color-scheme: dark) .timeline-ruler > .markers > .marker.stopping-time): Deleted.
- UserInterface/Views/TimelineRuler.js:
(WI.TimelineRuler.prototype.addMarker):
- 1:07 PM Changeset in webkit [267359] by
-
- 2 edits in trunk/Source/WebKit
Adjust the human readable names some GPU process internal feature flags
https://bugs.webkit.org/show_bug.cgi?id=216794
Reviewed by Darin Adler.
Change the human readable names so that all the GPU-process-specific internal features start are of the form
"Use GPU Process…".
- Shared/WebPreferencesInternal.yaml:
- 1:02 PM Changeset in webkit [267358] by
-
- 3 edits in trunk/Tools
Enable AddressSanitizer in C++ std library templates
<https://webkit.org/b/216746>
Reviewed by Darin Adler.
This change also prevents duplicate command-line switches from
being passed to clang since OTHER_CFLAGS is used when compiling
C++ sources.
- sanitizer/asan.xcconfig:
(WK_SANITIZER_OTHER_CPLUSPLUSFLAGS_YES): Add.
- Undefines _LIBCPP_HAS_NO_ASAN macro to enable ASan for C++ std library templates.
- sanitizer/sanitizer.xcconfig:
(WK_SANITIZER_OTHER_CPLUSPLUSFLAGS_YES): Add.
- Provide placeholder.
(OTHER_CPLUSPLUSFLAGS):
- Switch from WK_SANITIZER_OTHER_CFLAGS_ prefix to WK_SANITIZER_OTHER_CPLUSPLUSFLAGS_ prefix.
- 12:51 PM Changeset in webkit [267357] by
-
- 14 edits2 deletes in trunk
Vectorize linearRampToValueAtTime processing in AudioParamTimeline
https://bugs.webkit.org/show_bug.cgi?id=216788
Reviewed by Darin Adler.
LayoutTests/imported/w3c:
Rebaseline WPT tests now that more checks are passing.
- web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-linearRampToValueAtTime-expected.txt:
- web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner-expected.txt:
- web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime-expected.txt:
- web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation-expected.txt:
- web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv-expected.txt:
Source/WebCore:
Vectorize linearRampToValueAtTime processing in AudioParamTimeline. This patch is based on
the Blink implementation at [1] but updated to use VectorMath to work on more platforms.
We were failing some tests due to precision issues in our linearRampToValueAtTime implementation.
Those tests are now passing since our implementation matches Blink's more closely.
[1] https://github.com/chromium/chromium/blob/master/third_party/blink/renderer/modules/webaudio/audio_param_timeline.cc
No new tests, rebaselined existing tests.
- Modules/webaudio/AudioParamTimeline.cpp:
(WebCore::AudioParamTimeline::valuesForTimeRangeImpl):
(WebCore::AudioParamTimeline::processLinearRamp):
- Modules/webaudio/AudioParamTimeline.h:
LayoutTests:
- webaudio/AudioParam/audioparam-cancel-and-hold-expected.txt:
- webaudio/AudioParam/audioparam-negative-exponentialRamp-expected.txt:
- webaudio/AudioParam/audioparam-setTargetAtTime-continuous-expected.txt:
Rebaseline existing tests now that more checks are passing.
- webaudio/audioparam-linearRampToValueAtTime-expected.txt: Removed.
- webaudio/audioparam-linearRampToValueAtTime.html: Removed.
Drop outdated test. This test was imported into WPT and now resides at:
- imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-linearRampToValueAtTime.html
- 12:34 PM Changeset in webkit [267356] by
-
- 1 copy in releases/WPE WebKit/webkit-2.30.1
WPE WebKit 2.30.1
- 12:34 PM Changeset in webkit [267355] by
-
- 4 edits in releases/WebKitGTK/webkit-2.30
Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.30.1 release
.:
- Source/cmake/OptionsWPE.cmake: Bump version numbers.
Source/WebKit:
- wpe/NEWS: Add release notes for 2.30.1.
- 12:31 PM Changeset in webkit [267354] by
-
- 2 edits in trunk/LayoutTests/imported/w3c
Increase the maximum number of open files for wpt's servers
https://bugs.webkit.org/show_bug.cgi?id=215829
Patch by Sam Sneddon <Sam Sneddon> on 2020-09-21
Reviewed by Youenn Fablet.
macOS has a much lower limits than other OSes by default, and the iOS bots often run into it with their level of parallel test execution. This bumps the limit for each wptserve process up to 2048, which is double the limit on Debian, and should probably be safe.
- web-platform-tests/tools/serve/serve.py:
(ServerProc.create_daemon):
- 12:18 PM Changeset in webkit [267353] by
-
- 2 edits in trunk/Tools
Make ews-app robust against config.json issues (follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=216705
Unreviewed follow-up fix to change a log statement.
- BuildSlaveSupport/ews-app/ews/common/buildbot.py:
(Buildbot.update_icons_for_queues_mapping):
- 12:17 PM Changeset in webkit [267352] by
-
- 3 edits2 adds in trunk/Source/WebKit
WKWebView Swift overlay has mis-annotated nullability for evaluateJavaScript
<http://webkit.org/b/216198>
<rdar://problem/68035950>
Reviewed by Darin Adler.
Due to a mistranslation of evaluateJavaScript, we are vending an API which does not expect
to receive nil as a valid result value. This change fixes the crash, but does not yet fix
the API to have the correct signature. That will come in a later patch.
To fix the crash, we need to produce a valid Result<Any, Error> to pass back to clients.
Fortunately, instead of inventing something clever, we can just use nil. It's valid to box
optional values into Any, and clients can technically retrieve them with the right dynamic cast
as well. Since client code must be using dynamic casting to convert the result Any to a usable
type, and because in the case where we now return a new value at runtime we would have previously
crashed, this shouldn't have any binary compatibility impact either.
To better validate these changes, I also add new unit tests for the conversion of JavaScript
results into Swift values, including a test for the deprecated API.
- SwiftOverlay/SwiftOverlay/ObjectiveCBlockConversions.swift: Added. For clarity I'm factoring
helper methods into a single namespace, as it also makes a nice place to document their expectations.
(ObjectiveCBlockConversion.exclusive.exclusive(_:)): This is renamed from the free function,
makeResultHandler(_:). It still has the same fatalError (now precondition) as before, but
hopefully a better name to clarify that it expects exactly-one value.
(ObjectiveCBlockConversions.boxingNilAsAnyForCompatibility(_:)): This is a variant of exclusive(_:)
that makes the tradeoff of boxing any nil values as Any to avoid crashing. This is still safe,
since as mentioned our clients will need to cast the value they recieve to do anything with it,
and since the deprecated API expectsAny, no one could have been successfully comparing it
toniltoday anyways.
- SwiftOverlay/Tests/JavaScriptToSwiftTypeConversions.swift: Added.
(JavaScriptToSwiftConversions.setUp): Construct a new web view, and add it to a window so that it is
in an expected state. I'm using about:blank as the URL, since page content doesn't matter for
these tests and I want the web content to be ready immediately.
(JavaScriptToSwiftConversions.tearDown): Just perform some window cleanup.
(JavaScriptToSwiftConversions.evaluateJavaScript(_:andExpect:)): Helper method to evaluate script and
check its result. I'm using String.debugDescription because it escapes quotes and special characters
which makes the readout easier to parse.
(JavaScriptToSwiftConversions.testNull): JavaScript's null is actually mapped to NSNull, not nil.
(JavaScriptToSwiftConversions.testInteger): Some standard type coercion tests. The underlying value for
all number types should be NSNumber, so this is actually check against a float or integer type
without issue.
(JavaScriptToSwiftConversions.testDecimal): Ditto.
(JavaScriptToSwiftConversions.testBoolean): Ditto.
(JavaScriptToSwiftConversions.testString): Ditto.
(JavaScriptToSwiftConversions.testArray): Ditto.
(JavaScriptToSwiftConversions.testDictionary): Ditto, only you can't evaluate an object literal directly
so I need to store it in a temporary location first.
(JavaScriptToSwiftConversions.testUndefined): Test our boxing of nil. The exact value matters less than
not crashing at all.
- SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj: Added new files to project. I kept the
new test file and helper files within the SwiftOverlay group, because they do not contribute any API.
- UIProcess/API/Cocoa/WebKitSwiftOverlay.swift:
(WKWebView.callAsyncJavaScript(_:arguments:in:in:completionHandler:)): Switch to a conversion which does
not trap on nil.
(WKWebView.createPDF(_:completionHandler:)): Updated to use new helper method name.
(WKWebView.createWebArchiveData(_:)): Ditto.
(WKWebView.evaluateJavaScript(_:in:in:completionHandler:Error:)): See above.
(makeResultHandler(_:): This has been subsumed by ObjCBlockConversions.
- 12:00 PM Changeset in webkit [267351] by
-
- 3 edits in trunk/Tools
[GTK][WPE] WKTR has lost access to Pulseaudio
https://bugs.webkit.org/show_bug.cgi?id=216745
Patch by Philippe Normand <pnormand@igalia.com> on 2020-09-21
Reviewed by Carlos Garcia Campos.
Let Pulseaudio env vars pass through in the test environment, this is specially needed when
the test harness runs in the Flatpak sandbox.
- Scripts/webkitpy/port/gtk.py:
(GtkPort.setup_environ_for_server):
- Scripts/webkitpy/port/wpe.py:
(WPEPort.setup_environ_for_server):
- 11:58 AM Changeset in webkit [267350] by
-
- 3 edits in trunk/Tools
[GTK][WPE] Missing support for multi-word $WEBKIT_MINI_BROWSER_PREFIX
https://bugs.webkit.org/show_bug.cgi?id=216604
Patch by Philippe Normand <pnormand@igalia.com> on 2020-09-21
Reviewed by Adrian Perez de Castro.
Gracefully handle cases where the env var contains multiple words, by splitting its contents
to a list and inserting it at the beginning of the final minibrowser command.
- Scripts/webkitpy/port/gtk.py:
(GtkPort.run_minibrowser):
- Scripts/webkitpy/port/wpe.py:
(WPEPort.run_minibrowser):
- 11:56 AM Changeset in webkit [267349] by
-
- 6 edits in trunk
AnalyserNode's getByteFrequencyData() / getFloatFrequencyData() should only do FFT analysis once per render quantum
https://bugs.webkit.org/show_bug.cgi?id=216735
Reviewed by Darin Adler.
Source/WebCore:
AnalyserNode's getByteFrequencyData() / getFloatFrequencyData() should only do FFT analysis once per render quantum:
"""
If another call to getByteFrequencyData() or getFloatFrequencyData() occurs within the same render quantum as a
previous call, the current frequency data is not updated with the same data. Instead, the previously computed data
is returned.
"""
No new tests, rebaselined existing test.
- Modules/webaudio/RealtimeAnalyser.cpp:
(WebCore::RealtimeAnalyser::writeInput):
(WebCore::RealtimeAnalyser::doFFTAnalysisIfNecessary):
(WebCore::RealtimeAnalyser::getFloatFrequencyData):
(WebCore::RealtimeAnalyser::getByteFrequencyData):
- Modules/webaudio/RealtimeAnalyser.h:
LayoutTests:
Rebaseline webaudio tests now that more checks are passing.
- webaudio/Analyser/realtimeanalyser-freq-data-smoothing-expected.txt:
- webaudio/Analyser/realtimeanalyser-multiple-calls-expected.txt:
- 11:28 AM Changeset in webkit [267348] by
-
- 5 edits1 add in trunk
[JSC] Proxy should be trapped if base value is primitive
https://bugs.webkit.org/show_bug.cgi?id=216764
Reviewed by Darin Adler.
JSTests:
- stress/proxy-trap-in-primitive.js: Added.
(shouldBe):
- test262/expectations.yaml:
Source/JavaScriptCore:
While we have special care in JSObject::putInline etc., we missed it in JSValue::putToPrimitive.
So, if proxy exists in the prototype chain for the primitive values (e.g. StringPrototype -> Proxy chain),
we miss the Proxy trap. We should have ProxyObject special check in JSValue::putToPrimitive too.
- runtime/JSCJSValue.cpp:
(JSC::JSValue::putToPrimitive):
- 9:13 AM Changeset in webkit [267347] by
-
- 4 edits in trunk/Source/WebCore
Remove dedicated HashSet<Element*> for DocumentTimeline::runningAnimationsForElementAreAllAccelerated()
https://bugs.webkit.org/show_bug.cgi?id=216775
Reviewed by Antti Koivisto.
- animation/AnimationTimeline.h:
- animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::detachFromDocument):
(WebCore::DocumentTimeline::animationAcceleratedRunningStateDidChange):
(WebCore::DocumentTimeline::runningAnimationsForElementAreAllAccelerated const):
(WebCore::DocumentTimeline::animationWasAddedToElement): Deleted.
(WebCore::DocumentTimeline::animationWasRemovedFromElement): Deleted.
(WebCore::DocumentTimeline::updateListOfElementsWithRunningAcceleratedAnimationsForElement): Deleted.
- animation/DocumentTimeline.h:
- 8:34 AM Changeset in webkit [267346] by
-
- 5 edits in trunk
AnalyserNode should downmix input audio to mono
https://bugs.webkit.org/show_bug.cgi?id=216736
Reviewed by Sam Weinig.
Source/WebCore:
AnalyserNode should downmix input audio to mono:
This patch is based on the following Blink change:
No new tests, rebaselined existing test.
- Modules/webaudio/RealtimeAnalyser.cpp:
(WebCore::RealtimeAnalyser::RealtimeAnalyser):
(WebCore::RealtimeAnalyser::writeInput):
- Modules/webaudio/RealtimeAnalyser.h:
LayoutTests:
Rebaseline test now that more checks are passing.
- webaudio/Analyser/realtimeanalyser-downmix-expected.txt:
- 8:11 AM Changeset in webkit [267345] by
-
- 3 edits2 adds in trunk
REGRESSION (r257839): Can't add a memo when transferring funds in First Tech Credit Union App
https://bugs.webkit.org/show_bug.cgi?id=216754
<rdar://problem/67045862>
Reviewed by Antti Koivisto.
Source/WebCore:
After r257839, attempting to add a memo by tapping on a text box in the First Tech Credit Union app on iOS fails
to cause the text box (atextareaelement) to be focused. This is because thetextareais initially hidden
away in adisplay: none;parent container, which becomesdisplay: block;immediately beforefocus()is
called from the page's script.
Augment the mechanism added in r266887, so that we avoid consulting stale computed styles when checking for
hidden ancestors inElement::isVisibleWithoutResolvingFullStyle(). To do this, we pull logic to get or compute
theRenderStylefor the current element or one of its composed ancestors (which respects
IsComputedStyleInvalidFlag) into a lambda function, and use this lambda function below, when we walk up the
ancestor chain in search of a hidden element.
Note that in Speedometer 2.0, this change does not have any significant impact on the number of partial (i.e.
RenderedOnly) style resolutions we attempt to perform underneathElement::resolveComputedStyle(a little
over 3000 before and after this change).
Test: fast/forms/programmatic-focus-after-displaying-parent.html
- dom/Element.cpp:
(WebCore::Element::isVisibleWithoutResolvingFullStyle const):
LayoutTests:
Add a new layout test to exercise the bug by programmatically focusing a textarea element that was just shown by
settingdisplay: block;on a parent container that was previouslydisplay: none;.
- fast/forms/programmatic-focus-after-displaying-parent-expected.txt: Added.
- fast/forms/programmatic-focus-after-displaying-parent.html: Added.
- 7:57 AM Changeset in webkit [267344] by
-
- 6 edits in trunk
Allow about:blank subframe loads for non app-bound top frames
https://bugs.webkit.org/show_bug.cgi?id=216715
<rdar://problem/69070720>
Reviewed by Darin Adler.
Source/WebKit:
In the original implementation of App Bound Domains, any loads using
certain protocols like about: were automatically considered app-bound.
When a subframe loads about:blank for example, this forces web views
into app-bound mode even if the top frame is not app-bound, which
should not be the case.
These special protocols inherit security origins from their top-frame
loads, so we can refer to those to determine whether subframe loads
should be considered app-bound. For about: loads in a main frame there
is no behavior change and WKWebViews will still automatically be considered
app-bound in this case.
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setIsNavigatingToAppBoundDomainAndCheckIfPermitted):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
Refer to the security origin if the subframe load is one of the
special protocols caught by the shouldTreatURLProtocolAsAppBound() function.
- UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::schemeOrDomainIsAppBound):
(WebKit::WebsiteDataStore::beginAppBoundDomainCheck):
- UIProcess/WebsiteData/WebsiteDataStore.h:
Tools:
Two new tests for about:blank loaded under an app-bound domain and
non-app bound domain respectively. Tests that the subframe load
has the same app-bound status as the parent frame by testing script
injection powers.
- TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:
Fixed two test names that didn't make sense.
(-[InAppBrowserSchemeHandler webView:startURLSchemeTask:]):
(TEST):
- 6:49 AM Changeset in webkit [267343] by
-
- 6 edits in trunk/Source/WebCore
[LFC][BFC] Move hasClearance out of BoxGeometry
https://bugs.webkit.org/show_bug.cgi?id=216757
Reviewed by Antti Koivisto.
Do not cache the hasClearance state in BoxGeometry.
- layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear):
(WebCore::Layout::BlockFormattingContext::verticalPositionWithMargin const):
- layout/blockformatting/BlockFormattingState.h:
(WebCore::Layout::BlockFormattingState::setHasClearance):
(WebCore::Layout::BlockFormattingState::clearClearance):
(WebCore::Layout::BlockFormattingState::hasClearance const):
- layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::hasClearance const):
- layout/layouttree/LayoutBoxGeometry.cpp:
(WebCore::Layout::BoxGeometry::BoxGeometry):
- layout/layouttree/LayoutBoxGeometry.h:
(WebCore::Layout::BoxGeometry::hasClearance const): Deleted.
(WebCore::Layout::BoxGeometry::setHasClearance): Deleted.
- 6:34 AM Changeset in webkit [267342] by
-
- 3 edits in trunk/Source/WebCore
[LFC] Remove unused EscapeReason::StrokeOverflowNeedsViewportGeometry
https://bugs.webkit.org/show_bug.cgi?id=216759
Reviewed by Antti Koivisto.
This escape reason was used to read ICB geometry to compute ink overflow (prior to r267325).
- layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::geometryForBox const):
- layout/FormattingContext.h:
- 6:32 AM Changeset in webkit [267341] by
-
- 2 edits in trunk/Source/WebCore
[LFC][MarginCollapse] The block level box passed in to MarginCollapse::positiveNegativeValues is in the current formatting context
https://bugs.webkit.org/show_bug.cgi?id=216758
Reviewed by Antti Koivisto.
Let's use the current formatting state when grabbing vertical margin values.
- layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues const):
- 6:27 AM Changeset in webkit [267340] by
-
- 2 edits in trunk/LayoutTests
[GTK] media/media-can-play-mp3.html is failing since added in r267210
https://bugs.webkit.org/show_bug.cgi?id=216765
Unreviewed, unflag now-passing test, since r267335.
- platform/gtk/TestExpectations: Unflag now-passing test.
- 3:42 AM Changeset in webkit [267339] by
-
- 3 edits in trunk/LayoutTests
[GLIB] Unreviewed test gardening. Adjust test expectations of several tests failing.
- platform/glib/TestExpectations:
- platform/gtk/TestExpectations:
- 2:49 AM Changeset in webkit [267338] by
-
- 3 edits in trunk/LayoutTests
[GLIB] Unreviewed test gardening. Gardened several failures of new tests added.
- platform/glib/TestExpectations:
- platform/gtk/TestExpectations:
- 2:43 AM Changeset in webkit [267337] by
-
- 1 copy in releases/WebKitGTK/webkit-2.30.1
WebKitGTK 2.30.1
- 2:42 AM Changeset in webkit [267336] by
-
- 4 edits in releases/WebKitGTK/webkit-2.30
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.30.1 release
.:
- Source/cmake/OptionsGTK.cmake: Bump version numbers.
Source/WebKit:
- gtk/NEWS: Add release notes for 2.30.1.
- 1:42 AM WebKitGTK/2.30.x edited by
- (diff)
- 1:26 AM Changeset in webkit [267335] by
-
- 2 edits in trunk/Source/WebCore
[GStreamer] media/media-can-play-mp3.html fails
https://bugs.webkit.org/show_bug.cgi?id=216692
Patch by Philippe Normand <pnormand@igalia.com> on 2020-09-21
Reviewed by Darin Adler.
Add mp3 to supported codecs map when a valid decoder has been
found by the GStreamer registry scanner.
- platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:
(WebCore::GStreamerRegistryScanner::initialize):
- 12:42 AM Changeset in webkit [267334] by
-
- 1 edit3 adds in trunk/LayoutTests
[GLIB] Unreviewed test gardening. Emit new baselines for WebAudio tests after r267307.
The results are slightly different in GLIB ports.
- platform/glib/webaudio/BiquadFilter/tail-time-lowpass-expected.txt: Added.
- platform/glib/webaudio/BiquadFilter/tail-time-peaking-expected.txt: Added.
Sep 20, 2020:
- 4:07 PM Changeset in webkit [267333] by
-
- 6 edits in trunk
Performance.navigation and Performance.timing are incorrectly exposed to workers
https://bugs.webkit.org/show_bug.cgi?id=216732
Reviewed by Simon Fraser.
LayoutTests/imported/w3c:
- web-platform-tests/workers/worker-performance.worker-expected.txt:
Update results now that Performance.navigation and Performance.timing are no longer
exposed to workers.
Source/WebCore:
- page/Performance.idl:
Only expose Performance.navigation and Performance.timing to the Window.
LayoutTests:
Remove flaky annotation for imported/w3c/web-platform-tests/workers/worker-performance.worker.html. The
test was fixed in upstream WPT as dab9c45, and has since been updated in the WebKit tree as well.
It now also passes.
- 3:58 PM Changeset in webkit [267332] by
-
- 193 edits947 adds43 deletes in trunk/JSTests
Test262 update
https://bugs.webkit.org/show_bug.cgi?id=216753
Reviewed by Darin Adler.
- 3:26 PM Changeset in webkit [267331] by
-
- 7 edits3 adds in trunk/Source/WebCore
Using [Exposed=Window] with [Default] object toJSON() doesn't work
https://bugs.webkit.org/show_bug.cgi?id=216731
Reviewed by Simon Fraser.
Fixes filtering an attribute out of [Default] toJSON operation based
on which which global objects it is exposed to by ensuring we always
pass a global object pointer accessor function to
GenerateRuntimeEnableConditionalStringForExposed. For good measure,
we now always pass the global object object pointer to
GenerateRuntimeEnableConditionalString as well so that it is always
explicit.
This is needed to support filtering out Performance.navigation and
Performance.timing from the Performance interface's toJSON implementation
which will be addressed in a separate change.
- bindings/scripts/CodeGeneratorJS.pm:
(GenerateRuntimeEnableConditionalStringForExposed):
(GenerateRuntimeEnableConditionalString):
Remove implicit global object accessor string construction by always
requiring it to be passed.
- bindings/scripts/test/DOMWindowConstructors.idl:
- bindings/scripts/test/JS/JSDOMWindow.cpp:
- bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.cpp: Added.
- bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.h: Added.
- bindings/scripts/test/JS/JSWorkerGlobalScope.cpp:
- bindings/scripts/test/SupplementalDependencies.dep:
- bindings/scripts/test/TestDefaultToJSONFilteredByExposed.idl: Added.
- bindings/scripts/test/WorkerGlobalScopeConstructors.idl:
Add new test for updated behavior. I couldn't add it to the existing
TestDefaultToJSON.idl test as that test requires the interface only be exposed
to Window to support testing EnabledBySetting.
- 1:44 PM Changeset in webkit [267330] by
-
- 179 edits1 delete in trunk
[JSC] Drop Options::useBigInt
https://bugs.webkit.org/show_bug.cgi?id=216743
Reviewed by Darin Adler.
JSTests:
- bigIntTests.yaml: Removed.
- stress/big-int-add-wrapped-value.js:
- stress/big-int-addition-basic.js:
- stress/big-int-addition-jit.js:
- stress/big-int-addition-memory-stress.js:
- stress/big-int-addition-string-coercion.js:
- stress/big-int-addition-to-primitive-precedence.js:
- stress/big-int-addition-to-primitive.js:
- stress/big-int-addition-type-error.js:
- stress/big-int-arithmetic-return-big-int.js:
- stress/big-int-as-key.js:
- stress/big-int-as-property-name.js:
- stress/big-int-bit-not-general.js:
- stress/big-int-bitwise-and-general.js:
- stress/big-int-bitwise-and-jit.js:
- stress/big-int-bitwise-and-memory-stress.js:
- stress/big-int-bitwise-and-to-primitive-precedence.js:
- stress/big-int-bitwise-and-type-error.js:
- stress/big-int-bitwise-and-wrapped-value.js:
- stress/big-int-bitwise-not-jit.js:
- stress/big-int-bitwise-not-wrapped-value.js:
- stress/big-int-bitwise-or-general.js:
- stress/big-int-bitwise-or-jit-untyped.js:
- stress/big-int-bitwise-or-jit.js:
- stress/big-int-bitwise-or-memory-stress.js:
- stress/big-int-bitwise-or-to-primitive-precedence.js:
- stress/big-int-bitwise-or-type-error.js:
- stress/big-int-bitwise-or-wrapped-value.js:
- stress/big-int-bitwise-xor-general.js:
- stress/big-int-bitwise-xor-jit.js:
- stress/big-int-bitwise-xor-memory-stress.js:
- stress/big-int-bitwise-xor-to-primitive-precedence.js:
- stress/big-int-bitwise-xor-type-error.js:
- stress/big-int-bitwise-xor-untyped.js:
- stress/big-int-bitwise-xor-wrapped-value.js:
- stress/big-int-boolean-proven-type.js:
- stress/big-int-branch-usage.js:
- stress/big-int-constructor-gc.js:
- stress/big-int-constructor-oom.js:
- stress/big-int-constructor-properties.js:
- stress/big-int-constructor-prototype-prop-descriptor.js:
- stress/big-int-constructor-prototype.js:
- stress/big-int-constructor.js:
- stress/big-int-div-jit-osr.js:
- stress/big-int-div-jit-untyped.js:
- stress/big-int-div-jit.js:
- stress/big-int-div-memory-stress.js:
- stress/big-int-div-to-primitive.js:
- stress/big-int-div-type-error.js:
- stress/big-int-div-wrapped-value.js:
- stress/big-int-division.js:
- stress/big-int-equals-basic.js:
- stress/big-int-equals-to-primitive-precedence.js:
- stress/big-int-equals-wrapped-value.js:
- stress/big-int-exp-basic.js:
- stress/big-int-exp-jit-osr.js:
- stress/big-int-exp-jit-untyped.js:
- stress/big-int-exp-jit.js:
- stress/big-int-exp-negative-exponent.js:
- stress/big-int-exp-to-primitive.js:
- stress/big-int-exp-type-error.js:
- stress/big-int-exp-wrapped-value.js:
- stress/big-int-function-apply.js:
- stress/big-int-greater-than-general.js:
- stress/big-int-greater-than-jit.js:
- stress/big-int-greater-than-or-equal-jit.js:
- stress/big-int-greater-than-or-equal-order-of-evaluation.js:
- stress/big-int-greater-than-or-equal-wrapped-values.js:
- stress/big-int-greater-than-or-equal.js:
- stress/big-int-greater-than-order-of-evaluation.js:
- stress/big-int-greater-than-wrapped-values.js:
- stress/big-int-json-stringify-to-json.js:
- stress/big-int-json-stringify.js:
- stress/big-int-left-shift-general.js:
- stress/big-int-left-shift-range-error.js:
- stress/big-int-left-shift-type-error.js:
- stress/big-int-left-shift-untyped.js:
- stress/big-int-left-shift-wrapped-value.js:
- stress/big-int-length.js:
- stress/big-int-less-than-general.js:
- stress/big-int-less-than-jit.js:
- stress/big-int-less-than-or-equal-general.js:
- stress/big-int-less-than-or-equal-jit.js:
- stress/big-int-less-than-or-equal-order-of-evaluation.js:
- stress/big-int-less-than-or-equal-wrapped-values.js:
- stress/big-int-less-than-order-of-evaluation.js:
- stress/big-int-less-than-wrapped-values.js:
- stress/big-int-literal-inside-literal-object.js:
- stress/big-int-literal-line-terminator.js:
- stress/big-int-literals.js:
- stress/big-int-logical-and.js:
- stress/big-int-logical-not.js:
- stress/big-int-logical-or.js:
- stress/big-int-mod-jit.js:
- stress/big-int-mod-memory-stress.js:
- stress/big-int-mod-osr.js:
- stress/big-int-mod-to-primitive-precedence.js:
- stress/big-int-mod-to-primitive.js:
- stress/big-int-mod-type-error.js:
- stress/big-int-mod-wrapped-value.js:
- stress/big-int-mod.js:
- stress/big-int-mul-jit-osr.js:
- stress/big-int-mul-jit-untyped.js:
- stress/big-int-mul-jit.js:
- stress/big-int-mul-to-primitive-precedence.js:
- stress/big-int-mul-to-primitive.js:
- stress/big-int-mul-type-error.js:
- stress/big-int-mul-wrapped-value.js:
- stress/big-int-multiplication.js:
- stress/big-int-multiply-memory-stress.js:
- stress/big-int-negate-basic.js:
- stress/big-int-no-conversion-to-number.js:
- stress/big-int-operations-error.js:
- stress/big-int-out-of-memory-tests.js:
- stress/big-int-prop-descriptor.js:
- stress/big-int-proto-constructor.js:
- stress/big-int-proto-name.js:
- stress/big-int-prototype-properties.js:
- stress/big-int-prototype-proto.js:
- stress/big-int-prototype-symbol-to-string-tag.js:
- stress/big-int-prototype-to-string-apply.js:
- stress/big-int-prototype-to-string-cast-overflow.js:
- stress/big-int-prototype-to-string-exception.js:
- stress/big-int-prototype-to-string-wrong-values.js:
- stress/big-int-prototype-value-of.js:
- stress/big-int-right-shift-general.js:
- stress/big-int-right-shift-jit-osr.js:
- stress/big-int-right-shift-jit-untyped.js:
- stress/big-int-right-shift-jit.js:
- stress/big-int-right-shift-type-error.js:
- stress/big-int-right-shift-wrapped-value.js:
- stress/big-int-spec-to-primitive.js:
- stress/big-int-spec-to-this.js:
- stress/big-int-strict-equals-jit.js:
- stress/big-int-strict-spec-to-this.js:
- stress/big-int-sub-wrapped-value.js:
- stress/big-int-subtraction-basic.js:
- stress/big-int-subtraction-jit.js:
- stress/big-int-subtraction-type-error.js:
- stress/big-int-to-object.js:
- stress/big-int-to-string.js:
- stress/big-int-type-of-proven-type-non-constant-including-symbol.js:
- stress/big-int-type-of-proven-type-non-constant.js:
- stress/big-int-type-of-proven-type.js:
- stress/big-int-type-of.js:
- stress/big-int-unary-plus.js:
- stress/big-int-value-op-update-gc-rules.js:
- stress/big-int-white-space-trailing-leading.js:
- stress/bigint-toLocaleString.js:
- stress/bitwise-not-fixup-rules.js:
- stress/delete-property-inline-cache.js:
- stress/inc-osr-exit-from-big-int.js:
- stress/inc-osr-exit-to-big-int.js:
- stress/left-shift-to-primitive-precedence.js:
- stress/numeric-literal-separators.js:
- stress/object-create-non-object-properties-parameter.js:
- stress/proxy-call-apply-handler-to-this.js:
- stress/right-shift-to-primitive-precedence.js:
- stress/value-add-big-int-and-string.js:
- stress/value-add-big-int-prediction-propagation.js:
- stress/value-add-big-int-untyped.js:
- stress/value-bit-and-ai-rule.js:
- stress/value-bit-lshift-ai-rule.js:
- stress/value-bit-not-ai-rule.js:
- stress/value-bit-or-ai-rule.js:
- stress/value-bit-xor-ai-rule.js:
- stress/value-div-fixup-int32-big-int.js:
- stress/value-mul-fixup-int32-big-int.js:
- stress/value-sub-big-int-prediction-propagation.js:
- stress/value-sub-big-int-untyped.js:
- test262/config.yaml:
Source/JavaScriptCore:
Now BigInt is shipped. Let's just remove Options::useBigInt.
- bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitEqualityOpImpl):
- parser/Lexer.cpp:
(JSC::Lexer<T>::parseHex):
(JSC::Lexer<T>::parseBinary):
(JSC::Lexer<T>::parseOctal):
(JSC::Lexer<T>::parseDecimal):
- runtime/JSGlobalObject.h:
- runtime/OptionsList.h:
Tools:
- Scripts/run-jsc-benchmarks:
- Scripts/run-jsc-stress-tests:
- 12:37 PM Changeset in webkit [267329] by
-
- 8 edits in trunk
Selection API: Further improvements to VisibleSelection, FrameSelection, and DOMSelection to preserve anchor and focus
https://bugs.webkit.org/show_bug.cgi?id=216739
Reviewed by Ryosuke Niwa.
Source/WebCore:
If done correctly, these changes should have almost no effect unless live range selection
is enabled. This adds a feature where VisibleSelection tracks the original points,
before the VisiblePosition-style canonicalization. It also starts a transition from
the base/extent terminology to the slightly-easier-to-understand anchor/focus terminology
that is used in the selection specification. New functions name them anchor and focus,
even though we still have some old ones that call them base and extent. In addition,
made some other small related improvements to live range selection mode, without changing
behavior when not in that mode. Have been testing these locally by turning on that mode
and running various tests.
- editing/FrameSelection.cpp:
(WebCore::FrameSelection::isInDocumentTree const): Added. Used by DOMSelection to
correctly handle cases where the selection is in a shadow tree without requiring it
actually create the associated live range just to query.
(WebCore::FrameSelection::associatedLiveRange): Use the new VisibleSelection::range,
which gives us non-canonicalized points, rather than the deprecated
VisibleSelection::firstRange, which we will eventually be renaming or deleting.
(WebCore::FrameSelection::updateFromAssociatedLiveRange): Use
makeContainerOffsetPosition instead of implicitly using makeDeprecatedLegacyPosition.
Also removed the FIXME about normalization of endpoints, which is what this patch
mostly addresses; no need to track with a comment now.
(WebCore::FrameSelection::updateAssociatedLiveRange): Use VisibleSelection::range
for the same reason as above.
- editing/FrameSelection.h: Added isInDocumentTree.
- editing/VisibleSelection.cpp:
(WebCore::VisibleSelection::VisibleSelection): Updated the primary constructor to set
m_anchor/focus and let the validate function set m_base/extent/start/end/baseIsFirst.
Changed most other constructors to call that primary one.
(WebCore::VisibleSelection::anchor const): Added. This is a non-canonicalized position.
(WebCore::VisibleSelection::focus const): Ditto.
(WebCore::VisibleSelection::uncanonicalizedStart const): Added. This non-canonicalized
version of start is used by new DOMSelection code, but eventually should be used
elsewhere as well, and we may eventually eliminate the canonicalized version.
(WebCore::VisibleSelection::uncanonicalizedEnd const): Ditto.
(WebCore::VisibleSelection::range const): Added. This non-canonicalized version of
firstRange has many of the same considerations as the other four functions above.
(WebCore::VisibleSelection::setBase): Set m_anchor instead of m_base. Eventually we
will want to rename this function, too, but there is no need to do that now.
(WebCore::VisibleSelection::setExtent): Ditto.
(WebCore::VisibleSelection::setBaseAndExtentToDeepEquivalents): Rewrote to take
m_anchor and m_focus as inputs and now m_base and m_extent are pure outputs.
May want to rename this later, because "deep equivalents" is a funny way to say
that this function sets base and extent to canonicalized values.
(WebCore::VisibleSelection::adjustSelectionRespectingGranularity): Renamed from
setStartAndEndFromBaseAndExtentRespectingGranularity. This now takes m_start/end
as input as well as output, because the validate function needs to check
if the function changes m_start/end so it can update m_anchor/focus. Also did a tiny
bit of refactoring to use std::swap.
(WebCore::VisibleSelection::validate): Refined the code to handle canonicalization
differently from expanding due to granularity. Canonicalization is done preserving
the original m_anchor/focus as it mostly always has been. But expansion due to
granularity now changes m_anchor/focus/base/extent rather than just m_start/end.
This makes sense because granularity changes actually affect what is selected,
while canonicalization just changes how the selection is expressed and tracked.
(WebCore::VisibleSelection::setWithoutValidation): Set m_anchor/focus. In the future,
we can probably get rid of this eventually, because the "validation" talked about
here is the unwanted canonicalization. But that's a refinement for the future.
(WebCore::VisibleSelection::adjustSelectionToAvoidCrossingShadowBoundaries):
Update m_focus, not just m_extent, if we have to adjust. Also removed an unnnecessary
null check from the start of the function.
(WebCore::VisibleSelection::adjustSelectionToAvoidCrossingEditingBoundaries): Ditto.
Also removed the assertions because these situations can indeed arise and it's not
necessarily an indication of a bug in editing code.
- editing/VisibleSelection.h: Rearranged constructors to make it slightly more clear
which is the main one and that the others are simply convenience shorthands. Might
want to come back later and remove some unused ones. Added uncanonicalizedStart,
uncanonicalizedEnd, anchor, focus, and range. Renamed the private function called
setStartAndEndFromBaseAndExtentRespectingGranularity to the new name
adjustSelectionRespectingGranularity. Added m_anchor and m_focus and refined the
comments about the position data members. We should eventually be able to cut down
on the number of these again, but it's fine to have two more for now.
- page/DOMSelection.cpp:
(WebCore::DOMSelection::range const): Use range rather than firstRange when live
range selection is enabled, for proper round-tripping of selection endpoints,
unaffected by canonicalization. The other changes below are for the same reason.
(WebCore::DOMSelection::anchorPosition const): Use anchor.
(WebCore::DOMSelection::focusPosition const): Use focus.
(WebCore::DOMSelection::basePosition const): Use anchor.
(WebCore::DOMSelection::extentPosition const): Use focus.
(WebCore::DOMSelection::type const): Use isInDocumentTree and range rather than
isNone/isCaret/isRange when live range selection is enabled, because this needs
to report "Caret" when the range is not collapsed, even if the canonicalized
range is collapsed and "None" when the selection is in a shadow tree.
(WebCore::DOMSelection::rangeCount const): Use isInDocumentTree to check if
there is a selection rather than isNone to correctly handle the shadow tree case.
(WebCore::DOMSelection::collapseToEnd): Use uncanonicalizedEnd.
(WebCore::DOMSelection::collapseToStart): Use uncanonicalizedStart.
(WebCore::DOMSelection::containsNode const): Updated the comment for clarity.
LayoutTests:
- editing/execCommand/insert-list-nested-with-orphaned-expected.txt: This test
result reflected incorrrect behavior where the selection changed from a range
to a caret in a certain unusual case. The new behavior of leaving the text
selected is consistent with how the command works in normal cases, and was an
accidental progression from the improvements to the selection code. Was able
to reproduce this all in Safari and after experimenting with different
selections, it's clear this is an improvement.
- 12:21 PM Changeset in webkit [267328] by
-
- 7 edits4 copies1 add1 delete in trunk/Source/WebCore
[LFC Display] Move LFC Display infrastructure files into a new 'display' directory
https://bugs.webkit.org/show_bug.cgi?id=216747
Reviewed by Zalan Bujtas.
WebCore/Source/display will become the home for all the LFC painting code; move
DisplayView and DisplayLayerController into it.
Also fix some unified build include issues.
- CMakeLists.txt:
- Headers.cmake:
- Sources.txt:
- WebCore.xcodeproj/project.pbxproj:
- display/DisplayLayerController.cpp: Renamed from Source/WebCore/layout/display/DisplayLayerController.cpp.
- display/DisplayLayerController.h: Renamed from Source/WebCore/layout/display/DisplayLayerController.h.
- display/DisplayView.cpp: Renamed from Source/WebCore/layout/display/DisplayView.cpp.
- display/DisplayView.h: Renamed from Source/WebCore/layout/display/DisplayView.h.
- layout/flexformatting/FlexFormattingContext.cpp:
- layout/inlineformatting/InlineLineBox.cpp:
- 11:10 AM Changeset in webkit [267327] by
-
- 4 edits in trunk/Source/WebCore
Selection API: Fix selectAllChilden to return InvalidNodeTypeError when passed a DocumentType node
https://bugs.webkit.org/show_bug.cgi?id=216741
Reviewed by Ryosuke Niwa.
This is covered by tests, but the fix itself is only testable when live range
selection is enabled. So for now the other tests are simply checking that no
regression or behavior change was introduced by accident.
- page/DOMSelection.cpp:
(WebCore::DOMSelection::selectAllChildren): Return the value returned by
setBaseAndExtent so we don't discard any exception it might throw. In
practice, that's only this one.
- page/DOMSelection.h: Updated return type so we can throw an exception.
- page/DOMSelection.idl: Added MayThrowException.
- 10:51 AM Changeset in webkit [267326] by
-
- 2 edits in trunk/Source/WebKit
Sort the project file.
- WebKit.xcodeproj/project.pbxproj:
- 8:01 AM Changeset in webkit [267325] by
-
- 19 edits1 add in trunk
[LFC][IFC] InlineFormattingState should not store display lines and runs
https://bugs.webkit.org/show_bug.cgi?id=216742
Reviewed by Antti Koivisto.
Source/WebCore:
In this patch,
- Display related structures are completely moved out from Layout namespace
- InlineFormattingContext does not generate display structures.
- InlineFormattingState only stores layout data.
- Layout tree verification works on layout geometry.
- Layout structures do not embed Display types.
- LayoutIntegration creates and maintains the required Display structures for painting and hittesting.
- Display::Run does not use Layout types (InlineLayoutRect, InlineLayoutUnit).
FIXME: We need to start constructing display content for the Display::Painter.
- WebCore.xcodeproj/project.pbxproj:
- layout/Verification.cpp:
(WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
(WebCore::Layout::checkForMatchingNonTextRuns):
(WebCore::Layout::checkForMatchingTextRuns):
(WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
(WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree):
- layout/displaytree/DisplayInlineContent.h:
(WebCore::Display::InlineContent::shrinkToFit):
- layout/displaytree/DisplayLine.h:
(WebCore::Display::Line::horizontalAlignmentOffset const):
(WebCore::Display::Line::Line):
- layout/displaytree/DisplayPainter.cpp:
(WebCore::Display::paintInlineContent):
- layout/displaytree/DisplayRun.h:
(WebCore::Display::Run::TextContent::start const):
(WebCore::Display::Run::TextContent::end const):
(WebCore::Display::Run::TextContent::length const):
(WebCore::Display::Run::TextContent::content const):
(WebCore::Display::Run::TextContent::needsHyphen const):
(WebCore::Display::Run::rect const):
(WebCore::Display::Run::inkOverflow const):
(WebCore::Display::Run::Run):
(WebCore::Display::Run::TextContent::TextContent):
(WebCore::Display::Run::TextContent::setNeedsHyphen): Deleted.
(WebCore::Display::Run::TextContent::expand): Deleted.
(WebCore::Display::Run::TextContent::shrink): Deleted.
(WebCore::Display::Run::topLeft const): Deleted.
(WebCore::Display::Run::left const): Deleted.
(WebCore::Display::Run::right const): Deleted.
(WebCore::Display::Run::top const): Deleted.
(WebCore::Display::Run::bottom const): Deleted.
(WebCore::Display::Run::width const): Deleted.
(WebCore::Display::Run::height const): Deleted.
(WebCore::Display::Run::moveVertically): Deleted.
- layout/flexformatting/FlexFormattingContext.cpp:
(WebCore::Layout::FlexFormattingContext::sizeAndPlaceFlexItems):
- layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):
- layout/inlineformatting/InlineFormattingState.h:
(WebCore::Layout::InlineFormattingState::lineRuns const):
(WebCore::Layout::InlineFormattingState::lineRuns):
(WebCore::Layout::InlineFormattingState::addLineRun):
(WebCore::Layout::InlineFormattingState::clearLineAndRuns):
(WebCore::Layout::InlineFormattingState::shrinkToFit):
(WebCore::Layout::InlineFormattingState::displayInlineContent const): Deleted.
(WebCore::Layout::InlineFormattingState::ensureDisplayInlineContent): Deleted.
(WebCore::Layout::InlineFormattingState::shrinkDisplayInlineContent): Deleted.
- layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Run::textContent const):
(WebCore::Layout::Line::Run::expansion const):
- layout/inlineformatting/InlineLineGeometry.h:
(WebCore::Layout::InlineLineGeometry::horizontalAlignmentOffset const):
(WebCore::Layout::InlineLineGeometry::InlineLineGeometry):
- layout/integration/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::layout):
(WebCore::LayoutIntegration::LineLayout::constructDisplayContent):
(WebCore::LayoutIntegration::LineLayout::ensureDisplayInlineContent):
(WebCore::LayoutIntegration::LineLayout::paint):
(WebCore::LayoutIntegration::LineLayout::displayInlineContent const): Deleted.
- layout/integration/LayoutIntegrationLineLayout.h:
(WebCore::LayoutIntegration::LineLayout::displayInlineContent const):
- layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::outputInlineRuns):
- layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::setUsedGeometryForCells):
- rendering/line/LineLayoutTraversalDisplayRunPath.h:
(WebCore::LineLayoutTraversal::DisplayRunPath::rect const):
LayoutTests:
This directory is about verifying layout correctness
by calling LayoutContext::verifyAndOutputMismatchingLayoutTree on every layout frame
and assert in case of mismatching trees.
The test coverage does not suffer by [ ImageOnlyFailure ] it.
(We need to start generating display boxes for the Display::Painter.)
- 2:14 AM Changeset in webkit [267324] by
-
- 2 edits in trunk/Source/JavaScriptCore
Unreviewed, use RELEASE_AND_RETURN to suppress exception verification failure
https://bugs.webkit.org/show_bug.cgi?id=216686
<rdar://problem/69157632>
- runtime/JSModuleNamespaceObject.cpp:
(JSC::JSModuleNamespaceObject::defineOwnProperty):