Timeline
Dec 6, 2021:
- 11:30 PM Changeset in webkit [286590] by
-
- 7 edits in trunk/Source/WebKit
[iOS] Remove mach service extensions for the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=232952
<rdar://problem/85259753>
Reviewed by Brent Fulgham.
Remove mach service extensions for the WebContent process, which we think are no longer needed, based on local testing.
- Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
- Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
- Shared/WebProcessCreationParameters.h:
- UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
(WebKit::nonBrowserServices): Deleted.
- UIProcess/WebPageProxy.cpp:
(WebKit::attachmentElementServices):
- WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
- 11:19 PM Changeset in webkit [286589] by
-
- 56 edits in trunk
[GPU Process] [Filters] Make FilterEffect::externalRepresentation() and its overridable functions work iteratively
https://bugs.webkit.org/show_bug.cgi?id=233893
Reviewed by Cameron McCormack.
Source/WebCore:
This is a step towards removing the inputEffect() from FilterEffect.
-- The enum FliterEffect::RepresentationType is replaced by
FilterRepresentation.
-- CSSFilter calls its functions from left to right to dump their
externalRepresentation.
-- SVGFilter uses its expression to dump its graph of FilterEffects.
-- Since SourceAlpha is a built-in effect it does not need to dump
SourceGraphic as its input.
- platform/graphics/filters/FEBlend.cpp:
(WebCore::FEBlend::externalRepresentation const):
- platform/graphics/filters/FEBlend.h:
- platform/graphics/filters/FEColorMatrix.cpp:
(WebCore::FEColorMatrix::externalRepresentation const):
- platform/graphics/filters/FEColorMatrix.h:
- platform/graphics/filters/FEComponentTransfer.cpp:
(WebCore::FEComponentTransfer::externalRepresentation const):
- platform/graphics/filters/FEComponentTransfer.h:
- platform/graphics/filters/FEComposite.cpp:
(WebCore::FEComposite::externalRepresentation const):
- platform/graphics/filters/FEComposite.h:
- platform/graphics/filters/FEConvolveMatrix.cpp:
(WebCore::FEConvolveMatrix::externalRepresentation const):
- platform/graphics/filters/FEConvolveMatrix.h:
- platform/graphics/filters/FEDiffuseLighting.cpp:
(WebCore::FEDiffuseLighting::externalRepresentation const):
- platform/graphics/filters/FEDiffuseLighting.h:
- platform/graphics/filters/FEDisplacementMap.cpp:
(WebCore::FEDisplacementMap::externalRepresentation const):
- platform/graphics/filters/FEDisplacementMap.h:
- platform/graphics/filters/FEDropShadow.cpp:
(WebCore::FEDropShadow::externalRepresentation const):
- platform/graphics/filters/FEDropShadow.h:
- platform/graphics/filters/FEFlood.cpp:
(WebCore::FEFlood::externalRepresentation const):
- platform/graphics/filters/FEFlood.h:
- platform/graphics/filters/FEGaussianBlur.cpp:
(WebCore::FEGaussianBlur::externalRepresentation const):
- platform/graphics/filters/FEGaussianBlur.h:
- platform/graphics/filters/FEMerge.cpp:
(WebCore::FEMerge::externalRepresentation const):
- platform/graphics/filters/FEMerge.h:
- platform/graphics/filters/FEMorphology.cpp:
(WebCore::FEMorphology::externalRepresentation const):
- platform/graphics/filters/FEMorphology.h:
- platform/graphics/filters/FEOffset.cpp:
(WebCore::FEOffset::externalRepresentation const):
- platform/graphics/filters/FEOffset.h:
- platform/graphics/filters/FESpecularLighting.cpp:
(WebCore::FESpecularLighting::externalRepresentation const):
- platform/graphics/filters/FESpecularLighting.h:
- platform/graphics/filters/FETile.cpp:
(WebCore::FETile::externalRepresentation const):
- platform/graphics/filters/FETile.h:
- platform/graphics/filters/FETurbulence.cpp:
(WebCore::FETurbulence::externalRepresentation const):
- platform/graphics/filters/FETurbulence.h:
- platform/graphics/filters/Filter.h:
- platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::externalRepresentation const):
(WebCore::operator<<):
- platform/graphics/filters/FilterEffect.h:
- platform/graphics/filters/FilterFunction.h:
- platform/graphics/filters/SourceAlpha.cpp:
(WebCore::SourceAlpha::externalRepresentation const):
- platform/graphics/filters/SourceAlpha.h:
- platform/graphics/filters/SourceGraphic.cpp:
(WebCore::SourceGraphic::externalRepresentation const):
- platform/graphics/filters/SourceGraphic.h:
- rendering/CSSFilter.cpp:
(WebCore::CSSFilter::externalRepresentation const):
- rendering/CSSFilter.h:
- rendering/svg/SVGRenderTreeAsText.cpp:
(WebCore::writeSVGResourceContainer):
- svg/graphics/filters/SVGFEImage.cpp:
(WebCore::FEImage::externalRepresentation const):
- svg/graphics/filters/SVGFEImage.h:
- svg/graphics/filters/SVGFilter.cpp:
(WebCore::SVGFilter::externalRepresentation const):
- svg/graphics/filters/SVGFilter.h:
- svg/graphics/filters/SVGFilterBuilder.cpp:
(WebCore::effectGeometryFlagsForElement):
(WebCore::SVGFilterBuilder::buildFilterEffects):
(WebCore::SVGFilterBuilder::buildEffectExpression const):
(WebCore::SVGFilterBuilder::buildExpression const):
(WebCore::boundarySetFlagsForElement): Deleted.
- svg/graphics/filters/SVGFilterBuilder.h:
- svg/graphics/filters/SVGFilterExpression.h:
LayoutTests:
Add missing closing quotations in the expected results of some of the
filter layout tests.
- svg/filters/feDropShadow-expected.txt:
- svg/filters/feDropShadow-subregion-expected.txt:
- svg/filters/feDropShadow-zero-deviation-expected.txt:
- svg/repaint/filter-child-repaint-expected.txt:
- 10:20 PM Changeset in webkit [286588] by
-
- 7 edits in trunk/Source
[Cocoa] Web Inspector: Unify Grid overlay drawing code
https://bugs.webkit.org/show_bug.cgi?id=233773
Reviewed by Devin Rousso.
Source/WebCore:
Expose InspectorOverlay::drawGridOverlay as a static method so that it can be used for iOS overlay drawing and
clean up other related drawing methods to be private static instead of instance methods or public static methods.
- inspector/InspectorOverlay.cpp:
(WebCore::drawLayoutHatching):
(WebCore::fontForLayoutLabel):
(WebCore::backgroundPathForLayoutLabel):
(WebCore::expectedSizeForLayoutLabel):
(WebCore::drawLayoutLabel):
(WebCore::InspectorOverlay::drawLayoutHatching): Deleted.
(WebCore::InspectorOverlay::fontForLayoutLabel): Deleted.
(WebCore::InspectorOverlay::backgroundPathForLayoutLabel): Deleted.
(WebCore::InspectorOverlay::drawLayoutLabel): Deleted.
- inspector/InspectorOverlay.h:
Source/WebKit:
Remove the (almost) 1-to-1 duplicated logic currently being used to turn Grid Overlays into a layer hierarchy
and instead use a graphics context to draw the overlays straight into the view to take advantage of the existing
drawing code we use for macOS in WebCore::InspectorOverlay. To accommodate this, we now correctly set the
content scale factor of the view itself (so that our drawing does not appear blurry) and set the frame of the
view equal to the current visible portion of the parent scroll view, which helps us to avoid having an
incredibly large graphics context to draw into (which we would if the view's frame was just set to match the
frame of the webpage's view). This frame will not always be the same size, such as when zooming in where less of
the frame is visible. Combined with the current content scale, this actually means that on zoom the effective
number of pixels that need to be drawn is consistent.
- UIProcess/Inspector/ios/WKInspectorHighlightView.h:
- UIProcess/Inspector/ios/WKInspectorHighlightView.mm:
(-[WKInspectorHighlightView initWithFrame:]):
- Explicitly set this view to be non-opaque so that page content can be seen below this view. This wasn't
previously necessary because the bounds of this view were a zero-rect, which meant the background was never
painted.
(-[WKInspectorHighlightView _removeAllLayers]):
(-[WKInspectorHighlightView _createLayers:]):
- Because the view's frame origin is now offset, we need to create the node highlight layers offset by the
negation of the frame's origin so that they still line up correctly with page content.
(-[WKInspectorHighlightView drawRect:]):
(-[WKInspectorHighlightView update:scale:frame:]):
(-[WKInspectorHighlightView _createGridOverlayLayers:scale:]): Deleted.
(createLayoutHatchingLayer): Deleted.
(createLayoutLabelLayer): Deleted.
(-[WKInspectorHighlightView _createGridOverlayLayer:scale:]): Deleted.
(-[WKInspectorHighlightView update:scale:]): Deleted.
- UIProcess/ios/WKContentView.mm:
(-[WKContentView _showInspectorHighlight:]):
- 9:52 PM Changeset in webkit [286587] by
-
- 8 edits in trunk/Source/bmalloc
[libpas] Clean up what the machine code looks like under LTO
https://bugs.webkit.org/show_bug.cgi?id=233909
Reviewed by Yusuke Suzuki.
During the very painful perf burndown of libpas that got it to be a progression (rather than a
regression) versus bmalloc, I found that certain key fast paths - like fastMalloc and fastFree - perform
better when they do not have a stack frame. For this to happen, they must only make tail calls.
Sadly, LTO was inlining a slow path into fastFree (i.e. pas_deallocate), and this slow path had an
assertion, and the call to pas_assertion_failed was not a tail call.
This fixes the problem comprehensively:
- We now compile pas_assertion_failed as a breakpoint, just like WebKit would do. This is better for code size and maybe it could sometimes be better for performance.
- The slow path that was getting inlined is now marked PAS_NEVER_INLINE.
- Inspecting the machine code, I found a couple other slow paths that were being inlined in a bunch of places, and also marked them NEVER_INLINE.
If my past experiences are right, this could be a tiny speed-up on malloc-heavy workloads.
- libpas/src/libpas/pas_lock.c:
(pas_lock_lock_slow):
- libpas/src/libpas/pas_lock.h:
- libpas/src/libpas/pas_monotonic_time.c:
(get_timebase_info_slow):
(get_timebase_info):
- libpas/src/libpas/pas_thread_local_cache.c:
(pas_thread_local_cache_append_deallocation_slow):
- libpas/src/libpas/pas_thread_local_cache.h:
- libpas/src/libpas/pas_utils.c:
- libpas/src/libpas/pas_utils.h:
(pas_assertion_failed):
(pas_assertion_failed_noreturn_silencer):
- 8:12 PM Changeset in webkit [286586] by
-
- 3 edits in trunk/LayoutTests
[GLIB] Small gardening
Unreviewed test gardening.
- platform/glib/TestExpectations:
- platform/wpe/TestExpectations:
- 7:40 PM Changeset in webkit [286585] by
-
- 3 edits in trunk/Source/WebKit
REGRESSION(r286535) [GTK] Fix clean builds after DerivedSources/WebKit2 move
https://bugs.webkit.org/show_bug.cgi?id=233881
Reviewed by Don Olmstead.
Build fix. Covered by existing tests
The previous approach of this patch created the links to the header
derived sources into the target webkit2/ folder, which in turn was a
link to <repo>/Source/WebKit/UIProcess/API/gtk. So it ended up
actually creating the links inside the Source directory.
This commit instead links a different webkit2/ folder from the
generated webkit folder for the WebKitGTK/WPE derived sources headers.
- PlatformGTK.cmake:
- PlatformWPE.cmake:
- 5:57 PM Changeset in webkit [286584] by
-
- 2 edits in trunk/LayoutTests
[GTK][WPE] Mathml asserts with invisible operators
https://bugs.webkit.org/show_bug.cgi?id=215217
Unreviewed test gardening.
Remove test failures from expectations as the assert was removed.
Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-12-06
- platform/glib/TestExpectations:
- 5:52 PM Changeset in webkit [286583] by
-
- 5 edits in trunk/LayoutTests
[GLIB] Update test expectations and baselines. Unreviewed test gardening.
https://bugs.webkit.org/show_bug.cgi?id=233898
Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-12-06
- platform/glib/TestExpectations:
- platform/gtk/TestExpectations:
- platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid-expected.txt:
- platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing-expected.txt:
- 5:19 PM Changeset in webkit [286582] by
-
- 2 edits in trunk/Tools
Add WebCore::RegistrableDomain tests for duplicate sub domains
https://bugs.webkit.org/show_bug.cgi?id=233902
<rdar://problem/86130326>
Unreviewed expansion of the RegistrableDomain.MatchesURLs API test.
https://bugs.webkit.org/show_bug.cgi?id=233330 claims that duplicate sub domains
such as news.news.example.com causes WebKit's RegistrableDomain matching to fail
and treat same-site content as cross-site. This patch add tests of such duplicate
sub domains.
- TestWebKitAPI/Tests/WebCore/RegistrableDomain.cpp:
(TestWebKitAPI::TEST):
- 5:15 PM Changeset in webkit [286581] by
-
- 12 edits in trunk
<input type="time">'s range should be reversible
https://bugs.webkit.org/show_bug.cgi?id=233835
Reviewed by Darin Adler.
Source/WebCore:
<input type="time">'s range should be reversible when checking for overflow / underflow:
No new tests, rebaselined existing tests.
- html/InputType.cpp:
(WebCore::InputType::rangeUnderflow const):
(WebCore::InputType::rangeOverflow const):
- html/StepRange.cpp:
(WebCore::StepRange::StepRange):
- html/StepRange.h:
(WebCore::StepRange::isReversible const):
- html/TimeInputType.cpp:
(WebCore::TimeInputType::createStepRange const):
LayoutTests:
Rebaseline WPT tests that are now passing.
- platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeOverflow-expected.txt:
- platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow-expected.txt:
- 5:13 PM Changeset in webkit [286580] by
-
- 6 edits in trunk/Source/JavaScriptCore
TypeInfo should be materializable from Structures as a single load.
https://bugs.webkit.org/show_bug.cgi?id=233875
Reviewed by Mark Lam.
This is mostly just the members of Structure and JSCell so that
JSType and InlineTypeFlags are at the end of the JSCell header.
- assembler/testmasm.cpp:
(JSC::testBranchIfType):
(JSC::testBranchIfNotType):
- ftl/FTLAbstractHeapRepository.cpp:
(JSC::FTL::AbstractHeapRepository::AbstractHeapRepository):
- runtime/JSCell.h:
- runtime/JSCellInlines.h:
(JSC::JSCell::JSCell):
- runtime/Structure.h:
(JSC::Structure::typeInfo const):
- 4:38 PM Changeset in webkit [286579] by
-
- 10 edits in trunk
webpushd/webpushtool debugging additions
https://bugs.webkit.org/show_bug.cgi?id=233864
Reviewed by Alex Christensen.
Source/WebKit:
Covered by API tests.
This patch:
- Teaches webpushtool the ability to wait for a reconnect after losing its connection
- Starts actually broadcasting meaningful debug messages from webpushd
- webpushd/AppBundleRequest.mm:
(WebPushD::AppBundleRequest::start):
(WebPushD::AppBundlePermissionsRequest::didCheckForExistingBundle):
(WebPushD::AppBundlePermissionsRequest::didCreateAppBundle):
(WebPushD::AppBundleDeletionRequest::didDeleteExistingBundleWithError):
- webpushd/PushClientConnection.h:
- webpushd/PushClientConnection.mm:
(WebPushD::ClientConnection::setDebugModeIsEnabled):
(WebPushD::ClientConnection::broadcastDebugMessage):
(WebPushD::ClientConnection::connectionClosed):
- webpushd/WebPushDaemon.mm:
(WebPushD::Daemon::connectionAdded):
- webpushd/webpushtool/WebPushToolConnection.h:
- webpushd/webpushtool/WebPushToolConnection.mm:
(WebPushTool::Connection::create):
(WebPushTool::Connection::Connection):
(WebPushTool::Connection::connectToService):
(WebPushTool::Connection::connectionDropped):
- webpushd/webpushtool/WebPushToolMain.mm:
(printUsageAndTerminate):
(main):
Tools:
- TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:
(TestWebKitAPI::TEST): Adapt to debug message changes.
- 4:36 PM Changeset in webkit [286578] by
-
- 14 edits1 add in trunk/Source/WebCore
[GPU Process] Make FilterEffect calculate the primitive subregion only when needed
https://bugs.webkit.org/show_bug.cgi?id=232705
rdar://85290142
Reviewed by Cameron McCormack.
In this patch:
- resultColorSpace() will return colorSpace() from a FilterImageVector instead of returning the resultColorSpace() of the FilterEffect.
- Filter::clampFilterRegionIfNeeded() will clamp the filterRegion() instead of clamping the maxEffectRect of the lastEffect() since all the primitiveSubregions and the imageRects have to clipped to the filterRegion().
- determineFilterPrimitiveSubregion() is replaced by calculatePrimitiveSubregion() which will calculate the primitiveSubregion from a FilterImageVector and an optional FilterEffectGeometry.
- Many of FilterEffects are made protected instead of having them public.
- SVGFilterExpression will be defined as a Vector of SVGFilterExpressionTerm which is a struct of FilterEffect and optional FilterEffectGeometry.
- SVGFilter will replace the members whose types are FilterEffectVector and FilterEffectGeometryMap with a single member of type SVGFilterExpression.
- Headers.cmake:
- WebCore.xcodeproj/project.pbxproj:
- platform/graphics/filters/FEDisplacementMap.cpp:
(WebCore::FEDisplacementMap::resultColorSpace const):
- platform/graphics/filters/FEDisplacementMap.h:
- platform/graphics/filters/Filter.cpp:
(WebCore::Filter::clampFilterRegionIfNeeded):
- platform/graphics/filters/Filter.h:
(WebCore::Filter::effectGeometry const): Deleted.
- platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::calculatePrimitiveSubregion const):
(WebCore::FilterEffect::apply):
(WebCore::FilterEffect::externalRepresentation const):
(WebCore::FilterEffect::determineFilterPrimitiveSubregion): Deleted.
- platform/graphics/filters/FilterEffect.h:
(WebCore::FilterEffect::resultColorSpace const):
(WebCore::FilterEffect::filterPrimitiveSubregion const): Deleted.
(WebCore::FilterEffect::setFilterPrimitiveSubregion): Deleted.
- platform/graphics/filters/FilterFunction.h:
(WebCore::FilterFunction::apply):
- svg/graphics/filters/SVGFilter.cpp:
(WebCore::SVGFilter::create):
(WebCore::SVGFilter::supportsCoreImageRendering const):
(WebCore::SVGFilter::lastEffect const):
(WebCore::SVGFilter::apply):
(WebCore::SVGFilter::clearResult):
(WebCore::SVGFilter::effectGeometry const): Deleted.
- svg/graphics/filters/SVGFilter.h:
- svg/graphics/filters/SVGFilterBuilder.cpp:
(WebCore::SVGFilterBuilder::effectGeometry const):
(WebCore::SVGFilterBuilder::buildEffectExpression const):
(WebCore::SVGFilterBuilder::buildExpression const):
(WebCore::buildEffectExpression): Deleted.
- svg/graphics/filters/SVGFilterBuilder.h:
(WebCore::SVGFilterBuilder::takeEffectGeometryMap): Deleted.
- svg/graphics/filters/SVGFilterExpression.h: Added.
- 4:36 PM Changeset in webkit [286577] by
-
- 2 edits in trunk/LayoutTests
[ iOS ] imported/w3c/web-platform-tests/content-security-policy/worker-src/service-* tests are consistently failing
https://bugs.webkit.org/show_bug.cgi?id=229875
Unreviewed test gardening.
- platform/ios-wk2/TestExpectations: Add DumpJSConsoleLogInStdErr to address consistent failures.
- 4:18 PM Changeset in webkit [286576] by
-
- 8 edits6 copies9 adds in trunk/Tools
[reporelaypy] Add implementation of commits.webkit.org
https://bugs.webkit.org/show_bug.cgi?id=233734
<rdar://problem/85945101>
Reviewed by Dewei Zhu.
As commits.webkit.org becomes more important to WebKit development, we need to apply
our normal robust testing and review to the code backing it.
- Tools/Scripts/libraries/reporelaypy/reporelaypy/init.py: Add entrypoint to library.
- Tools/Scripts/libraries/reporelaypy/reporelaypy/checkout.py: Added.
(Checkout): Abstraction managing local repository checkout.
- Tools/Scripts/libraries/reporelaypy/reporelaypy/checkoutroute.py: Added.
(Redirector): Generates redirects for certain SCM services.
(CheckoutRoute): http routes returning information based on a checkout.
- Tools/Scripts/libraries/reporelaypy/reporelaypy/database.py: Added.
(Database): A connection to a true Redis or TinyRedis database.
- Tools/Scripts/libraries/reporelaypy/reporelaypy/tests/checkout_unittest.py:
(CheckoutUnittest):
- Tools/Scripts/libraries/reporelaypy/reporelaypy/tests/checkoutroute_unittest.py: Added.
(RedirectorUnittest):
(CheckoutRouteUnittest):
- Tools/Scripts/libraries/reporelaypy/reporelaypy/tests/database_unittest.py: Added.
(DatabaseUnittest):
- Tools/Scripts/libraries/reporelaypy/reporelaypy/webserver.py: Copied from Tools/Scripts/libraries/webkitflaskpy/setup.py.
(health):
- Tools/Scripts/libraries/reporelaypy/run: Added.
- Tools/Scripts/libraries/reporelaypy/setup.py: Added.
- Tools/Scripts/libraries/resultsdbpy/resultsdbpy/init.py: Bump version.
- Tools/Scripts/libraries/resultsdbpy/resultsdbpy/flask_support/flask_testcase.py:
(FlaskTestCase.run_with_mock_webserver.decorator.real_method):
(FlaskRequestsResponse): Moved to webkitflaskpy.
- Tools/Scripts/libraries/webkitflaskpy/setup.py: Bump version, update library description.
- Tools/Scripts/libraries/webkitflaskpy/webkitflaskpy/init.py: Bump version.
- Tools/Scripts/libraries/webkitflaskpy/webkitflaskpy/mock_app.py: Added.
(mock_app): Setup a flask app for testing.
- Tools/Scripts/libraries/webkitflaskpy/webkitflaskpy/response.py: Added.
(Response): Move FlaskRequestsResponse to more generic location.
- Tools/Scripts/webkitpy/init.py: Include reporelaypy for testing.
- Tools/Scripts/webkitpy/test/main.py:
(main): Include reporelaypy for testing.
(Tester._run_tests): Ditto.
Canonical link: https://commits.webkit.org/244901@main
- 4:06 PM Changeset in webkit [286575] by
-
- 4 edits in branches/safari-612-branch
Unreviewed, fix the debug build.
- 3:37 PM Changeset in webkit [286574] by
-
- 2 edits in trunk/Source/WebKit
Regression(r286505) imported/w3c/web-platform-tests/html/cross-origin-opener-policy/javascript-url.https.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=233874
Reviewed by Darin Adler.
r286505 fixed ProvisionalPageProxy so that ProvisionalPageProxy::m_provisionalLoadURL gets properly initialized when the
ProvisionalPageProxy gets constructed *after* the provisional load has already started (COOP proces-swap case). One side
effect of this though is that ProvisionalPageProxy::cancel() no longer returns early and will try to notify the client
that the provisional load failed, dereferencing m_mainFrame in doing so. In the event where the main frame has not yet
been created in the new provisional process, this would do a null-dereference of m_mainFrame.
To address the issue, we now early return in ProvisionalPageProxy::cancel() if m_isProcessSwappingOnNavigationResponse
is true (i.e. The ProvisionalPageProxy was created after the provisional load had started). In such situations, we
don't want to ProvisionalPageProxy to be the one notifying the client of the provisional load failure anyway. The reason
is that there is still a provisional load going on in the committed process/page.
No new tests, covered by existing test that is flakily crashing.
- UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::cancel):
- 2:53 PM Changeset in webkit [286573] by
-
- 8 edits in trunk/Source/bmalloc
[libpas] Set pthread_setspecific with marker in TLS destructor to detect TLS is destroyed
https://bugs.webkit.org/show_bug.cgi?id=233851
Reviewed by Mark Lam.
TLS has lifetime problem that,
- TLS is destroyed
- The other TLS is destroyed, and the destructor is called
- The destructor touches (1)'s TLS, then revive TLS of (1) (e.g. libpas's thread local cache).
To handle these cases, pthread library (libc) repeatedly calls destructor PAS_THREAD_LOCAL_CACHE_DESTROYED times
so that we clean up revived TLS again.
By using this mechanism, we can emulate pthread_self_is_exiting_np so that we can avoid reviving TLS.
- When destroying TLS, we set a marker (PAS_THREAD_LOCAL_CACHE_DESTROYED in this case) in TLS.
- During the other destructor calls, we can detect that TLS is destroyed by checking pthread_getspecific(...) == PAS_THREAD_LOCAL_CACHE_DESTROYED.
- We repeatedly calls the destructor of TLS, but every time, we set PAS_THREAD_LOCAL_CACHE_DESTROYED. So after PAS_THREAD_LOCAL_CACHE_DESTROYED times, it is left, and we achieve the goal (1) offering the way to detect the destroyed TLS and (2) avoiding reviving of TLS.
This patch implements it when pthread_self_is_exiting_np does not exist.
- libpas/src/libpas/pas_segregated_page_inlines.h:
(pas_segregated_page_switch_lock_with_mode):
- libpas/src/libpas/pas_thread_local_cache.c:
(destructor):
(pas_thread_local_cache_create):
(pas_thread_local_cache_destroy):
(pas_thread_local_cache_get_local_allocator_slow):
(pas_thread_local_cache_for_all):
- libpas/src/libpas/pas_thread_local_cache.h:
(pas_thread_local_cache_try_get_impl):
(pas_thread_local_cache_try_get):
(pas_thread_local_cache_can_set):
(pas_thread_local_cache_set_impl):
(pas_thread_local_cache_set):
(pas_thread_local_cache_is_guaranteed_to_destruct): Deleted.
- libpas/src/libpas/pas_try_reallocate.h:
(pas_try_reallocate):
- libpas/src/libpas/pas_utils.h:
- libpas/src/test/IsoHeapPageSharingTests.cpp:
(std::addAllTests):
- libpas/src/test/IsoHeapPartialAndBaselineTests.cpp:
(addIsoHeapPartialAndBaselineTests):
- 2:50 PM Changeset in webkit [286572] by
-
- 25 edits in trunk/Source/JavaScriptCore
Remove unneeded virtual allocator methods from Subspace.
https://bugs.webkit.org/show_bug.cgi?id=233891
rdar://86117970
Reviewed by Yusuke Suzuki.
Since the virtual allocate() and allocateFor() methods are now deleted, we can
also rename the inline allocateNonVirtual() and allocatorForNonVirtual() methods
to simply allocate() and allocateFor(). Similarly, rename
allocatorForNonVirtualConcurrently() to allocatorForConcurrently().
There are 2 places that still invokes the non-inline version of
CompleteSubspace::allocatorFor(). For this reason, we introduce a
CompleteSubsace::allocatorForNonInline() to keep the linkage the same. There's a
chance that the compiler/linker may already inline the method in 1 or both of
these places, but we'll offer allocatorForNonInline() to keep the code expressing
the same thing and let the compiler/linker decide whether to inline it or not just
as before.
This is purely a re-factoring patch. There are no behavior changes, except for
the removal of those 2 entries from the vtbls.
- bytecode/AccessCase.cpp:
(JSC::AccessCase::generateImpl):
- bytecode/ObjectAllocationProfileInlines.h:
(JSC::ObjectAllocationProfileBase<Derived>::initializeProfile):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::emitAllocateRawObject):
- ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileMakeRope):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
- heap/CompleteSubspace.cpp:
(JSC::CompleteSubspace::allocatorForNonInline):
(JSC::CompleteSubspace::tryAllocateSlow):
(JSC::CompleteSubspace::allocatorFor): Deleted.
(JSC::CompleteSubspace::allocate): Deleted.
- heap/CompleteSubspace.h:
(JSC::CompleteSubspace::allocatorFor):
(JSC::CompleteSubspace::allocatorForNonVirtual): Deleted.
- heap/CompleteSubspaceInlines.h:
(JSC::CompleteSubspace::allocate):
(JSC::CompleteSubspace::allocateNonVirtual): Deleted.
- heap/IsoSubspace.cpp:
(JSC::IsoSubspace::allocatorFor): Deleted.
(JSC::IsoSubspace::allocate): Deleted.
- heap/IsoSubspace.h:
(JSC::IsoSubspace::allocatorFor):
(JSC::IsoSubspace::allocatorForNonVirtual): Deleted.
- heap/IsoSubspaceInlines.h:
(JSC::IsoSubspace::allocate):
(JSC::IsoSubspace::allocateNonVirtual): Deleted.
- heap/Subspace.h:
- jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitAllocateJSObjectWithKnownSize):
- runtime/ButterflyInlines.h:
(JSC::Butterfly::tryCreateUninitialized):
(JSC::Butterfly::createUninitialized):
(JSC::Butterfly::tryCreate):
(JSC::Butterfly::growArrayRight):
(JSC::Butterfly::reallocArrayRightIfPossible):
- runtime/DirectArguments.cpp:
(JSC::DirectArguments::overrideThings):
- runtime/GenericArgumentsInlines.h:
(JSC::GenericArguments<Type>::initModifiedArgumentsDescriptor):
- runtime/HashMapImpl.h:
(JSC::HashMapBuffer::create):
- runtime/JSArray.cpp:
(JSC::JSArray::tryCreateUninitializedRestricted):
- runtime/JSArray.h:
(JSC::JSArray::tryCreate):
- runtime/JSArrayBufferView.cpp:
(JSC::JSArrayBufferView::ConstructionContext::ConstructionContext):
- runtime/JSBigInt.cpp:
(JSC::JSBigInt::createWithLength):
- runtime/JSCellInlines.h:
(JSC::allocatorForConcurrently):
(JSC::tryAllocateCellHelper):
(JSC::allocatorForNonVirtualConcurrently): Deleted.
- runtime/JSPropertyNameEnumerator.cpp:
(JSC::JSPropertyNameEnumerator::create):
- runtime/ScopedArguments.cpp:
(JSC::ScopedArguments::createUninitialized):
- runtime/StructureChain.cpp:
(JSC::StructureChain::create):
- 2:24 PM Changeset in webkit [286571] by
-
- 1 copy in releases/WPE WebKit/webkit-2.34.2
WPE WebKit 2.34.2
- 2:23 PM Changeset in webkit [286570] by
-
- 4 edits in releases/WebKitGTK/webkit-2.34
Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.34.2 release
.:
- Source/cmake/OptionsWPE.cmake: Bump version numbers.
Source/WebKit:
- wpe/NEWS: Add release notes for 2.34.2.
- 2:17 PM Changeset in webkit [286569] by
-
- 29 edits1 delete in trunk
REGRESSION (r286507): [macOS] Many file system access layout tests became flaky failures
https://bugs.webkit.org/show_bug.cgi?id=233892
Unreviewed, revert r286507.
Source/WebCore:
- Modules/filesystemaccess/FileSystemStorageConnection.h:
Source/WebKit:
- CMakeLists.txt:
- DerivedSources-input.xcfilelist:
- DerivedSources-output.xcfilelist:
- DerivedSources.make:
- NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::monitoredDataTypes):
- NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::fetchWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains):
(WebKit::NetworkProcess::registrableDomainsWithWebsiteData):
- NetworkProcess/storage/FileSystemStorageHandle.h:
(WebKit::FileSystemStorageHandle::activeSyncAccessHandle const): Deleted.
- NetworkProcess/storage/FileSystemStorageManager.cpp:
(WebKit::FileSystemStorageManager::~FileSystemStorageManager):
(WebKit::FileSystemStorageManager::close): Deleted.
- NetworkProcess/storage/FileSystemStorageManager.h:
- NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::originPath):
(WebKit::NetworkStorageManager::localOriginStorageManager):
(WebKit::readOriginFromFile): Deleted.
(WebKit::writeOriginToFileIfNecessary): Deleted.
(WebKit::deleteOriginFileIfNecessary): Deleted.
(WebKit::originDirectoryPath): Deleted.
(WebKit::originFilePath): Deleted.
(WebKit::NetworkStorageManager::removeOriginStorageManagerIfPossible): Deleted.
(WebKit::toWebsiteDataType): Deleted.
(WebKit::NetworkStorageManager::forEachOriginDirectory): Deleted.
(WebKit::NetworkStorageManager::fetchDataFromDisk): Deleted.
(WebKit::NetworkStorageManager::fetchData): Deleted.
(WebKit::NetworkStorageManager::deleteDataOnDisk): Deleted.
(WebKit::NetworkStorageManager::deleteData): Deleted.
(WebKit::NetworkStorageManager::deleteDataModifiedSince): Deleted.
(WebKit::NetworkStorageManager::deleteDataForRegistrableDomains): Deleted.
- NetworkProcess/storage/NetworkStorageManager.h:
- NetworkProcess/storage/OriginStorageManager.cpp:
(WebKit::OriginStorageManager::StorageBucket::typeStoragePath const):
(WebKit::OriginStorageManager::StorageBucket::fileSystemStorageManager):
(WebKit::OriginStorageManager::OriginStorageManager):
(WebKit::OriginStorageManager::StorageBucket::toStorageIdentifier): Deleted.
(WebKit::OriginStorageManager::StorageBucket::isActive): Deleted.
(WebKit::OriginStorageManager::StorageBucket::deleteData): Deleted.
(WebKit::OriginStorageManager::StorageBucket::deleteFileSystemStorageData): Deleted.
(WebKit::OriginStorageManager::isActive): Deleted.
(WebKit::OriginStorageManager::deleteData): Deleted.
- NetworkProcess/storage/OriginStorageManager.h:
- Shared/WebsiteData/WebsiteData.cpp:
(WebKit::WebsiteData::ownerProcess):
- Shared/WebsiteData/WebsiteDataType.h:
- UIProcess/API/Cocoa/WKWebsiteDataRecord.mm:
(dataTypesToString):
- UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h:
(WebKit::toWebsiteDataType):
(WebKit::toWKWebsiteDataTypes):
- UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:
- UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(+[WKWebsiteDataStore _allWebsiteDataTypesIncludingPrivate]):
- WebKit.xcodeproj/project.pbxproj:
- WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::didReceiveMessage):
- WebProcess/WebCoreSupport/WebFileSystemStorageConnection.messages.in: Removed.
Source/WTF:
- wtf/FileSystem.cpp:
(WTF::FileSystemImpl::readEntireFile): Deleted.
(WTF::FileSystemImpl::deleteAllFilesModifiedSince): Deleted.
- wtf/FileSystem.h:
Tools:
- TestWebKitAPI/Tests/WebKitCocoa/FileSystemAccess.mm:
- 1:58 PM Changeset in webkit [286568] by
-
- 10 edits1 add in trunk
[CSS Color 5] Update color-mix() to support srgb-linear and alpha premultiplication
https://bugs.webkit.org/show_bug.cgi?id=233862
Reviewed by Cameron McCormack.
Source/WebCore:
- Updates color-mix() to support srgb-linear interpolation.
- Updates color-mix() to interpolate using alpha premultiplied colors.
- Moves interpolation normalization to ColorInterpolation.h so that it can be shared in the future. Adds AlphaPremulitplied parameter to ColorInterpolationMethod to allow specifying the behavior desired. Also adds encoding/decoding of ColorInterpolationMethod which will be needed shortly.
- Headers.cmake:
- WebCore.xcodeproj/project.pbxproj:
Add new files.
- css/CSSValueKeywords.in:
Add reference (commented out, since it is also defined above) for srgb-linear in the color-mix section.
- css/parser/CSSPropertyParserHelpers.cpp:
(WebCore::CSSPropertyParserHelpers::consumeColorInterpolationMethod):
Add support for parsing srgb-linear as a color-interpolation-method color space.
(WebCore::CSSPropertyParserHelpers::makeCanonicalColor):
(WebCore::CSSPropertyParserHelpers::makeCanonicalColor<HWBA<float>>):
(WebCore::CSSPropertyParserHelpers::makeCanonicalColor<HSLA<float>>):
With much of makeColorTypeByNormalizingComponentsAfterMix moving to ColorNormalization,
the CSS specific parts are still needed here, which just convert HWBA and HSLA colors
to SRGBA<uint8_t> to match parsing.
(WebCore::CSSPropertyParserHelpers::mixColorComponentsUsingColorInterpolationMethod):
Utilize new interpolateColorComponents<> function to do the interpolation.
(WebCore::CSSPropertyParserHelpers::normalizeHue): Deleted.
(WebCore::CSSPropertyParserHelpers::normalizeWhitenessBlackness): Deleted.
(WebCore::CSSPropertyParserHelpers::makeColorTypeByNormalizingComponentsAfterMix): Deleted.
(WebCore::CSSPropertyParserHelpers::makeColorTypeByNormalizingComponentsAfterMix<HWBA<float>>): Deleted.
(WebCore::CSSPropertyParserHelpers::makeColorTypeByNormalizingComponentsAfterMix<HSLA<float>>): Deleted.
(WebCore::CSSPropertyParserHelpers::makeColorTypeByNormalizingComponentsAfterMix<LCHA<float>>): Deleted.
(WebCore::CSSPropertyParserHelpers::makeColorTypeByNormalizingComponentsAfterMix<OKLCHA<float>>): Deleted.
Moved to ColorNormalization.h
- platform/graphics/ColorInterpolation.h:
(WebCore::preInterpolationNormalizationForComponent):
(WebCore::preInterpolationNormalization):
(WebCore::postInterpolationNormalizationForComponent):
(WebCore::postInterpolationNormalization):
(WebCore::interpolateColorComponents):
Move complete interpolation here from CSSPropertyParserHelpers and add support for optionally
interpolating using alpha premultiplied colors.
(WebCore::ColorInterpolationMethod::encode const):
(WebCore::ColorInterpolationMethod::decode):
Add encode/decode for ColorInterpolationMethod so it can be used over IPC. Not currently needed
but will be needed soon for use with Gradient.
- platform/graphics/ColorModels.h:
Add coordinateSystem constexpr property to each model. Used mostly to identify which color models have
special behavior due to a hue component.
- platform/graphics/ColorNormalization.h: Added.
(WebCore::normalizeWhitenessBlackness):
(WebCore::normalizeHue):
(WebCore::makeColorTypeByNormalizingComponents):
(WebCore::makeColorTypeByNormalizingComponents<HWBA<float>>):
(WebCore::makeColorTypeByNormalizingComponents<HSLA<float>>):
(WebCore::makeColorTypeByNormalizingComponents<LCHA<float>>):
(WebCore::makeColorTypeByNormalizingComponents<OKLCHA<float>>):
Split out of CSSPropertyParserHelpers so it can be used by the interpolation code.
LayoutTests:
Update test and results to also test the srgb-linear color space and also to
specifically test colors with and without alpha, updating the results for the
new premuliplied results.
- fast/css/parsing-color-mix-expected.txt:
- fast/css/parsing-color-mix.html:
- 1:36 PM Changeset in webkit [286567] by
-
- 2 edits in trunk/Source/WebKit
Reverting local test code that should not have been landed.
Not reviewed.
- UIProcess/Cocoa/ModelElementControllerCocoa.mm:
- 1:31 PM Changeset in webkit [286566] by
-
- 2 edits in trunk/Source/WebKit
Momentum Event Dispatcher: Momentum phase runs backwards with natural scrolling disabled
https://bugs.webkit.org/show_bug.cgi?id=233894
<rdar://problem/86111948>
Reviewed by Simon Fraser.
- WebProcess/WebPage/MomentumEventDispatcher.cpp:
(WebKit::MomentumEventDispatcher::consumeDeltaForCurrentTime):
Only flip the deltas if the trackpad is configured to use "natural"
scrolling (in which "directionInvertedFromDevice" is true).
(WebKit::MomentumEventDispatcher::computeNextDelta):
Fix initial queue state logging to log both axes before setting the "did log" bit.
- 1:15 PM Changeset in webkit [286565] by
-
- 4 edits in trunk/Source
Add a call to os_signpost to tag a momentum scroll animation
https://bugs.webkit.org/show_bug.cgi?id=233885
Reviewed by Tim Horton.
Source/WebCore:
Use the momentum "Began" and "Ended" events to mark the start/end of a momentum scroll
as an animation via os_signost.
Put the code in ScrollingEffectsController rather than MomentumEventDispatcher so that
non-generated momentum gets marked too.
- platform/mac/ScrollingEffectsController.mm:
(WebCore::ScrollingEffectsController::handleWheelEvent):
Source/WTF:
- wtf/SystemTracing.h:
- 1:06 PM Changeset in webkit [286564] by
-
- 6 edits2 copies in trunk/Source/WebKit
Put webpushd code in WebKit.framework.
https://bugs.webkit.org/show_bug.cgi?id=233886
Reviewed by Alex Christensen.
This fixes some build/mastering/linking issues.
- Configurations/webpushd.xcconfig:
- Shared/API/Cocoa/WKMain.h:
- Shared/API/Cocoa/WKMain.mm:
(WKWebPushDaemonMain):
- WebKit.xcodeproj/project.pbxproj:
- webpushd/WebPushDaemonMain.h: Copied from Source/WebKit/Shared/API/Cocoa/WKMain.mm.
- webpushd/WebPushDaemonMain.mm:
(WebKit::WebPushDaemonMain):
(main): Deleted.
- webpushd/webpushd.cpp: Copied from Source/WebKit/Shared/API/Cocoa/WKMain.mm.
(main):
- 1:03 PM Changeset in webkit [286563] by
-
- 2 edits in trunk/Source/WebKit
REGRESSION (r286527): Three API tests crashing under WebKit::ProcessLauncher::launchProcess()
https://bugs.webkit.org/show_bug.cgi?id=233882
<rdar://problem/86111726>
Reviewed by Brent Fulgham.
Correct the eventHandler to capture the process name, rather than using a raw pointer to the character string.
- UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm:
(WebKit::ProcessLauncher::launchProcess):
- 1:01 PM Changeset in webkit [286562] by
-
- 2 edits in trunk/PerformanceTests
[RAMification] Add support for dumping smaps rollups on Linux
https://bugs.webkit.org/show_bug.cgi?id=233867
Patch by Zan Dobersek <zdobersek@igalia.com> on 2021-12-06
Reviewed by Yusuke Suzuki.
Add the option to dump smaps rollup after the end of each RAMification
test case. This mirrors the vmmap functionality and is implemented
alongside that option.
Once the jsc binary is left idle after the test case run, the
smaps_rollup output for the given jsc process is collected from the
proc filesystem. This material is then printed out after the test
is done, following the memory footprint dump.
For now this prefers the smaps_rollup instead of the complete smaps.
In this form, it already gives a good insight into the balance between
the proportional and residential set size amounts. Complete smaps could
be beneficial later, especially if we can implement differentiation
between allocations of different types and/or purposes.
- JetStream2/RAMification.py:
(parseArgs):
(BaseRunner.init):
(BaseRunner.getResults):
(LocalRunner.runOneTest):
(main):
(main.runTestList):
- 12:52 PM Changeset in webkit [286561] by
-
- 1 copy in branches/safari-613.1.11-branch
New branch.
- 12:04 PM Changeset in webkit [286560] by
-
- 22 edits in trunk/Source
Change IDL
Date
to be backed byWallTime
to avoid confusion when converting to native dates
https://bugs.webkit.org/show_bug.cgi?id=233781
Reviewed by Darin Adler.
JS
Date
is milliseconds-based, but some native dates (e.g.NSDate
) are seconds-based.
WallTime
will help avoid confusion since not a generic type (e.g.double
) and instead
has explicitly defined conversion methods to seconds, milliseconds, etc..
Source/WebCore:
- bindings/IDLTypes.h:
(WebCore::IDLDate::nullValue):
(WebCore::IDLDate::isNullValue):
(WebCore::IDLDate::extractValueFromNullable):
- bindings/js/JSDOMConvertDate.h:
(WebCore::Converter<IDLDate>::convert):
(WebCore::JSConverter<IDLDate>::convert):
- bindings/js/JSDOMConvertDate.cpp:
(WebCore::jsDate):
(WebCore::valueToDate):
- Modules/applepay/ApplePayLineItem.h:
(WebCore::ApplePayLineItem::decode):
- Modules/applepay/cocoa/PaymentSummaryItemsCocoa.mm:
(WebCore::toDate):
- bindings/js/IDBBindingUtilities.cpp:
(WebCore::get):
(WebCore::toJS):
(WebCore::createIDBKeyFromValue):
- html/BaseDateAndTimeInputType.h:
- html/DateTimeLocalInputType.cpp:
(WebCore::DateTimeLocalInputType::valueAsDate const):
(WebCore::DateTimeLocalInputType::setValueAsDate const):
- html/BaseDateAndTimeInputType.cpp:
(WebCore::BaseDateAndTimeInputType::valueAsDate const):
(WebCore::BaseDateAndTimeInputType::setValueAsDate const):
- html/DateTimeLocalInputType.h:
- html/HTMLInputElement.h:
- html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::valueAsDate const):
(WebCore::HTMLInputElement::setValueAsDate):
- html/InputType.h:
- html/InputType.cpp:
(WebCore::InputType::valueAsDate const):
(WebCore::InputType::setValueAsDate const):
- html/MonthInputType.h:
- html/MonthInputType.cpp:
(WebCore::MonthInputType::valueAsDate const):
- html/HTMLMediaElement.h:
- html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::getStartDate const):
This also fixes an apparently longstanding bug in thatMediaTime::toDouble
is apparently a
seconds-based value, so this is the one case that doesn't needSeconds::fromMilliseconds
.
Source/WebKitLegacy/mac:
- DOM/DOMInternal.h:
(kit):
(core):
- DOM/DOMHTMLMediaElement.mm:
(-[DOMHTMLMediaElement getStartDate]):
- 12:02 PM Changeset in webkit [286559] by
-
- 9 edits in branches/safari-613.1.10-branch/Source
Versioning.
WebKit-7613.1.10.2
- 11:45 AM Changeset in webkit [286558] by
-
- 17 edits3 adds in trunk
Web Inspector: Support Cascade Layers in the Styles sidebar
https://bugs.webkit.org/show_bug.cgi?id=233208
Reviewed by Devin Rousso.
Source/JavaScriptCore:
Add new values to
CSS.Grouping
'stype
enum for cascade layers and make thetext
optional since an
anonymous layer will not have a name or other text.
- inspector/protocol/CSS.json:
Source/WebCore:
Test: inspector/css/getMatchedStylesForNodeLayerGrouping.html
Add support for parsing and grouping CSS
@layer
rules inInspectorStyleSheet
to the existing paths for
handling other groupings so that the frontend is made aware of rules wrapped inside a layer or multiple layers.
- Headers.cmake:
- WebCore.xcodeproj/project.pbxproj:
- CompiledSelector.h needs to be exported as a private header to include in WebKitLegacy's build, since it is
imported by StyleRule.h, which is now imported by CSSImportRule.h, which is imported in WebKitLegacy.
- css/CSSImportRule.cpp:
(WebCore::CSSImportRule::cascadeLayerName const):
- css/CSSImportRule.h:
- css/CSSLayerRule.cpp:
(WebCore::CSSLayerRule::cssText const):
(WebCore::CSSLayerRule::layerName const):
(WebCore::CSSLayerRule::stringFromCascadeLayerName):
- css/CSSLayerRule.h:
- inspector/InspectorStyleSheet.cpp:
(flattenSourceData):
(WebCore::asCSSRuleList):
(WebCore::buildArrayForGroupings):
- style/InspectorCSSOMWrappers.cpp:
(WebCore::Style::InspectorCSSOMWrappers::collect):
Source/WebInspectorUI:
- UserInterface/Models/CSSGrouping.js:
(WI.CSSGrouping):
(WI.CSSGrouping.prototype.get isLayer):
(WI.CSSGrouping.prototype.get prefix):
- Update
CSSGrouping
to support@layer
rules, and maketext
optional for a grouping, since anonymous layers
will not have a name.
- UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration.prototype.generateFormattedText):
- Ensure that spacing remains correct and "null" isn't shown for groupings without text.
- UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
- When merging layer groups, ensure that a "." is used as a separator, and that each group has a name (to
prevent having a hanging period or the "null" text appearing).
LayoutTests:
Add new test cases for
CSS.getMatchesStyleForNode
to make sure that layer groupings are correctly determined,
and that rules nested in@layer
rules and@import layer()
s are correctly represented and sorted by the order
they are applied to an element.
- inspector/css/getMatchedStylesForNode-expected.txt:
- Re-baseline to account for change in order of CSSGrouping properties in the protocol due to
text
now being
optional.
- inspector/css/getMatchedStylesForNodeLayerGrouping-expected.txt: Added.
- inspector/css/getMatchedStylesForNodeLayerGrouping.html: Added.
- inspector/css/resources/external-layers.css: Added.
- 11:45 AM Changeset in webkit [286557] by
-
- 3 edits in trunk/Source/WebKit
[iOS][WP] Block access to unused IOKit class
https://bugs.webkit.org/show_bug.cgi?id=233866
<rdar://problem/86086475>
Reviewed by Brent Fulgham.
Block access to IOKit class IOMobileFramebufferUserClient in the WebContent process' sandbox on iOS,
which is unused according to telemetry.
- Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
- UIProcess/WebPageProxy.cpp:
(WebKit::gpuIOKitClasses):
- 11:45 AM Changeset in webkit [286556] by
-
- 4 edits in trunk/Source/WebCore
Unreviewed, add some missing #includes in WebCore
Add several missing
#include
-s, which currently aren't causing any issues due to unified sources (but will
once I introduce several new source files inWebCore/Modules
in a future patch).
- Modules/web-locks/WebLockRegistry.cpp:
- page/Page.cpp:
- page/PageConfiguration.h:
- 11:30 AM Changeset in webkit [286555] by
-
- 17 edits6 copies6 adds in trunk
[Web Animations] Add a way to run scripted animations
https://bugs.webkit.org/show_bug.cgi?id=233869
rdar://85983542
Reviewed by Dean Jackson.
Source/WebCore:
Tests: webanimations/custom-effect/custom-effect.html
webanimations/custom-effect/document-timeline-animate.html
This patch adds two new Web-exposed features to allow authors to write callback-based animations
leveraging the full power of the Web Animations model.
First, we add a new AnimationEffect subclass which wraps a callback to be executed on every tick
of the associated animation's timeline: CustomEffect. It can be constructed by providing a JS function
as its first parameter, and either a number or a dictionary to provide timing properties for the effect.
This is similar to how KeyframeEffect will accept a keyframes object and then timing data. The callback
is provided the effect progress as its sole parameter. Web authors can use this new interface as follows:
const animation = new Animation;
animation.effect = new CustomEffect(progress => { … }, 1000);
animation.play();
Second, to make starting callback-based animations more straightforward and in a very similar fashion
to how keyframe animations can be initiated on an element using Element.animate(), we introduce a new
animate() method on DocumentTimeline, allowing the previous exmaple to be written as:
const animation = document.timeline.animate(progress => { … }, 1000);
This simple approach allows Web authors to move past the simple use of requestAnimationFrame() and harness
the Web Animations timing model which will let them pause and resume animations, seek them, control their
playback rate, apply easing, respond to the "finished" promise, etc.
The code itself is very simple, CustomEffect is simply an AnimationEffect subclass that indicates that it's
always interested in scheduling updates while active using the ticksContinouslyWhileActive() method. This
means that all the scheduling logic contained in WebAnimation and AnimationEffect applies, allowing callbacks
to not be fired when the animation is paused or when the page is suspended, or fired sparingly when a steps()
timing function is specified.
- CMakeLists.txt:
- DerivedSources-input.xcfilelist:
- DerivedSources-output.xcfilelist:
- DerivedSources.make:
- Headers.cmake:
- Sources.txt:
- WebCore.xcodeproj/project.pbxproj:
- animation/AnimationEffect.h:
(WebCore::AnimationEffect::isCustomEffect const):
- animation/CustomAnimationOptions.h: Added.
- animation/CustomAnimationOptions.idl: Added.
- animation/CustomEffect.cpp: Added.
(WebCore::CustomEffect::create):
(WebCore::CustomEffect::CustomEffect):
(WebCore::CustomEffect::animationDidTick):
- animation/CustomEffect.h: Added.
(WebCore::CustomEffect::~CustomEffect):
- animation/CustomEffect.idl: Added.
- animation/CustomEffectCallback.h: Added.
- animation/CustomEffectCallback.idl: Added.
- animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::animate):
- animation/DocumentTimeline.h:
- animation/DocumentTimeline.idl:
- bindings/js/WebCoreBuiltinNames.h:
Source/WTF:
Add a new experimental feature for the CustomEffect interface.
- Scripts/Preferences/WebPreferencesExperimental.yaml:
LayoutTests:
Add tests for the new CustomEffect interface and the document.timeline.animate() method.
These are written using WPT libraries such that they may be upstreamed to the WPT repository
in the future if and when the CustomEffect interface is standardized.
- platform/win/TestExpectations:
- webanimations/custom-effect/custom-effect-expected.txt: Added.
- webanimations/custom-effect/custom-effect.html: Added.
- webanimations/custom-effect/document-timeline-animate-expected.txt: Added.
- webanimations/custom-effect/document-timeline-animate.html: Added.
- 11:22 AM Changeset in webkit [286554] by
-
- 6 edits in trunk
Update GPU Process feature flags
https://bugs.webkit.org/show_bug.cgi?id=232547
rdar://83905400
Reviewed by Wenson Hsieh.
Source/WTF:
Move features enabled by default to internal. DOM and WebGL are experimental.
- Scripts/Preferences/WebPreferencesExperimental.yaml:
- Scripts/Preferences/WebPreferencesInternal.yaml:
Tools:
- Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(parse_args): Update features that are set when using
run-webkit-tests --use-gpu-process
.
- WebKitTestRunner/TestOptions.cpp:
(WTR::TestOptions::defaults): Turn off DOM Rendering on layout test bots for the time being.
- 11:13 AM Changeset in webkit [286553] by
-
- 3 edits2 adds in trunk
Null check in shouldUseBreakElement
https://bugs.webkit.org/show_bug.cgi?id=229275
Patch by Rob Buis <rbuis@igalia.com> on 2021-12-06
Reviewed by Ryosuke Niwa.
Source/WebCore:
Need to null check node in shouldUseBreakElement.
Also bail out early in InsertLineBreakCommand::doApply
in case position is not editable.
Test: editing/execCommand/insert-line-break-crash.html
- editing/InsertLineBreakCommand.cpp:
(WebCore::InsertLineBreakCommand::shouldUseBreakElement):
(WebCore::InsertLineBreakCommand::doApply):
LayoutTests:
- editing/execCommand/insert-line-break-crash-expected.txt: Added.
- editing/execCommand/insert-line-break-crash.html: Added.
- 11:00 AM Changeset in webkit [286552] by
-
- 6 edits in trunk
[iOS] Allow WKWebView clients to override undoManager
https://bugs.webkit.org/show_bug.cgi?id=233297
<rdar://problem/85526549>
Patch by Matt Gilligan <matthew_gilligan@apple.com> on 2021-12-06
Reviewed by Wenson Hsieh.
Source/WebKit:
Move WKContentView's undoManager up the responder chain to WKWebView so web view
subclasses can customize the undo manager used when WKContentView is first responder.
Test: KeyboardInputTests.OverrideUndoManager
- UIProcess/API/ios/WKWebViewIOS.mm:
(-[WKWebView undoManager]):
Return the undo manager provided by _contentView when it is current.
- UIProcess/ios/WKContentView.h:
- UIProcess/ios/WKContentView.mm:
(-[WKContentView undoManagerForWebView]):
Provide the view's undo manager via this property so that -undoManager will look up the
responder chain to WKWebView.
(-[WKContentView undoManager]): Deleted.
Tools:
- TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:
(-[CustomUndoManagerWebView undoManager]):
(TestWebKitAPI::TEST):
- 10:49 AM Changeset in webkit [286551] by
-
- 1 copy in tags/Safari-613.1.10.1
Tag Safari-613.1.10.1.
- 10:46 AM Changeset in webkit [286550] by
-
- 28 edits2 adds in trunk
Restore navigator.hardwareConcurrency
https://bugs.webkit.org/show_bug.cgi?id=233381
<rdar://85023911>
Reviewed by Saam Barati.
LayoutTests/imported/w3c:
- web-platform-tests/html/dom/idlharness.https-expected.txt:
- web-platform-tests/html/dom/idlharness.worker-expected.txt:
- web-platform-tests/workers/WorkerNavigator-hardware-concurrency.any.worker-expected.txt:
Source/WebCore:
Navigator.hardwareConcurrency was removed in r219379, but it is now used
by emscripten to implement std::thread::hardware_concurrency()
Test: fast/dom/navigator-hardwareConcurrency.html
- page/Navigator.idl:
- page/NavigatorBase.cpp:
(WebCore::NavigatorBase::hardwareConcurrency):
- page/NavigatorBase.h:
- page/WorkerNavigator.idl:
LayoutTests:
- fast/dom/Window/resources/window-property-collector.js:
(emitExpectedResult):
- fast/dom/navigator-detached-no-crash-expected.txt:
- fast/dom/navigator-hardwareConcurrency-expected.txt: Added.
- fast/dom/navigator-hardwareConcurrency.html: Added.
- fast/workers/resources/worker-navigator.js:
- fast/workers/worker-navigator-expected.txt:
- platform/glib/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt:
- platform/gtk/fast/dom/navigator-detached-no-crash-expected.txt:
- platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
- platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
- platform/ipad/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
- platform/mac-wk1/fast/dom/navigator-detached-no-crash-expected.txt:
- platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
- platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt:
- platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
- platform/mac/fast/dom/navigator-detached-no-crash-expected.txt:
- platform/win/fast/dom/navigator-detached-no-crash-expected.txt:
- platform/wincairo/fast/dom/navigator-detached-no-crash-expected.txt:
- platform/wpe/fast/dom/navigator-detached-no-crash-expected.txt:
- platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
- 10:40 AM Changeset in webkit [286549] by
-
- 2 edits in trunk/Source/WebKit
REGRESSION(r286535) [GTK] Fix clean builds after DerivedSources/WebKit2 move
https://bugs.webkit.org/show_bug.cgi?id=233881
Reviewed by Žan Doberšek.
Build fix. Covered by exiting tests.
- PlatformGTK.cmake: Add symbolic links for the public generated like
we do for the regular headers. It happened to work before because they
were created already in a webkit2 folder.
- 10:35 AM Changeset in webkit [286548] by
-
- 9 edits in branches/safari-613.1.10-branch/Source
Versioning.
WebKit-7613.1.10.1
- 10:27 AM Changeset in webkit [286547] by
-
- 2 edits in trunk/Tools
[iOS] AppHighlights.AppHighlightCreateAndRestoreAndScroll is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=233828
Reviewed by Tim Horton.
This test began to sometimes fail on iOS 15 API test runners in EWS after enabling
APP_HIGHLIGHTS
in non-
internal builds. Make this test more robust by waiting for scrolling to the restored highlight.
- TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:
(TestWebKitAPI::TEST):
- 10:20 AM Changeset in webkit [286546] by
-
- 14 edits in trunk
[GPU Process] (REGRESSION r285597): Set the filterRegion of the CSSFilter after it is created
https://bugs.webkit.org/show_bug.cgi?id=233849
Reviewed by Cameron McCormack.
Source/WebCore:
In this patch:
- sourceImageRect is no longer passed as an argument to SVGFilter. It should be passed only when SVGFilter::apply() is called.
- CSSFilter::create() will create and build the FilterFunctions from the FilterOperations. So we have to pass the targetBoundingBox since the FilterEffects will need it when calculating the outsets.
- The steps in RenderLayerFilters::beginFilterEffect() are: a) Recreate the CSSFilter if the targetBoundingBox changes. b) Calculate the filterRegion = targetBoundingBox + outsets c) Clamp the filterRegion if needed. This will change the filterScale. d) Set sourceImageRect = filterRegion. e) Recreate the sourceImage if needed. f) setup the context for drawing the target renderer.
- Managing the targetBoundingBox and the filterRegion is moved from CSSFilter to RenderLayerFilters.
- css/CSSFilterImageValue.cpp:
(WebCore::CSSFilterImageValue::image):
- platform/graphics/filters/Filter.cpp:
(WebCore::Filter::Filter):
- platform/graphics/filters/Filter.h:
(WebCore::Filter::Filter):
- rendering/CSSFilter.cpp:
(WebCore::CSSFilter::create):
(WebCore::CSSFilter::CSSFilter):
(WebCore::createSVGFilter):
(WebCore::CSSFilter::buildFilterFunctions):
(WebCore::CSSFilter::apply):
(WebCore::CSSFilter::setFilterRegion):
(WebCore::m_hasFilterThatShouldBeRestrictedBySecurityOrigin): Deleted.
(WebCore::CSSFilter::updateBackingStoreRect): Deleted.
(WebCore::CSSFilter::computeSourceImageRectForDirtyRect): Deleted.
(WebCore::CSSFilter::setSourceImageRect): Deleted.
- rendering/CSSFilter.h:
- rendering/RenderLayerFilters.cpp:
(WebCore::RenderLayerFilters::buildFilter):
(WebCore::RenderLayerFilters::allocateBackingStoreIfNeeded):
(WebCore::RenderLayerFilters::beginFilterEffect):
(WebCore::RenderLayerFilters::applyFilterEffect):
(WebCore::RenderLayerFilters::allocateBackingStore): Deleted.
- rendering/RenderLayerFilters.h:
- rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::applyResource):
- rendering/svg/SVGRenderTreeAsText.cpp:
(WebCore::writeSVGResourceContainer):
- svg/graphics/filters/SVGFilter.cpp:
(WebCore::SVGFilter::create):
(WebCore::SVGFilter::SVGFilter):
- svg/graphics/filters/SVGFilter.h:
LayoutTests:
Unskip layout tests which were skipped in r285597.
- 9:46 AM Changeset in webkit [286545] by
-
- 12 edits in trunk
WKWebpagePreferences._activeContentRuleListActionPatterns should be an NSDictionary of identifier to allowed patterns
https://bugs.webkit.org/show_bug.cgi?id=233842
Patch by Alex Christensen <achristensen@webkit.org> on 2021-12-06
Reviewed by Timothy Hatcher.
Source/WebCore:
There's no need for nil to match everything because a pattern can be written to quickly match everything.
There is a need for different extensions (with different identifiers) to have different active action permissions, though.
- contentextensions/ContentExtensionsBackend.cpp:
(WebCore::ContentExtensions::ContentExtensionsBackend::processContentRuleListsForLoad):
- loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::DocumentLoader):
(WebCore::DocumentLoader::setActiveContentRuleListActionPatterns):
(WebCore::DocumentLoader::allowsActiveContentRuleListActionsForURL const):
- loader/DocumentLoader.h:
Source/WebKit:
- Shared/WebsitePoliciesData.cpp:
(WebKit::WebsitePoliciesData::decode):
- Shared/WebsitePoliciesData.h:
- UIProcess/API/APIWebsitePolicies.h:
- UIProcess/API/Cocoa/WKWebpagePreferences.mm:
(-[WKWebpagePreferences _setActiveContentRuleListActionPatterns:]):
(-[WKWebpagePreferences _activeContentRuleListActionPatterns]):
- UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h:
Tools:
- TestWebKitAPI/Tests/WebKitCocoa/WKContentExtensionStore.mm:
(navigationDelegateAllowingActiveActionsOnTestHost):
(TEST_F):
- 9:20 AM Changeset in webkit [286544] by
-
- 6 edits in trunk/Source/WebCore
Clean up virtual methods on AnimationEffect
https://bugs.webkit.org/show_bug.cgi?id=233868
Reviewed by Simon Fraser.
To this day, the only concrete subclass of AnimationEffect has been KeyframeEffect. Soon, we'll introduce
another concrete subclass for callback-based animations leveraging the Web Animations mode: CustomEffect.
To prepare for this new class, we clean up the virtual methods on AnimationEffect such that they make a
bit more sense:
- much of the implementation of timeToNextTick() is brought from KeyframeEffect to AnimationEffect to
account for the cases which are purely based on timing properties shared by any potential AnimationEffect
subclass,
- we add a new ticksContinouslyWhileActive() method which allows subclasses to indicate whether they require
continuous scheduling while active, which is true for KeyframeEffect unless it has no keyframes, no CSS
properties set on its keyframes or is running fully accelerated,
- much of the implementation of setAnimation() is brought from KeyframeEffect to AnimationEffect since
updating the relevance of the animation based on a change of effect should apply to any AnimationEffect,
- the apply() and invalidate() methods are moved from AnimationEffect to KeyframeEffect alone since they
really are specific to KeyframeEffect's interaction with style resolution,
- all the other virtual methods on AnimationEffect have stub implementations such that new subclasses
only need to override them as required: animationDidTick(), animationDidPlay(),
animationDidChangeTimingProperties(), animationWasCanceled(), animationSuspensionStateDidChange(bool)
and animationTimelineDidChange(AnimationTimeline*).
- animation/AnimationEffect.cpp:
(WebCore::AnimationEffect::setAnimation):
(WebCore::AnimationEffect::timeToNextTick const):
- animation/AnimationEffect.h:
(WebCore::AnimationEffect::animationDidTick):
(WebCore::AnimationEffect::animationDidPlay):
(WebCore::AnimationEffect::animationDidChangeTimingProperties):
(WebCore::AnimationEffect::animationWasCanceled):
(WebCore::AnimationEffect::animationSuspensionStateDidChange):
(WebCore::AnimationEffect::animationTimelineDidChange):
(WebCore::AnimationEffect::ticksContinouslyWhileActive const):
(WebCore::AnimationEffect::setAnimation): Deleted.
(WebCore::AnimationEffect::timeToNextTick const): Deleted.
- animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::setAnimation):
(WebCore::KeyframeEffect::ticksContinouslyWhileActive const):
(WebCore::KeyframeEffect::timeToNextTick const):
- animation/KeyframeEffect.h:
- animation/WebAnimation.cpp:
(WebCore::WebAnimation::invalidateEffect):
(WebCore::WebAnimation::resolve):
(WebCore::WebAnimation::timeToNextTick const):
- 6:35 AM Changeset in webkit [286543] by
-
- 5 edits in trunk/Source
[LBSE] Toggling the Settings -> Enabled LBSE flag has no immediate effect
https://bugs.webkit.org/show_bug.cgi?id=233871
Reviewed by Rob Buis.
Toggling "Enable layer-based SVG engine" in e.g. MiniBrowser or from JS has no immediate effect.
A relayout is not enough: a full style / render tree rebuild is needed.
Source/WebCore:
Covered by existing tests.
- page/SettingsBase.cpp:
(WebCore::SettingsBase::layerBasedSVGEngineEnabledChanged): Rebuild style / renderers upon changes.
- page/SettingsBase.h:
Source/WTF:
- Scripts/Preferences/WebPreferencesInternal.yaml: When "LayerBasedSVGEngineEnabled" changes call
WebCore::SettingsBase::layerBasedSVGEngineEnabledChanged() to assure the switch from legacy to
LBSE engine and vice-versa is live and doesn't need reloads to take effect.
- 6:28 AM Changeset in webkit [286542] by
-
- 17 edits in trunk/Source/WebCore
[LBSE] Add RenderObject::isSVGRootOrLegacySVGRoot() helper
https://bugs.webkit.org/show_bug.cgi?id=233870
Reviewed by Rob Buis.
Preparations to begin a new RenderSVGRoot implementation for the
layer-based SVG engine (LBSE).
Add a helper function to identify either legacy SVG or LBSE root
render objects (LegacyRenderSVGRoot and the upcoming RenderSVGRoot).
Covered by existing tests, no change in behavior.
- accessibility/AXObjectCache.cpp:
(WebCore::createFromRenderer):
- accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::boundingBoxRect const):
(WebCore::AccessibilityRenderObject::determineAccessibilityRole):
- dom/Element.cpp:
(WebCore::Element::boundingAbsoluteRectWithoutLayout):
- inspector/InspectorOverlay.cpp:
(WebCore::buildRendererHighlight):
- layout/integration/LayoutIntegrationCoverage.cpp:
(WebCore::LayoutIntegration::canUseForChild):
- rendering/RenderGeometryMap.cpp:
(WebCore::canMapBetweenRenderersViaLayers):
- rendering/RenderLayer.cpp:
(WebCore::RenderLayer::beginTransparencyLayers):
(WebCore::RenderLayer::calculateClipRects const):
- rendering/RenderLayer.h:
(WebCore::RenderLayer::canUseOffsetFromAncestor const):
- rendering/RenderObject.cpp:
(WebCore::objectIsRelayoutBoundary):
- rendering/RenderObject.h:
(WebCore::RenderObject::isLegacySVGRoot const):
(WebCore::RenderObject::isSVGRootOrLegacySVGRoot const):
- rendering/RenderReplaced.cpp:
(WebCore::hasIntrinsicSize):
- rendering/RenderView.cpp:
(WebCore::RenderView::layout):
- rendering/svg/LegacyRenderSVGRoot.h:
- rendering/svg/SVGRenderSupport.cpp:
(WebCore::layoutSizeOfNearestViewportChanged):
- rendering/svg/SVGRenderingContext.cpp:
(WebCore::SVGRenderingContext::prepareToRenderSVGContent):
(WebCore::SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem):
- rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::reportVisuallyNonEmptyContent):
- 12:13 AM Changeset in webkit [286541] by
-
- 6 edits in trunk/Source/WebCore
[LFC][Integration] Use end bits in text box iterator
https://bugs.webkit.org/show_bug.cgi?id=233858
Reviewed by Alan Bujtas.
Make text box traversal work correctly in bidi context where encountering a different
layout box does not necessarily mean there are no further text boxes for the layout box.
- layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):
(WebCore::Layout::InlineDisplayContentBuilder::computeIsFirstIsLastBoxForInlineContent):
Set the bits for all box types.
- layout/formattingContexts/inline/display/InlineDisplayBox.h:
(WebCore::InlineDisplay::Box::Box):
(WebCore::InlineDisplay::Box::isTextOrSoftLineBreak const):
(WebCore::InlineDisplay::Box::isFirstForLayoutBox const):
(WebCore::InlineDisplay::Box::isLastForLayoutBox const):
(WebCore::InlineDisplay::Box::setIsFirstForLayoutBox):
(WebCore::InlineDisplay::Box::setIsLastForLayoutBox):
(WebCore::InlineDisplay::Box::isFirstBox const): Deleted.
(WebCore::InlineDisplay::Box::isLastBox const): Deleted.
(WebCore::InlineDisplay::Box::setIsLastBox): Deleted.
(WebCore::InlineDisplay::Box::setIsFirstBox): Deleted.
Renamed for clarity and correctness.
- layout/integration/InlineIteratorBoxModernPath.h:
(WebCore::InlineIterator::BoxModernPath::isText const):
(WebCore::InlineIterator::BoxModernPath::traverseNextTextBox):
Use the isLastForLayoutBox bit to end the traversal.
(WebCore::InlineIterator::BoxModernPath::traverseNextInlineBox):
(WebCore::InlineIterator::BoxModernPath::traversePreviousInlineBox):
(WebCore::InlineIterator::BoxModernPath::traverseNextWithSameLayoutBox):
(WebCore::InlineIterator::BoxModernPath::traversePreviousWithSameLayoutBox):
Factor into helpers.
- layout/integration/InlineIteratorTextBox.h:
- 12:13 AM Changeset in webkit [286540] by
-
- 2 edits in trunk/Source/WTF
Enable NavigationPreloadManager by default
https://bugs.webkit.org/show_bug.cgi?id=233755
Reviewed by Chris Dumez.
- Scripts/Preferences/WebPreferencesExperimental.yaml:
- 12:05 AM Changeset in webkit [286539] by
-
- 3 edits in trunk/Source/ThirdParty/libwebrtc
Close WebRTC allocation sequence shared socket in case of sequence network failure
https://bugs.webkit.org/show_bug.cgi?id=233808
Reviewed by Geoffrey Garen.
- Source/webrtc/p2p/client/basic_port_allocator.cc:
- Source/webrtc/p2p/client/basic_port_allocator.h:
Dec 5, 2021:
- 9:49 PM Changeset in webkit [286538] by
-
- 59 edits1 add in trunk
[GPU Process] Add the encoding/decoding for Filter and FilterEffect
https://bugs.webkit.org/show_bug.cgi?id=232844
Reviewed by Wenson Hsieh.
Source/WebCore:
This patch adds the encoding and decoding for the FilterEffect and the
Filter objects. Because these objects have super-classes, we are going
to do the encoding and decoding through a new IPC class called
FilterReference.
The encoding and decoding of these classes will be needed in two cases:
1) DisplayList::Recorder::drawFilteredImageBuffer()
2) RemoteImageBufferProxy::filteredImage()
A few things have not be done this patch yet:
1) LightSource has not been encoded/decoded
2) FELighting classes have not been encoded/decoded
3) FEImage has not been encoded/decoded
4) SVGFilter has not been encoded/decoded
This patch does not change any behavior even if the GPU Process for DOM
rendering is enabled. The sourceImage for the filter and the filter image
need to be of type of RemoteImageBufferProxy to this code to be called.
- Headers.cmake:
- WebCore.xcodeproj/project.pbxproj:
- platform/graphics/ConcreteImageBuffer.h:
- platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::drawFilteredImageBuffer):
- platform/graphics/GraphicsContext.h:
- platform/graphics/displaylists/DisplayList.cpp:
(WebCore::DisplayList::DisplayList::append):
- platform/graphics/displaylists/DisplayListItemBuffer.cpp:
(WebCore::DisplayList::ItemHandle::apply):
(WebCore::DisplayList::ItemHandle::destroy):
(WebCore::DisplayList::ItemHandle::safeCopy const):
- platform/graphics/displaylists/DisplayListItemType.cpp:
(WebCore::DisplayList::sizeOfItemInBytes):
(WebCore::DisplayList::isDrawingItem):
(WebCore::DisplayList::isInlineItem):
- platform/graphics/displaylists/DisplayListItemType.h:
- platform/graphics/displaylists/DisplayListItems.cpp:
(WebCore::DisplayList::DrawFilteredImageBuffer::DrawFilteredImageBuffer):
(WebCore::DisplayList::DrawFilteredImageBuffer::apply const):
(WebCore::DisplayList::DrawFilteredImageBuffer::apply):
(WebCore::DisplayList::operator<<):
- platform/graphics/displaylists/DisplayListItems.h:
(WebCore::DisplayList::DrawFilteredImageBuffer::sourceImageIdentifier const):
(WebCore::DisplayList::DrawFilteredImageBuffer::sourceImageRect const):
(WebCore::DisplayList::DrawFilteredImageBuffer::globalBounds const):
(WebCore::DisplayList::DrawFilteredImageBuffer::localBounds const):
- platform/graphics/displaylists/DisplayListRecorder.cpp:
(WebCore::DisplayList::Recorder::drawFilteredImageBuffer):
- platform/graphics/displaylists/DisplayListRecorder.h:
- platform/graphics/displaylists/DisplayListRecorderImpl.cpp:
(WebCore::DisplayList::RecorderImpl::recordDrawFilteredImageBuffer):
- platform/graphics/displaylists/DisplayListRecorderImpl.h:
- platform/graphics/filters/FEBlend.h:
(WebCore::FEBlend::encode const):
(WebCore::FEBlend::decode):
- platform/graphics/filters/FEColorMatrix.h:
(WebCore::FEColorMatrix::encode const):
(WebCore::FEColorMatrix::decode):
- platform/graphics/filters/FEComponentTransfer.h:
(WebCore::ComponentTransferFunction::encode const):
(WebCore::ComponentTransferFunction::decode):
(WebCore::FEComponentTransfer::encode const):
(WebCore::FEComponentTransfer::decode):
- platform/graphics/filters/FEComposite.h:
(WebCore::FEComposite::encode const):
(WebCore::FEComposite::decode):
- platform/graphics/filters/FEConvolveMatrix.h:
(WebCore::FEConvolveMatrix::encode const):
(WebCore::FEConvolveMatrix::decode):
- platform/graphics/filters/FEDiffuseLighting.h:
(WebCore::FEDiffuseLighting::decode):
- platform/graphics/filters/FEDisplacementMap.h:
(WebCore::FEDisplacementMap::encode const):
(WebCore::FEDisplacementMap::decode):
- platform/graphics/filters/FEDropShadow.h:
(WebCore::FEDropShadow::encode const):
(WebCore::FEDropShadow::decode):
- platform/graphics/filters/FEFlood.h:
(WebCore::FEFlood::encode const):
(WebCore::FEFlood::decode):
- platform/graphics/filters/FEGaussianBlur.h:
(WebCore::FEGaussianBlur::encode const):
(WebCore::FEGaussianBlur::decode):
- platform/graphics/filters/FELighting.h:
(WebCore::FELighting::encode const):
(WebCore::FELighting::decode):
- platform/graphics/filters/FEMerge.cpp:
(WebCore::FEMerge::create):
(WebCore::FEMerge::FEMerge):
- platform/graphics/filters/FEMerge.h:
(WebCore::FEMerge::encode const):
(WebCore::FEMerge::decode):
- platform/graphics/filters/FEMorphology.h:
(WebCore::FEMorphology::encode const):
(WebCore::FEMorphology::decode):
- platform/graphics/filters/FEOffset.h:
(WebCore::FEOffset::encode const):
(WebCore::FEOffset::decode):
- platform/graphics/filters/FESpecularLighting.h:
(WebCore::FESpecularLighting::decode):
- platform/graphics/filters/FETile.h:
- platform/graphics/filters/FETurbulence.h:
(WebCore::FETurbulence::encode const):
(WebCore::FETurbulence::decode):
- platform/graphics/filters/Filter.cpp:
(WebCore::Filter::apply):
- platform/graphics/filters/Filter.h:
(WebCore::Filter::setClipOperation):
- platform/graphics/filters/SourceGraphic.h:
- rendering/CSSFilter.cpp:
(WebCore::CSSFilter::create):
(WebCore::CSSFilter::CSSFilter):
- rendering/CSSFilter.h:
- rendering/RenderLayerFilters.cpp:
(WebCore::RenderLayerFilters::applyFilterEffect):
- rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::postApplyResource):
- svg/SVGFEMergeElement.cpp:
(WebCore::SVGFEMergeElement::build const):
Source/WebKit:
- GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
(WebKit::RemoteDisplayListRecorder::drawFilteredImageBuffer):
- GPUProcess/graphics/RemoteDisplayListRecorder.h:
- GPUProcess/graphics/RemoteDisplayListRecorder.messages.in:
- GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::getFilteredImageForImageBuffer):
- GPUProcess/graphics/RemoteRenderingBackend.h:
- GPUProcess/graphics/RemoteRenderingBackend.messages.in:
- Platform/IPC/FilterReference.h: Added.
(IPC::FilterReference::FilterReference):
(IPC::FilterReference::takeFilter):
(IPC::FilterReference::encodeFilterEffect):
(IPC::FilterReference::decodeFilterEffect):
(IPC::FilterReference::encodeSVGFilter):
(IPC::FilterReference::decodeSVGFilter):
(IPC::FilterReference::encodeCSSFilter):
(IPC::FilterReference::decodeCSSFilter):
(IPC::FilterReference::encodeFilter):
(IPC::FilterReference::decodeFilter):
(IPC::FilterReference::encode const):
(IPC::FilterReference::decode):
- Scripts/webkit/messages.py:
(types_that_cannot_be_forward_declared):
- WebKit.xcodeproj/project.pbxproj:
- WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
(WebKit::RemoteDisplayListRecorderProxy::recordDrawFilteredImageBuffer):
- WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:
- WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
- WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::getFilteredImage):
- WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
Tools:
- TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp:
- TestWebKitAPI/Tests/WebCore/cg/DisplayListTestsCG.cpp:
- 8:40 PM Changeset in webkit [286537] by
-
- 6 edits in trunk
Add trace points for generated momentum events
https://bugs.webkit.org/show_bug.cgi?id=233857
Reviewed by Tim Horton.
Source/WebKit:
Add start/end points for synthetic momentum, and a trace point for each generated event.
- WebProcess/WebPage/MomentumEventDispatcher.cpp:
(WebKit::MomentumEventDispatcher::dispatchSyntheticMomentumEvent):
(WebKit::MomentumEventDispatcher::didStartMomentumPhase):
(WebKit::MomentumEventDispatcher::didEndMomentumPhase):
Source/WTF:
- wtf/SystemTracing.h:
Tools:
Add start/end points for synthetic momentum, and a trace point for each generated event.
- Tracing/SystemTracePoints.plist:
Dec 4, 2021:
- 8:14 PM Changeset in webkit [286536] by
-
- 3 edits in trunk/Tools
Change WTR::AccessibilityUIElement::descriptionOfValue(id) to return a RetainPtr.
https://bugs.webkit.org/show_bug.cgi?id=233815
<rdar://problem/86019373>
Reviewed by Chris Fleizach.
This fixes several tests in isolated tree mode, in particular:
accessibility/mac/focus-crash.html
accessibility/mac/search-predicate.html
- WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
- WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
(WTR::AccessibilityUIElement::descriptionOfValue const):
(WTR::AccessibilityUIElement::allAttributes):
(WTR::AccessibilityUIElement::stringDescriptionOfAttributeValue):
(WTR::AccessibilityUIElement::role):
(WTR::AccessibilityUIElement::subrole):
(WTR::AccessibilityUIElement::roleDescription):
(WTR::AccessibilityUIElement::computedRoleString):
(WTR::AccessibilityUIElement::title):
(WTR::AccessibilityUIElement::description):
(WTR::AccessibilityUIElement::orientation const):
(WTR::AccessibilityUIElement::stringValue):
(WTR::AccessibilityUIElement::language):
(WTR::AccessibilityUIElement::helpText const):
(WTR::AccessibilityUIElement::embeddedImageDescription const):
- 7:51 PM Changeset in webkit [286535] by
-
- 9 edits in trunk
Rename DerivedSources/WebKit2 to DerivedSources/WebKit
https://bugs.webkit.org/show_bug.cgi?id=233803
Reviewed by Tim Horton.
Mechanical rename.
No new tests because there is no behavior change.
- Configurations/BaseTarget.xcconfig:
- DerivedSources-output.xcfilelist:
- PlatformGTK.cmake:
- Scripts/generate-derived-sources.sh:
- Scripts/generate-unified-sources.sh:
- UnifiedSources-output.xcfilelist:
- WebKit.xcodeproj/project.pbxproj:
- 8:51 AM Changeset in webkit [286534] by
-
- 5 edits in trunk/Source/WebCore
[LFC][IFC] Compute isFirstBox/isLastBox for text content
https://bugs.webkit.org/show_bug.cgi?id=233850
Reviewed by Antti Koivisto.
This is in preparation for helping the iterator interface to compute renderer (layout box) boundaries for text content.
- layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::appendTextDisplayBox):
(WebCore::Layout::InlineDisplayContentBuilder::computeIsFirstIsLastBoxForInlineContent):
- layout/formattingContexts/inline/InlineDisplayContentBuilder.h:
- layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::lineLayoutForIntergration):
- layout/formattingContexts/inline/display/InlineDisplayBox.h:
(WebCore::InlineDisplay::Box::setIsFirstBox):
- 8:08 AM Changeset in webkit [286533] by
-
- 2 edits7 adds in trunk/Source/WebKit
Add command line
webpushtool
for daemon development and debugging.
https://bugs.webkit.org/show_bug.cgi?id=233845
Reviewed by Tim Horton.
No behavior change.
This utility will eventually be quite fleshed out.
For now, it can act as a terminal that prints debug messages from webpushd.
- Configurations/webpushtool.xcconfig: Added.
- Resources/webpushtool.entitlements: Added.
- WebKit.xcodeproj/project.pbxproj:
- WebKit.xcodeproj/xcshareddata/xcschemes/webpushtool.xcscheme: Added.
- webpushd/webpushtool/WebPushToolConnection.h: Added.
- webpushd/webpushtool/WebPushToolConnection.mm: Added.
(WebPushTool::Connection::create):
(WebPushTool::maybeConnectToService):
(WebPushTool::Connection::Connection):
(WebPushTool::Connection::connectToService):
(WebPushTool::Connection::startAction):
(WebPushTool::Connection::startDebugStreamAction):
(WebPushTool::Connection::sendAuditToken):
(WebPushTool::Connection::connectionDropped):
(WebPushTool::Connection::messageReceived):
- webpushd/webpushtool/WebPushToolMain.mm: Added.
(printUsageAndTerminate):
(main):
- 7:28 AM Changeset in webkit [286532] by
-
- 5 edits2 adds in trunk
CSS animation sorting may crash due to AnimationList copy upon CSS Animation removal
https://bugs.webkit.org/show_bug.cgi?id=233819
rdar://85596065
Reviewed by Dean Jackson and Darin Adler.
Source/WebCore:
Test: webanimations/css-animation-sorting-crash-2.html
When resolving animations during style resolution, we sort them to ensure they're in the right
composite order as defined by the Web Animations and related specifications, in this case the
CSS Animations specification defining how CSS Animations set on a given element are sorted.
Indeed, a given element may have multiple animations specified on it, and in fact it may have
multiple instances of the same animation. For instance, settinganimation-name: anim, anim, anim
would create three separate CSS Animations all with the same keyframes and timing properties.
The CSS machinery within WebKit creates an AnimationList to reference the animations parsed from
CSS. Each animation is an Animation object. These Animation objects are ref-counted.
When we update animations, using Styleable::updateCSSAnimations(), we compare the current AnimationList
for this style resolution, with the previous AnimationList specified when this method was last called
for this element. The outcome of this comparison will yield new CSSAnimation objects, the removal of
such objects or the update of existing objects by setting the Animation object as its "backing animation".
When we're done we keep a reference to the current AnimationList on the element's KeyframeEffectStack.
Later, when we resolve animations during style resolution and we get to sort the animations, we will
use the AnimationList which contains the Animation objects in the order they were specified in the
animation-list
property to establish the order in which the CSSAnimation objects should be ordered
relative to one another, based on their "backing animation" which must be an Animation object found
in the AnimationList.
If we fail to find matching Animation objects, we crash due to a call to RELEASE_ASSERT_NOT_REACHED()
in compareCSSAnimations(const CSSAnimation&, const CSSAnimation&).
So, why would we ever get in a situation where we reach this RELEASE_ASSERT_NOT_REACHED? Well, there is
a situation where we manipulate the AnimationList set on the KeyframeEffectStack in Styleable::updateCSSAnimations().
That case is when Styleable::cancelDeclarativeAnimations() is called, and we call the static function
removeCSSAnimationCreatedByMarkup(). In this function, we actually make a copy of the previously recorded
AnimationList because that list isconst
so we can't manipulate it directly. To make this copy we call
AnimationList::copy() which creates a new AnimationList object, which itself is not the issue, but also
makes copies of each Animation object within. Now, that's the problem, because at this point our pointer
comparisons in compareCSSAnimations() will fail since the Animation objects we recorded in
Styleable::updateCSSAnimations() will no longer be the same instances as those in the manipulated AnimationList.
To fix this, we add a new AnimationList::shallowCopy() method to specify whether we want clones or references
of the Animation members, and when calling removeCSSAnimationCreatedByMarkup(), we use this new method such
that we get references and not clones. This ensures that removing an animation from the list will indeed
create a new AnimationList, but the two lists will have references to the same Animation objects.
- platform/animation/AnimationList.cpp:
(WebCore::AnimationList::AnimationList):
- platform/animation/AnimationList.h:
(WebCore::AnimationList::copy const):
(WebCore::AnimationList::shallowCopy const):
- style/Styleable.cpp:
(WebCore::removeCSSAnimationCreatedByMarkup):
LayoutTests:
Add a test that used to crash before this patch.
- webanimations/css-animation-sorting-crash-2-expected.txt: Added.
- webanimations/css-animation-sorting-crash-2.html: Added.
- 7:24 AM Changeset in webkit [286531] by
-
- 4 edits2 adds in trunk
Fix parentNode in CompositeEditCommand::splitTreeToNode
https://bugs.webkit.org/show_bug.cgi?id=230710
Patch by Rob Buis <rbuis@igalia.com> on 2021-12-04
Reviewed by Ryosuke Niwa.
Source/WebCore:
Fix parentNode handling in CompositeEditCommand::splitTreeToNode and
also a few more IndentOutdentCommand methods to support the test case.
Test: editing/execCommand/outdent-cut-crash.html
- editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::moveParagraphs):
- editing/IndentOutdentCommand.cpp:
(WebCore::IndentOutdentCommand::indentIntoBlockquote): do not call positionInParentAfterNode
if insertNodeBefore failed.
(WebCore::IndentOutdentCommand::outdentParagraph): need to check for null positions
before calling moveParagraphs.
LayoutTests:
- editing/execCommand/outdent-cut-crash-expected.txt: Added.
- editing/execCommand/outdent-cut-crash.html: Added.
- 7:22 AM Changeset in webkit [286530] by
-
- 7 edits in trunk/LayoutTests
AX: Make ellipsis-text.html, aria-roledescription.html, and aria-switch-checked.html pass in isolated tree mode
https://bugs.webkit.org/show_bug.cgi?id=233790
Reviewed by Chris Fleizach.
- accessibility/aria-roledescription-expected.txt:
- accessibility/aria-roledescription.html:
- accessibility/aria-switch-checked-expected.txt:
- accessibility/aria-switch-checked.html:
Make these tests async. They must be made async to pass in
isolated tree mode as they dynamically change page content using JS.
- accessibility/ellipsis-text.html:
Make this test isolated-tree-friendly by selecting elements with accessibleElementById instead
document.getElementById("id").focus()
andaccessibilityController.focusedElement
- platform/glib/accessibility/aria-roledescription-expected.txt:
Update platform-specfic expectation for the new version of this test.
- 5:52 AM Changeset in webkit [286529] by
-
- 2 edits in trunk/Source/WebCore
[LFC][IFC] Set BoxGeometry for bidi inline boxes
https://bugs.webkit.org/show_bug.cgi?id=233616
Reviewed by Antti Koivisto.
In this patch we compute the BoxGeometry values for the bidi inline boxes.
BoxGeometry is mostly used for boundingClientRect/offsetWidth(left etc).
- layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):
- 1:13 AM Changeset in webkit [286528] by
-
- 12 edits in trunk/Source/WebCore
Prepare for SharedWorker implementation
https://bugs.webkit.org/show_bug.cgi?id=233848
Patch by Alex Christensen <achristensen@webkit.org> on 2021-12-04
Reviewed by Chris Dumez.
This splits off the parts of bug 230382 that don't change behavior.
- workers/AbstractWorker.cpp:
(WebCore::AbstractWorker::workerFetchOptions):
- workers/AbstractWorker.h:
- workers/DedicatedWorkerThread.h:
- workers/Worker.cpp:
(WebCore::Worker::Worker):
(WebCore::Worker::create):
(WebCore::Worker::notifyFinished):
- workers/Worker.h:
- workers/WorkerOptions.h:
- workers/WorkerOrWorkletScriptController.cpp:
- workers/WorkerOrWorkletScriptController.h:
- workers/WorkerThread.cpp:
(WebCore::WorkerThread::createThread):
- workers/WorkerThread.h:
(WebCore::WorkerThread::isServiceWorkerThread const): Deleted.
- workers/service/context/ServiceWorkerThread.h:
- 12:28 AM Changeset in webkit [286527] by
-
- 3 edits in trunk/Source/WebKit
[Cocoa] Launch Captive Portal WebContent process when requested
https://bugs.webkit.org/show_bug.cgi?id=233824
<rdar://problem/86023898>
Reviewed by Darin Adler.
When the WebKit client requests a Captive Portal process, launch the dedicated XPC service
with Captive Portal entitlements.
- UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm:
(WebKit::webContentServiceName): New helper function.
(WebKit::serviceName): Update to use new helper.
(WebKit::ProcessLauncher::launchProcess): Log errors when launching.
- WebKit.xcodeproj/project.pbxproj: Include the CaptivePortal xpc service when creating
development symlinks.
Dec 3, 2021:
- 10:12 PM Changeset in webkit [286526] by
-
- 13 edits in trunk
[GPU Process] (REGRESSION r285597): Fix SVGFilter clamping calculation
https://bugs.webkit.org/show_bug.cgi?id=233843
Reviewed by Simon Fraser.
Source/WebCore:
In this patch:
- lastEffect() is made virtual function of Filter and it's already implemented as non-virtual function in both CSSFilter and SVGFilter.
- The clamping calculations for SVGFilter and CSSFilter are merged in one function called Filter::clampFilterRegionIfNeeded(). This merge makes the new function is the only caller to FilterEffect::maxEffectRect().
- Remove FilterEffect::maxEffectRect() . It can be calculated by clipping the FilterEffect::filterPrimitiveSubregion() to filterRegion() and then scaling the result by filterScale().
- In RenderSVGResourceFilter::applyResource() we need to pass the non- scaled drawingRegion to ImageBuffer::sizeNeedsClamping() because this function starts by scaling the argument 'size' by the argument 'scale'. So we were doubling the scaling by passing 'absoluteDrawingRegion'
- SVGRenderingContext::createImageBuffer() needs to use ImageBuffer:: sizeNeedsClamping() instead of using ImageBuffer::clampedSize(). The former function clamps the size to the MaxClampedArea. But the later function shrinks the size to { MaxClampedLength, MaxClampedLength }.
- When calling createImageBuffer() from RenderSVGResourceFilter
- applyResource() we do not expect any further clamping. But if we pass a size with a side greater than MaxClampedLength to clampedSize(), it will be clamped even if the area is less than MaxClampedArea. And for filters we clamp to the area.
- platform/graphics/filters/Filter.cpp:
(WebCore::Filter::clampFilterRegionIfNeeded):
- platform/graphics/filters/Filter.h:
- platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::determineFilterPrimitiveSubregion):
(WebCore::FilterEffect::apply):
- platform/graphics/filters/FilterEffect.h:
(WebCore::FilterEffect::maxEffectRect const): Deleted.
(WebCore::FilterEffect::setMaxEffectRect): Deleted.
- rendering/CSSFilter.cpp:
(WebCore::CSSFilter::lastEffect const):
(WebCore::CSSFilter::lastEffect): Deleted.
(WebCore::CSSFilter::determineFilterPrimitiveSubregion): Deleted.
- rendering/CSSFilter.h:
- rendering/RenderLayerFilters.cpp:
(WebCore::RenderLayerFilters::beginFilterEffect):
- rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::applyResource):
- rendering/svg/SVGRenderingContext.cpp:
(WebCore::SVGRenderingContext::createImageBuffer):
- svg/graphics/filters/SVGFilter.h:
LayoutTests:
Unskip two layout tests which were skipped in r285597.
- 7:30 PM Changeset in webkit [286525] by
-
- 3 edits in trunk/LayoutTests
[GLIB] Gardening some consistent timeouts
Unreviewed test gardening.
- platform/glib/TestExpectations:
- platform/wpe/TestExpectations:
- 7:08 PM Changeset in webkit [286524] by
-
- 1 copy in tags/Safari-612.4.2
Tag Safari-612.4.2.
- 7:05 PM Changeset in webkit [286523] by
-
- 8 edits in branches/safari-612-branch/Source
Versioning.
WebKit-7612.4.2
- 5:35 PM Changeset in webkit [286522] by
-
- 4 edits in trunk
[iOS] Web content process sometimes crashes under WebPage::positionInformation()
https://bugs.webkit.org/show_bug.cgi?id=233841
rdar://85917212
Reviewed by Geoffrey Garen.
Source/WebKit:
Add a missing null check in the case where the hit-tested node is null in
WebPage::positionInformation
. This
can happen in a number of ways (one of which is exercised by the new API test).
Test: ImageAnalysisTests.DoNotCrashWhenHitTestingOutsideOfWebView
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::positionInformation):
Tools:
Add a test that exercises hit-testing for Live Text, but induces this crash by hit-testing outside of the bounds
of the web view (such that the hit-tested node ends up as null).
- TestWebKitAPI/Tests/WebKitCocoa/ImageAnalysisTests.mm:
(TestWebKitAPI::swizzledLocationInView):
(TestWebKitAPI::TEST):
- 5:14 PM Changeset in webkit [286521] by
-
- 1 copy in tags/Safari-612.4.1
Tag Safari-612.4.1.
- 4:09 PM Changeset in webkit [286520] by
-
- 2 edits in trunk/Source/WebCore
Add BroadcastChannel, COOP, COEP and Web Locks to features.json
https://bugs.webkit.org/show_bug.cgi?id=233839
Reviewed by Alex Christensen.
- features.json:
- 4:02 PM Changeset in webkit [286519] by
-
- 24 edits in trunk
PCM: Unlinkable tokens for triggering event to prevent fraud
https://bugs.webkit.org/show_bug.cgi?id=233673
<rdar://79426347>
Reviewed by Alex Christensen.
Source/WebCore:
This patch allows triggering events to have an optional query parameter like this:
https://destination.example/.well-known/private-click-measurement/trigger-attribution/11?attributionDestinationNonce=ABCDEFabcdef0123456789
The presence of an attributionDestinationNonce triggers PrivateClickMeasurementManager to
ask the server to sign an unlinkable token for the triggering event and then stores the
corresponding secret token plus the signature for later inclusion in the attribution report.
The WebCore changes introduce these new structs and data fields in
WebCore::PrivateClickMeasurement:
- EphemeralDestinationNonce
- UnlinkableToken (base class for the specific ones for source and destination)
- SourceUnlinkableToken
- DestinationUnlinkableToken
- SecretToken (base class for the specific ones for source and destination)
- SourceSecretToken
- DestinationSecretToken
WebCore::PrivateClickMeasurement::AttributionTriggerData now has these optional fields:
- ephemeralDestinationNonce
- destinationUnlinkableToken
- destinationSecretToken
- destinationSite
The remaining changes are setters/getters and creator functions for those data fields.
New API/unit test PrivateClickMeasurement.DestinationClickFraudPrevention.
- html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::parsePrivateClickMeasurement const):
- loader/PrivateClickMeasurement.cpp:
(WebCore::PrivateClickMeasurement::SecretToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::SourceSecretToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::DestinationSecretToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::EphemeralNonce::isolatedCopy const):
(WebCore::PrivateClickMeasurement::UnlinkableToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::SourceUnlinkableToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::DestinationUnlinkableToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::parseAttributionRequestQuery):
(WebCore::PrivateClickMeasurement::parseAttributionRequest):
(WebCore::PrivateClickMeasurement::attributionReportJSON const):
(WebCore::PrivateClickMeasurement::EphemeralNonce::isValid const):
(WebCore::PrivateClickMeasurement::setEphemeralSourceNonce):
(WebCore::PrivateClickMeasurement::tokenPublicKeyURL):
(WebCore::PrivateClickMeasurement::tokenPublicKeyURL const):
(WebCore::PrivateClickMeasurement::tokenSignatureURL):
(WebCore::PrivateClickMeasurement::tokenSignatureURL const):
(WebCore::PrivateClickMeasurement::AttributionTriggerData::tokenSignatureJSON const):
(WebCore::PrivateClickMeasurement::SecretToken::isValid const):
(WebCore::PrivateClickMeasurement::setDestinationSecretToken):
(WebCore::PrivateClickMeasurement::EphemeralSourceNonce::isolatedCopy const): Deleted.
(WebCore::PrivateClickMeasurement::EphemeralSourceNonce::isValid const): Deleted.
(WebCore::PrivateClickMeasurement::SourceSecretToken::isValid const): Deleted.
- loader/PrivateClickMeasurement.h:
(WebCore::PrivateClickMeasurement::AttributionTriggerData::AttributionTriggerData):
(WebCore::PrivateClickMeasurement::AttributionTriggerData::setDestinationUnlinkableTokenValue):
(WebCore::PrivateClickMeasurement::AttributionTriggerData::setDestinationSecretToken):
(WebCore::PrivateClickMeasurement::AttributionTriggerData::tokenPublicKeyURL const):
(WebCore::PrivateClickMeasurement::AttributionTriggerData::tokenSignatureURL const):
(WebCore::PrivateClickMeasurement::ephemeralSourceNonce const):
(WebCore::PrivateClickMeasurement::sourceUnlinkableToken):
(WebCore::PrivateClickMeasurement::decode):
(WebCore::PrivateClickMeasurement::EphemeralNonce::encode const):
(WebCore::PrivateClickMeasurement::EphemeralNonce::decode):
(WebCore::PrivateClickMeasurement::AttributionTriggerData::encode const):
(WebCore::PrivateClickMeasurement::AttributionTriggerData::decode):
(WebCore::PrivateClickMeasurement::EphemeralSourceNonce::encode const): Deleted.
(WebCore::PrivateClickMeasurement::EphemeralSourceNonce::decode): Deleted.
- loader/cocoa/PrivateClickMeasurementCocoa.mm:
(WebCore::PrivateClickMeasurement::calculateAndUpdateSourceUnlinkableToken):
(WebCore::PrivateClickMeasurement::calculateAndUpdateDestinationUnlinkableToken):
(WebCore::PrivateClickMeasurement::calculateAndUpdateUnlinkableToken):
(WebCore::PrivateClickMeasurement::calculateAndUpdateSourceSecretToken):
(WebCore::PrivateClickMeasurement::calculateAndUpdateDestinationSecretToken):
(WebCore::PrivateClickMeasurement::calculateAndUpdateSecretToken):
Source/WebKit:
This patch allows triggering events to have an optional query parameter like this:
https://destination.example/.well-known/private-click-measurement/trigger-attribution/11?attributionDestinationNonce=ABCDEFabcdef0123456789
The presence of an attributionDestinationNonce triggers PrivateClickMeasurementManager to
ask the server to sign an unlinkable token for the triggering event and then stores the
corresponding secret token plus the signature for later inclusion in the attribution report.
New API/unit test PrivateClickMeasurement.DestinationClickFraudPrevention.
- NetworkProcess/DatabaseUtilities.cpp:
(WebKit::DatabaseUtilities::buildPrivateClickMeasurementFromDatabase const):
Now handles destination tokens.
- NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::willSendRedirectedRequest):
Now sets destinationSite in WebCore::PrivateClickMeasurement::AttributionTriggerData.
- NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp:
(WebKit::PCM::Database::Database):
Now calls addDestinationTokenColumnsIfNecessary().
(WebKit::PCM::Database::insertPrivateClickMeasurement):
Now does insertion of optional destination tokens.
(WebKit::PCM::Database::addDestinationTokenColumnsIfNecessary):
Database migration.
(WebKit::PCM::Database::addBundleIDColumnIfNecessary): Deleted.
Temporary migration function for non-customer builds. No longer needed.
- NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.h:
- NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp:
(WebKit::PrivateClickMeasurementManager::storeUnattributed):
Just name changes.
(WebKit::PrivateClickMeasurementManager::getTokenPublicKey):
Not changed afaik. Seems like the diff is confused.
(WebKit::PrivateClickMeasurementManager::configureForTokenSigning):
New function to extract shared code.
(WebKit::PrivateClickMeasurementManager::getSignatureBase64URLFromTokenSignatureResponse):
New function to extract shared code.
(WebKit::PrivateClickMeasurementManager::getSignedUnlinkableTokenForSource):
Renamed to add "ForSource" and all shared code extracted.
(WebKit::PrivateClickMeasurementManager::getSignedUnlinkableTokenForDestination):
Different than for the source in that it results in an attribution call.
(PrivateClickMeasurementManager::handleAttribution):
Now does signing of destination token if the optional nonce is in the triggering event.
(PrivateClickMeasurementManager::fireConversionRequest):
(WebKit::PrivateClickMeasurementManager::setPCMFraudPreventionValuesForTesting):
Added empty initializer strings for the destination test token values not in use yet.
(WebKit::PrivateClickMeasurementManager::getSignedUnlinkableToken): Deleted.
Renamed PrivateClickMeasurementManager::getSignedUnlinkableTokenForSource().
- NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.h:
Tools:
New test PrivateClickMeasurement.DestinationClickFraudPrevention.
The other changes are a report version bump 2->3 and a name change
FraudPrevention–>SourceClickFraudPrevention.
- TestWebKitAPI/Tests/WebCore/PrivateClickMeasurement.cpp:
(TestWebKitAPI::TEST):
- TestWebKitAPI/Tests/WebCore/cocoa/PrivateClickMeasurementCocoa.mm:
(TestWebKitAPI::TEST):
- TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm:
(TestWebKitAPI::runBasicPCMTest):
(TestWebKitAPI::triggerAttributionWithSubresourceRedirect):
Extracted shared code.
(TestWebKitAPI::runDestinationWebView):
Extracted shared code.
(TestWebKitAPI::signUnlinkableTokenAndSendSecretToken):
Extracted shared code.
(TestWebKitAPI::TEST):
New test PrivateClickMeasurement.DestinationClickFraudPrevention.
Extracted shared code from PrivateClickMeasurement.SourceClickFraudPrevention.
LayoutTests:
These changes are a report version bump 2->3.
- http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive-expected.txt:
- http/tests/privateClickMeasurement/expired-attribution-report-gets-sent-on-session-start-expected.txt:
- http/tests/privateClickMeasurement/multiple-app-bundle-ids-expected.txt:
- http/tests/privateClickMeasurement/send-attribution-conversion-request-expected.txt:
- http/tests/privateClickMeasurement/store-private-click-measurement-with-source-nonce-expected.txt:
- http/tests/privateClickMeasurement/triggering-event-with-attribution-source-through-fetch-keepalive-expected.txt:
- platform/ios/http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive-expected.txt:
- 3:42 PM Changeset in webkit [286518] by
-
- 4 edits in trunk/Source/WebCore
[LFC][IFC] Move the (bidi)display boxes horizontally by the inline box margin, border and padding end as needed
https://bugs.webkit.org/show_bug.cgi?id=233744
Reviewed by Antti Koivisto.
Keep track of the inline box range in the context of display boxes so that we can adjust the content horizontally
with the margin/border/padding end of the "last" inline box.
We also set the width of the (fragmented inline box type of) display boxes here based on their content right position.
- layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):
- layout/formattingContexts/inline/display/InlineDisplayBox.h:
(WebCore::InlineDisplay::Box::setLogicalRight):
- layout/layouttree/LayoutBoxGeometry.h:
(WebCore::Layout::BoxGeometry::borderAndPaddingEnd const):
- 3:21 PM Changeset in webkit [286517] by
-
- 3 edits in trunk/Source/WebKit
Fix playstation build after r286484
https://bugs.webkit.org/show_bug.cgi?id=233823
unreviewed build fix.
Patch by ujwal koneru <ujwal.koneru@sony.com> on 2021-12-03
- UIProcess/playstation/WebProcessPoolPlayStation.cpp:
(WebKit::WebProcessPool::platformInitializeWebProcess):
- WebProcess/playstation/WebProcessPlayStation.cpp:
(WebKit::WebProcess::platformInitializeWebProcess):
- 2:48 PM Changeset in webkit [286516] by
-
- 5 edits1 add in trunk/Source/bmalloc
[libpas] Bitfit allocator has a wrong assertion when a page's max_free is enough for the size of an allocation, not enough for that allocation's size class, and the object of that size is not aligned to the currently requested alignment
https://bugs.webkit.org/show_bug.cgi?id=233831
Reviewed by Yusuke Suzuki.
What a combination of conditions:
- We just failed bitfit allocation in a page, which gives us some max_free (aka largest_available), and the allocation had nontrivial alignment.
- The max_free is smaller than the size class.
- The max_free is larger than the requested size.
- The max_free object is not aligned to the requested alignment.
The code handles this fine, but has a wrong assertion about it.
This change fixes the assertion and adds a test that deterministically reproduced the issue.
- libpas/libpas.xcodeproj/project.pbxproj:
- libpas/src/libpas/pas_bitfit_allocator.c:
(pas_bitfit_allocator_finish_failing):
- libpas/src/libpas/pas_bitfit_allocator_inlines.h:
(pas_bitfit_allocator_try_allocate):
- libpas/src/test/BitfitTests.cpp: Added.
(std::getBitfitSizeClasses):
(std::assertSizeClasses):
(std::testAllocateAlignedSmallerThanSizeClassAndSmallerThanLargestAvailable):
(addBitfitTests):
- libpas/src/test/TestHarness.cpp:
(main):
- 1:58 PM Changeset in webkit [286515] by
-
- 1 copy in tags/Safari-613.1.10
Tag Safari-613.1.10.
- 1:46 PM Changeset in webkit [286514] by
-
- 2 edits in trunk/Source/WTF
[WK2] Turn on Web Locks API support
https://bugs.webkit.org/show_bug.cgi?id=233816
Reviewed by Darin Adler.
- Scripts/Preferences/WebPreferencesExperimental.yaml:
- 1:14 PM Changeset in webkit [286513] by
-
- 2 edits in trunk/Source/WebKit
Fix the build
- NetworkProcess/storage/NetworkStorageManager.cpp:
- 1:10 PM Changeset in webkit [286512] by
-
- 4 edits in trunk/Source/WebKit
Add more logging for MomentumEventDispatcher
https://bugs.webkit.org/show_bug.cgi?id=233811
Reviewed by Simon Fraser.
Add a temporary event log to MomentumEventDispatcher, to debug delta/offset/curve issues.
- WebProcess/WebPage/EventDispatcher.h:
(WebKit::EventDispatcher::queue):
- WebProcess/WebPage/MomentumEventDispatcher.cpp:
(WebKit::MomentumEventDispatcher::handleWheelEvent):
Accumulate event deltas. Also accumulate event deltas for the
fingers-down phase in the "generated" offset. Store the phase and
momentum phase smooshed into a single field.
(WebKit::MomentumEventDispatcher::dispatchSyntheticMomentumEvent):
Accumulate generated deltas.
(WebKit::MomentumEventDispatcher::didEndMomentumPhase):
Attempt to dump the log 1 second after each momentum phase. We'll skip
it if another scroll has started since.
(WebKit::MomentumEventDispatcher::setScrollingAccelerationCurve):
(WebKit::MomentumEventDispatcher::startDisplayLink):
(WebKit::MomentumEventDispatcher::stopDisplayLink):
(WebKit::MomentumEventDispatcher::consumeDeltaForCurrentTime):
(WebKit::MomentumEventDispatcher::buildOffsetTableWithInitialDelta):
(WebKit::MomentumEventDispatcher::computeNextDelta):
Adopt more MOMENTUM_EVENT_DISPATCHER_TEMPORARY_LOGGING. Error logging
we leave outside of this, because that we'll keep around.
(WebKit::MomentumEventDispatcher::pushLogEntry):
(WebKit::MomentumEventDispatcher::flushLog):
Dump the event log in an easy-to-copy-into-a-CSV format.
- WebProcess/WebPage/MomentumEventDispatcher.h:
- 12:37 PM Changeset in webkit [286511] by
-
- 2 edits in trunk/Source/WebCore
Fix internal Apple builds
Unreviewed.
Turns out -weak_framework works if the framework isn't present at runtime, but
still requires the framework to be present at build time.
No new tests because there is no behavior change.
- Configurations/WebCore.xcconfig:
- 12:29 PM Changeset in webkit [286510] by
-
- 11 edits in branches/safari-612-branch
Cherry-pick r286505. rdar://problem/85918531
Follow-up to r286479 to add API test and address issues found by the test
https://bugs.webkit.org/show_bug.cgi?id=233798
Reviewed by Darin Adler.
Source/WebKit:
Add functionality needed for API testing and fix issues found by the API test.
- UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
- UIProcess/API/Cocoa/WKWebViewTesting.mm: (-[WKWebView _isLayerTreeFrozenForTesting:]):
- UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::destroyProvisionalPage): (WebKit::WebPageProxy::isLayerTreeFrozen):
- UIProcess/WebPageProxy.h:
- WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::isLayerTreeFrozen):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in: Add new SPI to check if the layer tree is frozen in the WebProcess so that I could write an API test for this.
- UIProcess/ProvisionalPageProxy.cpp: (WebKit::ProvisionalPageProxy::ProvisionalPageProxy): Make sure m_provisionalLoadURL gets initialized when the ProvisionalPageProxy gets constructed *after* the provisional load has already started (which is the case when the process swap is triggered by COOP).
(WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
If the provisional load load fails in the provisional process, and the ProvisionalPageProxy
was constructed on resource response (COOP case), then no longer forward the
didFailProvisionalLoadForFrame() to the WebPageProxy. Instead, we destroy the
ProvisionalPageProxy. This is to avoid duplicate calls to didFailProvisionalLoadForFrame().
In this case, there is still a provisional load ongoing in the committed process and the
ProvisionalPageProxy destructor will take care of stopping that provisional load (due to
r286479), which will cause the committed process to send its own
didFailProvisionalLoadForFrame IPC.
Tools:
Add API test coverage.
- TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@286505 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 12:29 PM Changeset in webkit [286509] by
-
- 4 edits in branches/safari-612-branch/Source/WebKit
Cherry-pick r286479. rdar://problem/85918531
Regression(r283179) Google Drive freezes after downloading a folder
https://bugs.webkit.org/show_bug.cgi?id=233783
<rdar://85918531>
Reviewed by Darin Adler.
When process-swapping on a navigation response due to COOP, we create a new ProvisionalPageProxy
to trigger a provisional load in a new WebProcess. In the common case, the ProvisionalPageProxy
gets committed, we process-swap and everything works fine. However, if the client decides to
convert the navigation into a download (like in the Google Drive case), then the
ProvisionalPageProxy gets destroyed without being committed. The issue is that the committed
process still thinks at this point that it is in the middle of a navigation and its layer
tree is thus frozen with reason=PageTransition. This is what makes Google Drive look frozen
after the download. This is not an issue with PSON because the process-swap happens in
decidePolicyForNavigationAction() and we tell the previous process to ignore the navigation
when we process-swap.
To address the issue, we now tell the committed process to cancel its navigation if the
ProvisionalPageProxy ends up getting destroyed without being committed. This lets the
committed process know there is no point in waiting for this navigation to happen and allows
it to unfreeze its layer tree.
- UIProcess/ProvisionalPageProxy.cpp: (WebKit::ProvisionalPageProxy::ProvisionalPageProxy): (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
- UIProcess/ProvisionalPageProxy.h: (WebKit::ProvisionalPageProxy::isProcessSwappingOnNavigationResponse const): (WebKit::ProvisionalPageProxy::shouldClosePreviousPageAfterCommit const): Deleted.
- UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::commitProvisionalPage): (WebKit::WebPageProxy::continueNavigationInNewProcess):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@286479 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 12:23 PM Changeset in webkit [286508] by
-
- 6 edits in trunk/Source/WebKit
Unreviewed, reverting r286487.
Broke multiple builds.
Reverted changeset:
"Rename DerivedSources/WebKit2 to DerivedSources/WebKit"
https://bugs.webkit.org/show_bug.cgi?id=233803
https://commits.webkit.org/r286487
- 12:17 PM Changeset in webkit [286507] by
-
- 29 edits1 add in trunk
Fetch and remove file system data via WKWebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=233567
Reviewed by Youenn Fablet.
Source/WebCore:
- Modules/filesystemaccess/FileSystemStorageConnection.h:
Source/WebKit:
Introduce a new WebsiteDataType value FileSystem for FileSystemAccess data. Network process now can fetch and
delete this type of data when fetching and deleteing website data (if FileSystem type is included in target
types).
To track origins that have FileSystem data, this patch introduces a new file named origin in the origin's
directory. This file will be created when OriginStorageManager is created.
To delete existing FileSystem data, network process finds origins that are requested to be deleted and have data
on disk, closes active access handles, and deletes the files. The origin file mentioned above will be deleted if
there is no other file left in the same directory, and empty directories will be deleted.
New API tests: FileSystemAccess.FetchAndRemoveData
FileSystemAccess.RemoveDataByModificationTime
FileSystemAccess.FetchDataForThirdParty
- CMakeLists.txt:
- DerivedSources-input.xcfilelist:
- DerivedSources-output.xcfilelist:
- DerivedSources.make:
- NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::monitoredDataTypes):
- NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::fetchWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains):
(WebKit::NetworkProcess::registrableDomainsWithWebsiteData):
- NetworkProcess/storage/FileSystemStorageHandle.h:
(WebKit::FileSystemStorageHandle::activeSyncAccessHandle const):
- NetworkProcess/storage/FileSystemStorageManager.cpp:
(WebKit::FileSystemStorageManager::~FileSystemStorageManager):
(WebKit::FileSystemStorageManager::close):
- NetworkProcess/storage/FileSystemStorageManager.h:
- NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::readOriginFromFile):
(WebKit::writeOriginToFileIfNecessary):
(WebKit::deleteOriginFileIfNecessary):
(WebKit::originDirectoryPath):
(WebKit::originFilePath):
(WebKit::NetworkStorageManager::localOriginStorageManager):
(WebKit::NetworkStorageManager::removeOriginStorageManagerIfPossible):
(WebKit::toWebsiteDataType):
(WebKit::NetworkStorageManager::forEachOriginDirectory):
(WebKit::NetworkStorageManager::fetchDataFromDisk):
(WebKit::NetworkStorageManager::fetchData):
(WebKit::NetworkStorageManager::deleteDataOnDisk):
(WebKit::NetworkStorageManager::deleteData):
(WebKit::NetworkStorageManager::deleteDataModifiedSince):
(WebKit::NetworkStorageManager::deleteDataForRegistrableDomains):
(WebKit::originPath): Deleted.
- NetworkProcess/storage/NetworkStorageManager.h:
- NetworkProcess/storage/OriginStorageManager.cpp:
(WebKit::OriginStorageManager::StorageBucket::toStorageIdentifier):
(WebKit::OriginStorageManager::StorageBucket::typeStoragePath const):
(WebKit::OriginStorageManager::StorageBucket::fileSystemStorageManager):
(WebKit::OriginStorageManager::StorageBucket::isActive):
(WebKit::OriginStorageManager::StorageBucket::deleteData):
(WebKit::OriginStorageManager::StorageBucket::deleteFileSystemStorageData):
(WebKit::OriginStorageManager::OriginStorageManager):
(WebKit::OriginStorageManager::isActive):
(WebKit::OriginStorageManager::deleteData):
- NetworkProcess/storage/OriginStorageManager.h:
- Shared/WebsiteData/WebsiteData.cpp:
(WebKit::WebsiteData::ownerProcess):
- Shared/WebsiteData/WebsiteDataType.h:
- UIProcess/API/Cocoa/WKWebsiteDataRecord.mm:
(dataTypesToString):
- UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h:
(WebKit::toWebsiteDataType):
(WebKit::toWKWebsiteDataTypes):
- UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:
- UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(+[WKWebsiteDataStore _allWebsiteDataTypesIncludingPrivate]):
- WebKit.xcodeproj/project.pbxproj:
- WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::didReceiveMessage):
- WebProcess/WebCoreSupport/WebFileSystemStorageConnection.messages.in: Added.
Source/WTF:
- wtf/FileSystem.cpp:
(WTF::FileSystemImpl::readEntireFile): Read whole file content into a Vector.
(WTF::FileSystemImpl::deleteAllFilesModifiedSince): Recursively delete files and folders modified after
specified time in a directory.
- wtf/FileSystem.h:
Tools:
- TestWebKitAPI/Tests/WebKitCocoa/FileSystemAccess.mm:
- 11:52 AM Changeset in webkit [286506] by
-
- 8 edits in branches/safari-613.1.8-branch/Source
Versioning.
WebKit-7613.1.8.4
- 11:39 AM Changeset in webkit [286505] by
-
- 11 edits in trunk
Follow-up to r286479 to add API test and address issues found by the test
https://bugs.webkit.org/show_bug.cgi?id=233798
Reviewed by Darin Adler.
Source/WebKit:
Add functionality needed for API testing and fix issues found by the API test.
- UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
- UIProcess/API/Cocoa/WKWebViewTesting.mm:
(-[WKWebView _isLayerTreeFrozenForTesting:]):
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::destroyProvisionalPage):
(WebKit::WebPageProxy::isLayerTreeFrozen):
- UIProcess/WebPageProxy.h:
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::isLayerTreeFrozen):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
Add new SPI to check if the layer tree is frozen in the WebProcess so that I could
write an API test for this.
- UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
Make sure m_provisionalLoadURL gets initialized when the ProvisionalPageProxy gets
constructed *after* the provisional load has already started (which is the case
when the process swap is triggered by COOP).
(WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
If the provisional load load fails in the provisional process, and the ProvisionalPageProxy
was constructed on resource response (COOP case), then no longer forward the
didFailProvisionalLoadForFrame() to the WebPageProxy. Instead, we destroy the
ProvisionalPageProxy. This is to avoid duplicate calls to didFailProvisionalLoadForFrame().
In this case, there is still a provisional load ongoing in the committed process and the
ProvisionalPageProxy destructor will take care of stopping that provisional load (due to
r286479), which will cause the committed process to send its own
didFailProvisionalLoadForFrame IPC.
Tools:
Add API test coverage.
- TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
- 11:21 AM Changeset in webkit [286504] by
-
- 2 edits in trunk/Source/WTF
Enable Momentum Event Generator by default
https://bugs.webkit.org/show_bug.cgi?id=233807
<rdar://problem/85262515>
Reviewed by Simon Fraser.
- Scripts/Preferences/WebPreferencesInternal.yaml:
Turn it on for modern WebKit. Adjust the description slightly.
- 11:06 AM Changeset in webkit [286503] by
-
- 2 edits in trunk/LayoutTests
[GLIB] WPT css-transform transform-interpolation-rotate-slerp.html is flaky img failing after updated in r286002
Unreviewed test gardening.
- platform/glib/TestExpectations:
- 10:30 AM Changeset in webkit [286502] by
-
- 11 edits1 delete in trunk/Source/JavaScriptCore
Remove StructureIDBlob
https://bugs.webkit.org/show_bug.cgi?id=233723
Reviewed by Yusuke Suzuki.
StructureIDBlob isn't very useful now that StructureIDs are just the
bottom bits of the pointer on 64 bit platforms. In a follow up patch
I'll change the layout of JSCell and Structure so that TypeInfo creation
can be a single load platforms that allow (and don't penalize) misaligned loads.
- CMakeLists.txt:
- JavaScriptCore.xcodeproj/project.pbxproj:
- ftl/FTLAbstractHeapRepository.h:
- ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
- jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitStoreStructureWithTypeInfo):
- jit/JITPropertyAccess.cpp:
(JSC::JIT::emit_op_put_to_scope):
- runtime/Structure.cpp:
(JSC::Structure::Structure):
(JSC::Structure::addNewPropertyTransition):
(JSC::Structure::removeNewPropertyTransition):
(JSC::Structure::attributeChangeTransition):
(JSC::Structure::nonPropertyTransitionSlow):
(JSC::Structure::setBrandTransition):
- runtime/Structure.h:
(JSC::Structure::id const):
(JSC::Structure::objectInitializationBlob const):
(JSC::Structure::idBlob const):
(JSC::Structure::isProxy const):
(JSC::Structure::typeInfo const):
(JSC::Structure::indexingType const):
(JSC::Structure::indexingMode const):
(JSC::Structure::fencedIndexingMode):
(JSC::Structure::indexingModeIncludingHistory const):
(JSC::Structure::indexingModeIncludingHistoryOffset):
(JSC::Structure::structureIDOffset): Deleted.
- runtime/StructureIDBlob.h: Removed.
- runtime/StructureInlines.h:
(JSC::Structure::hasIndexingHeader const):
- tools/VMInspectorInlines.h:
(JSC::VMInspector::verifyCellSize):
- 10:29 AM Changeset in webkit [286501] by
-
- 2 edits in trunk/Source/WebKit
[ Monterey wk2 ] http/tests/media/video-webm-stall.html (layout-test) is a constant text failure
https://bugs.webkit.org/show_bug.cgi?id=233717
rdar://85933254
Reviewed by Peng Liu.
After r274117, we call
PlatformMediaSessionManager::setWebMFormatReaderEnabled
in GPUProcess with
m_webMParserEnabled
instead of the value ofm_webMFormatReaderEnabled
. Since we (arbitrarily) update WebM
parser enablement before WebM format reader enablement, this means that the first call to update preferences
leaves the WebM format reader disabled on PlatformMediaSessionManager even though it should be enabled. Prior to
the more recent change in r285477, this would be corrected on subsequent calls into
GPUProcessProxy::updatePreferences()
, which previously sentGPUProcess::SetWebMFormatReaderEnabled()
messages even if the value of the preference hadn't changed.
r285477 removed those redundant IPC messages when the enablement value hasn't changed, so we can no longer
rely on PlatformMediaSessionManager being eventually updated totrue
due tom_webMParserEnabled
being set to
true. Simply fix this by usingm_webMFormatReaderEnabled
instead ofm_webMParserEnabled
.
- GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::setWebMFormatReaderEnabled):
- 10:15 AM Changeset in webkit [286500] by
-
- 4 edits in trunk/Source/WebCore
[LFC][IFC] Set the first/last box flag on the (bidi fragmented) inline box type of display boxes
https://bugs.webkit.org/show_bug.cgi?id=233743
Reviewed by Antti Koivisto.
Keep track of the last constructed inline box type of display box position so that when we
happen to create another fragment for this same inline box, we can change the 'isLastBox' box to false.
- layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::insertInlineBoxDisplayBoxForBidiBoundary):
(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):
- layout/formattingContexts/inline/InlineDisplayContentBuilder.h:
- 10:00 AM Changeset in webkit [286499] by
-
- 5 edits in trunk/Source/WebCore
Introduce WorkerGlobalScope::type() function
https://bugs.webkit.org/show_bug.cgi?id=233793
Reviewed by Alex Christensen.
Introduce WorkerGlobalScope::type() function to replace isDedicatedWorkerGlobalScope() / isServiceWorkerGlobalScope()
/ isSharedWorkerGlobalScope(). This is extracted from Alex's large patch at Bug 230382.
- workers/shared/SharedWorkerGlobalScope.h:
(isType):
- 9:45 AM Changeset in webkit [286498] by
-
- 3 edits in trunk/Source/WebKit
Web Inspector: Web Inspector2 crashes after closing if Web Inspector1 closed first
https://bugs.webkit.org/show_bug.cgi?id=233293
<rdar://problem/85526508>
Reviewed by Devin Rousso.
Cache the inspected page's identifier. During frontend teardown, use the cached indentifier
to remove the message receiver that was added to receive messages from the inspected page.
Other operations using m_inspectedPage should be guarded in case that the inspected
page already been closed and destroyed.
- UIProcess/Inspector/WebInspectorUIProxy.cpp:
(WebKit::WebInspectorUIProxy::createFrontendPage):
(WebKit::WebInspectorUIProxy::closeFrontendPageAndWindow):
- UIProcess/Inspector/WebInspectorUIProxy.h:
- 9:36 AM Changeset in webkit [286497] by
-
- 3 edits in trunk/Source/WebKit
[Cocoa] Web Inspector: fix completion handler type signature for _WKInspectorExtension methods
https://bugs.webkit.org/show_bug.cgi?id=233792
<rdar://problem/85995314>
Reviewed by Devin Rousso.
- UIProcess/API/Cocoa/_WKInspectorExtension.h:
- UIProcess/API/Cocoa/_WKInspectorExtension.mm:
(-[_WKInspectorExtension evaluateScript:frameURL:contextSecurityOrigin:useContentScriptContext:completionHandler:]):
(-[_WKInspectorExtension evaluateScript:inTabWithIdentifier:completionHandler:]):
Replace the completionHandler's NSDictionary argument type withid
.
A dictionary is not necessarily returned here because the implementation deserializes a SerializedScriptValue.
This could be a string, number, array, dictionary, or other serializable values.
While the frontend does return a dictionary payload, this is unpacked on the WebProcess-side
before being sent back out via the _WKInspectorExtension APi.
- 9:35 AM Changeset in webkit [286496] by
-
- 6 edits in trunk/Source/WebCore
Improve dictionary-based DOMPromiseDeferred::settle
https://bugs.webkit.org/show_bug.cgi?id=233751
Patch by Youenn Fablet <youenn@apple.com> on 2021-12-03
Reviewed by Chris Dumez.
Make settle a templated function so that it can adapt to any ExceptionOr based type.
Update call sites that use settle for non ExceptionOr types as they should either use reject or resolve directly.
Covered by existing tests.
- Modules/applepay/ApplePaySetup.cpp:
(WebCore::ApplePaySetup::getSetupFeatures):
(WebCore::ApplePaySetup::begin):
(WebCore::ApplePaySetup::stop):
- Modules/filesystemaccess/FileSystemDirectoryHandle.cpp:
(WebCore::FileSystemDirectoryHandle::getFileHandle):
(WebCore::FileSystemDirectoryHandle::getDirectoryHandle):
(WebCore::FileSystemDirectoryHandle::resolve):
- Modules/filesystemaccess/FileSystemFileHandle.cpp:
(WebCore::FileSystemFileHandle::createSyncAccessHandle):
- bindings/js/JSDOMPromiseDeferred.h:
(WebCore::DOMPromiseDeferred::settle):
(WebCore::DOMPromiseDeferred<IDLDictionary<T>>::resolve): Deleted.
(WebCore::DOMPromiseDeferred<IDLDictionary<T>>::settle): Deleted.
(WebCore::DOMPromiseDeferred<IDLInterface<T>>::resolve): Deleted.
(WebCore::DOMPromiseDeferred<IDLInterface<T>>::settle): Deleted.
- workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::getNavigationPreloadState):
- 9:19 AM Changeset in webkit [286495] by
-
- 2 edits in trunk/Source/WTF
[:has() pseudo-class] Enable by default
https://bugs.webkit.org/show_bug.cgi?id=233809
Reviewed by Simon Fraser.
Flip the switch.
- Scripts/Preferences/WebPreferencesExperimental.yaml:
- 9:10 AM Changeset in webkit [286494] by
-
- 3 edits in trunk/Source/WebCore
[:has() pseudo-class] Improve result caching
https://bugs.webkit.org/show_bug.cgi?id=233806
Reviewed by Simon Fraser.
Improve caching to to avoid O(n2) cases during invalidation and style resolution.
- css/SelectorChecker.cpp:
(WebCore::SelectorChecker::matchHasPseudoClass const):
Cache matches as well as failures.
Cache failures that don't apply to subtrees.
Check cached matches and failures for all :has() match element types.
- style/SelectorMatchingState.h:
- 9:08 AM Changeset in webkit [286493] by
-
- 76 edits7 adds in trunk/Source/bmalloc
[libpas] Update to 96f9f4c28dc119695311c7c6bd81ed1f3f4e260c (allow more specialization of partial versus exclusive allocation)
https://bugs.webkit.org/show_bug.cgi?id=233782
Reviewed by Yusuke Suzuki.
Libpas's main optimization for lots of isoheaps is partial views of shared pages: a single page may get
chopped up so that different heaps get different ranges of the page. This works out, in a not-too-gross
way, by reusing the segregated heap page management logic.
But previously, pages used exclusively versus pages that were shared looked largely the same; the only
way to tell them apart is that they had a different owner. Notably, those pages would get allocated out
of the same megapages, so a megapage lookup could not tell you if you were exclusive or shared.
This change introduces the concept of pas_segregated_page_role, which is this distinction between
exclusive and shared, and spreads it across all page management logic. So:
-> Page allocation knows the page's role, so it can use different megapages for exclusive or shared.
This enables exclusive and shared to have different deallocation fast paths.
-> Page_kind is now different depending on whether the page is exclusive or shared.
-> Many of the entrypoints into segregated_page that are required to know page_config are now also
required to know page_role. This makes sense, because the combination of megapages and page_kinds
knowing about roles means that anyone who ends up calling segregated_page API will now typically
know the role.
-> It's still possible to dynamically deduce the role using the page's owner, but hardly any code does
that.
This is leveraged in this patch to introduce some tiny space-saving optimizations to isoheaps:
-> Partial deallocation no longer uses the deallocation log.
-> Partial deallocation no longer uses the empty_word_eligibility_optimization.
This change is a stepping stone for introducing more different kinds of roles in the future.
- CMakeLists.txt:
- bmalloc.xcodeproj/project.pbxproj:
- libpas/libpas.xcodeproj/project.pbxproj:
- libpas/src/libpas/bmalloc_heap_config.h:
- libpas/src/libpas/hotbit_heap_config.h:
- libpas/src/libpas/iso_heap_config.h:
- libpas/src/libpas/iso_test_heap_config.h:
- libpas/src/libpas/jit_heap_config.c:
(jit_heap_config_dump_shared_page_directory_arg):
- libpas/src/libpas/jit_heap_config.h:
- libpas/src/libpas/minalign32_heap_config.h:
- libpas/src/libpas/pagesize64k_heap_config.h:
- libpas/src/libpas/pas_basic_heap_page_caches.h:
- libpas/src/libpas/pas_bitfit_allocator.c:
(pas_bitfit_allocator_commit_view):
(pas_bitfit_allocator_finish_failing):
- libpas/src/libpas/pas_bitfit_allocator.h:
- libpas/src/libpas/pas_bitfit_allocator_inlines.h:
(pas_bitfit_allocator_try_allocate):
(pas_bitfit_allocator_reset): Deleted.
(pas_bitfit_allocator_assert_reset): Deleted.
- libpas/src/libpas/pas_bitfit_heap.c:
(pas_bitfit_heap_construct_and_insert_size_class):
(pas_bitfit_heap_ensure_size_class): Deleted.
- libpas/src/libpas/pas_bitfit_heap.h:
- libpas/src/libpas/pas_bitfit_page.c:
(pas_bitfit_page_construct):
- libpas/src/libpas/pas_bitfit_page_config.h:
- libpas/src/libpas/pas_bitfit_page_config_inlines.h:
- libpas/src/libpas/pas_bitfit_page_config_kind.c:
(pas_bitfit_page_config_kind_get_string):
- libpas/src/libpas/pas_bitfit_page_config_kind.h:
(pas_bitfit_page_config_kind_get_string): Deleted.
- libpas/src/libpas/pas_bitfit_page_inlines.h:
(pas_bitfit_page_allocate):
- libpas/src/libpas/pas_bitfit_size_class.c:
(pas_bitfit_size_class_create): Deleted.
- libpas/src/libpas/pas_bitfit_size_class.h:
- libpas/src/libpas/pas_create_basic_heap_page_caches_with_reserved_memory.c:
(pas_create_basic_heap_page_caches_with_reserved_memory):
- libpas/src/libpas/pas_deallocate.c:
(deallocate_segregated):
(pas_try_deallocate_slow_no_cache):
- libpas/src/libpas/pas_deallocate.h:
(pas_deallocate_known_segregated):
(pas_try_deallocate_not_small_exclusive_segregated):
(pas_try_deallocate_impl):
(pas_deallocate_known_segregated_impl): Deleted.
(pas_try_deallocate_not_small): Deleted.
- libpas/src/libpas/pas_enumerate_segregated_heaps.c:
(pas_enumerate_segregated_heaps):
- libpas/src/libpas/pas_fast_megapage_kind.h:
(pas_fast_megapage_kind_get_string):
- libpas/src/libpas/pas_fast_megapage_table.c:
(pas_fast_megapage_table_set_by_index):
- libpas/src/libpas/pas_fast_megapage_table.h:
(pas_fast_megapage_table_get_by_index):
- libpas/src/libpas/pas_get_allocation_size.h:
(pas_get_allocation_size):
- libpas/src/libpas/pas_get_heap.h:
(pas_get_heap):
(pas_get_heap_known_segregated): Deleted.
- libpas/src/libpas/pas_get_object_kind.h:
(pas_get_object_kind):
- libpas/src/libpas/pas_get_page_base.h:
(pas_get_page_base):
- libpas/src/libpas/pas_get_page_base_and_kind_for_small_other_in_fast_megapage.h: Added.
(pas_get_page_base_and_kind_for_small_other_in_fast_megapage):
- libpas/src/libpas/pas_has_object.h:
(pas_has_object):
- libpas/src/libpas/pas_heap_config.h:
- libpas/src/libpas/pas_heap_config_inlines.h:
- libpas/src/libpas/pas_heap_config_kind.c:
(pas_heap_config_kind_get_string):
- libpas/src/libpas/pas_heap_config_kind.h:
(pas_heap_config_kind_get_string): Deleted.
- libpas/src/libpas/pas_heap_config_utils.h:
- libpas/src/libpas/pas_heap_config_utils_inlines.h:
- libpas/src/libpas/pas_internal_config.h:
- libpas/src/libpas/pas_local_allocator.c:
(pas_local_allocator_construct):
(pas_local_allocator_refill_with_bitfit): Deleted.
(pas_local_allocator_finish_refill_with_bitfit): Deleted.
- libpas/src/libpas/pas_local_allocator_inlines.h:
(pas_local_allocator_scan_bits_to_set_up_free_bits):
(pas_local_allocator_set_up_free_bits):
(pas_local_allocator_set_up_primordial_bump):
(pas_local_allocator_start_allocating_in_primordial_partial_view):
(pas_local_allocator_bless_primordial_partial_view_before_stopping):
(pas_local_allocator_try_allocate_in_primordial_partial_view):
(pas_local_allocator_refill_with_known_config):
(pas_local_allocator_return_memory_to_page_set_bit_callback):
(pas_local_allocator_return_memory_to_page_for_role):
(pas_local_allocator_return_memory_to_page):
(pas_local_allocator_try_allocate_small_segregated_slow_impl):
(pas_local_allocator_try_allocate_out_of_line_cases):
(pas_local_allocator_try_allocate_slow_impl):
- libpas/src/libpas/pas_object_kind.h:
(pas_object_kind_for_page_kind):
- libpas/src/libpas/pas_page_base_and_kind.h: Added.
(pas_page_base_and_kind_create):
(pas_page_base_and_kind_create_empty):
- libpas/src/libpas/pas_page_base_config.c: Added.
(pas_page_base_config_get_kind_string):
- libpas/src/libpas/pas_page_base_config.h:
(pas_page_base_config_is_segregated):
(pas_page_base_config_is_bitfit):
(pas_page_base_config_get_config_kind): Deleted.
- libpas/src/libpas/pas_page_kind.h:
(pas_page_kind_get_string):
(pas_page_kind_get_config_kind):
(pas_page_kind_get_segregated_variant):
(pas_page_kind_get_segregated_role):
(pas_page_kind_for_segregated_variant_and_role):
(pas_page_kind_for_bitfit_variant):
- libpas/src/libpas/pas_segregated_deallocation_logging_mode.h: Added.
(pas_segregated_deallocation_logging_mode_does_logging):
(pas_segregated_deallocation_logging_mode_is_size_aware):
(pas_segregated_deallocation_logging_mode_is_checked):
- libpas/src/libpas/pas_segregated_heap.c:
(max_object_size_for_page_config):
(pas_segregated_heap_ensure_size_directory_for_size):
- libpas/src/libpas/pas_segregated_page.c:
(pas_segregated_page_construct):
(pas_segregated_page_and_config_for_address_and_heap_config):
- libpas/src/libpas/pas_segregated_page_config.h:
(pas_segregated_page_config_enable_empty_word_eligibility_optimization_for_role):
(pas_segregated_page_config_logging_mode_for_role):
- libpas/src/libpas/pas_segregated_page_config_inlines.h:
- libpas/src/libpas/pas_segregated_page_config_kind.c:
(pas_segregated_page_config_kind_get_string):
- libpas/src/libpas/pas_segregated_page_config_kind.def:
- libpas/src/libpas/pas_segregated_page_config_kind.h:
(pas_segregated_page_config_kind_get_string): Deleted.
- libpas/src/libpas/pas_segregated_page_config_kind_and_role.c: Added.
(pas_segregated_page_config_kind_and_role_get_string):
- libpas/src/libpas/pas_segregated_page_config_kind_and_role.h: Added.
(pas_segregated_page_config_kind_and_role_create):
- libpas/src/libpas/pas_segregated_page_config_utils.h:
(pas_segregated_page_config_verify_dealloc): Deleted.
- libpas/src/libpas/pas_segregated_page_inlines.h:
(pas_segregated_page_deallocate_with_page):
(pas_segregated_page_deallocate):
(pas_segregated_page_get_directory_for_address_in_page):
(pas_segregated_page_get_directory_for_address_and_page_config):
(pas_segregated_page_get_object_size_for_address_in_page):
(pas_segregated_page_get_object_size_for_address_and_page_config):
(pas_segregated_page_log_or_deallocate):
- libpas/src/libpas/pas_segregated_page_role.h: Added.
(pas_segregated_page_role_get_string):
- libpas/src/libpas/pas_segregated_shared_view.c:
(pas_segregated_shared_view_commit_page):
- libpas/src/libpas/pas_segregated_size_directory.c:
(pas_segregated_size_directory_create):
- libpas/src/libpas/pas_segregated_size_directory.h:
(pas_segregated_size_directory_is_bitfit):
(pas_segregated_size_directory_get_bitfit_size_class):
- libpas/src/libpas/pas_segregated_view.c:
(should_be_eligible):
- libpas/src/libpas/pas_segregated_view.h:
(pas_segregated_view_get_page_role_for_owner):
(pas_segregated_view_get_page_role_for_allocator):
- libpas/src/libpas/pas_segregated_view_allocator_inlines.h:
(pas_segregated_view_will_start_allocating):
- libpas/src/libpas/pas_segregated_view_kind.h:
(pas_segregated_view_kind_get_role_for_owner):
(pas_segregated_view_kind_get_role_for_allocator):
- libpas/src/libpas/pas_thread_local_cache.c:
(process_deallocation_log_with_config):
(flush_deallocation_log):
(pas_thread_local_cache_append_deallocation_slow):
- libpas/src/libpas/pas_thread_local_cache.h:
(pas_thread_local_cache_encode_object):
(pas_thread_local_cache_append_deallocation):
(pas_thread_local_cache_append_deallocation_with_size):
- libpas/src/libpas/pas_try_reallocate.h:
(pas_try_reallocate_table_segregated_case):
(pas_try_reallocate):
- libpas/src/libpas/pas_try_shrink.h:
(pas_try_shrink):
- libpas/src/libpas/pas_utility_heap.c:
(pas_utility_heap_deallocate):
- libpas/src/libpas/pas_utility_heap_config.c:
(pas_utility_heap_allocate_page):
(pas_utility_heap_shared_page_directory_selector):
(pas_utility_heap_config_for_each_shared_page_directory):
(pas_utility_heap_config_dump_shared_page_directory_arg):
- libpas/src/libpas/pas_utility_heap_config.h:
(pas_utility_heap_shared_page_directory_selector): Deleted.
- libpas/src/libpas/pas_utils.h:
(pas_assertion_failed_noreturn_silencer):
- libpas/src/libpas/thingy_heap_config.h:
- libpas/src/test/ThingyAndUtilityHeapAllocationTests.cpp:
(std::addMargeBitfitTests):
- 8:50 AM Changeset in webkit [286492] by
-
- 15 edits in trunk
Add room for more bytecode in WKContentRuleList file format
https://bugs.webkit.org/show_bug.cgi?id=233780
Reviewed by Tim Hatcher.
Source/WebCore:
For rdar://72203352 we will need more bytecode. This adds room for it without putting anything there yet.
As long as we are updating the version number and forcing a recompile, I'm making the string serialization
more like the other action serializations to be able to simplify the interpreter later. I'm also shifting
around a few bits in the bytecode to be more organized and reasonable.
- contentextensions/CompiledContentExtension.h:
- contentextensions/ContentExtensionStringSerialization.cpp:
(WebCore::ContentExtensions::deserializeString):
(WebCore::ContentExtensions::serializeString):
(WebCore::ContentExtensions::stringSerializedLength):
- contentextensions/DFABytecode.h:
(WebCore::ContentExtensions::smallestPossibleJumpSize): Deleted.
- contentextensions/DFABytecodeCompiler.cpp:
(WebCore::ContentExtensions::smallestPossibleJumpSize):
Source/WebKit:
- Shared/WebCompiledContentRuleList.cpp:
(WebKit::WebCompiledContentRuleList::frameURLFiltersBytecode const):
- Shared/WebCompiledContentRuleList.h:
- Shared/WebCompiledContentRuleListData.cpp:
(WebKit::WebCompiledContentRuleListData::encode const):
(WebKit::WebCompiledContentRuleListData::decode):
- Shared/WebCompiledContentRuleListData.h:
(WebKit::WebCompiledContentRuleListData::WebCompiledContentRuleListData):
- UIProcess/API/APIContentRuleListStore.cpp:
(API::ContentRuleListMetaData::fileSize const):
(API::encodeContentRuleListMetaData):
(API::decodeContentRuleListMetaData):
(API::compiledToFile):
(API::createExtension):
(API::getContentRuleListSourceFromMappedFile):
- UIProcess/API/APIContentRuleListStore.h:
Tools:
- TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
- 8:35 AM Changeset in webkit [286491] by
-
- 20 edits2 adds in trunk
DisplayCaptureSource doesn't initialize base class correctly
https://bugs.webkit.org/show_bug.cgi?id=233722
Reviewed by Youenn Fablet.
Source/WebCore:
Test: fast/mediastream/get-display-media-settings.html
- platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::createMediaStream): Pass hashSalt through.
(WebCore::RealtimeMediaSourceCenter::getDisplayMediaDevices): Ditto.
(WebCore::RealtimeMediaSourceCenter::validateRequestConstraintsAfterEnumeration): Ditto.
- platform/mediastream/RealtimeMediaSourceCenter.h:
- platform/mediastream/RealtimeMediaSourceFactory.h:
- platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp:
(WebCore::DisplayCaptureSourceCocoa::create): Ditto.
(WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa): Ditto.
- platform/mediastream/cocoa/DisplayCaptureSourceCocoa.h:
- platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h:
- platform/mediastream/gstreamer/GStreamerDisplayCaptureDeviceManager.cpp:
(WebCore::GStreamerDisplayCaptureDeviceManager::createDisplayCaptureSource): Ditto.
- platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
- platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
- platform/mock/MockRealtimeMediaSourceCenter.cpp:
- platform/mock/MockRealtimeMediaSourceCenter.cpp:
- platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::settings):
Source/WebKit:
- UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
Pass the hash salt to the factory.
- WebProcess/cocoa/RemoteRealtimeDisplaySource.cpp:
(WebKit::RemoteRealtimeDisplaySource::create): Remove 'name' parameter because
CaptureDevice already has the name.
(WebKit::RemoteRealtimeDisplaySource::RemoteRealtimeDisplaySource): Pass name to
base class from device.label().
(WebKit::RemoteRealtimeDisplaySource::createRemoteMediaSource): Don't call setName
with settings, it was already set in the constructor.
- WebProcess/cocoa/RemoteRealtimeDisplaySource.h:
- WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::DisplayFactory::createDisplayCaptureSource): Pass
hash salt to RemoteRealtimeDisplaySource::create.
- WebProcess/cocoa/UserMediaCaptureManager.h:
LayoutTests:
- fast/mediastream/get-display-media-settings-expected.txt: Added.
- fast/mediastream/get-display-media-settings.html: Added.
- 7:30 AM Changeset in webkit [286490] by
-
- 9 edits2 adds in trunk/LayoutTests
[css-flexbox] WPT import. December 2021 edition
https://bugs.webkit.org/show_bug.cgi?id=233810
Reviewed by Rob Buis.
LayoutTests/imported/w3c:
- resources/resource-files.json:
- web-platform-tests/css/css-flexbox/negative-available-size-crash-expected.txt: Added.
- web-platform-tests/css/css-flexbox/negative-available-size-crash.html: Added.
- web-platform-tests/css/css-flexbox/scrollbars-auto-expected.html:
- web-platform-tests/css/css-flexbox/scrollbars-expected.html:
- web-platform-tests/css/css-flexbox/table-as-item-inflexible-in-column-2.html:
- web-platform-tests/css/css-flexbox/table-as-item-inflexible-in-row-2.html:
- web-platform-tests/css/css-flexbox/w3c-import.log:
LayoutTests:
- TestExpectations: Unskipped a test that works fine after the changes in the import.
- 6:12 AM Changeset in webkit [286489] by
-
- 3 edits in trunk/Source/WebCore
[LFC][IFC] Move the (bidi)display boxes horizontally by the inline box margin, border and padding start as needed
https://bugs.webkit.org/show_bug.cgi?id=233742
Reviewed by Antti Koivisto.
Re-visit the newly constructed display boxes and move them horizontally using the inline box margin, border and padding start values.
Note that in this patch we don't yet handle the end side of the inline boxes.
- layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):
- 6:01 AM Changeset in webkit [286488] by
-
- 16 edits in trunk
Persist NavigationPreloadState in service worker registration database
https://bugs.webkit.org/show_bug.cgi?id=233698
Source/WebCore:
Reviewed by Chris Dumez.
Whenever changing a service worker registration navigation state, trigger storing of the changes in the database.
To do so, we add this state to ServiceWorkerContextData.
When creating a SWServerRegistration, we set default values to false and "true"
as per https://w3c.github.io/ServiceWorker/#service-worker-registration-navigation-preload-header-value.
Covered by updated test.
- workers/service/ServiceWorkerContextData.cpp:
- workers/service/ServiceWorkerContextData.h:
- workers/service/server/RegistrationDatabase.cpp:
- workers/service/server/RegistrationStore.h:
- workers/service/server/SWServer.cpp:
- workers/service/server/SWServer.h:
- workers/service/server/SWServerJobQueue.cpp:
- workers/service/server/SWServerRegistration.cpp:
- workers/service/server/SWServerRegistration.h:
- workers/service/server/SWServerWorker.cpp:
Tools:
<rdar://problem/85963120>
Reviewed by Chris Dumez.
Increase counter from 7 to 8.
- TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
LayoutTests:
Reviewed by Chris Dumez.
- http/wpt/service-workers/service-worker-networkprocess-crash-expected.txt:
- http/wpt/service-workers/service-worker-networkprocess-crash.html:
- 1:31 AM Changeset in webkit [286487] by
-
- 6 edits in trunk/Source/WebKit
Rename DerivedSources/WebKit2 to DerivedSources/WebKit
https://bugs.webkit.org/show_bug.cgi?id=233803
Reviewed by Tim Horton.
Mechanical rename.
No new tests because there is no behavior change.
- Configurations/BaseTarget.xcconfig:
- Scripts/generate-derived-sources.sh:
- Scripts/generate-unified-sources.sh:
- UnifiedSources-output.xcfilelist:
- WebKit.xcodeproj/project.pbxproj:
- 12:50 AM Changeset in webkit [286486] by
-
- 2 edits in trunk/LayoutTests
[GStreamer] test http/tests/security/webaudio-render-remote-audio-allowed-crossorigin.html fails
https://bugs.webkit.org/show_bug.cgi?id=233737
Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-12-03
Reviewed by Philippe Normand.
Give some more time to the frequency analyzer to detect activity.
- http/tests/security/webaudio-render-remote-audio-allowed-crossorigin.html:
- 12:25 AM Changeset in webkit [286485] by
-
- 3 edits2 adds in trunk
[MSE] Fix erase range to prevent accidental deletion in files with changing durations
https://bugs.webkit.org/show_bug.cgi?id=233528
Reviewed by Xabier Rodriguez-Calvar.
Source/WebCore:
In didReceiveSample(), eraseBeginTime was being set to
highestPresentationTimestamp minus a tolerance. The tolerance is not
needed since highestPresentationTimestamp is loaded from exact frame
timestamps, and can cause accidental frame erasure in situations where
there are frames with frames smaller than the tolerance, which is the
case for certain MP4 files.
Test: media/media-source/media-source-append-tiny-durations.html
- platform/graphics/SourceBufferPrivate.cpp:
(WebCore::SourceBufferPrivate::didReceiveSample):
LayoutTests:
- media/media-source/media-source-append-tiny-durations-expected.txt: Added.
- media/media-source/media-source-append-tiny-durations.html: Added.
- 12:06 AM Changeset in webkit [286484] by
-
- 29 edits2 copies in trunk/Source
Network process does not seem to initialize logging
https://bugs.webkit.org/show_bug.cgi?id=233360
<rdar://problem/85765854>
Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-12-03
Reviewed by Fujii Hironori.
Source/WebCore:
Export WebCore::logLevelString(), it's the canonical
method to obtain WebCore log configuration string.
It's already used in WebKit, but not on Cocoa platform
where the export matters.
- platform/LogInitialization.h:
Source/WebKit:
Move GPUProcess and WebProcess process creation arguments
related to logging strings to new AuxiliaryProcessCreationParameters.
Use this in all auxiliary processes GPUProcess, WebProcess,
AuthnProcess and NetworkProcess.
Use the canonical WTF::logLevelString(), WebCore::logLevelString(),
WebKit::logLevelString() to initialize Cocoa WebKit2 logging settings
for process creation arguments.
Fixes bugs where
Tools/Scripts/run-minibrowser --debug -WebKit2Logging IPCMessages
would not print IPCMessages logging for NetworkProcess.
- GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::initializeGPUProcess):
- GPUProcess/GPUProcessCreationParameters.cpp:
(WebKit::GPUProcessCreationParameters::encode const):
(WebKit::GPUProcessCreationParameters::decode):
- GPUProcess/GPUProcessCreationParameters.h:
- NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
- NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
- NetworkProcess/NetworkProcessCreationParameters.h:
- Shared/AuxiliaryProcess.cpp:
(WebKit::AuxiliaryProcess::applyProcessCreationParameters):
- Shared/AuxiliaryProcess.h:
- Shared/AuxiliaryProcessCreationParameters.cpp: Copied from Source/WebKit/WebAuthnProcess/WebAuthnProcessCreationParameters.cpp.
(WebKit::AuxiliaryProcessCreationParameters::encode const):
(WebKit::AuxiliaryProcessCreationParameters::decode):
- Shared/AuxiliaryProcessCreationParameters.h: Copied from Source/WebKit/WebAuthnProcess/WebAuthnProcessCreationParameters.h.
- Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
- Shared/WebProcessCreationParameters.h:
- Sources.txt:
- UIProcess/AuxiliaryProcessProxy.cpp:
(WebKit::AuxiliaryProcessProxy::auxiliaryProcessParameters):
- UIProcess/AuxiliaryProcessProxy.h:
- UIProcess/Cocoa/GPUProcessProxyCocoa.mm:
(WebKit::GPUProcessProxy::platformInitializeGPUProcessParameters):
- UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
- UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::GPUProcessProxy::GPUProcessProxy):
(WebKit::GPUProcessProxy::platformInitializeGPUProcessParameters):
- UIProcess/GPU/GPUProcessProxy.h:
- UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::sendCreationParametersToNewProcess):
- UIProcess/WebAuthentication/WebAuthnProcessProxy.cpp:
(WebKit::WebAuthnProcessProxy::singleton):
- UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::initializeNewWebProcess):
- WebAuthnProcess/WebAuthnProcess.cpp:
(WebKit::WebAuthnProcess::initializeWebAuthnProcess):
- WebAuthnProcess/WebAuthnProcessCreationParameters.cpp:
(WebKit::WebAuthnProcessCreationParameters::encode const):
(WebKit::WebAuthnProcessCreationParameters::decode):
- WebAuthnProcess/WebAuthnProcessCreationParameters.h:
- WebKit.xcodeproj/project.pbxproj:
- WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
- WebProcess/playstation/WebProcessPlayStation.cpp:
(WebKit::WebProcess::platformInitializeWebProcess):
Dec 2, 2021:
- 11:25 PM Changeset in webkit [286483] by
-
- 6 edits in trunk/Source/WebKit
MomentumEventDispatcher curve sometimes doesn't match the system curve
https://bugs.webkit.org/show_bug.cgi?id=233801
<rdar://problem/85870287>
Reviewed by Simon Fraser.
Three small changes to get us closer to the system curve:
1) Fetch the momentum event dispatch interval from the system, and use
it to scale the momentum start event's delta (which we use as our
initial velocity) into the "ideal" curve's frame rate (which is always
60fps regardless).
2) Back-date the animation start time to the fingers-down phase end event,
so that the momentum start phase has a delta. This seems to match what
the system does.
3) Switch to MonotonicTime for the animation time, since it doesn't need
to be in the same timebase as events (which are oddly in WallTime), and
certainly should be monotonic.
- Shared/ScrollingAccelerationCurve.cpp:
(WebKit::ScrollingAccelerationCurve::ScrollingAccelerationCurve):
(WebKit::ScrollingAccelerationCurve::interpolate):
(WebKit::ScrollingAccelerationCurve::encode const):
(WebKit::ScrollingAccelerationCurve::decode):
(WebKit::operator<<):
- Shared/ScrollingAccelerationCurve.h:
(WebKit::ScrollingAccelerationCurve::frameRate):
(WebKit::ScrollingAccelerationCurve::operator== const):
- Shared/mac/ScrollingAccelerationCurveMac.mm:
(WebKit::fromIOHIDCurve):
(WebKit::fromIOHIDCurveArrayWithAcceleration):
(WebKit::fromIOHIDDevice):
Fetch and propagate the dispatch frame rate. This isn't *really* a
ScrollingAccelerationCurve property, but neither isresolution
;
this is just currently the only place we look up HID properties
and push them to the Web Content process; some re-architecture is
warranted here in the future.
- WebProcess/WebPage/MomentumEventDispatcher.cpp:
(WebKit::MomentumEventDispatcher::handleWheelEvent):
Keep track of the last fingers-down phase ended event timestamp.
(WebKit::MomentumEventDispatcher::didStartMomentumPhase):
Backdate the start time so that the first event has the appropriate delta.
Divide out the dispatch frame rate so that the initial velocity is
as if the curve were running at 60fps (since we *will* run it at 60fps and interpolate).
(WebKit::MomentumEventDispatcher::didEndMomentumPhase):
(WebKit::MomentumEventDispatcher::consumeDeltaForTime):
(WebKit::MomentumEventDispatcher::displayWasRefreshed):
Factor the consume-a-delta-from-the-ideal-curve code out from displayWasRefreshed
so we can use it in the start phase too.
(WebKit::MomentumEventDispatcher::offsetAtTime):
(WebKit::MomentumEventDispatcher::computeNextDelta):
Rename idealCurveFrameRate->idealCurveFrameInterval for accuracy.
- WebProcess/WebPage/MomentumEventDispatcher.h:
- 10:39 PM Changeset in webkit [286482] by
-
- 13 edits in trunk
html/semantics/forms/constraints/form-validation-validity-valid.html WPT test is failing
https://bugs.webkit.org/show_bug.cgi?id=233778
Reviewed by Darin Adler.
LayoutTests/imported/w3c:
Rebaseline WPT tests now that more checks are passing.
- web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid-expected.txt:
Source/WebCore:
html/semantics/forms/constraints/form-validation-validity-valid.html WPT test is failing in WebKit
but passing in Blink & Gecko. The issue was caused by incorrect willValidate() checks inside
HTMLInputElement::isValid() & HTMLSelectElement::valueMissing().
No new tests, rebaselined existing tests.
- html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::isValid const):
- html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::valueMissing const):
LayoutTests:
Rebaseline WPT tests now that more checks are passing.
- platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid-expected.txt:
- platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing-expected.txt:
- 10:05 PM Changeset in webkit [286481] by
-
- 6 edits in trunk/Source
A Safari tab can rarely get stuck in a state where rendering updates stop happening
https://bugs.webkit.org/show_bug.cgi?id=233784
rdar://85445072
Reviewed by Chris Dumez.
Sometimes a Safari tab can get into a state where rendering updates cease to happen,
which manifests as partially broken scrolling, blank tiles revealed when scrolling,
and somewhat broken page updates. I was able to sometimes reproduce this by clicking
on links in eBay emails from Mail on a system with two displays.
From the one time I reproduce with logging, the output indicated that DisplayRefreshMonitor::displayLinkFired()
would early return because isPreviousFrameDone() was false. The only way for that to occur,
barring memory corruption, is if DisplayRefreshMonitorMac::dispatchDisplayDidRefresh() returned early,
which it does if the callback comes twice in a single event loop; this may explain the rarity.
So fix DisplayRefreshMonitorMac::dispatchDisplayDidRefresh() call setIsPreviousFrameDone(true)
so the next callback can make progress
Also add some locking annotations and fix one missing lock, and some release logging.
Source/WebCore:
- platform/graphics/DisplayRefreshMonitor.cpp:
(WebCore::DisplayRefreshMonitor::stop):
(WebCore::DisplayRefreshMonitor::firedAndReachedMaxUnscheduledFireCount):
(WebCore::DisplayRefreshMonitor::displayLinkFired):
- platform/graphics/DisplayRefreshMonitor.h:
(WebCore::DisplayRefreshMonitor::WTF_REQUIRES_LOCK):
(WebCore::DisplayRefreshMonitor::WTF_GUARDED_BY_LOCK):
(WebCore::DisplayRefreshMonitor::setMaxUnscheduledFireCount): Deleted.
(WebCore::DisplayRefreshMonitor::isScheduled const): Deleted.
(WebCore::DisplayRefreshMonitor::setIsScheduled): Deleted.
(WebCore::DisplayRefreshMonitor::isPreviousFrameDone const): Deleted.
(WebCore::DisplayRefreshMonitor::setIsPreviousFrameDone): Deleted.
Source/WebKit:
- WebProcess/WebPage/mac/DisplayRefreshMonitorMac.cpp:
(WebKit::DisplayRefreshMonitorMac::dispatchDisplayDidRefresh):
- 8:49 PM Changeset in webkit [286480] by
-
- 2 edits2 adds in trunk/LayoutTests
[GLIB] Update test expectations and baselines. Unreviewed test gardening.
https://bugs.webkit.org/show_bug.cgi?id=233799
Add a platform specific baseline for imported/w3c/web-platform-tests/service-workers/service-worker/navigation-preload/broken-chunked-encoding.https.html
as the tests pass on GTK and WPE.
Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-12-02
- platform/glib/TestExpectations:
- platform/glib/imported/w3c/web-platform-tests/service-workers/service-worker/navigation-preload/broken-chunked-encoding.https-expected.txt: Added.
- 8:37 PM Changeset in webkit [286479] by
-
- 4 edits in trunk/Source/WebKit
Regression(r283179) Google Drive freezes after downloading a folder
https://bugs.webkit.org/show_bug.cgi?id=233783
<rdar://85918531>
Reviewed by Darin Adler.
When process-swapping on a navigation response due to COOP, we create a new ProvisionalPageProxy
to trigger a provisional load in a new WebProcess. In the common case, the ProvisionalPageProxy
gets committed, we process-swap and everything works fine. However, if the client decides to
convert the navigation into a download (like in the Google Drive case), then the
ProvisionalPageProxy gets destroyed without being committed. The issue is that the committed
process still thinks at this point that it is in the middle of a navigation and its layer
tree is thus frozen with reason=PageTransition. This is what makes Google Drive look frozen
after the download. This is not an issue with PSON because the process-swap happens in
decidePolicyForNavigationAction() and we tell the previous process to ignore the navigation
when we process-swap.
To address the issue, we now tell the committed process to cancel its navigation if the
ProvisionalPageProxy ends up getting destroyed without being committed. This lets the
committed process know there is no point in waiting for this navigation to happen and allows
it to unfreeze its layer tree.
- UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
(WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
- UIProcess/ProvisionalPageProxy.h:
(WebKit::ProvisionalPageProxy::isProcessSwappingOnNavigationResponse const):
(WebKit::ProvisionalPageProxy::shouldClosePreviousPageAfterCommit const): Deleted.
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::commitProvisionalPage):
(WebKit::WebPageProxy::continueNavigationInNewProcess):
- 8:24 PM Changeset in webkit [286478] by
-
- 3 edits1 add in trunk
[JSC] shell's $.globalObjectFor is not safe for non object cells
https://bugs.webkit.org/show_bug.cgi?id=233794
Reviewed by Saam Barati.
JSTests:
- stress/dollar-global-object.js: Added.
Source/JavaScriptCore:
Only Object cells can have Structures having JSGlobalObject.
- jsc.cpp:
(JSC_DEFINE_HOST_FUNCTION):
- 8:17 PM Changeset in webkit [286477] by
-
- 6 edits in trunk
AX: In AccessibilityRenderObject::documentLinks, use existing image-map document links instead of always creating new ones
https://bugs.webkit.org/show_bug.cgi?id=233767
Reviewed by Chris Fleizach.
The current implementation of AccessibilityRenderObject::documentLinks always
creates new image-map links rather than using the existing ones created via
AccessibilityRenderObject::addImageMapChildren. This is problematic for two reasons:
- It is wasteful in terms of memory usage as we will endlessly accumulate AccessibilityImageMapLink objects in the cache each time AccessibilityRenderObject::documentLinks is called.
- It breaks
<area>
document links in isolated tree mode, since the objects created this way aren't a child of any other object, and thus don't have any representation in the isolated tree. Concretely, this means AXIsolatedTree::nodeForID never returns anything for these objects.
In this patch, we try to find the existing image-map link children
in AccessibilityRenderObject::documentLinks before falling back to creating new ones.
Source/WebCore:
Fixes test accessibility/mac/document-links.html in isolated tree mode.
- accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::documentLinks):
Try to find the existing image-map link children before falling back to creating new ones.
LayoutTests:
- accessibility/mac/document-links-expected.txt:
Update expectations based on new variable names.
- accessibility/mac/document-links.html:
Modernize test and improve variable naming.
- resources/accessibility-helper.js:
(debugEscaped): Added.
- 7:51 PM Changeset in webkit [286476] by
-
- 2 edits in trunk/Tools
Compilation error on Tools/TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm
https://bugs.webkit.org/show_bug.cgi?id=233797
rdar://problem/86000569
Unreviewed API test build fix.
- TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:
- 7:01 PM Changeset in webkit [286475] by
-
- 3 edits in trunk/Source/WebCore
[LFC][IFC] Create display boxes for fragmented inline boxes on bidi boundaries
https://bugs.webkit.org/show_bug.cgi?id=233736
Reviewed by Antti Koivisto.
In this patch we insert inline box type of display boxes in-between bidi display boxes as needed.
We don't yet compute visual geometry and/or offset the rest of the content with the injected margins, borders and padding.
- layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::insertInlineBoxDisplayBoxForBidiBoundary):
(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):
(WebCore::Layout::InlineDisplayContentBuilder::appendInlineBoxDisplayBoxForBidiBoundary): Deleted.
- layout/formattingContexts/inline/InlineDisplayContentBuilder.h:
- 6:54 PM Changeset in webkit [286474] by
-
- 3 edits in trunk/Source/WebCore
Introduce a MainThreadBridge class inside WebLockManager
https://bugs.webkit.org/show_bug.cgi?id=233789
Reviewed by Darin Adler.
Extract all the logic to hop to and back from the main thread out of the WebLockManager and into a MainThreadBridge
internal class. This is similar to what was done for BroadcastChannel already. It provides better structuring and
slightly better performance by calling isolatedCopy() on the ClientOrigin only once instead of on every call.
No new tests, no web-facing behavior change.
- Modules/web-locks/WebLockManager.cpp:
(WebCore::WebLockManager::MainThreadBridge::create):
(WebCore::WebLockManager::MainThreadBridge::MainThreadBridge):
(WebCore::WebLockManager::MainThreadBridge::requestLock):
(WebCore::WebLockManager::MainThreadBridge::releaseLock):
(WebCore::WebLockManager::MainThreadBridge::abortLockRequest):
(WebCore::WebLockManager::MainThreadBridge::query):
(WebCore::WebLockManager::MainThreadBridge::clientIsGoingAway):
(WebCore::WebLockManager::MainThreadBridge::ensureOnMainThread):
(WebCore::WebLockManager::WebLockManager):
(WebCore::WebLockManager::request):
(WebCore::WebLockManager::didCompleteLockRequest):
(WebCore::WebLockManager::query):
(WebCore::WebLockManager::signalToAbortTheRequest):
(WebCore::WebLockManager::clientIsGoingAway):
(WebCore::WebLockManager::requestLockOnMainThread): Deleted.
(WebCore::WebLockManager::releaseLockOnMainThread): Deleted.
(WebCore::WebLockManager::abortLockRequestOnMainThread): Deleted.
(WebCore::WebLockManager::queryOnMainThread): Deleted.
(WebCore::WebLockManager::ensureOnMainThread): Deleted.
- Modules/web-locks/WebLockManager.h:
- 6:35 PM Changeset in webkit [286473] by
-
- 1 copy in tags/Safari-612.3.6.1.7
Tag Safari-612.3.6.1.7.
- 6:14 PM Changeset in webkit [286472] by
-
- 2 edits in trunk/LayoutTests
[ Monterey ] http/tests/workers/service/serviceworker-websocket.https.html (layout-test) is constant text failure
https://bugs.webkit.org/show_bug.cgi?id=233665
Unreviewed test gardening.
- platform/mac-wk2/TestExpectations:
- 6:06 PM Changeset in webkit [286471] by
-
- 2 edits in trunk/Source/JavaScriptCore
Lower structureHeapAddressSize on more memory limited ARM64 devices
https://bugs.webkit.org/show_bug.cgi?id=233786
<rdar://85940431>
Reviewed by Yusuke Suzuki.
Some processes using JSC are failing the mmap for the 1GB region.
Let's lower the region size to 512MB on lower memory iOS devices.
- runtime/JSCConfig.h:
- 5:42 PM Changeset in webkit [286470] by
-
- 2 edits in trunk/Source/WebKit
Make enum values consisten in ApplicationManifest::Icon::Purpose
and _WKApplicationManifestIconPurpose
https://bugs.webkit.org/show_bug.cgi?id=233764
rdar://85976270
Patch by Rachel Ginsberg <rginsberg@apple.com> on 2021-12-02
Reviewed by Brent Fulgham.
The ApplicationManifest tests already check for 1, 2, and 4 respectively.
- UIProcess/API/Cocoa/_WKApplicationManifest.h:
Set the _WKApplicationManifestIconPurpose enum values to
1, 2, 4 to match the enum values set in ApplicationManifest::Icon::Purpose.
Those values are used in ApplicationManifest because an
OptionSet is used.
- 5:14 PM Changeset in webkit [286469] by
-
- 3 edits in trunk/Source/WebKit
[WP][iOS] Add telemetry to determine which system calls are only used on process launch
https://bugs.webkit.org/show_bug.cgi?id=233649
<rdar://problem/85875930>
Reviewed by Brent Fulgham.
Add telemetry to determine which system calls are only used on WebContent process launch on iOS.
- Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::create):
- 5:03 PM Changeset in webkit [286468] by
-
- 2 edits in trunk/Tools
[resultsdbpy] Python 3.10 compatibility
https://bugs.webkit.org/show_bug.cgi?id=233771
<rdar://problem/85978234>
Reviewed by Dewei Zhu.
- Tools/Scripts/libraries/resultsdbpy/resultsdbpy/model/configuration_context.py:
Canonical link: https://commits.webkit.org/244808@main
- 4:56 PM Changeset in webkit [286467] by
-
- 4 edits in trunk/Tools
[git-webkit] Handle ambiguous branch names in land
https://bugs.webkit.org/show_bug.cgi?id=233763
<rdar://problem/85973434>
Reviewed by Dewei Zhu.
- Scripts/libraries/webkitscmpy/setup.py: Bump version.
- Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
- Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:
(Git.rebase): Be explicit about the name of the target branch when modifying timestamps.
Canonical link: https://commits.webkit.org/244807@main
- 4:37 PM Changeset in webkit [286466] by
-
- 12 edits1 add in trunk/Source/WebCore
[GPU Process] Move the FilterEffect boundaries to a new class FilterEffectGeometry
https://bugs.webkit.org/show_bug.cgi?id=233618
rdar://85881969
Reviewed by Cameron McCormack.
The plan is to have Filter own its geometry and the geometry of the
FilterEffects. So move the boundaries and their flags from FilterEffect
to a new class called FilterEffectGeometry.
SVGFilterBuilder will calculate the FilterEffectGeometry for each FilterEffect
and store it in map { key: FilterEffect, value: FilterEffectGeometry }.
Eventually this map is moved to SVGFilter which will be used in the
virtual function effectGeometry(). determineFilterPrimitiveSubregion()
will call this virtual function to calculate the primitive subregion.
- Headers.cmake:
- WebCore.xcodeproj/project.pbxproj:
- platform/graphics/filters/Filter.h:
(WebCore::Filter::effectGeometry const):
- platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::determineFilterPrimitiveSubregion):
(WebCore::FilterEffect::apply):
- platform/graphics/filters/FilterEffect.h:
(WebCore::FilterEffect::hasX const): Deleted.
(WebCore::FilterEffect::setHasX): Deleted.
(WebCore::FilterEffect::hasY const): Deleted.
(WebCore::FilterEffect::setHasY): Deleted.
(WebCore::FilterEffect::hasWidth const): Deleted.
(WebCore::FilterEffect::setHasWidth): Deleted.
(WebCore::FilterEffect::hasHeight const): Deleted.
(WebCore::FilterEffect::setHasHeight): Deleted.
(WebCore::FilterEffect::effectBoundaries const): Deleted.
(WebCore::FilterEffect::setEffectBoundaries): Deleted.
- platform/graphics/filters/FilterEffectGeometry.h: Added.
(WebCore::FilterEffectGeometry::FilterEffectGeometry):
(WebCore::FilterEffectGeometry::x const):
(WebCore::FilterEffectGeometry::y const):
(WebCore::FilterEffectGeometry::width const):
(WebCore::FilterEffectGeometry::height const):
- svg/SVGFilterPrimitiveStandardAttributes.cpp:
(WebCore::SVGFilterPrimitiveStandardAttributes::setStandardAttributes const): Deleted.
- svg/SVGFilterPrimitiveStandardAttributes.h:
- svg/graphics/filters/SVGFilter.cpp:
(WebCore::SVGFilter::create):
(WebCore::SVGFilter::effectGeometry const):
- svg/graphics/filters/SVGFilter.h:
- svg/graphics/filters/SVGFilterBuilder.cpp:
(WebCore::boundarySetFlagsForElement):
(WebCore::SVGFilterBuilder::buildFilterEffects):
- svg/graphics/filters/SVGFilterBuilder.h:
(WebCore::SVGFilterBuilder::takeEffectGeometryMap):
- 4:35 PM Changeset in webkit [286465] by
-
- 6 edits in trunk/Source
[WP] Strengthen sandbox when AppCache is disabled
https://bugs.webkit.org/show_bug.cgi?id=233746
<rdar://problem/85953893>
Reviewed by Brent Fulgham.
Source/WebKit:
When AppCache is disabled, we can remove access to some resources in the WebContent process' sandbox.
This is implemented using a new sandbox state variable representing the AppCache state.
- Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
- WebProcess/WebPage/WebPage.cpp:
- WebProcess/com.apple.WebProcess.sb.in:
Source/WTF:
Add HAVE macro for sandbox state flags support.
- wtf/PlatformHave.h:
- 4:32 PM Changeset in webkit [286464] by
-
- 6 edits6 moves1 add in trunk/Source/WebCore
Move Shared Worker classes to WebCore/workers/shared
https://bugs.webkit.org/show_bug.cgi?id=233769
Reviewed by Alex Christensen.
Move Shared Worker classes to WebCore/workers/shared, for better structuring and consistency
with WebCore/workers/service.
- CMakeLists.txt:
- DerivedSources.make:
- WebCore.xcodeproj/project.pbxproj:
- workers/shared/SharedWorker.cpp: Renamed from Source/WebCore/workers/SharedWorker.cpp.
- workers/shared/SharedWorker.h: Renamed from Source/WebCore/workers/SharedWorker.h.
- workers/shared/SharedWorker.idl: Renamed from Source/WebCore/workers/SharedWorker.idl.
- workers/shared/SharedWorkerGlobalScope.cpp: Renamed from Source/WebCore/workers/SharedWorkerGlobalScope.cpp.
- workers/shared/SharedWorkerGlobalScope.h: Renamed from Source/WebCore/workers/SharedWorkerGlobalScope.h.
- workers/shared/SharedWorkerGlobalScope.idl: Renamed from Source/WebCore/workers/SharedWorkerGlobalScope.idl.
- 4:14 PM Changeset in webkit [286463] by
-
- 1 edit in branches/safari-612-branch/Source/WebCore/page/csp/ContentSecurityPolicy.cpp
Unreviewed build fix. rdar://problem/85943167
candidate function not viable: no known conversion from 'const WTF::String' to 'const WTF::URL' for 3rd argument
- 4:12 PM Changeset in webkit [286462] by
-
- 3 edits1 add in trunk
Fix OOM crash in JSValue::toWTFStringForConsole
https://bugs.webkit.org/show_bug.cgi?id=233775
<rdar://85259423>
Reviewed by Mark Lam.
JSTests:
- stress/pretty-print-oom.js: Added.
Source/JavaScriptCore:
- runtime/JSCJSValue.cpp:
(JSC::JSValue::toWTFStringForConsole const):
- 3:49 PM Changeset in webkit [286461] by
-
- 33 edits10 adds in trunk
Re-add support of image control menus.
https://bugs.webkit.org/show_bug.cgi?id=233305
Reviewed by Tim Horton.
Source/WebCore:
Test: fast/images/image-controls-basic.html
Image control menus are needed for mail transition to modern WebKit, so re-add them
after the removal in https://trac.webkit.org/changeset/272117/webkit
- DerivedSources-input.xcfilelist:
- DerivedSources.make:
- Sources.txt:
- WebCore.xcodeproj/project.pbxproj:
- css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
- css/CSSProperties.json:
- css/CSSValueKeywords.in:
- css/parser/CSSParserIdioms.cpp:
(WebCore::isValueAllowedInMode):
- dom/mac/ImageControlsMac.cpp: Added.
(WebCore::ImageControlsMac::imageControlsElementIdentifier):
(WebCore::ImageControlsMac::imageControlsButtonIdentifier):
(WebCore::ImageControlsMac::hasControls):
(WebCore::ImageControlsMac::imageControlHost):
(WebCore::ImageControlsMac::isImageControlsButtonElement):
(WebCore::ImageControlsMac::containerRect):
(WebCore::ImageControlsMac::createImageControls):
- dom/mac/ImageControlsMac.h: Added.
- html/HTMLAttributeNames.in:
- html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::HTMLImageElement):
(WebCore::HTMLImageElement::parseAttribute):
(WebCore::HTMLImageElement::didAttachRenderers):
(WebCore::HTMLImageElement::updateImageControls):
(WebCore::HTMLImageElement::tryCreateImageControls):
(WebCore::HTMLImageElement::destroyImageControls):
(WebCore::HTMLImageElement::hasImageControls const):
(WebCore::HTMLImageElement::childShouldCreateRenderer const):
- html/HTMLImageElement.h:
(WebCore::HTMLImageElement::hasShadowControls const):
- html/shadow/mac/ImageControlsMac.css: Added.
(#if defined(ENABLE_SERVICE_CONTROLS) && ENABLE_SERVICE_CONTROLS):
(button#image-controls-button):
(div#image-controls:hover button#image-controls-button):
- html/shadow/mac/ImageControlsRootElementMac.cpp: Added.
(WebCore::xWebkitImageControlsElementIdentifier):
(WebCore::RenderImageControls::RenderImageControls):
(WebCore::RenderImageControls::updateLogicalWidth):
(WebCore::RenderImageControls::computeLogicalHeight const):
(WebCore::hasControl):
(WebCore::imageControlHost):
(WebCore::isImageControls):
(WebCore::ImageControlsRootElement::tryCreate):
(WebCore::ImageControlsRootElementMac::ImageControlsRootElementMac):
(WebCore::ImageControlsRootElementMac::createElementRenderer):
- html/shadow/mac/ImageControlsRootElementMac.h: Added.
- page/ContextMenuController.cpp:
(WebCore::imageFromImageElementNode):
(WebCore::ContextMenuController::maybeCreateContextMenu):
(WebCore::ContextMenuController::showImageControlsMenu):
- page/ContextMenuController.h:
- page/EventHandler.cpp:
(WebCore::EventHandler::textRecognitionCandidateElement const):
- platform/ThemeTypes.cpp:
(WebCore::operator<<):
- platform/ThemeTypes.h:
- rendering/RenderImage.cpp:
(WebCore::RenderImage::RenderImage):
- rendering/RenderTheme.cpp:
(WebCore::RenderTheme::adjustStyle):
(WebCore::RenderTheme::paint):
(WebCore::RenderTheme::paintBorderOnly):
(WebCore::RenderTheme::paintDecorations):
(WebCore::RenderTheme::adjustImageControlsButtonStyle const):
- rendering/RenderTheme.h:
(WebCore::RenderTheme::imageControlsButtonSize const):
(WebCore::RenderTheme::imageControlsButtonPositionOffset const):
(WebCore::RenderTheme::paintImageControlsButton):
- rendering/RenderThemeMac.h:
- rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::documentViewFor const):
(WebCore::RenderThemeMac::adjustImageControlsButtonStyle const):
(WebCore::RenderThemeMac::servicesRolloverButtonCell const):
(WebCore::RenderThemeMac::paintImageControlsButton):
(WebCore::RenderThemeMac::imageControlsButtonSize const):
(WebCore::RenderThemeMac::imageControlsButtonPositionOffset const):
- style/UserAgentStyle.cpp:
- style/UserAgentStyle.h:
Source/WebCore/PAL:
Move SPI to SPI specific file.
- PAL.xcodeproj/project.pbxproj:
- pal/spi/mac/NSServicesRolloverButtonCellSPI.h: Added.
Source/WebKit:
Image control menus are needed for mail transition to modern WebKit, so re-add them
after the removal in https://trac.webkit.org/changeset/272117/webkit
- Platform/spi/mac/AppKitSPI.h:
- UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetImageControlsEnabled):
(WKPreferencesGetImageControlsEnabled):
- UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setupPageConfiguration:]):
- UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _imageControlsEnabled]):
(-[WKWebViewConfiguration _setImageControlsEnabled:]):
- UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
Source/WTF:
- Scripts/Preferences/WebPreferences.yaml:
LayoutTests:
Update tests to account for image controls.
- fast/images/image-controls-basic.html: Added.
- fast/images/image-controls-basic-expected.txt: Added.
- platform/mac/fast/images/image-controls-basic-expected.txt: Added.
- 3:48 PM Changeset in webkit [286460] by
-
- 7 edits in trunk/Source/WebKit
[iOS] Add required system call to WebKit sandboxes
https://bugs.webkit.org/show_bug.cgi?id=233730
<rdar://85266065>
Reviewed by Brent Fulgham.
- GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
- NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
- Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
- Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
- Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
- WebProcess/com.apple.WebProcess.sb.in:
- 3:37 PM Changeset in webkit [286459] by
-
- 32 edits in trunk/Source
[WebGPU] Hook up navigator.gpu.requestAdapter()
https://bugs.webkit.org/show_bug.cgi?id=233619
Source/WebCore:
Reviewed by Dean Jackson.
Hook up Navigator.GPU to WebKitLegacy/WebKit (via ChromeClient) so WebKit can provide a
RemoteGPUProxy "backing" object.
I have a test for this! But unfortunately I can't commit it yet because HAVE(WEBGPU_IMPLEMENTATION)
has to be off until Apple configures its internal build system. As soon as that's done, I'll add
the test for this!!! (The test passes when run locally.)
- Configurations/WebCore.xcconfig: Weak link with WebGPU.framework. This will
succeed even if WebGPU.framework doesn't exist.
- Modules/WebGPU/GPU.cpp:
(WebCore::GPU::setBacking): This is for WorkerNavigator. To create a GPU object, we have to
go through ChromeClient, which means we have to use the main thread. This means that creating
the GPU object has to be asynchronous on workers. We handle this by having
WorkerNavigator::gpu() return a shell object with no "backing," and asynchronously kick off a
task to construct a backing object and connect it to the shell object. If content calls
requestAdapter() on the shell, that function is already async, so we just fold in the wait for
the backing into the already-existing wait we have to do as a matter of course. This implements
that.
(WebCore::GPU::requestAdapter):
- Modules/WebGPU/GPU.h:
(WebCore::GPU::create):
(WebCore::GPU::backing): Deleted.
(WebCore::GPU::backing const): Deleted.
(WebCore::GPU::GPU): Deleted.
- Modules/WebGPU/GPUDevice.cpp:
(WebCore::GPUDevice::popErrorScope):
- page/Chrome.cpp:
(WebCore::Chrome::createGPUForWebGPU const): Ask WebKit / WebKitLegacy what kind of backing we
should be using.
- page/Chrome.h:
- page/ChromeClient.h:
(WebCore::ChromeClient::createGPUForWebGPU const):
- page/Navigator.cpp:
(WebCore::Navigator::gpu):
- page/Navigator.h:
- page/NavigatorBase.h:
(WebCore::NavigatorBase::gpu): Deleted.
- page/WorkerNavigator.cpp:
(WebCore::WorkerNavigator::gpu):
- page/WorkerNavigator.h:
Source/WebGPU:
Just hook up enough for Instance::requestAdapter() to not fail.
Reviewed by Dean Jackson.
- WebGPU/Adapter.mm:
(WebGPU::Adapter::getLimits):
- WebGPU/Instance.mm:
(WebGPU::Instance::requestAdapter):
(wgpuCreateInstance):
(wgpuInstanceRequestAdapter):
Source/WebKit:
Reviewed by Dean Jackson.
This hooks up a new message, GPUConnectionToWebProcess::createRemoteGPU(), which starts
the whole WebGPU GPU process infrastructure.
- Configurations/BaseTarget.xcconfig: We have to be able to #include files from WebGPU.
- GPUProcess/GPUConnectionToWebProcess.cpp:
(WebKit::GPUConnectionToWebProcess::createRemoteGPU): GPUConnectionToWebProcess owns
the RemoteGPUs.
- GPUProcess/GPUConnectionToWebProcess.h:
- GPUProcess/GPUConnectionToWebProcess.messages.in:
- Sources.txt:
- WebProcess/GPU/graphics/WebGPU/RemoteGPUProxy.cpp:
(WebKit::RemoteGPUProxy::RemoteGPUProxy): Creating a RemoteGPUProxy needs to send a
message to the GPU process to start the GPU process infrastructure. We block while we're
waiting for the reply from the GPU process. This was copied from RemoteGraphicsContextGL.
(WebKit::RemoteGPUProxy::gpuProcessConnectionDidClose):
- WebProcess/GPU/graphics/WebGPU/RemoteGPUProxy.h:
- WebProcess/WebCoreSupport/WebChromeClient.cpp: Hook up RemoteGPUProxy to WebCore.
(WebKit::WebChromeClient::createGPUForWebGPU const):
- WebProcess/WebCoreSupport/WebChromeClient.h:
Source/WebKitLegacy/mac:
Reviewed by Dean Jackson.
- Configurations/WebKitLegacy.xcconfig: We have to be able to #include files from WebGPU.
- WebCoreSupport/WebChromeClient.h:
- WebCoreSupport/WebChromeClient.mm:
(WebChromeClient::createGPUForWebGPU const): Hook up GPUImpl to WebCore.
Source/WTF:
Reviewed by Dean Jackson.
- wtf/PlatformHave.h: Create a HAVE() macro, by default off. As we bring
more infrastructure online, this will eventually flip to on.
- 3:26 PM Changeset in webkit [286458] by
-
- 14 edits1 add in trunk
[css-values-4] Support
*vi
(inline) and*vb
(block) viewport units
https://bugs.webkit.org/show_bug.cgi?id=232895
<rdar://problem/85179134>
Reviewed by Simon Fraser.
Source/WebCore:
*vi
is equal to 1% of the size of the UA-default/large/small/dynamic viewport size in the direction of the root element’s inline axis.
*vb
is equal to 1% of the size of the initial containing block UA-default/small/large/dynamic viewport size in the direction of the root element’s block axis.
As an example, onabout:blank
:
vi
would be equal tovw
vb
would be equal tovh
svi
would be equal tosvw
svb
would be equal tosvh
lvi
would be equal tolvw
lvb
would be equal tolvh
dvi
would be equal todvw
dvb
would be equal todvh
Spec: <https://drafts.csswg.org/css-values-4/#viewport-variants>
Tests: CSSViewportUnits.AllSame
CSSViewportUnits.EmptyUnobscuredSizeOverrides
CSSViewportUnits.SameUnobscuredSizeOverrides
CSSViewportUnits.DifferentUnobscuredSizeOverrides
CSSViewportUnits.SVGDocument
- css/CSSUnits.h:
- css/CSSUnits.cpp:
(WebCore::operator<<):
- css/CSSPrimitiveValue.h:
(WebCore::CSSPrimitiveValue::isViewportPercentageLength):
- css/CSSPrimitiveValue.cpp:
(WebCore::isValidCSSUnitTypeForDoubleConversion):
(WebCore::isStringType):
(WebCore::CSSPrimitiveValue::cleanup):
(WebCore::lengthOfViewportPhysicalAxisForLogicalAxis): Added.
(WebCore::CSSPrimitiveValue::computeUnzoomedNonCalcLengthDouble):
(WebCore::CSSPrimitiveValue::computeNonCalcLengthDouble):
(WebCore::CSSPrimitiveValue::unitTypeString):
(WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText const):
(WebCore::CSSPrimitiveValue::equals const):
- css/parser/CSSParserToken.cpp:
(WebCore::cssPrimitiveValueUnitFromTrie):
- css/parser/CSSPropertyParserHelpers.cpp:
(WebCore::CSSPropertyParserHelpers::consumeLengthRawWithKnownTokenTypeDimension):
- css/calc/CSSCalcCategoryMapping.cpp:
(WebCore::calcUnitCategory):
(WebCore::calculationCategoryForCombination):
(WebCore::hasDoubleValue):
Source/WebInspectorUI:
- UserInterface/Models/CSSCompletions.js:
Tools:
- TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.html:
- TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.svg: Added.
- TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.mm:
(TEST.CSSViewportUnits.AllSame):
(TEST.CSSViewportUnits.EmptyUnobscuredSizeOverrides):
(TEST.CSSViewportUnits.SameUnobscuredSizeOverrides):
(TEST.CSSViewportUnits.DifferentUnobscuredSizeOverrides):
(TEST.CSSViewportUnits.SVGDocument): Added.
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- 3:07 PM Changeset in webkit [286457] by
-
- 8 edits in branches/safari-612-branch/Source
Unreviewed versioning fix.
rdar://85990909
- 3:05 PM Changeset in webkit [286456] by
-
- 2 edits in trunk/Source/WebCore
Unreviewed follow-up to r286453 to address comments from Darin.
- dom/MessageChannel.h:
(WebCore::MessageChannel::port1 const):
(WebCore::MessageChannel::port2 const):
- 2:59 PM Changeset in webkit [286455] by
-
- 38 edits2 copies5 adds in trunk
[WK2] Make Web Lock API work across multiple WebProcesses
https://bugs.webkit.org/show_bug.cgi?id=233719
Reviewed by Alex Christensen.
Source/WebCore:
Make Web Lock API work across multiple WebProcesses. To achieve this, WebLockRegistry is now
an interface with 2 concrete subclasses:
- LocalWebLockRegistry: In charge of the actual storage of the lock registrations. This is basically a rename of the class that used to be named WebLockRegistry. In the WebKitLegacy case, we use a global LocalWebLockRegistry for regular browsing views and another global LocalWebLockRegistry for private browsing views. In the modern WebKit case, the LocalWebLockRegistry is held in the UIProcess by the WebsiteDataStore. It is held by the WebsiteDataStore because we don't want different sessions to share locks. It lives in the UIProcess because it needs to be shared by several WebProcesses. The NetworkProcess may have been suitable too but it would have meant dealing with crash recovery.
- RemoteWebLockRegistry: It has the same interface has LocalWebLockRegistry but merely proxies calls to the UIProcess via IPC.
In the UIProcess, each WebProcessProxy has a WebLockRegistryProxy instance which listens for
IPC from the RemoteWebLockRegistry in the WebProcess. Upon receiving IPC, it validates the
parameters (since the WebProcesses are not trusted) and calls the corresponding functions on
the LocalWebLockRegistry held by the WebProcessProxy's WebsiteDataStore. The WebLockRegistryProxy
is also in charge of notifying the RemoteWebLockRegistry in the WebProcess whenever a lock
request completes and whenever a held lock gets stolen.
- Modules/web-locks/WebLockManager.cpp:
(WebCore::WebLockManager::request):
(WebCore::WebLockManager::didCompleteLockRequest):
(WebCore::WebLockManager::requestLockOnMainThread):
(WebCore::WebLockManager::releaseLockOnMainThread):
(WebCore::WebLockManager::abortLockRequestOnMainThread):
(WebCore::WebLockManager::queryOnMainThread):
(WebCore::WebLockManager::clientIsGoingAway):
(WebCore::WebLockManager::ensureOnMainThread):
- Modules/web-locks/WebLockManager.h:
- Modules/web-locks/WebLockManagerSnapshot.h:
(WebCore::WebLockManagerSnapshot::Info::encode const):
(WebCore::WebLockManagerSnapshot::encode const):
(WebCore::WebLockManagerSnapshot::Info::decode):
(WebCore::WebLockManagerSnapshot::decode):
- Modules/web-locks/WebLockMode.h:
- Modules/web-locks/WebLockRegistry.cpp:
(WebCore::LocalWebLockRegistry::ensureRegistryForOrigin):
(WebCore::LocalWebLockRegistry::existingRegistryForOrigin const):
(WebCore::LocalWebLockRegistry::PerOriginRegistry::create):
(WebCore::LocalWebLockRegistry::PerOriginRegistry::PerOriginRegistry):
(WebCore::LocalWebLockRegistry::PerOriginRegistry::~PerOriginRegistry):
(WebCore::LocalWebLockRegistry::requestLock):
(WebCore::LocalWebLockRegistry::PerOriginRegistry::requestLock):
(WebCore::LocalWebLockRegistry::releaseLock):
(WebCore::LocalWebLockRegistry::PerOriginRegistry::releaseLock):
(WebCore::LocalWebLockRegistry::abortLockRequest):
(WebCore::LocalWebLockRegistry::PerOriginRegistry::abortLockRequest):
(WebCore::LocalWebLockRegistry::PerOriginRegistry::isGrantable const):
(WebCore::LocalWebLockRegistry::PerOriginRegistry::processLockRequestQueue):
(WebCore::LocalWebLockRegistry::snapshot):
(WebCore::LocalWebLockRegistry::PerOriginRegistry::snapshot):
(WebCore::LocalWebLockRegistry::clientIsGoingAway):
(WebCore::LocalWebLockRegistry::PerOriginRegistry::clientsAreGoingAway):
(WebCore::LocalWebLockRegistry::clientsAreGoingAway):
(): Deleted.
(WebCore::WebLockRegistry::registryForOrigin): Deleted.
(WebCore::WebLockRegistry::WebLockRegistry): Deleted.
(WebCore::WebLockRegistry::~WebLockRegistry): Deleted.
(WebCore::WebLockRegistry::requestLock): Deleted.
(WebCore::WebLockRegistry::releaseLock): Deleted.
(WebCore::WebLockRegistry::abortLockRequest): Deleted.
(WebCore::WebLockRegistry::isGrantable const): Deleted.
(WebCore::WebLockRegistry::processLockRequestQueue): Deleted.
(WebCore::WebLockRegistry::snapshot): Deleted.
(WebCore::WebLockRegistry::clientIsGoingAway): Deleted.
- Modules/web-locks/WebLockRegistry.h:
(WebCore::WebLockRegistry::~WebLockRegistry):
- WebCore.xcodeproj/project.pbxproj:
- loader/EmptyClients.cpp:
(WebCore::pageConfigurationWithEmptyClients):
- page/Page.cpp:
(WebCore::Page::Page):
- page/Page.h:
(WebCore::Page::webLockRegistry):
- page/PageConfiguration.cpp:
(WebCore::PageConfiguration::PageConfiguration):
- page/PageConfiguration.h:
Source/WebKit:
See WebCore changelog.
- CMakeLists.txt:
- DerivedSources-input.xcfilelist:
- DerivedSources-output.xcfilelist:
- DerivedSources.make:
- Scripts/webkit/messages.py:
(types_that_cannot_be_forward_declared):
- Sources.txt:
- UIProcess/WebLockRegistryProxy.cpp: Added.
(WebKit::WebLockRegistryProxy::WebLockRegistryProxy):
(WebKit::WebLockRegistryProxy::~WebLockRegistryProxy):
(WebKit::WebLockRegistryProxy::requestLock):
(WebKit::WebLockRegistryProxy::releaseLock):
(WebKit::WebLockRegistryProxy::abortLockRequest):
(WebKit::WebLockRegistryProxy::snapshot):
(WebKit::WebLockRegistryProxy::clientIsGoingAway):
(WebKit::WebLockRegistryProxy::processDidExit):
- UIProcess/WebLockRegistryProxy.h: Added.
- UIProcess/WebLockRegistryProxy.messages.in: Added.
- UIProcess/WebProcessProxy.cpp:
(WebKit::m_webLockRegistry):
(WebKit::WebProcessProxy::shutDown):
- UIProcess/WebProcessProxy.h:
- UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::WebsiteDataStore):
- UIProcess/WebsiteData/WebsiteDataStore.h:
(WebKit::WebsiteDataStore::webLockRegistry):
- WebKit.xcodeproj/project.pbxproj:
- WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::installServiceWorker):
- WebProcess/WebCoreSupport/RemoteWebLockRegistry.cpp: Added.
(WebKit::RemoteWebLockRegistry::LocksSnapshot::isEmpty const):
(WebKit::RemoteWebLockRegistry::RemoteWebLockRegistry):
(WebKit::RemoteWebLockRegistry::~RemoteWebLockRegistry):
(WebKit::RemoteWebLockRegistry::requestLock):
(WebKit::RemoteWebLockRegistry::releaseLock):
(WebKit::RemoteWebLockRegistry::abortLockRequest):
(WebKit::RemoteWebLockRegistry::snapshot):
(WebKit::RemoteWebLockRegistry::clientIsGoingAway):
(WebKit::RemoteWebLockRegistry::didCompleteLockRequest):
(WebKit::RemoteWebLockRegistry::didStealLock):
- WebProcess/WebCoreSupport/RemoteWebLockRegistry.h: Added.
- WebProcess/WebCoreSupport/RemoteWebLockRegistry.messages.in: Added.
- WebProcess/WebPage/WebPage.cpp:
(WebKit::m_appHighlightsVisible):
- WebProcess/WebProcess.cpp:
(WebKit::WebProcess::WebProcess):
- WebProcess/WebProcess.h:
(WebKit::WebProcess::webLockRegistry):
Source/WebKitLegacy/mac:
See WebCore changelog.
- WebView/WebView.mm:
(getOrCreateWebLockRegistry):
(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
Source/WebKitLegacy/win:
See WebCore Changelog.
- WebView.cpp:
(getOrCreateWebLockRegistry):
(WebView::initWithFrame):
Tools:
Add API test coverage.
- TestWebKitAPI/SourcesCocoa.txt:
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- TestWebKitAPI/Tests/WebKitCocoa/WebLocks.mm: Added.
(TestWebKitAPI::TEST):
- 2:27 PM Changeset in webkit [286454] by
-
- 2 edits in trunk/Source/WebCore
[Apple Pay] recurring line items appear way in the future
https://bugs.webkit.org/show_bug.cgi?id=233779
<rdar://problem/85976407>
Reviewed by Wenson Hsieh.
JavaScript
Date
uses a milliseconds-based value, whereas nativeNSDate
is seconds-based.
- Modules/applepay/cocoa/PaymentSummaryItemsCocoa.mm:
(WebCore::toDate):
- 2:22 PM Changeset in webkit [286453] by
-
- 5 edits in trunk/Source/WebCore
MessageChannel::port1() / port2() should return references instead of pointers
https://bugs.webkit.org/show_bug.cgi?id=233772
Reviewed by Alex Christensen.
This was extracted from Alex Christensen's large patch at Bug 230382.
- Modules/webaudio/AudioWorkletNode.cpp:
(WebCore::AudioWorkletNode::create):
- bindings/js/JSMessageChannelCustom.cpp:
(WebCore::JSMessageChannel::visitAdditionalChildren):
- dom/MessageChannel.cpp:
(WebCore::generateMessagePorts):
(WebCore::MessageChannel::MessageChannel):
- dom/MessageChannel.h:
(WebCore::MessageChannel::port1 const):
(WebCore::MessageChannel::port2 const):
- 2:21 PM Changeset in webkit [286452] by
-
- 13 edits in trunk
[Payment Request] Validate payment method data on construction
https://bugs.webkit.org/show_bug.cgi?id=233292
<rdar://problem/85736007>
Reviewed by Andy Estes.
Source/WebCore:
This will allow developers to replace any
ApplePaySession.supportsVersion
check(s) by
attempting to create aPaymentRequest
object with data specific to Apple Pay. This is
actually an improvement, because it'll also allow developers to catch most errors in that
data earlier, as previously any errors would only be thrown whenshow()
is called.
Spec: <https://github.com/w3c/payment-request/pull/976>
Test: http/tests/ssl/applepay/PaymentRequest.https.html
- Modules/paymentrequest/PaymentRequest.cpp:
(WebCore::PaymentRequest::show):
- Modules/paymentrequest/PaymentHandler.h:
Adjust
PaymentHandler::convertData
to take aDocument
so that additional validation
can be performed on the provided payment method(s) (e.g. check the Apple Pay version).
- Modules/applepay/PaymentRequestValidator.h:
- Modules/applepay/PaymentRequestValidator.mm:
(WebCore::PaymentRequestValidator::validate):
Allow callers to choose what fields to validate. This is needed because when the
ApplePaySessionPaymentRequest
created/converted when validating the payment method data in
thePaymentRequest
constructor isn't able to get fields from thePaymentRequest
as it
hasn't been created yet.
- Modules/applepay/ApplePaySession.cpp:
(WebCore::convertAndValidate):
- Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
- Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
(WebCore::convertAndValidateApplePayRequest):
(WebCore::ApplePayPaymentHandler::convertData):
(WebCore::ApplePayPaymentHandler::show):
- Modules/applepay-ams-ui/ApplePayAMSUIPaymentHandler.h:
- Modules/applepay-ams-ui/ApplePayAMSUIPaymentHandler.cpp:
(WebCore::convertAndValidateApplePayAMSUIRequest):
(WebCore::ApplePayAMSUIPaymentHandler::convertData):
LayoutTests:
- http/tests/ssl/applepay/PaymentRequest.https.html:
- http/tests/ssl/applepay/PaymentRequest.https-expected.txt:
- 1:51 PM Changeset in webkit [286451] by
-
- 9 edits in trunk/LayoutTests
[WinCairo] Unreviewed test gardening
- platform/wincairo-wk1/TestExpectations:
- platform/wincairo/TestExpectations:
- platform/wincairo/fast/box-shadow/basic-shadows-expected.txt:
- platform/wincairo/fast/dom/52776-expected.txt:
- platform/wincairo/fast/text/atsui-rtl-override-selection-expected.txt:
- platform/wincairo/fast/text/international/bidi-LDB-2-formatting-characters-expected.txt:
- platform/wincairo/fast/text/international/bidi-ignored-for-first-child-inline-expected.txt:
- platform/wincairo/fast/text/international/bidi-neutral-run-expected.txt:
- 1:33 PM Changeset in webkit [286450] by
-
- 4 edits in trunk
[ Monterey ] fast/images/text-recognition/mac/image-overlay-text-disables-app-highlight-menu-items.html (layout-test) is a constant text failure
https://bugs.webkit.org/show_bug.cgi?id=233658
rdar://problem/85886424
Reviewed by Tim Horton.
Source/WTF:
Define ENABLE_APP_HIGHLIGHTS for iOS 15+ and macOS Monterey+. This ensures that
internals.appHighlightContextMenuItemTitles
is defined in layout tests on Monterey.
- wtf/PlatformEnableCocoa.h:
Tools:
Add a forward declaration for open source builds.
- TestWebKitAPI/ios/UIKitSPI.h:
- 1:26 PM Changeset in webkit [286449] by
-
- 3 edits in trunk/Source/WebCore
Verify borderRect is Renderable
https://bugs.webkit.org/show_bug.cgi?id=232650
Patch by Brandon Stewart <Brandon> on 2021-12-02
Reviewed by Alan Bujtas.
Verify that borderRect is renderable.
Align isRenderable() implementations in RoundedRect and FloatRoundedRect.
- platform/graphics/RoundedRect.cpp:
(WebCore::RoundedRect::isRenderable const):
- rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::paintBoxShadow):
- 1:25 PM Changeset in webkit [286448] by
-
- 2 edits in trunk/Source/WebCore
[LFC][IFC] Redundant line run type checking in InlineDisplayContentBuilder::processNonBidiContent
https://bugs.webkit.org/show_bug.cgi?id=233597
Reviewed by Antti Koivisto.
- layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::processNonBidiContent):
- 1:13 PM Changeset in webkit [286447] by
-
- 35 edits in trunk/Source/WebCore
Remove the multipart parameter to FormAssociatedElement::appendFormData, InputType::appendFormData and HTMLFormElement::constructEntryList
https://bugs.webkit.org/show_bug.cgi?id=233774
Patch by Andreu Botella <andreu@andreubotella.com> on 2021-12-02
Reviewed by Chris Dumez.
These parameters were only needed because of an optimization where file inputs were being
added to the DOMFormData as string values containing their filenames if the entry list was
being constructed to be used in a urlencoded or text/plain form submission. This
optimization was removed in r286427 and those parameters can now be dropped.
No behavior change.
- html/BaseButtonInputType.cpp:
(WebCore::BaseButtonInputType::appendFormData const):
- html/BaseButtonInputType.h:
- html/BaseCheckableInputType.cpp:
(WebCore::BaseCheckableInputType::appendFormData const):
- html/BaseCheckableInputType.h:
- html/DOMFormData.cpp:
(WebCore::DOMFormData::create):
- html/FileInputType.cpp:
(WebCore::FileInputType::appendFormData const):
- html/FileInputType.h:
- html/FormAssociatedElement.h:
(WebCore::FormAssociatedElement::appendFormData):
- html/HTMLButtonElement.cpp:
(WebCore::HTMLButtonElement::appendFormData):
- html/HTMLButtonElement.h:
- html/HTMLFormControlElement.h:
- html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::constructEntryList):
- html/HTMLFormElement.h:
- html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::appendFormData):
- html/HTMLInputElement.h:
- html/HTMLKeygenElement.cpp:
(WebCore::HTMLKeygenElement::appendFormData):
- html/HTMLKeygenElement.h:
- html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::appendFormData):
- html/HTMLObjectElement.h:
- html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::appendFormData):
- html/HTMLSelectElement.h:
- html/HTMLTextAreaElement.cpp:
(WebCore::HTMLTextAreaElement::appendFormData):
- html/HTMLTextAreaElement.h:
- html/HiddenInputType.cpp:
(WebCore::HiddenInputType::appendFormData const):
- html/HiddenInputType.h:
- html/ImageInputType.cpp:
(WebCore::ImageInputType::appendFormData const):
- html/ImageInputType.h:
- html/InputType.cpp:
(WebCore::InputType::appendFormData const):
- html/InputType.h:
- html/SubmitInputType.cpp:
(WebCore::SubmitInputType::appendFormData const):
- html/SubmitInputType.h:
- html/TextFieldInputType.cpp:
(WebCore::TextFieldInputType::appendFormData const):
- html/TextFieldInputType.h:
- loader/FormSubmission.cpp:
(WebCore::FormSubmission::create):
- 1:04 PM Changeset in webkit [286446] by
-
- 2 edits in trunk/Source/WebCore
[LFC][IFC] Introduce createDisplayBoxesInVisualOrderForContentRuns
https://bugs.webkit.org/show_bug.cgi?id=233733
Reviewed by Antti Koivisto.
Revert some of the inline box related bidi changes and start with
a very simple "let's create the display boxes for all _content_ runs in visual order".
This is very similar to InlineDisplayContentBuilder::processNonBidiContent() where we just
loop through the content and construct display boxes.
This is also in preparation for advancing with the inline box case.
- layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::processNonBidiContent):
(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):
- 12:22 PM Changeset in webkit [286445] by
-
- 3 edits in trunk/Source/WebCore
[LFC][IFC] Move inline box geometry (BoxGeometry) update logic to a dedicated function
https://bugs.webkit.org/show_bug.cgi?id=233615
Reviewed by Antti Koivisto.
This is also in preparation for computing the BoxGeometry for bidi inline boxes.
- layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::setInlineBoxGeometry):
(WebCore::Layout::InlineDisplayContentBuilder::appendInlineBoxDisplayBox):
(WebCore::Layout::InlineDisplayContentBuilder::appendSpanningInlineBoxDisplayBox):
- layout/formattingContexts/inline/InlineDisplayContentBuilder.h:
- 12:09 PM Changeset in webkit [286444] by
-
- 4 edits in trunk
html/semantics/forms/constraints/input-number-validity-dynamic-value-no-change.html WPT test is failing
https://bugs.webkit.org/show_bug.cgi?id=233765
Reviewed by Darin Adler.
LayoutTests/imported/w3c:
Rebaseline WPT test that is now passing.
- web-platform-tests/html/semantics/forms/constraints/input-number-validity-dynamic-value-no-change-expected.txt:
Source/WebCore:
Per https://html.spec.whatwg.org/#concept-input-min-zero, step base needs to be computed based on
the 'min' attribute, then fallback to the 'value' attribute and finally fallback to the default
step base. WebKit was missing the "fallback to the 'value' attribute logic.
No new tests, rebaselined existing test.
- html/NumberInputType.cpp:
(WebCore::NumberInputType::createStepRange const):
- 11:54 AM Changeset in webkit [286443] by
-
- 3 edits in branches/safari-612-branch
Revert r286394. rdar://problem/83070565
- 11:54 AM Changeset in webkit [286442] by
-
- 3 edits2 deletes in branches/safari-612-branch
Revert r286395. rdar://problem/83070565
- 11:49 AM Changeset in webkit [286441] by
-
- 3 edits2 adds in trunk
Fix crash in GraphicsContextCG::endTransparencyLayer
https://bugs.webkit.org/show_bug.cgi?id=230230
Patch by Tim Nguyen <ntim@apple.com> on 2021-12-02
Reviewed by Myles C. Maxfield.
Source/WebCore:
The crash was due to unbalanced calls to begin and end transparency layers.
A branch handling ancestors of transparent layers that are transform root needed to be
aware of the top layer. Opacity on ancestors don't affect top layer elements so calling
beginTransparencyLayers
onparent()
is incorrect.
Also fix
transparentPaintingAncestor()
to be top layer aware to avoid flickering layers
while scrolling.
Test: fast/layers/top-layer-ancestor-opacity-and-transform-crash.html
- rendering/RenderLayer.cpp:
(WebCore::RenderLayer::transparentPaintingAncestor):
(WebCore::RenderLayer::paintLayerWithEffects):
LayoutTests:
- fast/layers/top-layer-ancestor-opacity-and-transform-crash-expected.txt: Added.
- fast/layers/top-layer-ancestor-opacity-and-transform-crash.html: Added.
- 11:39 AM Changeset in webkit [286440] by
-
- 2 edits in trunk/Tools
REGRESSION: r286075 [ Big Sur x86] 2 TestWebKitAPI.WebPushD (API-Tests) are constant failures
https://bugs.webkit.org/show_bug.cgi?id=233726
Unreviewed gardening.
- Disabling these tests on all Mac platforms until we can figure out the code signing/etc situation
- Fix the truly broken "basic" test everywhere by adapting to messaging changes
- TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:
(TestWebKitAPI::TEST):
- 11:35 AM Changeset in webkit [286439] by
-
- 3 edits2 deletes in trunk
Unreviewed, reverting r285570.
Broke StarD build
Reverted changeset:
"Fix crash in GraphicsContextCG::endTransparencyLayer"
https://bugs.webkit.org/show_bug.cgi?id=230230
https://commits.webkit.org/r285570
- 11:19 AM Changeset in webkit [286438] by
-
- 6 edits in trunk/Source
Unreviewed, reverting r286437.
https://bugs.webkit.org/show_bug.cgi?id=233776
Introduced test failure
Reverted changeset:
"[WP] Strengthen sandbox when AppCache is disabled"
https://bugs.webkit.org/show_bug.cgi?id=233746
https://commits.webkit.org/r286437
- 10:44 AM Changeset in webkit [286437] by
-
- 6 edits in trunk/Source
[WP] Strengthen sandbox when AppCache is disabled
https://bugs.webkit.org/show_bug.cgi?id=233746
<rdar://problem/85953893>
Reviewed by Brent Fulgham.
Source/WebKit:
When AppCache is disabled, we can remove access to some resources in the WebContent process' sandbox.
This is implemented using a new sandbox state variable representing the AppCache state.
- Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
- WebProcess/WebPage/WebPage.cpp:
- WebProcess/com.apple.WebProcess.sb.in:
Source/WTF:
Add HAVE macro for sandbox state flags support.
- wtf/PlatformHave.h:
- 9:57 AM Changeset in webkit [286436] by
-
- 2 edits in branches/safari-613.1.10-branch/Source/WebKit
Cherry-pick r286381. rdar://problem/85832755
[WP] Sandbox telemetry is missing for some system calls
https://bugs.webkit.org/show_bug.cgi?id=233594
<rdar://problem/85832755>
Reviewed by Brent Fulgham.
Sandbox telemetry is missing for some system calls, since telemetry rules are automatically overridden in some cases.
This patch is addressing this by disabling system call inference.
- WebProcess/com.apple.WebProcess.sb.in:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@286381 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 9:57 AM Changeset in webkit [286435] by
-
- 2 edits in branches/safari-613.1.10-branch/Source/WebKit
Cherry-pick r286266. rdar://problem/85832755
[WP] Sandbox telemetry is missing for some system calls
https://bugs.webkit.org/show_bug.cgi?id=233594
<rdar://problem/85832755>
Reviewed by Brent Fulgham.
Sandbox telemetry is missing for some system calls, since telemetry rules are automatically overridden in some cases.
This patch is addressing this by disabling system call inference.
- Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@286266 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 9:48 AM Changeset in webkit [286434] by
-
- 2 edits in trunk/Source/WTF
[macCatalyst] Enable support for date/time inputs
https://bugs.webkit.org/show_bug.cgi?id=233710
rdar://80108114
Reviewed by Tim Horton.
Date/time inputs were unsupported due to the lack of support for custom
views inside UIContextMenuInteractions on macCatalyst.
However, after date/time pickers transitioned to use
_UIDatePickerOverlayPresentation in iOS 15, there is nothing preventing
them from functioning on macCatalyst.
- Scripts/Preferences/WebPreferencesInternal.yaml:
- 9:36 AM Changeset in webkit [286433] by
-
- 6 edits8 adds in trunk
[:has() pseudo-class] Invalidation in non-subject position
https://bugs.webkit.org/show_bug.cgi?id=233758
Reviewed by Simon Fraser.
LayoutTests/imported/w3c:
- web-platform-tests/css/selectors/invalidation/has-in-adjacent-position-expected.txt: Added.
- web-platform-tests/css/selectors/invalidation/has-in-adjacent-position.html: Added.
- web-platform-tests/css/selectors/invalidation/has-in-ancestor-position-expected.txt: Added.
- web-platform-tests/css/selectors/invalidation/has-in-ancestor-position.html: Added.
- web-platform-tests/css/selectors/invalidation/has-in-parent-position-expected.txt: Added.
- web-platform-tests/css/selectors/invalidation/has-in-parent-position.html: Added.
- web-platform-tests/css/selectors/invalidation/has-in-sibling-position-expected.txt: Added.
- web-platform-tests/css/selectors/invalidation/has-in-sibling-position.html: Added.
Source/WebCore:
Invalidation for selectors like '.ancestor:has(.foo) #target'.
Tests: imported/w3c/web-platform-tests/css/selectors/invalidation/has-in-adjacent-position.html
imported/w3c/web-platform-tests/css/selectors/invalidation/has-in-ancestor-position.html
imported/w3c/web-platform-tests/css/selectors/invalidation/has-in-parent-position.html
imported/w3c/web-platform-tests/css/selectors/invalidation/has-in-sibling-position.html
- style/ChildChangeInvalidation.cpp:
(WebCore::Style::ChildChangeInvalidation::invalidateForChangedElement):
(WebCore::Style::needsTraversal):
(WebCore::Style::needsDescendantTraversal):
- style/RuleFeature.cpp:
(WebCore::Style::isSiblingOrSubject):
(WebCore::Style::isHasPseudoClassMatchElement):
(WebCore::Style::computeHasPseudoClassMatchElement):
(WebCore::Style::computeSubSelectorMatchElement):
Use new MatchElement::HasNonSubject as a catch-all for cases where :has() is in a non-subject position.
In the future this can be optimized better by computing both the :has match element and the overall
match element separately.
- style/RuleFeature.h:
- style/StyleInvalidator.cpp:
(WebCore::Style::Invalidator::invalidateStyleWithMatchElement):
Worst-case invalidation.
- 8:44 AM Changeset in webkit [286432] by
-
- 3 edits in trunk/Source/WebKit
Add some logging to NetworkRTCProvider
https://bugs.webkit.org/show_bug.cgi?id=233759
Reviewed by Eric Carlson.
No change of behavior.
- NetworkProcess/webrtc/NetworkRTCProvider.cpp:
(WebKit::NetworkRTCProvider::addSocket):
- NetworkProcess/webrtc/NetworkRTCUDPSocketCocoa.mm:
(WebKit::NetworkRTCUDPSocketCocoaConnections::NetworkRTCUDPSocketCocoaConnections):
- 8:33 AM Changeset in webkit [286431] by
-
- 2 edits in trunk/Source/WTF
macOS Monterey build fix after r286420 (suggested by Brady).
- wtf/PlatformHave.h:
- 8:28 AM Changeset in webkit [286430] by
-
- 2 edits in trunk/Source/WebKit
REGRESSION(r285722): Introduced performance regression
https://bugs.webkit.org/show_bug.cgi?id=233718
Unreviewed partial revert of r285722.
- Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
- 7:46 AM Changeset in webkit [286429] by
-
- 6 edits in trunk/Source/bmalloc
[libpas] Define and use PAS_RISCV
https://bugs.webkit.org/show_bug.cgi?id=233753
Patch by Zan Dobersek <zdobersek@igalia.com> on 2021-12-02
Reviewed by Yusuke Suzuki.
Define PAS_RISCV as appropriate and use it accordingly to avoid custom
x86-64 assembly, much like it's avoided for PAS_ARM. This gets libpas
compiling for RISC-V targets.
- libpas/src/libpas/pas_config.h:
- libpas/src/libpas/pas_config_prefix.h:
- libpas/src/libpas/pas_segregated_page_inlines.h:
(pas_segregated_page_deallocate_with_page):
- libpas/src/libpas/pas_utils.h:
- libpas/src/libpas/pas_utils_prefix.h:
(pas_fence):
- 7:41 AM Changeset in webkit [286428] by
-
- 2 edits in trunk/Source/JavaScriptCore
[RISCV64] Fix effective address loading for LabelReferences with offsets
https://bugs.webkit.org/show_bug.cgi?id=233754
Patch by Zan Dobersek <zdobersek@igalia.com> on 2021-12-02
Reviewed by Yusuke Suzuki.
r286345 (and subsequent change in r286372) introduced a load from a
label address with an additional offset. To properly handle this,
RISCV64 offlineasm generates the desired load-effective-address
instruction but now also generates an additional add instruction when
an offset value is present for that lea.
- offlineasm/riscv64.rb:
- 7:34 AM Changeset in webkit [286427] by
-
- 8 edits in trunk
File inputs in non-multipart form submissions show up as string values in the formdata event
https://bugs.webkit.org/show_bug.cgi?id=233725
Patch by Andreu Botella <andreu@andreubotella.com> on 2021-12-02
Reviewed by Chris Dumez.
LayoutTests/imported/w3c:
Added tests in web-platform-tests/html/semantics/forms/form-submission-0/constructing-form-data-set.html
to check that file inputs show up as File entries in the formdata event.
- web-platform-tests/html/semantics/forms/form-submission-0/constructing-form-data-set-expected.txt:
- web-platform-tests/html/semantics/forms/form-submission-0/constructing-form-data-set.html:
- web-platform-tests/html/semantics/forms/form-submission-0/text-plain.window-expected.txt:
- web-platform-tests/html/semantics/forms/form-submission-0/urlencoded2.window-expected.txt:
Source/WebCore:
When a form's entry list was constructed form a non-multipart/form-data form submission,
file inputs were added to the DOMFormData object as string values consisting of the file's
filename. Before r280310, this optimization was unobservable, since the DOMFormData object
was never exposed to the user halfway through a form submission.
r280310 changed this by adding the formdata event, which fires at the end of the "construct
the entry list" algorithm and can be used to both inspect and modify the DOMFormData object.
This means that it is now observable that file inputs in urlencoded and text/plain form
submissions are encoded as their filenames, and that any new File entries added to the
DOMFormData object the event listeners will be skipped when building the form payload.
This change fixes that by always adding file inputs to DOMFormData as File entries, and
using a File's filename as the string value in FormData::appendNonMultipartKeyValuePairItems
Tests: imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/constructing-form-data-set.html
imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/text-plain.window.html
imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/urlencoded2.window.html
- html/FileInputType.cpp:
(WebCore::FileInputType::appendFormData const): Changed to always add File entries to the
DOMFormData object, rather than adding the filenames as string values whenmultipart
is
false.
- platform/network/FormData.cpp:
(WebCore::FormData::appendNonMultiPartKeyValuePairItems): Changed to encode File entry
values as their filenames, rather than skipping them.
- 7:25 AM Changeset in webkit [286426] by
-
- 5 edits in trunk
AX Isolated Tree: Document links should be stored in web areas, not the root
https://bugs.webkit.org/show_bug.cgi?id=233728
Reviewed by Chris Fleizach.
Source/WebCore:
In WebAccessibilityObjectWrapperMac.mm, we expose the document links attribute (AXLinkUIElements)
on web areas. However, in AXIsolatedObject::initializeAttributeData we currently only store
AXPropertyName::DocumentLinks for the root element, which is not a web area.
In this patch, we store document links for web area elements instead
of the root element.
This patch fixes accessibility/visible-elements.html, which tests document links.
- accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::initializeAttributeData):
LayoutTests:
- accessibility/visible-elements.html:
- accessibility/visible-elements-expected.txt:
Make this test async so it passes in isolated tree mode.
This test must be async because it includes JS that dynamically
changes page content.
- 7:21 AM Changeset in webkit [286425] by
-
- 6 edits in trunk
Add a fast path for empty string to setInnerHTML()
https://bugs.webkit.org/show_bug.cgi?id=233647
Patch by Alexey Shvayka <ashvayka@apple.com> on 2021-12-02
Reviewed by Geoff Garen.
LayoutTests/imported/w3c:
- web-platform-tests/html/semantics/scripting-1/the-template-element/innerhtml-on-templates/innerhtml-expected.txt:
- web-platform-tests/html/semantics/scripting-1/the-template-element/innerhtml-on-templates/innerhtml.html:
Source/WebCore:
This patch adds a fast path for
element.innerHTML = ""
, which is a common idiom for
removing all children from an element, while ensuring <template> contents is modified
rather than its children [1], and that mutation records are enqueued.
Although there are quite a few insertion modes [1], parsing empty string creates
additional elements only inside <html> container (please see "Anything else" clauses).
Bypassing parser instantiation results in 3.2x progression of the attached microbenchmark.
Both Gecko and Blink has this optimization, which was reported to progress Speedometer2
score (especially Vanilla / jQuery / Preact subtests).
Our
textContent
andinnerText
setters are already fast enough for empty strings.
[1] https://w3c.github.io/DOM-Parsing/#dom-innerhtml-innerhtml (setting, step 3)
[2] https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inhtml
No behavior change.
- dom/Element.cpp:
(WebCore::Element::setInnerHTML):
- dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::setInnerHTML):
- 6:26 AM Changeset in webkit [286424] by
-
- 13 edits in trunk/Source/JavaScriptCore
[JSC] Generated code size reductions for baseline JIT (all architectures)
https://bugs.webkit.org/show_bug.cgi?id=233474
Patch by Geza Lore <Geza Lore> on 2021-12-02
Reviewed by Yusuke Suzuki.
This patch introduces a few improvements that reduce the generated
code size.
Target independent improvements to the Baseline JIT:
- Some bytecodes that are very frequent (e.g.: get_by_id, call) share
the same instructions at the tail end of the fast and slow paths.
Instead of duplicating these in the slow path, then branch to the next
sequential bytecode on the fast path, make the slow path branch to and
reuse these common instructions, which then naturally fall through to
the next sequential bytecode.
- Minor tweaks in a few places to remove redundant reloading of
immediates and remove redundant moves.
- Remove a small number of redundant unconditional branches from some
DataIC fast paths.
ARMv7/Thumb-2 specific improvements:
- Add assembler support for LDRD and STRD (load/store a pair of
32-bit GPRs) and use them throughout via loadValue/storeValue. This
yields denser code as it often eliminates repeated temporary register
setups (especially for a BaseIndex access), and also due to point 4
below. This is also potentially a performance improvement on
micro-architectures with a 64-bit LSU data-path.
16-bit encoding in Thumb-2, so prefer to use low order registers
as temporaries wherever possible.
The net effect of this patch is that the emitted baseline code during
a run of JetStream2 is ~6.6% smaller on x86_64, ~5.1% smaller on
ARM64, and ~24% smaller on ARMv7/Thumb-2. On ARMv7/Thumb-2, DFG code
is also ~5.3% smaller, while on other architectures the DFG code is
unaffected.
On ARMv7/Thumb-2, this patch also yields an ~2% improvement in
JetStream2 scores on my test machine.
- assembler/ARMv7Assembler.h:
(JSC::ARMv7Assembler::ldrd):
(JSC::ARMv7Assembler::strd):
(JSC::ARMv7Assembler::ARMInstructionFormatter::twoWordOp12Reg4Reg4Reg4Imm8):
- assembler/MacroAssembler.h:
(JSC::MacroAssembler::addPtr):
- assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::bestTempRegister):
(JSC::MacroAssemblerARMv7::scratchRegister):
(JSC::MacroAssemblerARMv7::add32):
(JSC::MacroAssemblerARMv7::sub32):
(JSC::MacroAssemblerARMv7::loadPair32):
(JSC::MacroAssemblerARMv7::store32):
(JSC::MacroAssemblerARMv7::storePair32):
(JSC::MacroAssemblerARMv7::compare32AndSetFlags):
(JSC::MacroAssemblerARMv7::test32):
(JSC::MacroAssemblerARMv7::branch32):
(JSC::MacroAssemblerARMv7::farJump):
(JSC::MacroAssemblerARMv7::call):
(JSC::MacroAssemblerARMv7::compare32):
- assembler/MacroAssemblerMIPS.h:
(JSC::MacroAssemblerMIPS::loadPair32):
(JSC::MacroAssemblerMIPS::storePair32):
- jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::storeValue):
(JSC::AssemblyHelpers::loadValue):
- jit/JIT.cpp:
(JSC::JIT::privateCompileSlowCases):
- jit/JIT.h:
- jit/JITCall.cpp:
(JSC::JIT::compileCallEval):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):
(JSC::JIT::emitSlow_op_iterator_open):
(JSC::JIT::emitSlow_op_iterator_next):
- jit/JITInlineCacheGenerator.cpp:
(JSC::generateGetByIdInlineAccess):
(JSC::JITPutByIdGenerator::generateBaselineDataICFastPath):
- jit/JITInlineCacheGenerator.h:
- jit/JITInlines.h:
(JSC::JIT::setFastPathResumePoint):
(JSC::JIT::fastPathResumePoint const):
- jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_enter):
- jit/JITPropertyAccess.cpp:
(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::generateGetByValSlowCase):
(JSC::JIT::emit_op_get_private_name):
(JSC::JIT::emitSlow_op_get_private_name):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emitSlow_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emitSlow_op_get_by_id_with_this):
(JSC::JIT::emit_op_in_by_id):
(JSC::JIT::emitSlow_op_in_by_id):
(JSC::JIT::emit_op_in_by_val):
(JSC::JIT::emitSlow_op_in_by_val):
(JSC::JIT::emitHasPrivate):
(JSC::JIT::emitHasPrivateSlow):
(JSC::JIT::emitSlow_op_has_private_name):
(JSC::JIT::emitSlow_op_has_private_brand):
(JSC::JIT::emit_op_enumerator_get_by_val):
(JSC::JIT::emitWriteBarrier):
- 6:15 AM Changeset in webkit [286423] by
-
- 19 edits2 copies in trunk
GraphicsContextGLANGLE should not have Cocoa Mac specific display reconfiguration code
https://bugs.webkit.org/show_bug.cgi?id=233695
Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-12-02
Reviewed by Antti Koivisto.
Source/WebCore:
Move code to observe Mac display reconfiguration
away from GraphicsContextGLANGLE to GraphicsContextGLCocoa.
Apply the display reconfiguration listener only for
WebProcessGraphicsContextGLCocoa, it is not needed for the
GPU process contexts.
Move the listener notification code away from GraphicsContextGLOpenGLManager
into its own class. This way GraphicsContextGLOpenGLManager does not need
to know Mac specific interfaces. Later on, GraphicsContextGLOpenGLManager can
be removed altogether.
Changes behavior so that simulateEventForTesting invokes the simulated context
change only for the context being tested. This simplifies the implementation.
No new tests, refactor.
- PlatformMac.cmake:
- SourcesCocoa.txt:
- WebCore.xcodeproj/project.pbxproj:
- platform/graphics/GraphicsContextGLAttributes.h:
(WebCore::GraphicsContextGLAttributes::effectivePowerPreference const):
- platform/graphics/angle/GraphicsContextGLANGLE.cpp:
(WebCore::GraphicsContextGLANGLE::simulateEventForTesting):
- platform/graphics/angle/GraphicsContextGLANGLE.h:
- platform/graphics/cocoa/GraphicsContextGLCocoa.h:
- platform/graphics/cocoa/GraphicsContextGLCocoa.mm:
(WebCore::initializeEGLDisplay):
(WebCore::GraphicsContextGLCocoa::create):
(WebCore::GraphicsContextGLCocoa::GraphicsContextGLCocoa):
(WebCore::GraphicsContextGLCocoa::~GraphicsContextGLCocoa):
(WebCore::GraphicsContextGLANGLE::GraphicsContextGLANGLE):
(WebCore::GraphicsContextGLCocoa::setContextVisibility):
(WebCore::GraphicsContextGLCocoa::updateContextOnDisplayReconfiguration):
(WebCore::GraphicsContextGLANGLE::setContextVisibility): Deleted.
(WebCore::GraphicsContextGLANGLE::displayWasReconfigured): Deleted.
- platform/graphics/cocoa/WebProcessGraphicsContextGLCocoa.mm:
- platform/graphics/mac/DisplayConfigurationMonitor.cpp: Copied from Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLManager.h.
(WebCore::DisplayConfigurationMonitor::singleton):
(WebCore::DisplayConfigurationMonitor::addClient):
(WebCore::DisplayConfigurationMonitor::removeClient):
(WebCore::DisplayConfigurationMonitor::dispatchDisplayWasReconfigured):
- platform/graphics/mac/DisplayConfigurationMonitor.h: Copied from Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLManager.h.
- platform/graphics/opengl/GraphicsContextGLOpenGLManager.cpp:
(WebCore::GraphicsContextGLOpenGLManager::displayWasReconfigured): Deleted.
- platform/graphics/opengl/GraphicsContextGLOpenGLManager.h:
Source/WebKit:
Previous GraphicsContextGLANGLE::displayWasReconfigured()
was renamed to updateContextOnDisplayReconfiguration().
The displayWasReconfigured() was taken into use in the notification interface
DisplayConfigurationMonitor::Client::displayWasReconfigured().
- GPUProcess/graphics/RemoteGraphicsContextGL.cpp:
(WebKit::RemoteGraphicsContextGL::displayWasReconfigured):
- WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::displayConfigurationChanged):
LayoutTests:
Change the test to account for the behavior change
where the simulated context change event is delivered
only to the context being tested, not to all contexts.
- fast/canvas/webgl/webglcontextchangedevent.html:
- 6:11 AM Changeset in webkit [286422] by
-
- 2 edits in trunk/Source/WebCore
REGRESSION(r286209) [GTK][WPE] crashes in offscreen canvas tests that try to create a GL context
https://bugs.webkit.org/show_bug.cgi?id=233712
Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-12-02
Reviewed by Antti Koivisto.
Fix a crash for ports that use offscreen canvas WebGL.
Currently we do not have code to navigate from offscreen canvas
CanvasBase to ChromeClient. For this case it doesn't matter, as
GPUP does not support offscreen canvas in meaningful way
anyway.
No new tests, tested by existing test.
- html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::create):
- 4:51 AM Changeset in webkit [286421] by
-
- 3 edits in trunk/Source/WebCore
Reset height definiteness when constructing flex items
https://bugs.webkit.org/show_bug.cgi?id=233458
Reviewed by Alan Bujtas.
Flexbox renderer uses an attribute called m_hasDefiniteHeight in order to properly
consider as definite some sizes that are normally considered as indefinite. For example,
a percentage of an intrinsic size is normally indefinite unless the containing block has
an overriding size in which case can be considered as definite.
The value of m_hasDefiniteHeight is properly reset every time we construct a flex item or
just after finishing the layout. However we should do it as well just before computing
the flex basis if the flex item is also a flex container. In that case it might happen that
we try to compute the flex basis value with a value for m_hasDefiniteHeight which can
be potentially outdated.
- rendering/RenderFlexibleBox.cpp:
(WebCore::RenderFlexibleBox::layoutBlock): Use resetHasDefiniteHeight().
(WebCore::RenderFlexibleBox::layoutFlexItems): Ditto.
(WebCore::RenderFlexibleBox::constructFlexItem): Call resetHasDefiniteHeight() if the
flex item is also a flex container.
- rendering/RenderFlexibleBox.h:
(WebCore::RenderFlexibleBox::resetHasDefiniteHeight): Added.
- 1:02 AM Changeset in webkit [286420] by
-
- 4 edits in trunk/Source
AVDelegatingPlaybackCoordinator error compiling on macOS 11
https://bugs.webkit.org/show_bug.cgi?id=232454
Reviewed by Tim Horton.
Source/WebCore/PAL:
- pal/cocoa/AVFoundationSoftLink.h: Don't softlink on platforms that don't have it (No other source changes were necessary)
Source/WTF:
- wtf/PlatformHave.h:
- 12:57 AM Changeset in webkit [286419] by
-
- 58 edits5 copies13 adds in trunk
Add support for NavigationPreloadManager
https://bugs.webkit.org/show_bug.cgi?id=233523
Reviewed by Chris Dumez.
LayoutTests/imported/w3c:
- web-platform-tests/service-workers/idlharness.https.any-expected.txt:
- web-platform-tests/service-workers/idlharness.https.any.worker-expected.txt:
- web-platform-tests/service-workers/service-worker/navigation-preload/broken-chunked-encoding.https-expected.txt: Added.
- web-platform-tests/service-workers/service-worker/navigation-preload/chunked-encoding.https-expected.txt: Added.
- web-platform-tests/service-workers/service-worker/navigation-preload/empty-preload-response-body.https-expected.txt: Added.
- web-platform-tests/service-workers/service-worker/navigation-preload/get-state.https-expected.txt: Added.
- web-platform-tests/service-workers/service-worker/navigation-preload/navigationPreload.https-expected.txt: Added.
- web-platform-tests/service-workers/service-worker/navigation-preload/redirect.https-expected.txt: Added.
- web-platform-tests/service-workers/service-worker/navigation-preload/request-headers.https-expected.txt: Added.
- web-platform-tests/service-workers/service-worker/navigation-preload/resource-timing.https-expected.txt: Added.
- web-platform-tests/service-workers/service-worker/navigation-preload/samesite-cookies.https-expected.txt: Added.
Source/WebCore:
Add service worker navigation preload IDL and implementation.
This includes in particular state management (read and write) on API side and SWServer side.
This state is used in WK2 network code path to enable or not preloads.
We are not yet persisting preload registration state on disk, this will be done as a follow-up.
The FetchEvent preloadResponse returns a promise which has either undefined or a response as resolved value.
In case there is a preloader for that FetchEvent, we start the load when preloadResponse is retrieved by JS.
To implement the retrieval of the preload response, we use FetchResponse::fetch.
To do so, we add an initiator parameter as this preload initiator is the navigation task and not a fetch call.
Covered by enabled tests.
Tests: http/wpt/service-workers/service-worker-iframe-preload.https.html.
- CMakeLists.txt:
- DerivedSources-input.xcfilelist:
- DerivedSources-output.xcfilelist:
- DerivedSources.make:
- Modules/cache/DOMCache.cpp:
- Modules/fetch/FetchLoader.cpp:
- Modules/fetch/FetchLoader.h:
- Modules/fetch/FetchResponse.cpp:
- Modules/fetch/FetchResponse.h:
- Modules/fetch/WindowOrWorkerGlobalScopeFetch.cpp:
- Sources.txt:
- WebCore.xcodeproj/project.pbxproj:
- bindings/js/DOMPromiseProxy.h:
- bindings/js/WebCoreBuiltinNames.h:
- loader/cache/CachedResource.cpp:
- loader/cache/CachedResourceRequestInitiators.cpp:
(WebCore::CachedResourceRequestInitiators::CachedResourceRequestInitiators):
- loader/cache/CachedResourceRequestInitiators.h:
- platform/network/HTTPHeaderNames.in:
- workers/service/FetchEvent.cpp:
- workers/service/FetchEvent.h:
- workers/service/FetchEvent.idl:
- workers/service/NavigationPreloadManager.cpp: Added.
- workers/service/NavigationPreloadManager.h: Added.
- workers/service/NavigationPreloadManager.idl: Added.
- workers/service/NavigationPreloadState.h: Added.
- workers/service/NavigationPreloadState.idl: Added.
- workers/service/SWClientConnection.h:
- workers/service/ServiceWorkerContainer.cpp:
- workers/service/ServiceWorkerContainer.h:
- workers/service/ServiceWorkerRegistration.cpp:
- workers/service/ServiceWorkerRegistration.h:
- workers/service/ServiceWorkerRegistration.idl:
- workers/service/WorkerSWClientConnection.cpp:
- workers/service/WorkerSWClientConnection.h:
- workers/service/context/ServiceWorkerFetch.cpp:
- workers/service/context/ServiceWorkerFetch.h:
- workers/service/context/ServiceWorkerThread.cpp:
- workers/service/context/ServiceWorkerThread.h:
- workers/service/context/ServiceWorkerThreadProxy.cpp:
- workers/service/context/ServiceWorkerThreadProxy.h:
- workers/service/server/SWServerRegistration.cpp:
- workers/service/server/SWServerRegistration.h:
Source/WebKit:
Make use of ServiceWorkerNavigationPreloader when preload flag is true.
We only start as soon as created the preload in case of main frame navigation when preload flag is true.
Update ServiceWorkerNavigationPreloader to differentiate explicit preloads (enabled by NavigationPreloadManager) from implict preloads.
Implict preloads can be used when fetch event is not handled, which is not guaranteed for explicit preloads, given the Service-Worker-Navigation-Preload header.
Add IPC to read and set preload state (enabled and header value).
- NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:
- NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp:
- NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.h:
- NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
- NetworkProcess/ServiceWorker/WebSWServerConnection.h:
- NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
- WebProcess/Storage/WebSWClientConnection.cpp:
- WebProcess/Storage/WebSWClientConnection.h:
- WebProcess/Storage/WebSWContextManagerConnection.cpp:
- WebProcess/Storage/WebSWContextManagerConnection.h:
- WebProcess/Storage/WebSWContextManagerConnection.messages.in:
Source/WTF:
- Scripts/Preferences/WebPreferencesExperimental.yaml:
LayoutTests:
- 12:37 AM Changeset in webkit [286418] by
-
- 2 edits in trunk/Tools
Unreviewed. [GTK] Use nullptr instead of 0 in JSStringCreateWithCharacters()
- WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp:
(WTR::AccessibilityUIElement::attributesOfLinkedUIElements):
(WTR::AccessibilityUIElement::attributesOfDocumentLinks):
(WTR::AccessibilityUIElement::stringDescriptionOfAttributeValue):
(WTR::AccessibilityUIElement::stringAttributeValue):
(WTR::AccessibilityUIElement::parameterizedAttributeNames):
(WTR::AccessibilityUIElement::role):
(WTR::AccessibilityUIElement::subrole):
(WTR::AccessibilityUIElement::computedRoleString):
(WTR::AccessibilityUIElement::stringValue):
(WTR::AccessibilityUIElement::language):
(WTR::AccessibilityUIElement::helpText const):
(WTR::AccessibilityUIElement::speakAs):
(WTR::AccessibilityUIElement::ariaDropEffects const):
(WTR::AccessibilityUIElement::rangeForLine):
(WTR::AccessibilityUIElement::rangeForPosition):
(WTR::AccessibilityUIElement::boundsForRange):
(WTR::AccessibilityUIElement::stringForRange):
(WTR::AccessibilityUIElement::attributedStringForRange):
(WTR::AccessibilityUIElement::attributesOfColumnHeaders):
(WTR::AccessibilityUIElement::attributesOfRowHeaders):
(WTR::AccessibilityUIElement::attributesOfColumns):
(WTR::AccessibilityUIElement::attributesOfRows):
(WTR::AccessibilityUIElement::attributesOfVisibleCells):
(WTR::AccessibilityUIElement::attributesOfHeader):
(WTR::AccessibilityUIElement::rowIndexRange):
(WTR::AccessibilityUIElement::columnIndexRange):
(WTR::AccessibilityUIElement::selectedTextRange):
(WTR::AccessibilityUIElement::accessibilityValue const):
(WTR::AccessibilityUIElement::documentEncoding):
(WTR::AccessibilityUIElement::documentURI):
(WTR::AccessibilityUIElement::url):
(WTR::AccessibilityUIElement::stringForTextMarkerRange):
(WTR::AccessibilityUIElement::rectsForTextMarkerRange):
(WTR::AccessibilityUIElement::characterAtOffset):
- 12:18 AM Changeset in webkit [286417] by
-
- 5 edits8 adds in trunk
sticky th or td in table does not stops at specified top
https://bugs.webkit.org/show_bug.cgi?id=232431
<rdar://problem/85011818>
Reviewed by Simon Fraser.
LayoutTests/imported/w3c:
Add new WPT tests that test the behavior of sticky <td> elements in the middle of
tables.
- web-platform-tests/css/css-position/sticky/position-sticky-table-td-bottom-expected.html: Added.
- web-platform-tests/css/css-position/sticky/position-sticky-table-td-bottom.html: Added.
- web-platform-tests/css/css-position/sticky/position-sticky-table-td-left-expected.html: Added.
- web-platform-tests/css/css-position/sticky/position-sticky-table-td-left.html: Added.
- web-platform-tests/css/css-position/sticky/position-sticky-table-td-right-expected.html: Added.
- web-platform-tests/css/css-position/sticky/position-sticky-table-td-right.html: Added.
- web-platform-tests/css/css-position/sticky/position-sticky-table-td-top-expected.html: Added.
- web-platform-tests/css/css-position/sticky/position-sticky-table-td-top.html: Added.
Source/WebCore:
Tests: imported/w3c/web-platform-tests/css/css-position/sticky/position-sticky-table-td-bottom.html
imported/w3c/web-platform-tests/css/css-position/sticky/position-sticky-table-td-left.html
imported/w3c/web-platform-tests/css/css-position/sticky/position-sticky-table-td-right.html
imported/w3c/web-platform-tests/css/css-position/sticky/position-sticky-table-td-top.html
- rendering/RenderBox.h: Make frameRectForStickyPositioning not final.
- rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::frameRectForStickyPositioning const): Added this implementation
that takes into account that RenderTableCell is positioned relatively to the RenderTableSection.
- rendering/RenderTableCell.h: Added method declaration.
- 12:16 AM Changeset in webkit [286416] by
-
- 10 edits2 adds in trunk
[GTK][a11y] Add implementation of table and table cell interfaces when building with ATSPI
https://bugs.webkit.org/show_bug.cgi?id=233694
Reviewed by Adrian Perez de Castro.
Source/WebCore:
- SourcesGTK.txt:
- accessibility/AccessibilityTableColumn.cpp:
(WebCore::AccessibilityTableColumn::computeAccessibilityIsIgnored const): Do not expose column for ATSPI.
- accessibility/AccessibilityTableHeaderContainer.cpp:
(WebCore::AccessibilityTableHeaderContainer::computeAccessibilityIsIgnored const): Do not expose header container either.
- accessibility/atspi/AccessibilityObjectAtspi.cpp:
(WebCore::AccessibilityObjectAtspi::interfacesForObject):
(WebCore::AccessibilityObjectAtspi::path):
(WebCore::AccessibilityObjectAtspi::wrapperVector const):
(WebCore::AccessibilityObjectAtspi::children const):
(WebCore::AccessibilityObjectAtspi::buildInterfaces const):
- accessibility/atspi/AccessibilityObjectAtspi.h:
- accessibility/atspi/AccessibilityObjectTableAtspi.cpp: Added.
(WebCore::AccessibilityObjectAtspi::rowCount const):
(WebCore::AccessibilityObjectAtspi::columnCount const):
(WebCore::AccessibilityObjectAtspi::cell const):
(WebCore::AccessibilityObjectAtspi::tableCaption const):
(WebCore::AccessibilityObjectAtspi::cellIndex const):
(WebCore::AccessibilityObjectAtspi::rowAtIndex const):
(WebCore::AccessibilityObjectAtspi::columnAtIndex const):
(WebCore::AccessibilityObjectAtspi::rowHeader const):
(WebCore::AccessibilityObjectAtspi::columnHeader const):
(WebCore::AccessibilityObjectAtspi::rowDescription const):
(WebCore::AccessibilityObjectAtspi::columnDescription const):
(WebCore::AccessibilityObjectAtspi::rowExtent const):
(WebCore::AccessibilityObjectAtspi::columnExtent const):
(WebCore::AccessibilityObjectAtspi::cells const):
(WebCore::AccessibilityObjectAtspi::rows const):
(WebCore::AccessibilityObjectAtspi::rowHeaders const):
(WebCore::AccessibilityObjectAtspi::columnHeaders const):
- accessibility/atspi/AccessibilityObjectTableCellAtspi.cpp: Added.
(WebCore::AccessibilityObjectAtspi::cellRowHeaders const):
(WebCore::AccessibilityObjectAtspi::cellColumnHeaders const):
(WebCore::AccessibilityObjectAtspi::rowSpan const):
(WebCore::AccessibilityObjectAtspi::columnSpan const):
(WebCore::AccessibilityObjectAtspi::cellPosition const):
- accessibility/atspi/xml/TableCell.xml:
Tools:
Add unit tests and WTR implementation for tables.
- TestWebKitAPI/Tests/WebKitGtk/TestWebKitAccessibility.cpp:
(testTableBasic):
(beforeAll):
- WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp:
(WTR::AccessibilityUIElement::rowAtIndex):
(WTR::elementsVector):
(WTR::attributesOfElements):
(WTR::AccessibilityUIElement::attributesOfChildren):
(WTR::AccessibilityUIElement::numberAttributeValue):
(WTR::makeJSArray):
(WTR::AccessibilityUIElement::rowHeaders const):
(WTR::AccessibilityUIElement::columnHeaders const):
(WTR::AccessibilityUIElement::attributesOfColumnHeaders):
(WTR::AccessibilityUIElement::attributesOfRowHeaders):
(WTR::AccessibilityUIElement::attributesOfRows):
(WTR::AccessibilityUIElement::attributesOfVisibleCells):
(WTR::AccessibilityUIElement::rowCount):
(WTR::AccessibilityUIElement::columnCount):
(WTR::AccessibilityUIElement::rowIndexRange):
(WTR::AccessibilityUIElement::columnIndexRange):
(WTR::AccessibilityUIElement::cellForColumnAndRow):
- 12:06 AM Changeset in webkit [286415] by
-
- 4 edits2 adds in trunk
[selectors] :focus-visible should stop matching after blur
https://bugs.webkit.org/show_bug.cgi?id=233688
Reviewed by Antti Koivisto.
LayoutTests/imported/w3c:
Add new test to check that :focus-visible stop matching after blur.
- web-platform-tests/css/selectors/focus-visible-023-expected.txt: Added.
- web-platform-tests/css/selectors/focus-visible-023.html: Added.
Source/WebCore:
Move PseudoClassChangeInvalidation for :focus-visible together with the one for :focus,
as we need to keep both flags in sync when computing the invalidations
(it's not possible to have an element that matches :focus-visible but not :focus,
and that was happening before this change).
Test: imported/w3c/web-platform-tests/css/selectors/focus-visible-023.html
- dom/Element.cpp:
(WebCore::Element::setFocus): Add PseudoClassChangeInvalidation for :focus-visible change,
and put it in the same scope as the flags changes.
(WebCore::Element::setHasFocusVisible): Remove PseudoClassChangeInvalidation from this method.
- page/EventHandler.cpp:
(WebCore::EventHandler::internalKeyEvent): Use PseudoClassChangeInvalidation for :focus-visible change.