Timeline
Apr 16, 2020:
- 9:57 PM Changeset in webkit [260237] by
-
- 5 edits in trunk
REGRESSION(r259480): Two new failing i18n tests
https://bugs.webkit.org/show_bug.cgi?id=210605
Reviewed by Darin Adler.
JSTests:
- stress/date-toLocaleString.js:
Tests shouldn't rely on system default time zone.
Source/JavaScriptCore:
- runtime/IntlDateTimeFormat.cpp:
(JSC::isUTCEquivalent):
(JSC::defaultTimeZone):
(JSC::canonicalizeTimeZoneName):
The default time zone needs to be canonicalized too.
- runtime/IntlObject.cpp:
(JSC::canonicalLangTag):
(JSC::resolveLocale):
Deal with some odd ""_s cases from my previous patch.
(Drive-by fix inspired by Darin's comments on this one.)
- 9:34 PM Changeset in webkit [260236] by
-
- 2 edits in trunk/Tools
[GTK] A couple of API tests are flaky failing on X11.
Unreviewed test gardening.
- TestWebKitAPI/glib/TestExpectations.json:
- 9:08 PM Changeset in webkit [260235] by
-
- 2 edits in trunk/Source/WebKit
Cleanup the usage of ENABLE_FULLSCREEN_API
https://bugs.webkit.org/show_bug.cgi?id=210630
Reviewed by Daniel Bates.
Replace "#if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API" with
"#if ENABLE(FULLSCREEN_API)".
No new tests, no functional change
- WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageSetFullScreenClient):
(WKBundlePageWillEnterFullScreen):
(WKBundlePageDidEnterFullScreen):
(WKBundlePageWillExitFullScreen):
(WKBundlePageDidExitFullScreen):
- 6:55 PM Changeset in webkit [260234] by
-
- 4 edits2 adds in trunk
Scrolling-tree hit-testing is off by top content inset
https://bugs.webkit.org/show_bug.cgi?id=210629
<rdar://problem/61848883>
Reviewed by Tim Horton.
Source/WebCore:
r259936 added a point conversion from the superlayer of the root content layer,
to fix RTL, but this also pulled in top content inset, which we don't want.
Instead, do the RTL fix by factoring in scroll origin.
Test: fast/scrolling/mac/async-scroll-overflow-top-inset.html
- page/scrolling/ScrollingTreeScrollingNode.h:
- page/scrolling/mac/ScrollingTreeMac.mm:
(ScrollingTreeMac::scrollingNodeForPoint):
LayoutTests:
Test for scroller hit-testing with top content inset.
- fast/scrolling/mac/async-scroll-overflow-top-inset-expected.txt: Added.
- fast/scrolling/mac/async-scroll-overflow-top-inset.html: Added.
- 6:13 PM Changeset in webkit [260233] by
-
- 2 edits in trunk/Source/WebKit
Distinguish between an empty WKAppBoundDomains array and a missing entry
https://bugs.webkit.org/show_bug.cgi?id=210628
<rdar://problem/61909669>
Reviewed by Brent Fulgham.
Currently we treat a missing WKAppBoundDomains key the same as an empty
key, which is incorrect. Having the key present, even with no entries,
should opt an app into app-bound domain behavior.
- UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::initializeAppBoundDomains):
(WebKit::WebsiteDataStore::beginAppBoundDomainCheck):
- 6:09 PM Changeset in webkit [260232] by
-
- 2 edits in trunk/Source/WebKit
Add a new 'limitNavigationsToAppBoundDomains' property to WKWebViewConfiguration
https://bugs.webkit.org/show_bug.cgi?id=210620
<rdar://problem/61903225>
Reviewed by Andy Estes.
Follow-up fix. The property exposed by WKWebViewConfiguration should not
use a local BOOL; it simply exposes the APIPageConfiguration value.
- UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration limitsNavigationToAppBoundDomains]):
(-[WKWebViewConfiguration setLimitsNavigationToAppBoundDomains:]):
(-[WKWebViewConfiguration _setIgnoresAppBoundDomains:]):
- 5:53 PM Changeset in webkit [260231] by
-
- 7 edits in trunk/Source/WebKit
Switch NetworkProcess and NetworkProcessProxy messages to use CallbackID class
https://bugs.webkit.org/show_bug.cgi?id=210566
<rdar://problem/61791784>
Reviewed by David Kilzer.
Instead of using the raw uint64_t type to represent callbacks, use the purpose
built WebKit::CallbackID type.
Tested by existing cases.
- NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::fetchWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
- NetworkProcess/NetworkProcess.h:
- NetworkProcess/NetworkProcess.messages.in:
- UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::fetchWebsiteData):
(WebKit::NetworkProcessProxy::deleteWebsiteData):
(WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcessProxy::didFetchWebsiteData):
(WebKit::NetworkProcessProxy::didDeleteWebsiteData):
(WebKit::NetworkProcessProxy::didDeleteWebsiteDataForOrigins):
- UIProcess/Network/NetworkProcessProxy.h:
- UIProcess/Network/NetworkProcessProxy.messages.in:
- 5:21 PM Changeset in webkit [260230] by
-
- 4 edits in trunk/Source/WebKit
Try to fix the macCatalyst build
- UIProcess/ios/WKActionSheetAssistant.h:
- UIProcess/ios/WKContentViewInteraction.h:
- UIProcess/ios/WKContentViewInteraction.mm:
(uiImageForImage):
(createTargetedPreview):
(createFallbackTargetedPreview):
(-[WKContentView _createTargetedContextMenuHintPreviewIfPossible]):
- 5:17 PM Changeset in webkit [260229] by
-
- 3 edits in trunk/Source/WebKit
Re-land: [IPC Hardening] MachMessage::create() should use checked arithmetic
<https://webkit.org/b/210572>
<rdar://problem/61729947>
Reviewed by Chris Dumez.
- Platform/IPC/cocoa/ConnectionCocoa.mm:
(IPC::Connection::sendOutgoingMessage):
- Add nullptr check since MachMessage::create() can return an empty std::unique_ptr<> now.
- Platform/IPC/cocoa/MachMessage.cpp:
(IPC::MachMessage::create):
- Use CheckedSize to compute the buffer size.
- 5:05 PM Changeset in webkit [260228] by
-
- 7 edits in trunk/Source/WebKit
Add a new 'limitNavigationsToAppBoundDomains' property to WKWebViewConfiguration
https://bugs.webkit.org/show_bug.cgi?id=210620
<rdar://problem/61903225>
Reviewed by Andy Estes.
Provide a way for Developers to opt-in to AppBound domains through a new WKWebViewConfiguration
property.
This patch only creates the property and exposes the flag to the APIPageConfiguration and
WebPageProxy. A separate patch will take action based on its value.
- UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::copy const):
- UIProcess/API/APIPageConfiguration.h:
(API::PageConfiguration::limitsNavigationToAppBoundDomains const):
(API::PageConfiguration::setLimitsNavigationToAppBoundDomains):
- UIProcess/API/Cocoa/WKWebViewConfiguration.h:
- UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration limitsNavigationToAppBoundDomains]):
(-[WKWebViewConfiguration setLimitsNavigationToAppBoundDomains:]):
(-[WKWebViewConfiguration _setIgnoresAppBoundDomains:]): Keep the new property in
sync with this internal flag.
- UIProcess/WebPageProxy.cpp:
(WebKit::m_limitsNavigationToAppBoundDomains):
- UIProcess/WebPageProxy.h:
- 4:50 PM Changeset in webkit [260227] by
-
- 10 edits in trunk/Source
Unreviewed build fix for non unified builds.
Source/JavaScriptCore:
- dfg/DFGOperations.cpp: Added missing includes.
Source/WebCore:
- html/OffscreenCanvas.cpp: Added missing include.
- html/canvas/CanvasRenderingContext2DBase.cpp: Ditto.
- layout/tableformatting/TableFormattingContextGeometry.cpp: Ditto.
- workers/WorkerAnimationController.cpp:
(WebCore::WorkerAnimationController::requestAnimationFrame): Added namespace.
- workers/WorkerAnimationController.h: Added missing include.
Source/WebKit:
- NetworkProcess/webrtc/LibWebRTCSocketClient.cpp: Added missing include.
- 4:30 PM Changeset in webkit [260226] by
-
- 2 edits in trunk/JSTests
Unreviewed, reduce # of iteration since this test is timed out in slow devices
https://bugs.webkit.org/show_bug.cgi?id=210023
- stress/map-iteration-oas.js:
- 4:23 PM Changeset in webkit [260225] by
-
- 7 edits in trunk
Remove unused -_focusTextInputContext
https://bugs.webkit.org/show_bug.cgi?id=210619
Reviewed by Darin Adler.
Source/WebKit:
While this function was in the "SPI" header, there is no software at Apple that was using
this funciton and I will assume no non-Apple software was using it either.
- UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _focusTextInputContext:completionHandler:]): Deleted.
- UIProcess/API/Cocoa/WKWebViewPrivate.h:
- UIProcess/WebPageProxy.cpp:
- UIProcess/WebPageProxy.h:
Tools:
Remove test now that the SPI was removed.
- TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:
(-[TestWKWebView synchronouslyFocusTextInputContext:]): Deleted.
- 4:05 PM Changeset in webkit [260224] by
-
- 6 edits2 adds in trunk
A slow-starting swipe always latches on the root node
https://bugs.webkit.org/show_bug.cgi?id=210618
Reviewed by Tim Horton.
Source/WebCore:
If the first event in a wheel event gesture had zero delta, scrolling thread logic would
always latch on the root node and the rest of the gesture would scroll the document.
Fix by not latching for events with zero delta.
Test: scrollingcoordinator/mac/latching/zero-delta-began-should-not-latch.html
- page/scrolling/ScrollingTreeLatchingController.cpp:
(WebCore::ScrollingTreeLatchingController::nodeDidHandleEvent):
- page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::canScrollWithWheelEvent const):
(WebCore::ScrollingTreeScrollingNode::eventCanScrollContents const):
(WebCore::ScrollingTreeScrollingNode::scrollLimitReached const): Deleted.
- page/scrolling/ScrollingTreeScrollingNode.h:
- platform/PlatformWheelEvent.h:
(WebCore::PlatformWheelEvent::shouldConsiderLatching const): FIXME comment. Ideally this would
check delta() that that's too scarey at the moment.
LayoutTests:
- scrollingcoordinator/mac/latching/zero-delta-began-should-not-latch-expected.txt: Added.
- scrollingcoordinator/mac/latching/zero-delta-began-should-not-latch.html: Added.
- 3:35 PM Changeset in webkit [260223] by
-
- 9 edits in trunk/Source/JavaScriptCore
[Re-landing] Use more PAC diversity for JIT probe code.
https://bugs.webkit.org/show_bug.cgi?id=210252
<rdar://problem/54490367>
Reviewed by Keith Miller.
Introducing new PtrTags:
JITProbePtrTag - for the client probe function.
JITProbeTrampolinePtrTag - for calling the ctiMasmProbeTrampoline.
JITProbeExecutorPtrTag - for calling the probe executor.
Currently, this is only the Probe::executeProbe().
JITProbeStackInitializationFunctionPtrTag - for calling the optional stack
initialization function that the client probe function may set.
We'll now use these in the JIT probe mechanism instead of adopting the default
CFunctionPtrTag.
Fixed an assert in MacroAssemblerARM64.cpp which does not apply to non ARM64E
builds.
- assembler/MacroAssembler.cpp:
(JSC::MacroAssembler::probe):
- assembler/MacroAssemblerARM64.cpp:
(JSC::MacroAssembler::probe):
- assembler/MacroAssemblerPrinter.h:
(JSC::MacroAssembler::print):
- assembler/ProbeContext.h:
- runtime/JSCPtrTag.h:
- tools/JSDollarVM.cpp:
(JSC::callWithStackSizeProbeFunction):
- wasm/WasmAirIRGenerator.cpp:
(JSC::Wasm::AirIRGenerator::emitLoopTierUpCheck):
- wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::emitLoopTierUpCheck):
- 2:40 PM Changeset in webkit [260222] by
-
- 9 edits in trunk/Source/JavaScriptCore
Rolling out r259897: Causing crashes on iOS.
https://bugs.webkit.org/show_bug.cgi?id=210252
Not reviewed.
- assembler/MacroAssembler.cpp:
(JSC::MacroAssembler::probe):
- assembler/MacroAssemblerARM64.cpp:
(JSC::MacroAssembler::probe):
- assembler/MacroAssemblerPrinter.h:
(JSC::MacroAssembler::print):
- assembler/ProbeContext.h:
- runtime/JSCPtrTag.h:
- tools/JSDollarVM.cpp:
(JSC::callWithStackSizeProbeFunction):
- wasm/WasmAirIRGenerator.cpp:
(JSC::Wasm::AirIRGenerator::emitLoopTierUpCheck):
- wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::emitLoopTierUpCheck):
- 1:54 PM Changeset in webkit [260221] by
-
- 2 edits in trunk/Source/WebKit
[macOS] Switch unused IOKit classes from allow-with-report to deny-with-report
https://bugs.webkit.org/show_bug.cgi?id=210136
<rdar://problem/61403216>
Reviewed by Per Arne Vollan.
After tracking telemetry for several weeks, we can now safely switch the default state
of a number of IOKit classes from 'allow with telemetry' to 'deny with telemetry'.
- Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
- 1:42 PM Changeset in webkit [260220] by
-
- 1 edit8 adds in trunk/Tools
Add slack-aware WKR implementation
https://bugs.webkit.org/show_bug.cgi?id=210425
Reviewed by Alexey Proskuryakov.
This patch adds new WKR implementation, which is posting changes to #changes in WebKit slack.
Currently, we are polling git.webkit.org's feed once a minute. The more efficient way to implement
this bot is introducing post-commit hook, but for now, this polling strategy just works.
- WKR/.gitignore: Added.
- WKR/ReadMe.md: Added.
- WKR/WKR.mjs: Added.
- WKR/data/.gitignore: Added.
- WKR/package-lock.json: Added.
- WKR/package.json: Added.
- 1:41 PM Changeset in webkit [260219] by
-
- 2 edits in branches/safari-610.1.10-branch/Source/WebKit
Cherry-pick r260218. rdar://problem/61897737
Fix the iOS build when building without EDITABLE_REGION after r260192
(https://bugs.webkit.org/show_bug.cgi?id=210398)
Have -_mayContainEditableElementsInRect compile-time conditionally call WebKit::mayContainEditableElementsInRect().
If ENABLE(EDITABLE_REGION) is not enabled then return NO.
- UIProcess/API/ios/WKWebViewTestingIOS.mm: (-[WKWebView _mayContainEditableElementsInRect:]):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@260218 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 1:38 PM Changeset in webkit [260218] by
-
- 2 edits in trunk/Source/WebKit
Fix the iOS build when building without EDITABLE_REGION after r260192
(https://bugs.webkit.org/show_bug.cgi?id=210398)
Have -_mayContainEditableElementsInRect compile-time conditionally call WebKit::mayContainEditableElementsInRect().
If ENABLE(EDITABLE_REGION) is not enabled then return NO.
- UIProcess/API/ios/WKWebViewTestingIOS.mm:
(-[WKWebView _mayContainEditableElementsInRect:]):
- 1:27 PM Changeset in webkit [260217] by
-
- 2 edits in trunk/Source/WebCore
Unreviewed build-fix after r260182; guard call to fullscreenManager() for ports which do not
ENABLE(FULLSCREEN_API).
- html/MediaElementSession.cpp:
(WebCore::MediaElementSession::updateMediaUsageIfChanged):
- 1:13 PM Changeset in webkit [260216] by
-
- 3 edits in trunk/Source/WebKit
Rollout: [IPC Hardening] MachMessage::create() should use checked arithmetic
<https://webkit.org/b/210572>
<rdar://problem/61729947>
Unreviewed rollout of r260160.
Appears to have caused 8 API test failures on iOS.
- Platform/IPC/cocoa/ConnectionCocoa.mm:
(IPC::Connection::sendOutgoingMessage):
- Platform/IPC/cocoa/MachMessage.cpp:
(IPC::MachMessage::create):
- 1:02 PM Changeset in webkit [260215] by
-
- 2 edits in trunk/Source/WebKit
REGRESSION(r260081) Broke iOS PLT due to InjectedBundle initialization (edit)
https://bugs.webkit.org/show_bug.cgi?id=210582
<rdar://problem/61838584>
Reviewed by Darin Adler.
The changes in r260081 began enforcing NSSecureCoding best practices, triggering
a bug in InjectedBundleMac.mm, which is used by iOS as well.
This patch does the following:
- Delays parameter decoding until we use the appropriate InjectedBundle mechanism for expressing the valid classes to use in the Unarchiver.
- Removes a temporary workaround needed to get PLT running on iOS again.
This patch also moves the check of the CFBundleGetFunctionPointerForName slightly earlier
so we can use a single function pointer check, and only invoke the parameter decoding
if we are using the C API.
If not, we delay parameter decoding until we have constructed the WKWebProcessPlugIn
object so we can consume it's 'additionalClassesForParameterCoder' before calling
its initialization method.
- WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
(WebKit::InjectedBundle::decodeBundleParameters): Remove temporary workaround
needed to get PLT working again. Instead of using a debug assert, return as
a decoding failure if the resulting object is not an NSDictionary.
(WebKit::InjectedBundle::initialize): Delay decoding the bundle parameters on
iOS until the Plugin's additionalClassesForParameterCoder method can be called.
- 12:48 PM Changeset in webkit [260214] by
-
- 13 edits in trunk
[iOS] Add a way to focus a text input and place a caret
https://bugs.webkit.org/show_bug.cgi?id=210611
<rdar://problem/61893062>
Reviewed by Darin Adler.
Source/WebKit:
Add some IPI that will be used by code in WebKitAdditions to focus a text input context
and place the caret in it. This will replace the existing -focusTextInput SPI, which I
will remove in a subsequent commit.
- UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h:
- UIProcess/API/ios/WKWebViewTestingIOS.mm:
(-[WKWebView _requestTextInputContextsInRect:completionHandler:]): Fix up code style
of signature while I am here.
(-[WKWebView _focusTextInputContext:placeCaretAt:completionHandler:]): Added.
- UIProcess/WebPageProxy.h:
- UIProcess/ios/WKContentViewInteraction.h:
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _isTextInputContextFocused:]): Added.
(-[WKContentView _focusTextInputContext:placeCaretAt:completionHandler:]): Added.
(-[WKContentView _requestTextInputContextsInRect:completionHandler:]): Fix up code style
of signature while I am here.
- UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::focusTextInputContextAndPlaceCaret):
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::focusTextInputContext): Use auto now that elementForContext() returns a RefPtr.
(WebKit::WebPage::elementForContext const): Have it return a RefPtr instead of a raw
pointer so callers don't have to remember to take out a ref of otherwise be mindful
of the element's lifetime.
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::removeTextPlaceholder): Use auto now that elementForContext() returns a RefPtr.
(WebKit::WebPage::requestDocumentEditingContext): Ditto.
(WebKit::WebPage::focusTextInputContextAndPlaceCaret): Added.
Tools:
Add some tests.
- TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:
(-[TestWKWebView synchronouslyFocusTextInputContext:placeCaretAt:]): Added.
(webViewLoadHTMLStringAndWaitForAllFramesToPaint): Use the bundle's TestWebKitAPI.resources directory
as the base URL so that we have a valid file URL. Some of the tests will then
call -_setAllowUniversalAccessFromFileURLs to allow the main frame access to
the unique-origin child frame contents.
(TEST):
- 12:44 PM Changeset in webkit [260213] by
-
- 3 edits in branches/safari-610.1.10-branch/Source/WebKit
Cherry-pick r260120. rdar://problem/61899305
Unreviewed, reverting r259891.
Causes significant iOS MotionMark regression
Reverted changeset:
"Switch unused IOKit classes from allow-with-report to deny-
with-report"
https://bugs.webkit.org/show_bug.cgi?id=210136
https://trac.webkit.org/changeset/259891
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@260120 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 12:31 PM Changeset in webkit [260212] by
-
- 4 edits in branches/safari-610.1.10-branch
Cherry-pick r260193. rdar://problem/61897737
REGRESSION (r259762): Should always hit test for editable elements if the WKWebView is fully editable
https://bugs.webkit.org/show_bug.cgi?id=210558
<rdar://problem/61798347>
Reviewed by Wenson Hsieh.
Source/WebKit:
If the entire WKWebView is marked editable (via SPI -[WKWebView _setEditable]) then
always ask the web process to hit test the page because every element is considered
editable.
- UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _requestTextInputContextsInRect:completionHandler:]):
Tools:
Add a test.
- TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm: (TEST):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@260193 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 12:31 PM Changeset in webkit [260211] by
-
- 17 edits in branches/safari-610.1.10-branch
Cherry-pick r260192. rdar://problem/61897737
Move -_requestTextInputContextsInRect to WKContentView to simplify implementation
https://bugs.webkit.org/show_bug.cgi?id=210398
<rdar://problem/61656931>
Reviewed by Darin Adler.
Source/WebKit:
-_requestTextInputContextsInRect is not needed on Mac, but supporting it complicates
its implementation: it has to deal with coordinate space differences due to differences
in what is the root view on Mac and iOS + it has to know about iOS's custom content views.
While this function was in the "SPI" header, there is no software at Apple that was using
these outside of WebKit, and I will assume no non-Apple software was using them either.
Moving this function to WKContentView lets me simplify the implementation.
- Platform/spi/ios/UIKitSPI.h: Add more forward declarations.
- UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _convertRectFromRootViewCoordinates:]): Deleted. (-[WKWebView _convertRectToRootViewCoordinates:]): Deleted. (-[WKWebView _mayContainEditableElementsInRect:]): Deleted; moved to WKWebViewTestingIOS.mm. (-[WKWebView _requestTextInputContextsInRect:completionHandler:]): Deleted; moved to WKContentViewInteraction.mm.
- UIProcess/API/Cocoa/WKWebViewPrivate.h:
- UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h:
- UIProcess/API/ios/WKWebViewTestingIOS.mm: (-[WKWebView _requestTextInputContextsInRect:completionHandler:]): Added. Turns around and calls the function of the same name on the WKContentView. It takes care to convert the specified rect from WKWebView coordinates to WKContentView coordinates and fixes up the bounding rects for the returned contexts to be in WKWebView coordinates. This keeps existings tests passing as mekes using this function intuitive since callers specify and get rects in WKWebView coordinates. (-[WKWebView _requestDocumentContext:completionHandler:]): Added. (-[WKWebView _adjustSelectionWithDelta:completionHandler:]): Added. (-[WKWebView _mayContainEditableElementsInRect:]): Moved from WKWebView.mm.
- UIProcess/ios/WKContentViewInteraction.h:
- UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _requestTextInputContextsInRect:completionHandler:]): Moved from WKWebView.mm and simplified.
Source/WTF:
Add a convenience function to create an NSArray from a WTF::Vector with a transform function.
The tranform function can either return a RetainPtr or an id.
- wtf/cocoa/VectorCocoa.h: (WTF::createNSArray): Added.
Tools:
Update test now that -_requestTextInputContextsInRect has moved from WKWebView to WKContentView.
I expose new testing-only WKWebView SPI to access it on the content view.
- TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm: (-[TestWKWebView synchronouslyRequestDocumentContext:]): Added; due to category name change. (-[TestWKWebView synchronouslyAdjustSelectionWithDelta:]): Added; due to category name change.
- TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm: (-[WKWebView synchronouslyRequestTextInputContextsInRect:]): Deleted; due to category name change. (-[WKWebView synchronouslyFocusTextInputContext:]): Deleted; due to category name change.
- WebKitTestRunner/ios/UIScriptControllerIOS.mm: (WTR::UIScriptControllerIOS::mayContainEditableElementsInRect): Convert from content coordinates to WKWebView coordinates now that -_mayContainEditableElementsInRect expects it.
LayoutTests:
Update test and expected results now that UIScriptController.mayContainEditableElementsInRect()
expects the passed rect to be in content coordinates.
I replaced one sub-test of a rect pre-scroll with another that tests the location
of a rect that will have editable elements after scroll. The purpose of that sub-test
hasn't changed, but it now makes the sub-tests' rects symmetric for before and after
scroll. I also added debug() statements to demarcate the before scroll and after scroll
sub-tests in the results to make it easier to understand what this test file is testing.
- editing/editable-region/hit-test-fixed-expected.txt:
- editing/editable-region/hit-test-fixed.html:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@260192 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 12:31 PM Changeset in webkit [260210] by
-
- 4 edits in branches/safari-610.1.10-branch/Source/WebKit
Cherry-pick r260186. rdar://problem/61897760
REGRESSION (r259898): WebKit-based Books views are all blank
https://bugs.webkit.org/show_bug.cgi?id=210590
<rdar://problem/61791109>
Reviewed by Chris Dumez.
- UIProcess/Cocoa/WebViewImpl.h:
- UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::enterAcceleratedCompositingWithRootLayer): (WebKit::WebViewImpl::setAcceleratedCompositingRootLayer): (WebKit::WebViewImpl::setAcceleratedCompositingRootLayerAfterFlush): Deleted.
- UIProcess/mac/PageClientImplMac.mm: (WebKit::PageClientImpl::enterAcceleratedCompositingMode): (WebKit::PageClientImpl::didFirstLayerFlush): The changes to setAcceleratedCompositingRootLayer in r259898 proved to be wrong in a second way (the first being fixed in r260104): when setAcceleratedCompositingRootLayer is called from updateAcceleratedCompositingMode, because the layer hosting mode changed (Books appears to use app-hosted layers), it incorrectly identified the root layer change as a process swap, resulting in the correct layer never being unhidden.
This is enough mistakes that I'm going to try a different approach:
put setAcceleratedCompositingRootLayer back to the way it was before, where
it immediately updates the layer without any smarts, remove
setAcceleratedCompositingRootLayerAfterFlush, because it's no longer necessary,
and add enterAcceleratedCompositingWithRootLayer, which is specifically only
called in the case where DrawingArea will for-sure send us a follow-up
(didFirstLayerFlush) that will unhide the root layer.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@260186 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 12:27 PM Changeset in webkit [260209] by
-
- 3 edits in trunk/Source/WebCore
[GTK] Deprecation-guards fixes
https://bugs.webkit.org/show_bug.cgi?id=210600
Reviewed by Adrian Perez de Castro.
No new tests needed.
- platform/gtk/RenderThemeGadget.cpp:
(WebCore::RenderThemeGadget::backgroundColor const): Add missing
deprecation guards for deprecated GtkStyleContext API.
- platform/gtk/ThemeGtk.cpp:
(WebCore::ThemeGtk::ensurePlatformColors const): Switch to WK
deprecation guards from glib ones.
- 11:59 AM Changeset in webkit [260208] by
-
- 8 edits in branches/safari-609-branch/Source
Versioning.
- 11:42 AM Changeset in webkit [260207] by
-
- 4 edits2 adds in trunk
ASSERTION FAILED: candidate.isCandidate() in WebCore::canonicalizeCandidate
https://bugs.webkit.org/show_bug.cgi?id=130844
<rdar://59535009>
Reviewed by Geoffrey Garen.
Source/WebCore:
Call Position::isCandidate() in PositionIterator::isCandidate so behavior of
candidate search become identical in both classes.
Test: editing/inserting/insert-in-br.html
- dom/PositionIterator.cpp:
(WebCore::PositionIterator::isCandidate const):
LayoutTests:
- editing/inserting/insert-in-br-expected.txt: Added.
- editing/inserting/insert-in-br.html: Added.
Added a regression test for the crash.
- editing/inserting/insert-list-in-table-cell-07-expected.txt:
Update node tree in expected text file due to behavior change in function
PositionIterator::isCandidate. The visual result remains the same.
- 11:38 AM Changeset in webkit [260206] by
-
- 4 edits in branches/safari-609-branch/LayoutTests
Cherry-pick r259621. rdar://problem/59461792
[Cocoa] REGRESSION(r254389): fast/text/international/system-language/declarative-language.html is failing
https://bugs.webkit.org/show_bug.cgi?id=208023
<rdar://problem/59461792>
Reviewed by Simon Fraser.
minimizedLanguagesFromLanguages() is supposed to minimize the language list;
that's its whole raison d'être
- fast/text/international/system-language/declarative-language-expected.txt:
- fast/text/international/system-language/declarative-language.html:
- platform/mac/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259621 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 11:38 AM Changeset in webkit [260205] by
-
- 2 edits in trunk/Source/WebCore
Remove outdated comment from FrameLoader
https://bugs.webkit.org/show_bug.cgi?id=210607
Patch by Rob Buis <rbuis@igalia.com> on 2020-04-16
Reviewed by Darin Adler.
Remove comment from FrameLoader that is not valid/important anymore because
addExtraFieldsToRequest does not set the Origin header since r259036.
- loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadDifferentDocumentItem):
- 11:38 AM Changeset in webkit [260204] by
-
- 2 edits in branches/safari-609-branch/LayoutTests
Cherry-pick r257821. rdar://problem/61408640
REGRESSION(iOS): editing/selection/ios/set-selection-by-tapping-after-changing-focused-element-bounds.html is always timing out
https://bugs.webkit.org/show_bug.cgi?id=208556
Reviewed by Wenson Hsieh.
Wait for the dobule tap delay between the initial tap and the second tap on the editable region
so that the second tap would result in a selection change instead of both taps to be recognized
as a single dobule tap.
- editing/selection/ios/set-selection-by-tapping-after-changing-focused-element-bounds.html:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257821 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 11:37 AM Changeset in webkit [260203] by
-
- 3 edits2 adds in trunk
AX: Need method for setting selected range from NSRange
https://bugs.webkit.org/show_bug.cgi?id=210593
Reviewed by Darin Adler.
Source/WebCore:
Allow setSelection to work outside of text controls.
Test: accessibility/ios-simulator/non-textcontrol-set-selection.html
- accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper _accessibilitySetSelectedTextRange:]):
LayoutTests:
- accessibility/ios-simulator/non-textcontrol-set-selection-expected.txt: Added.
- accessibility/ios-simulator/non-textcontrol-set-selection.html: Added.
- 11:30 AM Changeset in webkit [260202] by
-
- 2 edits in trunk/Source/WTF
Clean up VectorCocoa createNSArray overloads and add documentation for createNSArray taking a map function
https://bugs.webkit.org/show_bug.cgi?id=210610
Reviewed by Darin Adler.
Remove unnecessary local variable. Rename "map" type in createNSArray function for clarity
and add documentation for createNSArray function that takes a map function.
I was tempted, but decided not to write the createNSArray function that does not take a
map function in terms of the one that did. With the "right" optimization settings the
compiler should emit the same code, but I didn't verify this. So, I didn't do it.
While I am here, update makeVector() to call shrinkToFit() to reduce the memory footprint
of the returned vector should it end of having less entries, due to filtering, than its
initial capacity.
- wtf/cocoa/VectorCocoa.h:
(WTF::createNSArray): See above description.
(WTF::makeVector): Shrink to fit before returning the vector. See above for more details.
- 11:11 AM Changeset in webkit [260201] by
-
- 2 edits in trunk/Source/WebCore
[macOS] Update ScreenTime as playback state changes
https://bugs.webkit.org/show_bug.cgi?id=210518
<rdar://problem/61181092>
Reviewed by Eric Carlson.
Follow up to r260182; Pass a WeakPtr into our task queue in sessionWillEndPlayback rather than a bare pointer.
- platform/audio/cocoa/MediaSessionManagerCocoa.mm:
(WebCore::MediaSessionManagerCocoa::sessionWillEndPlayback):
- 11:06 AM Changeset in webkit [260200] by
-
- 2 edits in trunk/Source/WebKit
Use safeRoundPage() instead of round_page() in SharedMemory
https://bugs.webkit.org/show_bug.cgi?id=210608
<rdar://problem/60600443>
Reviewed by Geoffrey Garen.
Use new safeRoundPage() instead of round_page() in SharedMemory, to deal safely with overflows.
- Platform/cocoa/SharedMemoryCocoa.cpp:
(WebKit::SharedMemory::allocate):
(WebKit::makeMemoryEntry):
(WebKit::SharedMemory::~SharedMemory):
(WebKit::SharedMemory::createHandle):
- 11:04 AM Changeset in webkit [260199] by
-
- 2 edits in trunk/Source/WebCore
Captured ThreadedScrollingTree should check its m_scrollingCoordinator before calling its methods
https://bugs.webkit.org/show_bug.cgi?id=210570
Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-04-16
Reviewed by Simon Fraser.
m_scrollingCoordinator may be nullified before asynchronously calling its
method scheduleUpdateScrollPositionAfterAsyncScroll(). Check if it is
not null before calling this method.
- page/scrolling/ThreadedScrollingTree.cpp:
(WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):
- 10:44 AM Changeset in webkit [260198] by
-
- 2 edits in branches/safari-609-branch/Source/WTF
Cherry-pick r259980. rdar://problem/61888315
Follow-up: WTF::Persistence::Coder and WTF::Persistence::Decoder should use WARN_UNUSED_RETURN
<https://webkit.org/b/210238>
<rdar://problem/61491575>
Changes based on feedback from Alex Christensen and Darin Adler:
- Remove WARN_UNUSED_RETURN from methods returning Optional<>.
- Place WARN_UNUSED_RETURN consistently before the return type.
- wtf/persistence/PersistentDecoder.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259980 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 10:44 AM Changeset in webkit [260197] by
-
- 6 edits in branches/safari-609-branch/Source
Cherry-pick r259814. rdar://problem/61888315
WTF::Persistence::Coder and WTF::Persistence::Decoder should use WARN_UNUSED_RETURN
<https://webkit.org/b/210238>
<rdar://problem/61491575>
Reviewed by Darin Adler.
Source/WebKit:
- NetworkProcess/cache/NetworkCacheEntry.cpp: (WebKit::NetworkCache::Entry::decodeStorageRecord):
- Add missing return value check for decode.decode().
Source/WTF:
- wtf/persistence/PersistentCoders.cpp: (WTF::Persistence::decodeStringText):
- Add WARN_UNUSED_RETURN.
- wtf/persistence/PersistentCoders.h: (WTF::Persistence::Coder<Optional<T>>::decode): (WTF::Persistence::Coder<Seconds>::decode): (WTF::Persistence::Coder<WallTime>::decode):
- Add WARN_UNUSED_RETURN.
- Add missing return value check for decode.decodeFixedLengthData().
- wtf/persistence/PersistentDecoder.h: (WTF::Persistence::Decoder::decode): (WTF::Persistence::Decoder::decodeEnum): (WTF::Persistence::Decoder::bufferIsLargeEnoughToContain const):
- Add WARN_UNUSED_RETURN.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259814 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 10:39 AM Changeset in webkit [260196] by
-
- 3 edits2 adds in trunk
Crash in IndefiniteSizeStrategy::recomputeUsedFlexFractionIfNeeded when min-size can not be resolved
https://bugs.webkit.org/show_bug.cgi?id=210584
<rdar://problem/56685237>
Reviewed by Manuel Rego Casasnovas.
Source/WebCore:
Use the initial value of 0 when the min-height can't be resolved.
Test: fast/css-grid-layout/crash-when-min-height-cant-be-resolved.html
- rendering/GridTrackSizingAlgorithm.cpp:
(WebCore::IndefiniteSizeStrategy::recomputeUsedFlexFractionIfNeeded const):
LayoutTests:
- fast/css-grid-layout/crash-when-min-height-cant-be-resolved-expected.txt: Added.
- fast/css-grid-layout/crash-when-min-height-cant-be-resolved.html: Added.
- 10:30 AM Changeset in webkit [260195] by
-
- 15 edits in trunk/Source
Non-unified build fixes mid April 2020 edition
https://bugs.webkit.org/show_bug.cgi?id=210599
Unreviewed build fix.
Source/WebCore:
No new tests needed.
- bindings/js/JSNavigatorCustom.cpp: Add missing JavaScriptCore/JSCJSValue.h header.
(WebCore::JSNavigator::getUserMedia): Prefix with the JSC:: namespace where needed.
- dom/ShadowRoot.cpp: Add missing WebAnimation.h header.
- dom/SimpleRange.cpp: Add missing NodeTraversal.h header.
- editing/RemoveNodePreservingChildrenCommand.cpp: Add missing Editing.h header.
- page/MemoryRelease.cpp: Add missing JavaScriptCore/VM.h header.
- page/PageConfiguration.cpp: Add missing UserContentURLPattern.h header.
- page/scrolling/ScrollingTree.h: Add missing EventTrackingRegions.h header.
- page/scrolling/ScrollingTreeLatchingController.cpp: Add missing Logging.h header.
- page/scrolling/ScrollingTreeLatchingController.h: Add missing ScrollTypes.h header,
and forward declaration for WebCore::PlatformWheelEvent.
- workers/service/server/SWServerJobQueue.cpp: Add missing Logging.h header.
Source/WebKit:
- UIProcess/DeviceIdHashSaltStorage.cpp: Add missing Logging.h header.
- UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp:
(WebKit::WebInspectorProxy::platformSetForcedAppearance): Add missing WebCore:: namespace
prefix.
- UIProcess/linux/MemoryPressureMonitor.h: Add missing wtf/text/CString.h header.
- 9:59 AM Changeset in webkit [260194] by
-
- 1 edit in branches/safari-609-branch/Source/WebKit/Shared/mac/WebCoreArgumentCodersMac.mm
Unreviewed build fix. rdar://problem/61853298
Attempted resolution of: use of undeclared identifier 'isInBounds'; did you mean 'WTF::isInBounds'?
- 9:52 AM Changeset in webkit [260193] by
-
- 4 edits in trunk
REGRESSION (r259762): Should always hit test for editable elements if the WKWebView is fully editable
https://bugs.webkit.org/show_bug.cgi?id=210558
<rdar://problem/61798347>
Reviewed by Wenson Hsieh.
Source/WebKit:
If the entire WKWebView is marked editable (via SPI -[WKWebView _setEditable]) then
always ask the web process to hit test the page because every element is considered
editable.
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _requestTextInputContextsInRect:completionHandler:]):
Tools:
Add a test.
- TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:
(TEST):
- 9:47 AM Changeset in webkit [260192] by
-
- 17 edits in trunk
Move -_requestTextInputContextsInRect to WKContentView to simplify implementation
https://bugs.webkit.org/show_bug.cgi?id=210398
<rdar://problem/61656931>
Reviewed by Darin Adler.
Source/WebKit:
-_requestTextInputContextsInRect is not needed on Mac, but supporting it complicates
its implementation: it has to deal with coordinate space differences due to differences
in what is the root view on Mac and iOS + it has to know about iOS's custom content views.
While this function was in the "SPI" header, there is no software at Apple that was using
these outside of WebKit, and I will assume no non-Apple software was using them either.
Moving this function to WKContentView lets me simplify the implementation.
- Platform/spi/ios/UIKitSPI.h: Add more forward declarations.
- UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _convertRectFromRootViewCoordinates:]): Deleted.
(-[WKWebView _convertRectToRootViewCoordinates:]): Deleted.
(-[WKWebView _mayContainEditableElementsInRect:]): Deleted; moved to WKWebViewTestingIOS.mm.
(-[WKWebView _requestTextInputContextsInRect:completionHandler:]): Deleted; moved to WKContentViewInteraction.mm.
- UIProcess/API/Cocoa/WKWebViewPrivate.h:
- UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h:
- UIProcess/API/ios/WKWebViewTestingIOS.mm:
(-[WKWebView _requestTextInputContextsInRect:completionHandler:]): Added. Turns around and
calls the function of the same name on the WKContentView. It takes care to convert the specified
rect from WKWebView coordinates to WKContentView coordinates and fixes up the bounding rects
for the returned contexts to be in WKWebView coordinates. This keeps existings tests passing
as mekes using this function intuitive since callers specify and get rects in WKWebView coordinates.
(-[WKWebView _requestDocumentContext:completionHandler:]): Added.
(-[WKWebView _adjustSelectionWithDelta:completionHandler:]): Added.
(-[WKWebView _mayContainEditableElementsInRect:]): Moved from WKWebView.mm.
- UIProcess/ios/WKContentViewInteraction.h:
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _requestTextInputContextsInRect:completionHandler:]): Moved from WKWebView.mm and simplified.
Source/WTF:
Add a convenience function to create an NSArray from a WTF::Vector with a transform function.
The tranform function can either return a RetainPtr or an id.
- wtf/cocoa/VectorCocoa.h:
(WTF::createNSArray): Added.
Tools:
Update test now that -_requestTextInputContextsInRect has moved from WKWebView to WKContentView.
I expose new testing-only WKWebView SPI to access it on the content view.
- TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:
(-[TestWKWebView synchronouslyRequestDocumentContext:]): Added; due to category name change.
(-[TestWKWebView synchronouslyAdjustSelectionWithDelta:]): Added; due to category name change.
- TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:
(-[WKWebView synchronouslyRequestTextInputContextsInRect:]): Deleted; due to category name change.
(-[WKWebView synchronouslyFocusTextInputContext:]): Deleted; due to category name change.
- WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptControllerIOS::mayContainEditableElementsInRect): Convert from content coordinates
to WKWebView coordinates now that -_mayContainEditableElementsInRect expects it.
LayoutTests:
Update test and expected results now that UIScriptController.mayContainEditableElementsInRect()
expects the passed rect to be in content coordinates.
I replaced one sub-test of a rect pre-scroll with another that tests the location
of a rect that will have editable elements after scroll. The purpose of that sub-test
hasn't changed, but it now makes the sub-tests' rects symmetric for before and after
scroll. I also added debug() statements to demarcate the before scroll and after scroll
sub-tests in the results to make it easier to understand what this test file is testing.
- editing/editable-region/hit-test-fixed-expected.txt:
- editing/editable-region/hit-test-fixed.html:
- 9:25 AM Changeset in webkit [260191] by
-
- 13 edits1 copy in trunk/Source/WebKit
[IPC Hardening] Use ObjectIdentifier<> for LegacyCustomProtocol
<https://webkit.org/b/210580>
<rdar://problem/61791686>
Reviewed by Chris Dumez.
Replace uses of uint64_t with LegacyCustomProtocolID.
- NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm:
(WebKit::LegacyCustomProtocolManager::didFailWithError):
(WebKit::LegacyCustomProtocolManager::didLoadData):
(WebKit::LegacyCustomProtocolManager::didReceiveResponse):
(WebKit::LegacyCustomProtocolManager::didFinishLoading):
(WebKit::LegacyCustomProtocolManager::wasRedirectedToRequest):
(WebKit::LegacyCustomProtocolManager::protocolForID):
- NetworkProcess/CustomProtocols/LegacyCustomProtocolID.h: Add.
- NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.cpp:
(WebKit::LegacyCustomProtocolManager::addCustomProtocol):
(WebKit::LegacyCustomProtocolManager::removeCustomProtocol):
(WebKit::LegacyCustomProtocolManager::startLoading):
(WebKit::LegacyCustomProtocolManager::stopLoading):
(WebKit::generateCustomProtocolID): Delete.
- Replace with LegacyCustomProtocolID::generate().
- NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.h:
- NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.messages.in:
- Scripts/webkit/messages.py:
- UIProcess/API/APICustomProtocolManagerClient.h:
(API::CustomProtocolManagerClient::startLoading):
(API::CustomProtocolManagerClient::stopLoading):
- UIProcess/Cocoa/LegacyCustomProtocolManagerClient.h:
- UIProcess/Cocoa/LegacyCustomProtocolManagerClient.mm:
(-[WKCustomProtocolLoader initWithLegacyCustomProtocolManagerProxy:customProtocolID:request:]):
(WebKit::LegacyCustomProtocolManagerClient::startLoading):
(WebKit::LegacyCustomProtocolManagerClient::stopLoading):
- UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.cpp:
(WebKit::LegacyCustomProtocolManagerProxy::startLoading):
(WebKit::LegacyCustomProtocolManagerProxy::stopLoading):
(WebKit::LegacyCustomProtocolManagerProxy::wasRedirectedToRequest):
(WebKit::LegacyCustomProtocolManagerProxy::didReceiveResponse):
(WebKit::LegacyCustomProtocolManagerProxy::didLoadData):
(WebKit::LegacyCustomProtocolManagerProxy::didFailWithError):
(WebKit::LegacyCustomProtocolManagerProxy::didFinishLoading):
- UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.h:
- Remove unused typedef and instance variable.
- UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.messages.in:
- WebKit.xcodeproj/project.pbxproj:
- Add LegacyCustomProtocolID.h to project.
- 8:55 AM Changeset in webkit [260190] by
-
- 16 edits6 adds in trunk
[Async overflow scrolling] Slow-repaint overflow scroll have force their enclosing scrollers to be slow too
https://bugs.webkit.org/show_bug.cgi?id=210591
Reviewed by Antti Koivisto.
Source/WebCore:
If an overflow:scroll has background-attachment:fixed in the contents, then both it and all its containing-block
scrolling ancestors have to be slow-scrolling too, because scrolling any of them affects the local geometry
of the fixed backgrounds which paint on scroll.
Implement this by having the scrolling tree do a post-commit pass over the nodes with sync scrolling reasons
(which we collect during the commit phase). For each slow-scrolling node, walk its ancestor chain (via
proxy nodes when necessary) and mark the scrolling node ancestors with the "DescendantScrollersHaveSynchronousScrolling"
reason.
For testing, expose internals.scrollingTreeAsText(), which needs a bit of synchronization via
waitForScrollingTreeCommit() since the commit happens on the scrolling thread.
Tests: scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-non-cb-overflow.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-overflow.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-overflow2.html
- page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::scrollingStateTreeAsText const):
(WebCore::AsyncScrollingCoordinator::scrollingTreeAsText const):
- page/scrolling/AsyncScrollingCoordinator.h:
- page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::scrollingStateTreeAsText const):
(WebCore::ScrollingCoordinator::scrollingTreeAsText const):
(WebCore::ScrollingCoordinator::synchronousScrollingReasonsAsText):
- page/scrolling/ScrollingCoordinator.h:
- page/scrolling/ScrollingCoordinatorTypes.h:
- page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::commitTreeState):
(WebCore::ScrollingTree::updateTreeFromStateNodeRecursive):
(WebCore::ScrollingTree::propagateSynchronousScrollingReasons):
(WebCore::ScrollingTree::updateTreeFromStateNode): Deleted.
- page/scrolling/ScrollingTree.h:
(WebCore::ScrollingTree::waitForScrollingTreeCommit):
- page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::commitStateAfterChildren):
- page/scrolling/ScrollingTreeScrollingNode.h:
- page/scrolling/ThreadedScrollingTree.cpp:
(WebCore::ThreadedScrollingTree::waitForScrollingTreeCommit):
- page/scrolling/ThreadedScrollingTree.h:
- testing/Internals.cpp:
(WebCore::Internals::scrollingTreeAsText const):
- testing/Internals.h:
- testing/Internals.idl:
LayoutTests:
- scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-non-cb-overflow-expected.txt: Added.
- scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-non-cb-overflow.html: Added.
- scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-overflow-expected.txt: Added.
- scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-overflow.html: Added.
- scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-overflow2-expected.txt: Added.
- scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-overflow2.html: Added.
- 8:52 AM Changeset in webkit [260189] by
-
- 3 edits in trunk/LayoutTests
[ Mac wk2 Debug ] media/modern-media-controls/media-controller/media-controller-auto-hide.html is flaky timing out.
https://bugs.webkit.org/show_bug.cgi?id=210349
<rdar://problem/61594098>
Reviewed by Eric Carlson.
This test had several things wrong about it. First, it manually created a MediaController in the test page and set a custom auto-hide delay on it.
However, it would test the proper behavior of the auto-hide behavior on the MediaController created by the media element, querying the state of
the media controls markup within that media element's shadow root. In that world, the auto-hide delay was the default delay, and not the custom
one set on the page-created MediaController.
The cause of the timeout was that the media clip used in this test is barely longer than the auto-hide delay, and it could happen that under slow
conditions, the media would end and the auto-hide timer would never have a chance to fire since it would be canceled due to auto-hide being disabled
when the media is not playing, such as when it ended.
We make this test saner and more realistic by not customizing the auto-hide delay, removing the page MediaController and simply setting "loop" on the
media element such that it never stops playing, givin the auto-hide timer additional time to fire with no risk of it being canceled by the media ending.
- media/modern-media-controls/media-controller/media-controller-auto-hide.html:
- platform/mac-wk2/TestExpectations:
- 8:45 AM Changeset in webkit [260188] by
-
- 1 copy in tags/Safari-610.1.9.4
Tag Safari-610.1.9.4.
- 8:34 AM Changeset in webkit [260187] by
-
- 8 edits in branches/safari-610.1.9-branch/Source
Versioning.
- 8:33 AM Changeset in webkit [260186] by
-
- 4 edits in trunk/Source/WebKit
REGRESSION (r259898): WebKit-based Books views are all blank
https://bugs.webkit.org/show_bug.cgi?id=210590
<rdar://problem/61791109>
Reviewed by Chris Dumez.
- UIProcess/Cocoa/WebViewImpl.h:
- UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::enterAcceleratedCompositingWithRootLayer):
(WebKit::WebViewImpl::setAcceleratedCompositingRootLayer):
(WebKit::WebViewImpl::setAcceleratedCompositingRootLayerAfterFlush): Deleted.
- UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::enterAcceleratedCompositingMode):
(WebKit::PageClientImpl::didFirstLayerFlush):
The changes to setAcceleratedCompositingRootLayer in r259898 proved
to be wrong in a second way (the first being fixed in r260104): when
setAcceleratedCompositingRootLayer is called from updateAcceleratedCompositingMode,
because the layer hosting mode changed (Books appears to use app-hosted layers),
it incorrectly identified the root layer change as a process swap, resulting
in the correct layer never being unhidden.
This is enough mistakes that I'm going to try a different approach:
put setAcceleratedCompositingRootLayer back to the way it was before, where
it immediately updates the layer without any smarts, remove
setAcceleratedCompositingRootLayerAfterFlush, because it's no longer necessary,
and add enterAcceleratedCompositingWithRootLayer, which is specifically only
called in the case where DrawingArea will for-sure send us a follow-up
(didFirstLayerFlush) that will unhide the root layer.
- 7:55 AM Changeset in webkit [260185] by
-
- 2 edits in trunk/Tools
Unreviewed, GTK clean build fix after r260132.
- TestWebKitAPI/gtk/main.cpp:
(main): Don't use GtkVersioning here. A dependency on the WebCore
private headers for this single file is overkill.
- 7:25 AM Changeset in webkit [260184] by
-
- 3 edits in trunk/Source/WebCore
Clean a couple of unused-parameters warnings
https://bugs.webkit.org/show_bug.cgi?id=210596
Unreviewed.
No new tests needed.
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::wouldTaintOrigin const): Remove
a spurious UNUSED_PARAM() for an actually used parameter.
- rendering/RenderBlock.cpp:
(WebCore::RenderBlock::updateSecurityDiscCharacters):
- 7:07 AM Changeset in webkit [260183] by
-
- 2 edits1 delete in trunk/LayoutTests
[GTK] Gardening, mark several animations test as failure
https://bugs.webkit.org/show_bug.cgi?id=210602
Unreviewed gardening.
For some reason these baselines are not making the tests pass in
the EWS GTK-WK2 bot, so I'm removing these GTK baselines added in
r260155 and mark the tests as failing instead.
- platform/gtk/TestExpectations:
- platform/gtk/imported/w3c/web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt: Removed.
- platform/gtk/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/commitStyles-expected.txt: Removed.
- platform/gtk/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events-expected.txt: Removed.
- platform/gtk/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt: Removed.
- 6:36 AM Changeset in webkit [260182] by
-
- 42 edits9 adds in trunk
[macOS] Update ScreenTime as playback state changes
https://bugs.webkit.org/show_bug.cgi?id=210518
<rdar://problem/61181092>
Reviewed by Jer Noble.
Source/WebCore:
Test: media/media-usage-state.html
Pass media element state to the UI process whenever it changes.
- Headers.cmake:
- WebCore.xcodeproj/project.pbxproj:
- html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::mediaSessionUniqueIdentifier const):
- html/HTMLMediaElement.h:
- html/MediaElementSession.cpp:
(WebCore::MediaElementSession::MediaElementSession):
(WebCore::MediaElementSession::~MediaElementSession):
(WebCore::MediaElementSession::updateMediaUsageIfChanged):
- html/MediaElementSession.h:
- page/ChromeClient.h:
(WebCore::ChromeClient::addMediaUsageManagerSession):
(WebCore::ChromeClient::updateMediaUsageManagerSessionState):
(WebCore::ChromeClient::removeMediaUsageManagerSession):
- platform/audio/PlatformMediaSession.cpp:
(WebCore::PlatformMediaSession::PlatformMediaSession):
- platform/audio/PlatformMediaSession.h:
(WebCore::PlatformMediaSession::updateMediaUsageIfChanged):
(WebCore::PlatformMediaSession::mediaSessionIdentifier const):
- platform/audio/PlatformMediaSessionManager.cpp:
(WebCore::PlatformMediaSessionManager::updateNowPlayingInfoIfNecessary):
- platform/audio/PlatformMediaSessionManager.h:
(WebCore::PlatformMediaSessionManager::scheduleUpdateSessionStatus):
(WebCore::PlatformMediaSessionManager::sessionDidEndRemoteScrubbing):
(WebCore::PlatformMediaSessionManager::scheduleUpdateNowPlayingInfo): Deleted.
- platform/audio/cocoa/MediaSessionManagerCocoa.h:
- platform/audio/cocoa/MediaSessionManagerCocoa.mm:
(WebCore::MediaSessionManagerCocoa::scheduleUpdateSessionStatus):
(WebCore::MediaSessionManagerCocoa::sessionWillBeginPlayback):
(WebCore::MediaSessionManagerCocoa::sessionDidEndRemoteScrubbing):
(WebCore::MediaSessionManagerCocoa::removeSession):
(WebCore::MediaSessionManagerCocoa::sessionWillEndPlayback):
(WebCore::MediaSessionManagerCocoa::clientCharacteristicsChanged):
(WebCore::MediaSessionManagerCocoa::sessionCanProduceAudioChanged):
(WebCore::MediaSessionManagerCocoa::scheduleUpdateNowPlayingInfo): Deleted.
- platform/audio/ios/MediaSessionManagerIOS.mm:
(WebCore::MediaSessionManageriOS::resetRestrictions):
(WebCore::MediaSessionManageriOS::sessionWillBeginPlayback):
- platform/graphics/MediaUsageInfo.h: Added.
(WebCore::MediaUsageInfo::operator== const):
(WebCore::MediaUsageInfo::operator!= const):
(WebCore::MediaUsageInfo::encode const):
(WebCore::MediaUsageInfo::decode):
- testing/Internals.cpp:
(WebCore::Internals::setMediaElementRestrictions):
(WebCore::Internals::mediaUsageState const):
- testing/Internals.h:
- testing/Internals.idl:
Source/WebCore/PAL:
Soft link the UsageTracking framework.
- PAL.xcodeproj/project.pbxproj:
- pal/cocoa/UsageTrackingSoftLink.h: Added.
- pal/cocoa/UsageTrackingSoftLink.mm: Added.
Source/WebKit:
Add a manager that gets media element state changes, and a Cocoa-specific
implementation that passes that state to ScreenTime.
- Scripts/webkit/messages.py:
- Sources.txt:
- SourcesCocoa.txt:
- UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::mediaUsageManager):
(WebKit::WebPageProxy::addMediaUsageManagerSession):
(WebKit::WebPageProxy::updateMediaUsageManagerSessionState):
(WebKit::WebPageProxy::removeMediaUsageManagerSession):
- UIProcess/Media/MediaUsageManager.cpp: Added.
(WebKit::MediaUsageManager::create):
(WebKit::reset):
(WebKit::MediaUsageManager::addMediaSession):
(WebKit::MediaUsageManager::removeMediaSession):
(WebKit::MediaUsageManager::updateMediaUsage):
- UIProcess/Media/MediaUsageManager.h: Added.
- UIProcess/Media/cocoa/MediaUsageManagerCocoa.h: Added.
(WebKit::MediaUsageManagerCocoa::SessionMediaUsage::SessionMediaUsage):
- UIProcess/Media/cocoa/MediaUsageManagerCocoa.mm: Added.
(WebKit::usageTrackingAvailable):
(WebKit::MediaUsageManager::create):
(WebKit::MediaUsageManagerCocoa::~MediaUsageManagerCocoa):
(WebKit::MediaUsageManagerCocoa::reset):
(WebKit::MediaUsageManagerCocoa::addMediaSession):
(WebKit::MediaUsageManagerCocoa::removeMediaSession):
(WebKit::MediaUsageManagerCocoa::updateMediaUsage):
- UIProcess/WebAuthentication/AuthenticatorManager.cpp:
- UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:
- UIProcess/WebPageProxy.cpp:
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- WebKit.xcodeproj/project.pbxproj:
- WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::addMediaUsageManagerSession):
(WebKit::WebChromeClient::updateMediaUsageManagerSessionState):
(WebKit::WebChromeClient::removeMediaUsageManagerSession):
- WebProcess/WebCoreSupport/WebChromeClient.h:
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::addMediaUsageManagerSession):
(WebKit::WebPage::updateMediaUsageManagerSessionState):
(WebKit::WebPage::removeMediaUsageManagerSession):
- WebProcess/WebPage/WebPage.h:
Source/WTF:
Define HAVE_MEDIA_USAGE_FRAMEWORK and ENABLE_MEDIA_USAGE
- wtf/PlatformEnableCocoa.h:
- wtf/PlatformHave.h:
LayoutTests:
- media/media-usage-state-expected.txt: Added.
- media/media-usage-state.html: Added.
- platform/gtk/TestExpectations: Skip new test.
- platform/win/TestExpectations: Ditto.
- platform/wpe/TestExpectations: Ditto.
- 6:07 AM Changeset in webkit [260181] by
-
- 54 edits14 adds in trunk
[JSC] Implement JSMapIterator/JSSetIterator with JSInternalFieldObjectImpl
https://bugs.webkit.org/show_bug.cgi?id=210023
Reviewed by Keith Miller.
JSTests:
- stress/map-iteration-oas.js: Added.
(shouldBe):
(test):
- stress/map-iterator-creation-fail-dfg.js: Added.
(shouldThrow):
(test2):
(test3):
- stress/map-iterator-creation-fail.js: Added.
(shouldThrow):
(i.shouldThrow):
(test2):
(test3):
- stress/set-iteration-oas.js: Added.
(shouldBe):
- stress/set-iterator-creation-fail-dfg.js: Added.
(shouldThrow):
(set shouldThrow):
- stress/set-iterator-creation-fail.js: Added.
(shouldThrow):
(i.shouldThrow):
(test2):
(test3):
Source/JavaScriptCore:
This patch reimplement JSMapIterator/JSSetIterator with JSInternalFieldObjectImpl.
This makes current JSFinalObject-based Map/SetIterator simple and small.
We generalize NewArrayIterator/PhantomNewArrayIterator to convert them to NewInternalFieldObject/PhantomNewInternalFieldObject
to support JSMapIterator/JSSetIterator too in DFG / FTL. This makes allocation efficient and object-allocation-sinking aware.
- builtins/BuiltinNames.h:
- builtins/MapIteratorPrototype.js:
(globalPrivate.mapIteratorNext):
(next):
- builtins/MapPrototype.js:
(globalPrivate.MapIterator): Deleted.
(values): Deleted.
(keys): Deleted.
(entries): Deleted.
- builtins/SetIteratorPrototype.js:
(globalPrivate.setIteratorNext):
(next):
- builtins/SetPrototype.js:
(globalPrivate.SetIterator): Deleted.
(values): Deleted.
(entries): Deleted.
- bytecode/BytecodeIntrinsicRegistry.cpp:
(JSC::BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry):
- bytecode/BytecodeIntrinsicRegistry.h:
- bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::emitIsMapIterator):
(JSC::BytecodeGenerator::emitIsSetIterator):
- bytecompiler/NodesCodegen.cpp:
(JSC::mapIteratorInternalFieldIndex):
(JSC::setIteratorInternalFieldIndex):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_getMapIteratorInternalField):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_getSetIteratorInternalField):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_putMapIteratorInternalField):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_putSetIteratorInternalField):
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
- dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
- dfg/DFGClobbersExitState.cpp:
(JSC::DFG::clobbersExitState):
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
- dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGMayExit.cpp:
- dfg/DFGNode.h:
(JSC::DFG::Node::convertToPhantomNewInternalFieldObject):
(JSC::DFG::Node::hasStructure):
(JSC::DFG::Node::isPhantomAllocation):
(JSC::DFG::Node::convertToPhantomNewArrayIterator): Deleted.
- dfg/DFGNodeType.h:
- dfg/DFGObjectAllocationSinkingPhase.cpp:
- dfg/DFGOperations.cpp:
- dfg/DFGOperations.h:
- dfg/DFGPredictionPropagationPhase.cpp:
- dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileNewInternalFieldObjectImpl):
(JSC::DFG::SpeculativeJIT::compileNewGenerator):
(JSC::DFG::SpeculativeJIT::compileNewAsyncGenerator):
(JSC::DFG::SpeculativeJIT::compileNewInternalFieldObject):
(JSC::DFG::SpeculativeJIT::compileNewArrayIterator): Deleted.
- dfg/DFGSpeculativeJIT.h:
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGStoreBarrierInsertionPhase.cpp:
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileNewInternalFieldObjectImpl):
(JSC::FTL::DFG::LowerDFGToB3::compileNewGenerator):
(JSC::FTL::DFG::LowerDFGToB3::compileNewAsyncGenerator):
(JSC::FTL::DFG::LowerDFGToB3::compileNewInternalFieldObject):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewInternalFieldObject):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayIterator): Deleted.
- ftl/FTLOperations.cpp:
(JSC::FTL::operationPopulateObjectInOSR):
(JSC::FTL::operationMaterializeObjectInOSR):
- inspector/JSInjectedScriptHost.cpp:
(Inspector::JSInjectedScriptHost::subtype):
(Inspector::JSInjectedScriptHost::getInternalProperties):
(Inspector::cloneMapIteratorObject):
(Inspector::cloneSetIteratorObject):
(Inspector::JSInjectedScriptHost::iteratorEntries):
- runtime/CommonIdentifiers.h:
- runtime/Intrinsic.cpp:
(JSC::intrinsicName):
- runtime/Intrinsic.h:
- runtime/JSArrayIterator.h:
- runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
- runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::mapIteratorPrototype const):
(JSC::JSGlobalObject::setIteratorPrototype const):
(JSC::JSGlobalObject::mapIteratorStructure const):
(JSC::JSGlobalObject::setIteratorStructure const):
- runtime/JSMapIterator.cpp:
(JSC::JSMapIterator::createWithInitialValues):
(JSC::JSMapIterator::finishCreation):
(JSC::JSMapIterator::visitChildren):
- runtime/JSMapIterator.h:
- runtime/JSSetIterator.cpp:
(JSC::JSSetIterator::createWithInitialValues):
(JSC::JSSetIterator::finishCreation):
(JSC::JSSetIterator::visitChildren):
- runtime/JSSetIterator.h:
- runtime/JSType.cpp:
(WTF::printInternal):
- runtime/JSType.h:
- runtime/JSTypedArrayViewPrototype.cpp:
(JSC::JSTypedArrayViewPrototype::finishCreation):
- runtime/MapPrototype.cpp:
(JSC::MapPrototype::finishCreation):
(JSC::createMapIteratorObject):
(JSC::mapProtoFuncValues):
(JSC::mapProtoFuncKeys):
(JSC::mapProtoFuncEntries):
- runtime/SetPrototype.cpp:
(JSC::SetPrototype::finishCreation):
(JSC::createSetIteratorObject):
(JSC::setProtoFuncValues):
(JSC::setProtoFuncEntries):
- runtime/VM.cpp:
(JSC::VM::setIteratorStructureSlow): Deleted.
(JSC::VM::mapIteratorStructureSlow): Deleted.
- runtime/VM.h:
(JSC::VM::setIteratorStructure): Deleted.
(JSC::VM::mapIteratorStructure): Deleted.
Source/WebCore:
- bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::serialize):
- 5:06 AM Changeset in webkit [260180] by
-
- 3 edits in trunk/Source/JavaScriptCore
[JSC] Use ensureStillAliveHere in FTL when content of storage should be kept alive
https://bugs.webkit.org/show_bug.cgi?id=210583
<rdar://problem/61831515>
Reviewed by Mark Lam.
The content of Butterfly / ArrayStorage is kept alive only when the owner JSCell is alive.
This means that we should keep the owner JSCell alive if we are loading content of storage
which includes JSCells. This patch inserts ensureStillAliveHere in FTL to ensure this invariant.
- ftl/FTLJITCode.cpp:
(JSC::FTL::JITCode::~JITCode): Found that we get crash with
dumpDisassemblyif FTL::JITCode is destroyed while it fails to generate code while testing this.
- ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileArrayIndexOf):
(JSC::FTL::DFG::LowerDFGToB3::compileArrayPop):
(JSC::FTL::DFG::LowerDFGToB3::compileStringCharAt):
(JSC::FTL::DFG::LowerDFGToB3::compileStringCharCodeAt):
(JSC::FTL::DFG::LowerDFGToB3::compileStringCodePointAt):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByOffset):
(JSC::FTL::DFG::LowerDFGToB3::compileMultiGetByOffset):
- 4:46 AM WebKitGTK/2.28.x edited by
- (diff)
- 4:46 AM WebKitGTK/2.28.x edited by
- (diff)
- 4:45 AM Changeset in webkit [260179] by
-
- 2 edits in trunk/Source/WTF
Unreviewed, set CeilingOnPageSize for MIPS64
This fixes a build failure ("Must set CeilingOnPageSize in
PageBlock.h").
- wtf/PageBlock.h:
- 4:43 AM Changeset in webkit [260178] by
-
- 3 edits in trunk/Source/WebCore
Unreviewed, fix GStreamer build warnings.
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::cdmInstanceDetached):
- platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::AppendPipeline::handleErrorConditionFromStreamingThread):
- 4:39 AM Changeset in webkit [260177] by
-
- 5 edits in trunk/Source/WebKit
[IPC hardening] DrawingArea::updateBackingStoreState() is not used on Apple platforms
<https://webkit.org/b/210585>
<rdar://problem/61802011>
Reviewed by Geoffrey Garen.
- UIProcess/DrawingAreaProxy.h:
- UIProcess/DrawingAreaProxy.messages.in:
- WebProcess/WebPage/DrawingArea.h:
(WebKit::DrawingArea::updateBackingStoreState):
- WebProcess/WebPage/DrawingArea.messages.in:
Use USE(COORDINATED_GRAPHICS) USE(TEXTURE_MAPPER) to protect code not used on Apple platforms.
- 4:22 AM Changeset in webkit [260176] by
-
- 7 edits in trunk
[GTK] MiniBrowser opens new windows too small causing failures on some WPT tests
https://bugs.webkit.org/show_bug.cgi?id=210206
Reviewed by Carlos Garcia Campos.
Source/WebCore:
Some WPT tests (when executed with the WPT runner via WebDriver)
open new browser windows via JavaScript invoking Window.open()
and then run the test on this new window.
The size of the new window is not specified, and we were failing
to provide a default window size, so it was using the minimum of
100x100 which its just too small for some test that later call
document.elementFromPoint() on some coordinates
that are outside of that size.
To fix that provide the size of the default GTK window to WebCore
if the application sets one via gtk_window_set_default_size().
And if not, then use the size of the previous window.
Also change the way we position the new window to work better when
the system uses more than one monitor. Previously to get the default
coordinates of the new window we were using gdk_display_get_monitor()
with just the first monitor available.
This causes issues in the calculation of the available space when
using several monitors. Instead get the monitor in use by looking
at the current GDK root window.
Tests: TestWebKitAPI/WebKit2Gtk/TestUIClient:/webkit/WebKitWebView/open-window-default-size
and TestWebKitAPI/WebKit2Gtk/TestUIClient:/webkit/WebKitWebView/open-window-no-default-size
- loader/FrameLoader.cpp:
(WebCore::createWindow):
- platform/gtk/PlatformScreenGtk.cpp:
(WebCore::getCurrentScreenMonitor):
(WebCore::screenRect):
(WebCore::screenAvailableRect):
Source/WebKit:
Provide the size of the default window (if is set) when windowRect is called
before the window is shown.
- UIProcess/API/glib/WebKitUIClient.cpp:
Tools:
Add two API test to check that window.open() by default gets a size
request equal to the old window if there is no default window size,
or to the default window if there is a default window size.
A new function helper setCreateNewWebViewsInWindowsWithDefaultSize()
its added to create new webviews in new windows automatically, which
its needed to test the case of having a default window size.
- TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:
(testWebViewWindowProperties):
(testWebViewOpenWindowDefaultSize):
(testWebViewOpenWindowNoDefaultSize):
(beforeAll):
- 2:19 AM Changeset in webkit [260175] by
-
- 2 edits in trunk
[GTK4] Disable netscape plugins API
https://bugs.webkit.org/show_bug.cgi?id=210552
Reviewed by Adrian Perez de Castro.
Because GTK4 is the future and NPAPI plugins the past.
- Source/cmake/OptionsGTK.cmake:
- 12:11 AM Changeset in webkit [260174] by
-
- 8 edits in trunk/Source
TextureMapper renders video element with "object-fit: cover" incorrectly
https://bugs.webkit.org/show_bug.cgi?id=210544
Patch by Tomoki Imai <Tomoki Imai> on 2020-04-16
Reviewed by Žan Doberšek.
Propagate GraphicsLayer::contentsClippingRect information to TextureMapperLayer
to properly clip the outside of DOM element when the element has "object-fit: cover".
Unfortunately, the test is disabled on WebKitGTK due to bug 177536, bug 163528.
Test: compositing/video/video-object-fit.html
Source/WebCore:
- platform/graphics/nicosia/NicosiaPlatformLayer.h:
(Nicosia::CompositionLayer::flushState):
- platform/graphics/texmap/TextureMapperLayer.cpp:
(WebCore::TextureMapperLayer::paintSelf): Clip using propagated contentsClippingRect when rendering m_contentsLayer.
(WebCore::TextureMapperLayer::setContentsClippingRect):
- platform/graphics/texmap/TextureMapperLayer.h:
- platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::setContentsClippingRect):
(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):
- platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
Source/WebKit:
- Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::updateSceneState):
Apr 15, 2020:
- 10:57 PM Changeset in webkit [260173] by
-
- 11 edits8 adds in trunk
[Cocoa] Password obscuring dots drawn with the system font are too small
https://bugs.webkit.org/show_bug.cgi?id=209692
<rdar://problem/60788385>
Reviewed by Darin Adler.
Source/WebCore:
The system font's U+2022 BULLET glyph got smaller. Instead, we should match
the native platform's behavior of using U+F79A. However, U+F79A is a PUA
character, meaning different fonts will draw it in arbitrary different ways.
Therefore, we should only use this character if we're drawing it with the
system font. Otherwise, we can take the old codepath and use U+2022 BULLET.
Tests: fast/text/text-security-disc-bullet-pua.html
platform/mac/fast/text/text-security-disc-bullet-pua-mac.html
platform/ios/fast/text/text-security-disc-bullet-pua-ios-new.html
platform/ios/fast/text/text-security-disc-bullet-pua-ios-old.html
- rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::text const):
- rendering/RenderBlock.cpp:
(WebCore::RenderBlock::constructTextRun):
- rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseForStyle):
- rendering/SimpleLineLayoutCoverage.cpp:
(WebCore::SimpleLineLayout::printReason):
- rendering/SimpleLineLayoutCoverage.h:
- rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::computeTextSecurityDiscShouldUsePUACodePoint const):
- rendering/style/RenderStyle.h:
LayoutTests:
- fast/text/text-security-disc-bullet-pua-expected.html: Added.
- fast/text/text-security-disc-bullet-pua.html: Added.
- platform/ios/fast/text/text-security-disc-bullet-pua-ios-new-expected.html: Added.
- platform/ios/fast/text/text-security-disc-bullet-pua-ios-new.html: Added.
- platform/ios/fast/text/text-security-disc-bullet-pua-ios-old-expected.html: Added.
- platform/ios/fast/text/text-security-disc-bullet-pua-ios-old.html: Added.
- platform/mac/fast/text/text-security-disc-bullet-pua-mac-expected.html: Added.
- platform/mac/fast/text/text-security-disc-bullet-pua-mac.html: Added.
- platform/ios/TestExpectations:
- platform/mac/TestExpectations:
- 10:53 PM Changeset in webkit [260172] by
-
- 7 edits in trunk/Source
REGRESSION (r260102): ASSERTION FAILED: m_arbitrators.contains(proxy) in WebKit::SharedArbitrator::endRoutingArbitrationForArbitrator
https://bugs.webkit.org/show_bug.cgi?id=210589
<rdar://problem/61844208>
Reviewed by Eric Carlson.
Source/WebCore:
Track whether the session successfully entered routing arbitration and only call
leaveRoutingAbritration() if entering was sucessful.
- platform/audio/mac/AudioSessionMac.mm:
(WebCore::AudioSession::setCategory):
Source/WebKit:
Protect against an assertion in the SharedArbitrator in case where a WebProcess is terminated before it can call
endRoutingArbitration().
- UIProcess/Media/AudioSessionRoutingArbitratorProxy.cpp:
(WebKit::AudioSessionRoutingArbitratorProxy::processDidTerminate):
- UIProcess/Media/AudioSessionRoutingArbitratorProxy.h:
- UIProcess/Media/cocoa/AudioSessionRoutingArbitratorProxyCocoa.mm:
(WebKit::SharedArbitrator::isInRoutingArbitrationForArbitrator):
(WebKit::SharedArbitrator::beginRoutingArbitrationForArbitrator):
(WebKit::SharedArbitrator::endRoutingArbitrationForArbitrator):
(WebKit::AudioSessionRoutingArbitratorProxy::processDidTerminate):
- UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
- 10:22 PM Changeset in webkit [260171] by
-
- 7 edits7 adds in trunk
[Async overflow scroll] background-attachment:fixed needs to disable async overflow scrolling
https://bugs.webkit.org/show_bug.cgi?id=210581
Reviewed by Zalan Bujtas.
Source/WebCore:
Start setting synchronousScrollingReasons on overflow scrolling nodes if the scrolling would move content
that has background-attachment:fixed (we can't use async scrolling there, because such content needs painting
on each scroll).
When style changes, we call FrameView::{add|remove}SlowRepaintObject(). That sets the "needsScrollingTreeUpdate"
compositing bit on the enclosing RenderLayer (note, any RenderLayer, not necessarily a scrolling one).
Setting that bit will ensure that RenderLayerCompositor does an "update backing and hierarchy" traversal,
and during this traversal, if we see a layer with the bit set, scrollingTreeState.needSynchronousScrollingReasonsUpdate
becomes true. At the end of the traversal this is used as a signal to call updateSynchronousScrollingNodes().
updateSynchronousScrollingNodes() needs to clear synchronousScrollingReasons on nodes that no longer need
to slow-scroll, and set it on those that do. To achieve this we use the set of slow-repaint renders from
FrameView, and the set of layers with scrolling nodes from RenderLayerCompositor, starting with the set of
all nodes, and pruning those known to be slow. synchronousScrollingReasons are cleared on the remainder.
Tests: scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-dynamic.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-on-overflow.html
- page/FrameView.cpp:
(WebCore::FrameView::addSlowRepaintObject):
(WebCore::FrameView::removeSlowRepaintObject):
- page/FrameView.h:
- page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::setSynchronousScrollingReasons):
- rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateCompositingLayers):
(WebCore::RenderLayerCompositor::updateBackingAndHierarchy):
(WebCore::RenderLayerCompositor::updateSynchronousScrollingNodes):
- rendering/RenderLayerCompositor.h:
LayoutTests:
- scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-dynamic-expected.txt: Added.
- scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-dynamic.html: Added.
- scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-expected.txt: Added.
- scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow.html: Added.
- scrollingcoordinator/mac/fixed-backgrounds/fixed-background-on-overflow-expected.txt: Added.
- scrollingcoordinator/mac/fixed-backgrounds/fixed-background-on-overflow.html: Added.
- 9:34 PM Changeset in webkit [260170] by
-
- 8 edits in trunk
REGRESSION (r258337): Crash when right clicking on link that uses the system UI font with optimizeLegibility on Mojave
https://bugs.webkit.org/show_bug.cgi?id=210575
<rdar://problem/61646717>
Reviewed by Darin Adler.
Source/WebKit:
- Shared/Cocoa/ArgumentCodersCocoa.mm:
(-[WKSecureCodingFontAttributeNormalizer archiver:willEncodeObject:]):
(IPC::encodeSecureCodingInternal):
The workaround introduced in r250640 and r251086 for archiving NSFonts
with optical sizing attributes is still incomplete, which was recently
revealed by making decoding failures more apparent (in r258337).
Specifically, the workaround was not applied to fonts encoded inside
NSAttributedStrings, which are encoded using a keyed archiver... only
to fonts encoded directly with CoreIPC.
Use a NSKeyedArchiver delegate to apply our fix-up to the optical sizing
attribute when any NSFont is being encoded, and only on platforms
that still exhibit the bug.
- Shared/Cocoa/CoreTextHelpers.h:
- Shared/Cocoa/CoreTextHelpers.mm:
(WebKit::fontWithAttributes):
(WebKit::fontDescriptorWithFontAttributes): Deleted.
- UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::updateFontManagerIfNeeded):
- UIProcess/mac/WebPopupMenuProxyMac.mm:
(WebKit::WebPopupMenuProxyMac::showPopupMenu):
Refactor fontDescriptorWithFontAttributes to just return a font since that's what all callers actually want.
Tools:
- TestWebKitAPI/Tests/WebKitCocoa/WKWebViewGetContents.mm:
(TEST):
Add an API test ensuring that we can encode and decode a NSAttributedString
that includes a system-ui font with optimizeLegibility on.
- 8:38 PM Changeset in webkit [260169] by
-
- 21 edits4 adds in trunk
Add SPI to configure WebsiteDataStores with a URL for standalone web applications and use it to disable first-party website data removal in ITP
https://bugs.webkit.org/show_bug.cgi?id=209634
<rdar://problem/60943970>
Reviewed by Alex Christensen.
Source/WebKit:
This change adds a new property to _WKWebsiteDataStoreConfiguration.h called
standaloneApplicationURL with which the hosting application can inform the
website data store that it's running as a standalone web application.
This change also forwards an existing standaloneApplicationURL as a
WebCore::RegistrableDomain into ITP so that explicit exemptions can be made
to first parties of standalone web applications. The exemptions made here
all for all of ITP's website data removal. This part of the change is
covered by the new layout tests.
Tests: http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database.html
http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion.html
- NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
- NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
(WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor):
- NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
(WebKit::ResourceLoadStatisticsStore::setStandaloneApplicationDomain):
(WebKit::ResourceLoadStatisticsStore::standaloneApplicationDomain const):
- NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::setStandaloneApplicationDomain):
- NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
- NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::NetworkSession):
(WebKit::NetworkSession::forwardResourceLoadStatisticsSettings):
- NetworkProcess/NetworkSession.h:
- Shared/ResourceLoadStatisticsParameters.h:
(WebKit::ResourceLoadStatisticsParameters::encode const):
(WebKit::ResourceLoadStatisticsParameters::decode):
- UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
- UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(-[_WKWebsiteDataStoreConfiguration standaloneApplicationURL]):
(-[_WKWebsiteDataStoreConfiguration setStandaloneApplication:]):
- UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureNetworkProcess):
- UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::platformSetNetworkParameters):
- UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
(WebKit::WebsiteDataStoreConfiguration::copy const):
- UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
(WebKit::WebsiteDataStoreConfiguration::standaloneApplicationURL const):
(WebKit::WebsiteDataStoreConfiguration::setStandaloneApplicationURL):
Tools:
Added a new test option called standaloneWebApplicationURL so that layout tests can
configure the website data store accordingly. Picking it up and using it requires
creating a new website data store with a configuration that has the standalone web
application URL.
- WebKitTestRunner/TestController.cpp:
(WTR::TestController::configureWebsiteDataStoreTemporaryDirectories):
(WTR::TestController::defaultWebsiteDataStore):
(WTR::parseStringTestHeaderValueAsURL):
(WTR::updateTestOptionsFromTestHeader):
- WebKitTestRunner/TestController.h:
- WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::hasSameInitializationOptions const):
- WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::platformCreateWebView):
LayoutTests:
- http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database-expected.txt: Added.
- http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database.html: Added.
- http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-expected.txt: Added.
- http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion.html: Added.
- 7:19 PM Changeset in webkit [260168] by
-
- 6 edits2 adds in trunk/Source/WebCore
Add logging to core accessibility.
https://bugs.webkit.org/show_bug.cgi?id=210564
Reviewed by Chris Fleizach.
Added AXLogger class and AXTRACE macro. Used them in AXIsolatedTree.
- Headers.cmake:
- Sources.txt:
- WebCore.xcodeproj/project.pbxproj:
- accessibility/AXLogger.cpp: Added.
(WebCore::AXLogger::AXLogger):
(WebCore::AXLogger::~AXLogger):
- accessibility/AXLogger.h: Added.
- accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::AXIsolatedTree):
(WebCore::AXIsolatedTree::~AXIsolatedTree):
(WebCore::AXIsolatedTree::create):
(WebCore::AXIsolatedTree::nodeInTreeForID):
(WebCore::AXIsolatedTree::treeForID):
(WebCore::AXIsolatedTree::createTreeForPageID):
(WebCore::AXIsolatedTree::removeTreeForPageID):
(WebCore::AXIsolatedTree::treeForPageID):
(WebCore::AXIsolatedTree::nodeForID const):
(WebCore::AXIsolatedTree::objectsForIDs const):
(WebCore::AXIsolatedTree::generateSubtree):
(WebCore::AXIsolatedTree::createSubtree):
(WebCore::AXIsolatedTree::updateNode):
(WebCore::AXIsolatedTree::updateSubtree):
(WebCore::AXIsolatedTree::updateChildren):
(WebCore::AXIsolatedTree::focusedUIElement):
(WebCore::AXIsolatedTree::rootNode):
(WebCore::AXIsolatedTree::setRootNode):
(WebCore::AXIsolatedTree::setFocusedNode):
(WebCore::AXIsolatedTree::setFocusedNodeID):
(WebCore::AXIsolatedTree::removeNode):
(WebCore::AXIsolatedTree::removeSubtree):
(WebCore::AXIsolatedTree::appendNodeChanges):
(WebCore::AXIsolatedTree::applyPendingChanges):
- platform/Logging.h:
- 7:18 PM Changeset in webkit [260167] by
-
- 6 edits in trunk
[IPC Hardening] MachMessage::messageSize() should use checked arithmetic
https://bugs.webkit.org/show_bug.cgi?id=210567
<rdar://problem/61734355>
Source/WebKit:
Reviewed by Geoffrey Garen.
Replace call to round_msg() call with a call to our new safeRoundMsg() which does
the same alignment up but using checked arithmetic to protect against overflows.
- Platform/IPC/cocoa/MachMessage.cpp:
(IPC::safeRoundMsg):
(IPC::MachMessage::messageSize):
Source/WTF:
Reviewed by Geoffrey Garen.
Add operator / to CheckedArithmetic for convenience.
- wtf/CheckedArithmetic.h:
(WTF::safeDivide):
(WTF::Checked::operator/=):
(WTF::operator/):
Tools:
Reviewed by Geoff Garen.
Add API test coverage for / operator in Checked.
- TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp:
(TestWebKitAPI::TEST):
- 6:45 PM Changeset in webkit [260166] by
-
- 3 edits in trunk/Source/JavaScriptCore
Disable Store-load pair auto-vectorization for JSC
https://bugs.webkit.org/show_bug.cgi?id=210574
Reviewed by Geoffrey Garen.
slp-vectorization appears to make our slow path code significantly
slower. That's because when we materialize our constant bytecode
structs into C++ we load all the fields at the same time then
widen them to the struct's member C++ size. Since we have 3
different possible sizes Clang generates a total mess of
code. Disabling this does not appear to be a regression on any
platform I tested and improves the performance of slow path code
significantly in micro benchmarks.
- CMakeLists.txt:
- Configurations/JavaScriptCore.xcconfig:
- 6:40 PM Changeset in webkit [260165] by
-
- 5 edits in trunk/Source
Flaky Test: fetch/fetch-worker-crash.html
https://bugs.webkit.org/show_bug.cgi?id=187257
<rdar://problem/48527526>
Reviewed by Yusuke Suzuki.
Source/JavaScriptCore:
The crash is coming from setExceptionPorts which is inlined in WTF::registerThreadForMachExceptionHandling.
From the error message we know that the problem is an "invalid port right".
http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/thread_set_exception_ports.html tells us that the "port right" is the third parameter to thread_set_exception_ports, which is exceptionPort in our case.
exceptionPort is a global variable defined at the top of Signals.cpp:
static mach_port_t exceptionPort;
It is set in exactly one place:
kern_return_t kr = mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &exceptionPort);
in a std::call_once, in startMachExceptionHandlerThread().
Note that startMachExceptionHandlerThread() is called from the main thread just before the point where we are stuck.. and there is no synchronization to make sure it completed and its effect is visible to the worker thread before it uses exceptionPort.
So I think the crash is due to this race between allocating exceptionPort and using it, resulting in an invalid exceptionPort being sometimes passed to the kernel.
So this patch is a simple speculative fix, by running startMachExceptionHandlerThread() in initializeThreading(), before JSLock()::lock() can be run.
- runtime/InitializeThreading.cpp:
(JSC::initializeThreading):
Source/WTF:
Make startMachExceptionHandlerThread visible so that we can make sure it is called whenever initializing JSC.
- wtf/threads/Signals.cpp:
(WTF::startMachExceptionHandlerThread):
- wtf/threads/Signals.h:
- 5:31 PM Changeset in webkit [260164] by
-
- 2 edits in branches/safari-610.1.10-branch/Source/WebKit
Cherry-pick r260133. rdar://problem/61856640
REGRESSION (r259610): WebGL does not work at all on iOS (was: Google Maps tiles turn black after initial load)
<rdar://problem/61794480>
Unreviewed, partial revert of r259610 because it broke Google Maps.
Stop using RunningBoard for the "Foreground" assertion because it fails to
give the target GPU access.
- UIProcess/ios/ProcessAssertionIOS.mm: (WebKit::runningBoardNameForAssertionType):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@260133 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 5:07 PM Changeset in webkit [260163] by
-
- 6 edits in trunk/Source/WebCore
Lay the groundwork for SynchronousScrollingReason on overflow nodes
https://bugs.webkit.org/show_bug.cgi?id=210565
Reviewed by Tim Horton.
Make setSynchronousScrollingReasons() public on ScrollingCoordinator because we're going
to be calling it for overflow scrolling nodes.
Call ScrollingCoordinator::slowRepaintObjectsDidChange() not just when we go between
none some some slow-repaint objects, but whenever the set changes. slowRepaintObjectsDidChange()
is lightweight.
Minor cleanup in FrameView to avoid testing Page* nullness every time.
- page/FrameView.cpp:
(WebCore::FrameView::prepareForDetach):
(WebCore::FrameView::isScrollSnapInProgress const):
(WebCore::FrameView::usesAsyncScrolling const):
(WebCore::FrameView::addSlowRepaintObject):
(WebCore::FrameView::removeSlowRepaintObject):
(WebCore::FrameView::addViewportConstrainedObject):
(WebCore::FrameView::removeViewportConstrainedObject):
(WebCore::FrameView::scrollingCoordinator const):
(WebCore::FrameView::shouldUpdateCompositingLayersAfterScrolling const):
(WebCore::FrameView::isRubberBandInProgress const):
(WebCore::FrameView::requestScrollPositionUpdate):
(WebCore::FrameView::layoutOrVisualViewportChanged):
(WebCore::FrameView::performPostLayoutTasks):
(WebCore::FrameView::scrollableAreaSetChanged):
(WebCore::FrameView::wheelEvent):
(WebCore::FrameView::setScrollPinningBehavior):
- page/FrameView.h:
- page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::slowRepaintObjectsDidChange):
(WebCore::ScrollingCoordinator::synchronousScrollingReasonsForFrameView const):
(WebCore::ScrollingCoordinator::updateSynchronousScrollingReasons):
(WebCore::ScrollingCoordinator::shouldUpdateScrollLayerPositionSynchronously const):
(WebCore::ScrollingCoordinator::synchronousScrollingReasonsAsText const):
(WebCore::ScrollingCoordinator::frameViewHasSlowRepaintObjectsDidChange): Deleted.
(WebCore::ScrollingCoordinator::synchronousScrollingReasons const): Deleted.
- page/scrolling/ScrollingCoordinator.h:
(WebCore::ScrollingCoordinator::setSynchronousScrollingReasons):
- rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateBacking):
- 5:04 PM Changeset in webkit [260162] by
-
- 2 edits in trunk/Source/JavaScriptCore
Unreviewed build fix for r260161.
- runtime/IntlObject.cpp:
(JSC::canonicalLangTag):
- 4:33 PM Changeset in webkit [260161] by
-
- 2 edits in trunk/Source/JavaScriptCore
Unreviewed, address Darin's feedback on r260151.
- runtime/IntlObject.cpp:
(JSC::canonicalLangTag):
- 4:32 PM Changeset in webkit [260160] by
-
- 3 edits in trunk/Source/WebKit
[IPC Hardening] MachMessage::create() should use checked arithmetic
<https://webkit.org/b/210572>
<rdar://problem/61729947>
Reviewed by Chris Dumez.
- Platform/IPC/cocoa/ConnectionCocoa.mm:
(IPC::Connection::sendOutgoingMessage):
- Add nullptr check since MachMessage::create() can return an empty std::unique_ptr<> now.
- Platform/IPC/cocoa/MachMessage.cpp:
(IPC::MachMessage::create):
- Use CheckedSize to compute the buffer size.
- 4:26 PM Changeset in webkit [260159] by
-
- 2 edits in trunk/Source/WebKit
Unreviewed PLT fix after r260081.
- WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
(WebKit::InjectedBundle::decodeBundleParameters):
- 4:17 PM Changeset in webkit [260158] by
-
- 2 edits in trunk/Source/WebKit
DidFirstLayerFlush IPC can be head-of-line-blocked and delay first paint by 200+ ms on process swap
https://bugs.webkit.org/show_bug.cgi?id=210571
Reviewed by Geoffrey Garen.
When we process swap, the layer swap/unhiding for the new hosted layer is gated by the
DidFirstLayerFlush IPC. But actually sending this IPC can be head-of-line blocked for an
arbitrarily long time because we append it to the queue of messages for the main run loop to
process. In some cases, e.g. for the NYT PLT content, this blocks first paint by 200 ms
while the WebProcess main thread is busy doing other things (like executing deferred
scripts).
To fix this, use a CATransaction commit handler to send the IPC right after we commit.
- WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::sendDidFirstLayerFlushIfNeeded):
- 4:12 PM Changeset in webkit [260157] by
-
- 2 edits in branches/safari-609-branch/Source/WebKit
Cherry-pick r260101. rdar://problem/61853298
createArchiveList() in WebCoreArgumentCodersMac.mm should do more validity checks
<https://webkit.org/b/210448>
<rdar://problem/61677029>
Reviewed by Darin Adler.
- Shared/mac/WebCoreArgumentCodersMac.mm: (IPC::createArchiveList): Add more validity checks.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@260101 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 4:09 PM Changeset in webkit [260156] by
-
- 3 edits in trunk/Source/WebKit
Unreviewed, fix the watchOS and tvOS builds after r260146
Move some code for controlling the presentation of context menus on iOS behind USE(UICONTEXTMENU).
- UIProcess/ios/WKActionSheetAssistant.h:
- UIProcess/ios/WKContentViewInteraction.mm:
- 3:16 PM Changeset in webkit [260155] by
-
- 2 edits8 adds in trunk/LayoutTests
[GTK] Gardening, emit baselines after r260139
https://bugs.webkit.org/show_bug.cgi?id=210573
Unreviewed gardening.
- platform/gtk/imported/w3c/web-platform-tests/css/css-animations/Element-getAnimations.tentative-expected.txt:
- platform/gtk/imported/w3c/web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt: Added.
- platform/gtk/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/commitStyles-expected.txt: Added.
- platform/gtk/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events-expected.txt: Added.
- platform/gtk/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt: Added.
- 3:01 PM Changeset in webkit [260154] by
-
- 2 edits in trunk/LayoutTests
Infinite loop in InsertListCommand::doApply()
https://bugs.webkit.org/show_bug.cgi?id=210354
<rdar://problem/61427778>
Reviewed by Geoffrey Garen.
Update the regression test for this hang issue.
- editing/inserting/insert-list-end-of-table-expected.txt: Added.
- editing/inserting/insert-list-end-of-table.html: Added.
- 2:57 PM Changeset in webkit [260153] by
-
- 3 edits2 adds in trunk
Source/WebCore:
ASSERTION FAILED: !selectionToDelete.isNone() in TypingCommand::forwardDeleteKeyPressed
when deleting a UserSelect::None element.
https://bugs.webkit.org/show_bug.cgi?id=210530
<rdar://problem/58591480>
Reviewed by Geoffrey Garen.
Quit forwardDeleteKeyPressed() if FrameSelection::modify() returns empty selection.
Test: editing/deleting/forward-delete-UserSelect-None-element.html
- editing/TypingCommand.cpp:
(WebCore::TypingCommand::forwardDeleteKeyPressed):
LayoutTests:
ASSERTION FAILED: !selectionToDelete.isNone() in TypingCommand::forwardDeleteKeyPressed
when deleting a UserSelect::None element.
https://bugs.webkit.org/show_bug.cgi?id=210530
<rdar://problem/58591480>
Reviewed by Geoffrey Garen.
Added a regression test for the crash.
- editing/deleting/forward-delete-UserSelect-None-element-expected.txt: Added.
- editing/deleting/forward-delete-UserSelect-None-element.html: Added.
- 2:23 PM Changeset in webkit [260152] by
-
- 1 copy in tags/Safari-610.1.9.3
Tag Safari-610.1.9.3.
- 2:18 PM Changeset in webkit [260151] by
-
- 9 edits in trunk
[ECMA-402] Extension values should default to true, canonicalize without "-true"
https://bugs.webkit.org/show_bug.cgi?id=210457
Reviewed by Yusuke Suzuki.
JSTests:
- stress/intl-collator.js:
- stress/intl-datetimeformat.js:
- stress/intl-numberformat.js:
- stress/intl-object.js:
- stress/intl-pluralrules.js:
Fix tests.
- test262/expectations.yaml:
Mark two test cases as passing.
Source/JavaScriptCore:
This patch implements two simple intertwining updates to ECMA-402:
- Valueless extension keys should not be dropped when resolving locale https://tc39.es/ecma402/#sec-resolvelocale (9.h.4.b)
- Following UTS 35, "-true" should not appear in canonicalized locale ids https://tc39.es/ecma402/#sec-canonicalizeunicodelocaleid https://unicode.org/reports/tr35/#Canonical_Unicode_Locale_Identifiers ('Any type or tfield value "true" is removed.')
- runtime/IntlObject.cpp:
(JSC::canonicalLangTag):
(JSC::resolveLocale):
- 2:07 PM Changeset in webkit [260150] by
-
- 10 edits in trunk/Source
Video elements don't return to the correct position when exiting fullscreen
https://bugs.webkit.org/show_bug.cgi?id=210529
Reviewed by Jer Noble.
Source/WebCore:
Add WEBCORE_EXPORT to the function setNeedsDOMWindowResizeEvent().
- dom/Document.h:
Source/WebKit:
Some web pages use the "resize" event handler to calculate the element size after
they exit fullscreen, and the calculation is based on the container element size which
might be affected by the fullscreen mode.
We need to call WebPageProxy::setNeedsDOMWindowResizeEvent() to fire the "resize" event
in the repaint callback after the exiting fullscreen process is completed and the
possible layout change due to exiting fullscreen is done. Otherwise the size calculation
might be wrong.
- UIProcess/WebPageProxy.cpp:
- UIProcess/WebPageProxy.h:
- UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
(-[WKFullScreenWindowController _completedExitFullScreen]):
- UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]):
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setNeedsDOMWindowResizeEvent):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- 1:42 PM Changeset in webkit [260149] by
-
- 8 edits in branches/safari-610.1.9-branch/Source
Versioning.
- 1:38 PM Changeset in webkit [260148] by
-
- 2 edits in trunk/JSTests
stress/delete-property-dfg-inline.js.ftl-no-cjit-small-pool consistently timing out on debug JSC bot
https://bugs.webkit.org/show_bug.cgi?id=210513
Patch by Justin Michaud <justin@justinmichaud.com> on 2020-04-15
Reviewed by Saam Barati.
- stress/delete-property-dfg-inline.js:
- 1:22 PM Changeset in webkit [260147] by
-
- 7 edits2 adds in trunk
[iPadOS] Some pages indefinitely zoom in and out due to idempotent text autosizing
https://bugs.webkit.org/show_bug.cgi?id=210551
<rdar://problem/56820674>
Reviewed by Tim Horton.
Source/WebCore:
Rename m_initialScale and initialScale() on Page to m_initialScaleIgnoringContentSize and
initialScaleIgnoringContentSize(), respectively. See WebKit/ChangeLog for more details.
Test: fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-reaches-stable-state.html
- page/Page.cpp:
(WebCore::Page::setInitialScaleIgnoringContentSize):
(WebCore::Page::setInitialScale): Deleted.
- page/Page.h:
(WebCore::Page::initialScaleIgnoringContentSize const):
(WebCore::Page::initialScale const): Deleted.
- style/StyleAdjuster.cpp:
(WebCore::Style::Adjuster::adjustmentForTextAutosizing):
Source/WebKit:
On a non-responsive web page with one or lines of non-wrapping text of a specific length (just under 1920px),
it's possible for the combination of idempotent text autosizing heuristics and viewport shrink-to-fit to cause
the single line of text to grow and shrink in size indefinitely, and additionally cause the initial scale to
thrash between multiple values indefinitely. This manifests in the entire page repeatedly zooming in and out
immediately after page load.
Consider the following scenario:
(1) A viewport configuration change (e.g. due to parsing the viewport meta tag) schedules the timer to reset
idempotent text autosizing. Let's suppose the page has a really long line of non-wrapping 12px text that is
below 1920px wide.
(2) The timer fires, invalidating styles and recomputing text autosizing given the current initial scale. The
current initial scale is below 1, since ViewportConfiguration will attempt to shrink to fit the page to
avoid horizontal scrolling. This causes text autosizing to boost the long line of text to a larger value
(let's say 17px).
(3) The next time we perform style recomputation and layout, we discover that the content width of the page is
now larger than 1920px, which is the maximum width which we'll attempt to shrink to fit; when computing
initial scale, we give up trying to shrink down to avoid making the inital scale too small, and instead just
keep it at 1.
(4) This change in viewport configuration then schedules another idempotent text autosizing reset. When this
timer fires, it sees that the initial scale is now 1, which means that the text is no longer boosted, so we
make the single line of text small again (12px).
(5) After the next style recomputation and layout, this causes the content width of the page to dip below the
1920px threshold, causing the initial scale to dip below 1 again. As detailed above, this schedules another
idempotent text autosizing update, which now boosts font size once again, and the cycle continues.
To fix this, instead of consulting the initial scale (
ViewportConfiguration::initialScale()) when computing
the boosted font size for idempotent text autosizing, we can instead ask for the initial scale ignoring content
size (ViewportConfiguration::initialScaleIgnoringContentSize()). This prevents changes in content size due to
idempotent autosizing from affecting the idempotent autosizing heuristic (through the different initial scale),
and ensures that this method of text autosizing actually remains idempotent.
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::resetIdempotentTextAutosizingIfNeeded):
(WebKit::WebPage::viewportConfigurationChanged):
LayoutTests:
Add a layout test to verify that on a page with a single line of text, if idempotent text autosizing is enabled,
the text size is boosted by idempotent autosizing, but we don't end up getting into a state where the computed
font size flickers between multiple values.
- fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-reaches-stable-state-expected.txt: Added.
- fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-reaches-stable-state.html: Added.
- 1:20 PM Changeset in webkit [260146] by
-
- 5 edits in trunk/Source/WebKit
Data Detected Actions sheets are presented from odd locations.
https://bugs.webkit.org/show_bug.cgi?id=210531
<rdar://problem/60941346>
Reviewed by Wenson Hsieh.
Use the existing context menu targeted preview code to ensure that the
data detected menus are presented in a good location.
- UIProcess/ios/WKActionSheetAssistant.h:
- UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]):
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView contextMenuInteraction:willEndForConfiguration:animator:]):
- 12:51 PM Changeset in webkit [260145] by
-
- 7 edits in trunk
[ECMA-402] Fix Intl.DateTimeFormat patterns and fields in WebKit
https://bugs.webkit.org/show_bug.cgi?id=209783
Reviewed by Keith Miller.
JSTests:
- stress/date-toLocaleString.js:
- stress/intl-datetimeformat.js:
Add tests and fix some existing ones.
- test262/config.yaml:
- test262/expectations.yaml:
Mark eight test cases passing...but skip half of them due to outdated CLDR data in macOS system ICU.
Source/JavaScriptCore:
This patch implements two intertwining normative changes to Intl.DateTimeFormat:
- Calendar setting must be taken into account when choosing a date-time pattern https://github.com/tc39/ecma402/pull/349
- formatToParts must recognize relatedYear and yearName parts https://github.com/tc39/ecma402/pull/349
- runtime/IntlDateTimeFormat.cpp:
(JSC::IntlDateTimeFormat::initializeDateTimeFormat):
(JSC::IntlDateTimeFormat::partTypeString):
- 12:42 PM Changeset in webkit [260144] by
-
- 2 edits in trunk/LayoutTests
[GTK] Gardening of flaky failures
https://bugs.webkit.org/show_bug.cgi?id=210563
Unreviewed gardening.
- platform/gtk/TestExpectations:
- 12:15 PM Changeset in webkit [260143] by
-
- 1 copy in tags/Safari-610.1.9.2
Tag Safari-610.1.9.2.
- 11:53 AM Changeset in webkit [260142] by
-
- 2 edits in trunk/Source/WebCore
REGRESSION (r258977): Crash under Document::visibilityStateChanged
https://bugs.webkit.org/show_bug.cgi?id=210555
Reviewed by Youenn Fablet.
Re-introduce null check of page in Document::visibilityStateChanged() which got inadvertently
dropped in r258977.
- dom/Document.cpp:
(WebCore::Document::visibilityStateChanged):
- 11:32 AM Changeset in webkit [260141] by
-
- 2 edits in trunk/LayoutTests
Remove expectations for imported/blink/storage/indexeddb/blob-basics-metadata.html
https://bugs.webkit.org/show_bug.cgi?id=199117
Unreviewed test gardening.
- platform/mac-wk1/TestExpectations:
- 11:21 AM Changeset in webkit [260140] by
-
- 2 edits in trunk/Source/WebCore
REGRESSION( r260114): [ Mac and iOS ] imported/w3c/web-platform-tests/web-animations/timing-model/timelines/document-timelines.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=210549
<rdar://problem/61828495>
Unreviewed.
Partial revert of r260114. See webkit.org/b/210559 for details.
- dom/ScriptedAnimationController.cpp:
(WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks):
- 10:39 AM Changeset in webkit [260139] by
-
- 22 edits in trunk
[Web Animations] Add support for
pseudoElementonKeyframeEffectandKeyframeEffectOptions
https://bugs.webkit.org/show_bug.cgi?id=207290
<rdar://problem/59199003>
Reviewed by Antti Koivisto.
LayoutTests/imported/w3c:
Mark 23 additional WPT tests as PASS.
- web-platform-tests/css/css-animations/Document-getAnimations.tentative-expected.txt:
- web-platform-tests/css/css-animations/Element-getAnimations.tentative-expected.txt:
- web-platform-tests/css/css-transitions/Document-getAnimations.tentative-expected.txt:
- web-platform-tests/web-animations/idlharness.window-expected.txt:
- web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt:
- web-platform-tests/web-animations/interfaces/Animation/commitStyles-expected.txt:
- web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events-expected.txt:
- web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt:
Source/WebCore:
We add the required IDL bindings such that JS-originated Web Animations can target pseudo-elements, either via the KeyframeEffect.pseudoElement
property, or via the KeyframeEffectOptions.pseudoElement property, which is set on the object passed to the KeyframeEffect constrcutor and
Element.animate().
This means that a PseudoElement can be targeted by an animation even if it's not been created through style resolution by virtue of a ::before
or ::after selector and a "content" style rule. This means that when either the "target" or "pseudoElement" property of KeyframeEffect is set,
we ensure a PseudoElement is created and set on the host element if required. And additionally, we ensure that during style resolution, animations
are applied to such pseudo-elements with a new PseudoElement::isTargetedByKeyframeEffectRequiringPseudoElement() method that indicates that a
JS-originated KeyframeEffect targets this pseudo-element.
- animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::create): Handle the new KeyframeEffectOptions.pseudoElement property in the KeyframeEffect constructor.
(WebCore::KeyframeEffect::targetsPseudoElement const): Indicates whether this effect targets a pseudo-element and not a regular
element or a null target.
(WebCore::KeyframeEffect::targetElementOrPseudoElement const): Use the new targetsPseudoElement() method to determine whether a
pseudo-element is targeted. We also remove an assertion that only made sense when m_pseudoId could only be set via a CSS-originated
animation and another one when the only possible m_pseudoId values were PseudoId::Before and PseudoId::After.
(WebCore::KeyframeEffect::setTarget): Call the new didChangeTargetElementOrPseudoElement() method if the provided value differs
from the stored value for m_target.
(WebCore::KeyframeEffect::pseudoElement const): Return the matching normalized string with a::prefix for m_pseudoId if the target
is a pseudo-element. Note that PseudoElement::pseudoElementNameForEvents() will only return a string for "::before" and "::after" since
we only know how to animate these pseudo-elements.
(WebCore::KeyframeEffect::setPseudoElement): Determine a matching PseudoId, if any, for the provided string, and call the new
didChangeTargetElementOrPseudoElement() method if the provided value differs from the stored value for m_pseudoId.
(WebCore::KeyframeEffect::didChangeTargetElementOrPseudoElement): New method called when either m_target or m_pseudoId is changed
such that we can ensure the required PseudoElement is created if the animation targets a pseudo-element. Then we run the same logic
that we used to in KeyframeEffect::setTarget().
(WebCore::KeyframeEffect::requiresPseudoElement const): Indicates whether a PseudoElement must remain created for this KeyframeEffect,
which is only necessary for JS-originated effects targeting a pseudo-element.
- animation/KeyframeEffect.h:
- animation/KeyframeEffect.idl:
- animation/KeyframeEffectOptions.h:
- animation/KeyframeEffectOptions.idl:
- animation/KeyframeEffectStack.cpp:
(WebCore::KeyframeEffectStack::requiresPseudoElement const): Indicates whether one or more JS-originated keyframe effects in the stack target
the PseudoElement owning this stack.
- animation/KeyframeEffectStack.h:
- animation/WebAnimation.cpp:
(WebCore::WebAnimation::commitStyles): Use KeyframeEffect::targetsPseudoElement() to determine whether the animation's effect's target is a
pseudo-element, in which case we need to throw a NoModificationAllowedError exception.
- dom/PseudoElement.cpp:
(WebCore::PseudoElement::rendererIsNeeded): Return true also when one or more JS-originated keyframe effects in the stack target this pseudo-element.
(WebCore::PseudoElement::isTargetedByKeyframeEffectRequiringPseudoElement): Return true when one or more JS-originated keyframe effects in the stack
target this pseudo-element.
- dom/PseudoElement.h:
- rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:
(WebCore::createContentRenderers): Remove the assertion that the "content" property was set since it's valid for this function to now be called
due to JS-originated keyframe effects targeting the given pseudo-element. Instead we add an assertion that there are such keyframe effects in
case no "content" property was set.
(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement): Only remove pseudo-elements if there are no JS-originated keyframe effects
targeting the specified pseudo-element.
- style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::resolvePseudoStyle): Allow animated style resolution for pseudo-elements targeted by JS-originated keyframe effects.
- 10:27 AM Changeset in webkit [260138] by
-
- 2 edits in trunk/LayoutTests
[ macOS ] scrollingcoordinator/mac/latching/horizontal-overflow-back-swipe.html is flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=210351
Unreviewed test gardening.
- platform/mac/TestExpectations:
- 10:22 AM Changeset in webkit [260137] by
-
- 3 edits in trunk/Source/WebKit
[iOS] Potential crash under WebProcess::platformInitializeWebProcess
https://bugs.webkit.org/show_bug.cgi?id=210547
Reviewed by Brent Fulgham.
If the UI process fails to issue an extension to the runningboard service, the WebContent process will crash
while trying to consume this extension.
No new tests, since the test runners are unsandboxed, so issuing the extension will always succeed.
- UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
- WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
- 9:39 AM Changeset in webkit [260136] by
-
- 6 edits in branches/safari-610.1.9-branch
Cherry-pick r259753. rdar://problem/61360674
[macOS] Crash under WebKit::SandboxExtension::consume
https://bugs.webkit.org/show_bug.cgi?id=210188
Reviewed by Geoffrey Garen.
Source/WebKit:
When issuing a mach lookup extension to the database mapping service in the UI process fails, the WebContent
process will crash when trying to consume the extension.
No new tests, since I am not able to reproduce the issue.
- UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeWebProcess):
- WebProcess/com.apple.WebProcess.sb.in:
LayoutTests:
- fast/sandbox/mac/sandbox-mach-lookup-expected.txt:
- fast/sandbox/mac/sandbox-mach-lookup.html:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259753 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 9:39 AM Changeset in webkit [260135] by
-
- 8 edits in branches/safari-610.1.9-branch/Source
Versioning.
- 9:35 AM Changeset in webkit [260134] by
-
- 5 edits in trunk
[Cocoa] Remove generic parameter serialization fallback
https://bugs.webkit.org/show_bug.cgi?id=210509
<rdar://problem/55522650>
Reviewed by Geoffrey Garen.
Source/WebKit:
Tested by BundleFormDelegate parameter serialization tests...
- UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setInputDelegate:]):
- UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::elementDidFocus):
Tools:
- TestWebKitAPI/Tests/WebKitCocoa/BundleFormDelegate.mm:
(WKWebProcessPlugInWithoutRegisteredCustomClass): Update to reflect
fact that we block serialization of unregistered classes.
- 9:18 AM Changeset in webkit [260133] by
-
- 2 edits in trunk/Source/WebKit
REGRESSION (r259610): WebGL does not work at all on iOS (was: Google Maps tiles turn black after initial load)
<rdar://problem/61794480>
Unreviewed, partial revert of r259610 because it broke Google Maps.
Stop using RunningBoard for the "Foreground" assertion because it fails to
give the target GPU access.
- UIProcess/ios/ProcessAssertionIOS.mm:
(WebKit::runningBoardNameForAssertionType):
- 9:06 AM Changeset in webkit [260132] by
-
- 11 edits in trunk
[GTK4] Fix use of gtk init functions
https://bugs.webkit.org/show_bug.cgi?id=210550
Reviewed by Adrian Perez de Castro.
Source/WebCore:
Add gtk_init and gtk_init_check receiving parameters to GtkVersioning.
- PlatformGTK.cmake:
- platform/graphics/PlatformDisplay.cpp:
- platform/gtk/GtkVersioning.h:
(gtk_init):
(gtk_init_check):
Source/WebKit:
Include GtkVersioning.h instead of gtk.h
- WebProcess/gtk/WebProcessMainGtk.cpp:
Tools:
Include GtkVersioning.h instead of gtk.h.
- TestWebKitAPI/Tests/WebKitGtk/AccessibilityTestServer.cpp:
- TestWebKitAPI/Tests/WebKitGtk/InspectorTestServer.cpp:
- TestWebKitAPI/gtk/main.cpp:
- WebKitTestRunner/gtk/main.cpp:
- 8:48 AM Changeset in webkit [260131] by
-
- 4 edits20 adds in trunk
import.meta.url: baseURL for a module script should be response URL, not request URL
https://bugs.webkit.org/show_bug.cgi?id=205294
Reviewed by Youenn Fablet.
Source/WebCore:
The module should expose response URL as
import.meta.urlinstead of request URL.
If redirection happens, this URL should be redirected one.
- bindings/js/ScriptModuleLoader.cpp:
(WebCore::ScriptModuleLoader::resolve):
(WebCore::ScriptModuleLoader::responseURLFromRequestURL):
(WebCore::ScriptModuleLoader::createImportMetaProperties):
(WebCore::ScriptModuleLoader::notifyFinished):
- bindings/js/ScriptModuleLoader.h:
LayoutTests:
AppleWin networking does not properly propagate fragment if redirect location clears it. This is a known issue[1].
[1]: See
http/tests/navigation/redirect-to-fragment2.html [ Failure ]in platform/win/TestExpectations.
- http/wpt/html/semantics/scripting-1/the-script-element/module/module-meta-url-redirect-expected.txt: Added.
- http/wpt/html/semantics/scripting-1/the-script-element/module/module-meta-url-redirect-with-fragment-expected.txt: Added.
- http/wpt/html/semantics/scripting-1/the-script-element/module/module-meta-url-redirect-with-fragment.html: Added.
- http/wpt/html/semantics/scripting-1/the-script-element/module/module-meta-url-redirect.html: Added.
- http/wpt/html/semantics/scripting-1/the-script-element/module/module-meta-url-with-fragment-expected.txt: Added.
- http/wpt/html/semantics/scripting-1/the-script-element/module/module-meta-url-with-fragment.html: Added.
- http/wpt/html/semantics/scripting-1/the-script-element/module/resources/import-meta-url-expose.js: Added.
- http/wpt/resources/redirect.py: Added.
(main):
- http/wpt/service-workers/module-meta-url-fragment-worker.js: Added.
(async e):
- http/wpt/service-workers/module-meta-url-fragment.https-expected.txt: Added.
- http/wpt/service-workers/module-meta-url-fragment.https.html: Added.
- http/wpt/service-workers/resources/module-meta-url-fragment.html: Added.
- platform/win/http/wpt/html/semantics/scripting-1/the-script-element/module/module-meta-url-redirect-with-fragment-expected.txt: Added.
- 8:46 AM Changeset in webkit [260130] by
-
- 4 edits in trunk/Tools
REGRESSION: [ Mojave+ Debug WK1 ] Layout Test imported/blink/storage/indexeddb/blob-basics-metadata.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=199117
<rdar://problem/52967035>
Reviewed by Alexey Proskuryakov.
- Scripts/run-javascriptcore-tests: Set JSC_useKernTCSM to false.
- Scripts/webkitpy/port/base.py:
(Port.setup_environ_for_server): Forward JSC_useKernTCSM.
- Scripts/webkitpy/port/driver.py:
(Driver._setup_environ_for_driver): Set JSC_useKernTCSM to false.
- 8:32 AM Changeset in webkit [260129] by
-
- 4 edits in trunk/Source
isNullFunctionPointer() can fail for symbols not explicitly marked as weakly linked.
https://bugs.webkit.org/show_bug.cgi?id=210532
Reviewed by Tim Horton.
Source/ThirdParty/libwebrtc:
- Source/webrtc/sdk/WebKit/WebKitUtilities.h:
Source/WebCore:
Symbols whose declarations are explicitly marked as weakly imported are guaranteed to be
NULL when the library containing those symbols is not available at runtime, or when the
symbol itself isn't present in the version of the library which is available at runtime. For
symbols which are not explicitly marked as weakly imported (because, e.g., the framework
itself is weakly imported), this technique can fail. Rather than test the nullity of a
random static C++ class method with isNullFunctionPointer(), explicitly mark as weak_import
a utility method added by the WebKit project, which conveniently is already used from within
LibWebRTCProviderCocoa, and test the nullity of that method instead.
- platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:
(WebCore::LibWebRTCProvider::webRTCAvailable):
- 8:29 AM Changeset in webkit [260128] by
-
- 2 edits in trunk/Source/WebKit
Adopt interface AVAudioRoutingArbiter for Mac
https://bugs.webkit.org/show_bug.cgi?id=210167
Reviewed by Jer Noble.
A follow-up patch to fix a build error.
- UIProcess/Media/cocoa/AudioSessionRoutingArbitratorProxyCocoa.mm:
(WebKit::SharedArbitrator::beginRoutingArbitrationForArbitrator):
- 7:54 AM Changeset in webkit [260127] by
-
- 2 edits in trunk/Source/WebCore
[GTK] Make PlatformScreen::screenDPI() GTK4-ready
https://bugs.webkit.org/show_bug.cgi?id=210543
Reviewed by Adrian Perez de Castro.
No new tests needed.
This method is using deprecated and removed APIs
from GDK. Guard the removed API usage so that it's only
used in GTK3 and update to use the replacement APIs otherwise.
Also, make it to also use the gtk-xft-dpi GtkSettings property.
This method is mostly used in response to a change in this
property, so ignoring its value doesn't seem a good idea.
The following priority is used:
- (GTK3 only) query gdk_screen_get_resolution().
- Use the GtkSettings::gtk-xft-dpi property.
- Calculate the actual DPI from the monitor 0's properties.
- If none of these succeed, use the default DPI, 96.
- platform/gtk/PlatformScreenGtk.cpp:
(WebCore::screenDPI):
- 7:33 AM Changeset in webkit [260126] by
-
- 4 edits1 delete in trunk/Source/WebCore
[GTK] Remove IconGtk
https://bugs.webkit.org/show_bug.cgi?id=210546
Reviewed by Adrian Perez de Castro.
It's currently unused in GTK port since we never show an icon for file uploads.
- SourcesGTK.txt:
- platform/graphics/Icon.cpp:
- platform/graphics/Icon.h:
- platform/graphics/gtk/IconGtk.cpp: Removed.
- 7:25 AM Changeset in webkit [260125] by
-
- 4 edits1 add in trunk/Source
[GTK4] Provide an alternative to gtk_widget_{get,is}_toplevel()
https://bugs.webkit.org/show_bug.cgi?id=210463
Reviewed by Carlos Garcia Campos.
Source/WebCore:
Adapt utility functions to GTK4, and provide replacement implementations for the
gtk_widget_get_tolevel() and gtk_widget_is_toplevel() functions for GTK4 builds.
No new tests needed.
- platform/gtk/GtkUtilities.cpp:
(WebCore::gtkWindowGetOrigin): Added.
(WebCore::convertWidgetPointToScreenPoint): Move code used to find the window position
into a separate function, and use it to avoid the USE(GTK4) conditional here.
(WebCore::widgetIsOnscreenToplevelWindow): Adapt to make it work with GTK4.
- platform/gtk/GtkVersioning.h: Added.
(gtk_widget_is_toplevel): Alternative implementation for GTK4.
(gtk_widget_get_toplevel): Ditto.
(gtk_window_get_position): Ditto.
Source/WebKit:
- UIProcess/API/glib/WebKitUIClient.cpp: Adapt to take into account that GTK4 does not
provide the GtkWidget.configure-event signal.
- 6:50 AM Changeset in webkit [260124] by
-
- 2 edits in trunk/LayoutTests
[GTK] Gardening of flaky failures
https://bugs.webkit.org/show_bug.cgi?id=210545
Unreviewed gardening.
- platform/gtk/TestExpectations:
- 6:08 AM Changeset in webkit [260123] by
-
- 2 edits in trunk/Source/WebCore
[GTK4] Adapt to cursor API changes
https://bugs.webkit.org/show_bug.cgi?id=210453
Reviewed by Carlos Garcia Campos.
No new tests needed.
- platform/gtk/CursorGtk.cpp:
(WebCore::fallbackCursor): Utility function which returns the "default" cursor for GTK4.
(WebCore::createNamedCursor): Adapt to the changes in the gdk_cursor_new_from_name().
(WebCore::createCustomCursor): Create a GdkTexture directly when the given Cairo surface is
in one of the pixel formats supported by gdk_memory_texture_new(), otherwise convert first;
then create a GdkCursor from the GdkTexture.
- 5:28 AM Changeset in webkit [260122] by
-
- 2 edits in trunk
Unreviewed. Do not run gtk-doc when building with GTK4
It's not supported yet.
- Source/PlatformGTK.cmake:
- 2:49 AM Changeset in webkit [260121] by
-
- 2 edits in trunk/LayoutTests
[GTK] Gardening of flaky failures
https://bugs.webkit.org/show_bug.cgi?id=210542
Unreviewed gardening.
- platform/gtk/TestExpectations:
- 1:53 AM Changeset in webkit [260120] by
-
- 3 edits in trunk/Source/WebKit
Unreviewed, reverting r259891.
Causes significant iOS MotionMark regression
Reverted changeset:
"Switch unused IOKit classes from allow-with-report to deny-
with-report"
https://bugs.webkit.org/show_bug.cgi?id=210136
https://trac.webkit.org/changeset/259891
- 12:02 AM Changeset in webkit [260119] by
-
- 14 edits3 adds in trunk
[ESNext] Implement logical assignment operators
https://bugs.webkit.org/show_bug.cgi?id=209716
Reviewed by Ross Kirsling.
JSTests:
- stress/logical-assignment-operator-and.js: Added.
- stress/logical-assignment-operator-nullish.js: Added.
- stress/logical-assignment-operator-or.js: Added.
- test262/config.yaml:
- test262/expectations.yaml:
Right now, test262 expects an early error to be thrown if the lhs is not simple, which does
not match what we do with other read-modify assignment operators. This is likely to change
in the future to match existing behavior (throw aReferenceError) [1].
[1]: <https://github.com/tc39/ecma262/issues/257#issuecomment-502878708>
Source/JavaScriptCore:
Implement the logical assignment operators proposal, which is now Stage 3. It introduces
three new assignment operators which will only store the result of the rhs in the lhs if the
lhs meets the given condition:
??=, for if the lhs is nullish (nullorundefined)||=, for if the lhs is falsy&&=, for if the lhs is truthy
This short circuiting can be beneficial as it can avoid a redundant store when used in the
common JavaScript programming pattern of "defaulting" a parameter.
`js
function foo(x) {
x = x 42; }
`
If
xis a truthy value, it would result in the rhsxbeing stored back into the lhsx.
In some situations, this can have negative unintended side-effects, such as forinnerHTML.
Logical assignment operators, however, are defined such that they only store if the rhs is
to actually be needed/used, skipping the redundant store and simply returning lhs otherwise.
In the case of readonly references, this means that an error is only thrown when the
assignment occurs, meaning that if the lhs already satisfies the condition it will be used
and returned with no error.
- parser/ParserTokens.h:
- parser/Lexer.cpp:
(JSC::Lexer<T>::lexWithoutClearingLineTerminator):
- parser/Parser.cpp:
(JSC::Parser<LexerType>::parseAssignmentExpression):
- parser/ASTBuilder.h:
(JSC::ASTBuilder::makeAssignNode):
- parser/Nodes.h:
- parser/NodeConstructors.h:
(JSC::ShortCircuitReadModifyResolveNode::ShortCircuitReadModifyResolveNode): Added.
(JSC::ShortCircuitReadModifyBracketNode::ShortCircuitReadModifyBracketNode): Added.
(JSC::ShortCircuitReadModifyDotNode::ShortCircuitReadModifyDotNode): Added.
- bytecompiler/NodesCodegen.cpp:
(JSC::emitShortCircuitAssignment): Added.
(JSC::ShortCircuitReadModifyResolveNode::emitBytecode): Added.
(JSC::ShortCircuitReadModifyDotNode::emitBytecode): Added.
(JSC::ShortCircuitReadModifyBracketNode::emitBytecode): Added.
- runtime/OptionsList.h:
Add a
useLogicalAssignmentOperatorssetting for controlling this feature.
Tools:
- Scripts/run-jsc-stress-tests: