⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Jun 6, 2022:

11:57 PM Changeset in webkit [295333] by achristensen@apple.com
  • 3 edits in trunk/Tools/TestWebKitAPI

Make _WKDataTask.Basic API test more permissive of different number of TCP connections
https://bugs.webkit.org/show_bug.cgi?id=241358
rdar://94322457

Reviewed by Tim Horton.

Since r294757 we call _setPrivacyProxyFailClosedForUnreachableNonMainHosts on most loads
from WKWebView, but _WKDataTask uses NetworkSessionCocoa::dataTaskWithRequest which does not.
On platforms that support the SPI, we now make a different TCP connection because the stream
properties are different so we can't use the same cached connection. This is fine. The test
verifies that the session cookie is sent. An alternative could be to call
_setPrivacyProxyFailClosedForUnreachableNonMainHosts for all _WKDataTask loads, but that would
strangely and unnecessarily block some loads. The mitigation for rdar://problem/92697007 is not
needed in contexts where _WKDataTask is used because those loads can't run JS that then triggers
other loads, and there's also no main document so the algorithm we use in r294757 can't work.

  • Tools/TestWebKitAPI/Tests/WebKitCocoa/NetworkProcess.mm:

(TEST):

  • Tools/TestWebKitAPI/cocoa/HTTPServer.h:
  • Tools/TestWebKitAPI/cocoa/HTTPServer.mm:

(TestWebKitAPI::Connection::awaitableSend):

Canonical link: https://commits.webkit.org/251352@main

11:52 PM WebKitGTK/2.36.x edited by Adrian Perez de Castro
(diff)
11:03 PM Changeset in webkit [295332] by Alan Coon
  • 1 copy in tags/WebKit-7614.1.14.10.12

Tag WebKit-7614.1.14.10.12.

10:47 PM Changeset in webkit [295331] by Alan Coon
  • 1 edit in branches/safari-7614.1.14.10-branch/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/ContextMtl.mm

Cherry-pick r294877. rdar://problem/93834054

Uniform buffer reuse causes flush, creates invalid state
https://bugs.webkit.org/show_bug.cgi?id=240896

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2022-05-26
Patch by Kyle Piddington.

Reviewed by Kimmo Kinnunen.

A flush during draw setup would leave the render command encoder
not started and render pipeline unset. This would assert in debug
and leak memory with corrupted draws in release.

This would happen for example when uniform buffer pool would run
out of uniform memory. If the pool is maxed out, we flush the
existing rendering to obtain free buffers. After the flush,
we need to re-run the setup.

Test is tracked in bug 240948.

  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/ContextMtl.mm: (rx::ContextMtl::setupDraw): (rx::ContextMtl::setupDrawImpl):

Canonical link: https://commits.webkit.org/251007@main

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

10:47 PM Changeset in webkit [295330] by Alan Coon
  • 5 edits in branches/safari-7614.1.14.10-branch/Source/WebKit/UIProcess

Cherry-pick r294831. rdar://problem/93656000

Prevent NSAttributedString crashes when AppSSO URLs are provided
https://bugs.webkit.org/show_bug.cgi?id=240739
<rdar://93656000>

Reviewed by Chris Dumez.

When NSAttributedString is used in a sandboxed app, it is prevented from checking in with the
AppSSO plugin manager, causing a Sandbox Violation and crash. We don't want NSAttributedString
to ever hand-off to AppSSO, so we should configure it's internal WKWebView to do the right thing.
Reviewed by Chris Dumez.

  • Source/WebKit/UIProcess/API/Cocoa/NSAttributedString.mm: (+[_WKAttributedStringWebViewCache configuration]): Turn off AppSSO for string uses.
  • Source/WebKit/UIProcess/Cocoa/NavigationState.mm: (WebKit::trySOAuthorization): Use new lazy loading approach.
  • Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::trySOAuthorization): Ditto.
  • Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::WebsiteDataStore): (WebKit::WebsiteDataStore::soAuthorizationCoordinator): Lazily initialize, and RELEASE_ASSERT if we somehow reach this code without enabling AppSSO.
  • Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h: (WebKit::WebsiteDataStore::soAuthorizationCoordinator): Deleted.

Canonical link: https://commits.webkit.org/250981@main

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

10:47 PM Changeset in webkit [295329] by Alan Coon
  • 8 edits
    2 adds in branches/safari-7614.1.14.10-branch

Cherry-pick r294186. rdar://problem/93805727

Infinite recursion caused by call to accessibilityIsIgnored in the midst of AccessibilityObject::ignoredFromModalPresence
https://bugs.webkit.org/show_bug.cgi?id=240365

Reviewed by Chris Fleizach.

Source/WebCore:

We can get infinite recursion when accessibilityIsIgnored is called as
part of computing AccessibilityObject::ignoredFromModalPresence. One
example of such a cycle:

AXObjectCache::currentModalNode() ->
AccessibilityRenderObject::computeAccessibilityIsIgnored() ->
AccessibilityRenderObject::parentObjectUnignored() ->
AccessibilityObject::accessibilityIsIgnored() ->
AccessibilityObject::ignoredFromModalPresence() ->
AXObjectCache::currentModalNode() ->
...repeat...

This patch fixes this by tracking when we start computing the current
modal node in the AXObjectCache. Then, in AccessibilityObject::accessibilityIsIgnored(),
we don't call AccessibilityObject::ignoredFromModalPresence() if this new state is true,
since in this context we only need to know if the object is inherently
ignored (i.e. ignored disregarding modal presence).

Test: accessibility/aria-modal-with-text-crash.html

  • accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::currentModalNode):
  • accessibility/AXObjectCache.h: Add m_isRetrievingCurrentModalNode. (WebCore::AXObjectCache::isRetrievingCurrentModalNode): Added.
  • accessibility/AccessibilityObject.cpp: (WebCore::AccessibilityObject::accessibilityIsIgnored const): Don't call ignoredFromModalPresence if we're in the midst of computing the current modal.

LayoutTests:

  • accessibility/aria-modal-with-text-crash-expected.txt: Added.
  • accessibility/aria-modal-with-text-crash.html: Added.
  • platform/glib/TestExpectations: Skip new test.
  • platform/ios/TestExpectations: Enable new test.
  • platform/win/TestExpectations: Skip new test.

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

10:37 PM Changeset in webkit [295328] by Alan Coon
  • 9 edits in branches/safari-7614.1.14.10-branch/Source

Versioning.

WebKit-7614.1.14.10.12

8:58 PM Changeset in webkit [295327] by don.olmstead@sony.com
  • 1 edit in trunk/Source/cmake/OptionsPlayStation.cmake

Fix PlayStation build after r295294
https://bugs.webkit.org/show_bug.cgi?id=241359

Reviewed by Ross Kirsling.

The ICU::uc target was added twice to a list of modules causing it to be multiply defined.

  • Source/cmake/OptionsPlayStation.cmake:

Canonical link: https://commits.webkit.org/251351@main

8:44 PM Changeset in webkit [295326] by mmaxfield@apple.com
  • 14 edits in trunk/Source/WebCore

Delete RenderTheme::cachedSystemFontDescription() because it does nothing
https://bugs.webkit.org/show_bug.cgi?id=241329

Reviewed by Cameron McCormack.

RenderTheme::cachedSystemFontDescription() is supposed to maintain storage for cached font descriptors.
However, every time this storage is referenced, it is immediately copied from, leaving the storage
in its default uninitialized state. There's no point in keeping default initialized objects around
for no reason.

This is the second piece in a sequence of patches to fix the accessibility bold setting in web content.

  • Source/WebCore/css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::consumeSystemFont):

  • Source/WebCore/rendering/RenderEmbeddedObject.cpp:

(WebCore::RenderEmbeddedObject::getReplacementTextGeometry const):

  • Source/WebCore/rendering/RenderTheme.cpp:

(WebCore::RenderTheme::cachedSystemFontDescription const): Deleted.
(WebCore::RenderTheme::systemFont const): Deleted.

  • Source/WebCore/rendering/RenderTheme.h:

(WebCore::RenderTheme::canPaint const):

  • Source/WebCore/rendering/RenderThemeAdwaita.h:
  • Source/WebCore/rendering/RenderThemeCocoa.h:
  • Source/WebCore/rendering/RenderThemeCocoa.mm:

(WebCore::RenderThemeCocoa::systemFont const):
(WebCore::RenderThemeCocoa::cachedSystemFontDescription const): Deleted.
(WebCore::RenderThemeCocoa::updateCachedSystemFontDescription const): Deleted.

  • Source/WebCore/rendering/RenderThemeGtk.cpp:

(WebCore::RenderThemeGtk::systemFont const):
(WebCore::RenderThemeGtk::updateCachedSystemFontDescription const): Deleted.

  • Source/WebCore/rendering/RenderThemeGtk.h:
  • Source/WebCore/rendering/RenderThemePlayStation.cpp:

(WebCore::RenderThemePlayStation::systemFont const):
(WebCore::RenderThemePlayStation::updateCachedSystemFontDescription const): Deleted.

  • Source/WebCore/rendering/RenderThemePlayStation.h:
  • Source/WebCore/rendering/RenderThemeWin.cpp:

(WebCore::RenderThemeWin::systemFont const):
(WebCore::fillFontDescription): Deleted.
(WebCore::RenderThemeWin::updateCachedSystemFontDescription const): Deleted.

  • Source/WebCore/rendering/RenderThemeWin.h:

Canonical link: https://commits.webkit.org/251350@main

8:43 PM Changeset in webkit [295325] by Alan Coon
  • 6 edits in trunk/Tools/Scripts/libraries

Add proxy support to webkitscmpy's GitHub client
https://bugs.webkit.org/show_bug.cgi?id=241031
rdar://93129765

Reviewed by Jonathan Bedard.

Allow for the passing of proxy settings to the GitHub client. Use
requests.Session to pass the proxy settings to all requests made.

Additionally pass this session to the Tracker data member, for
github.com networking requests made at the Tracker level.

Version bumps webkitbugspy and webkitscmpy.

  • Tools/Scripts/libraries/webkitbugspy/setup.py: version bump to 0.6.3
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/init.py: version bump to 0.6.3
  • Tools/Scripts/libraries/webkitbugspy/webkitbugspy/github.py:

Add a requests.Session member to the class that can be passed into the constructor.
Call all networking requests through the session.
(Tracker.init):
(Tracker):
(Tracker.credentials.validater):

  • Tools/Scripts/libraries/webkitscmpy/setup.py: version bump to 4.15.4
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/init.py: version bump to 4.15.4
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:

Add a proxies argument to the constructor. Will pass proxies to a request.Session member
that is used to perform networking requests to github.com from this class.
This session is passed to the Tracker member in its constructor (see webkitbugspy.github changes).
(GitHub.PRGenerator.create):
(GitHub.PRGenerator.update):
(GitHub.init):
(GitHub.request):
(GitHub._count_for_ref):
(GitHub._branches_for):

Canonical link: https://commits.webkit.org/251349@main

7:30 PM Changeset in webkit [295324] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick c88d60bba878. rdar://problem/91643534

<link rel=preconnect> always sends credentials to different-origin, ignoring crossorigin=anonymous
https://bugs.webkit.org/show_bug.cgi?id=239119
<rdar://problem/91643534>

Reviewed by John Wilander.

Update the check as per spec, step 5 of
https://html.spec.whatwg.org/multipage/links.html#link-type-preconnect

This is difficult to test as preconnect can only expose TLS credentials.

  • loader/LinkLoader.cpp: (WebCore::LinkLoader::preconnectIfNeeded):

Canonical link: https://commits.webkit.org/250034@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@293503 268f45cc-cd09-0410-ab3c-d52691b4dbfc

7:30 PM Changeset in webkit [295323] by Alan Coon
  • 18 edits
    20 moves
    24 adds in branches/safari-613-branch

Cherry-pick c7f59d768c0a. rdar://problem/94467852

Incorrect CORP/COEP check in 304 responses
https://bugs.webkit.org/show_bug.cgi?id=238238
<rdar://problem/90706510>

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2022-04-08
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Sync cross-origin-embedder-policy tests to include the new test require-corp-revalidated-images.https.html.

  • web-platform-tests/html/cross-origin-embedder-policy/block-local-documents-inheriting-none.https.html:
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache-storage.https.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache-storage.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache-storage.tentative.https.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache.tentative.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/dedicated-worker.https.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/dedicated-worker.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/dedicated-worker.tentative.https.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/fetch.https.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/fetch.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/fetch.tentative.https.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-credentialless.https.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-credentialless.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-credentialless.tentative.https.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-none.https.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-none.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-none.tentative.https.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-require-corp.https.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-require-corp.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-require-corp.tentative.https.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe.tentative.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/image.https.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/image.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/image.tentative.https.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/link.https.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/link.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/link.tentative.https.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/redirect.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/redirect.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/redirect.tentative.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-navigation.https.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-navigation.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-navigation.tentative.https.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.https.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.tentative.https.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/script.https.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/script.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/script.tentative.https.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.https.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.tentative.https.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-none-proxy.https.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-none-proxy.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-none-proxy.tentative.https.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker.https.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker.tentative.https.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/shared-worker.https.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/shared-worker.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/shared-worker.tentative.https.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.https.window.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.tentative.https.window.js.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.https.window.js.headers: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.tentative.https.window.js.headers.
  • web-platform-tests/html/cross-origin-embedder-policy/credentialless/w3c-import.log:
  • web-platform-tests/html/cross-origin-embedder-policy/dedicated-worker.https-expected.txt:
  • web-platform-tests/html/cross-origin-embedder-policy/dedicated-worker.https.html:
  • web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html:
  • web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html.headers:
  • web-platform-tests/html/cross-origin-embedder-policy/require-corp-cached-images.https-expected.txt:
  • web-platform-tests/html/cross-origin-embedder-policy/require-corp-cached-images.https.html:
  • web-platform-tests/html/cross-origin-embedder-policy/require-corp-revalidated-images.https-expected.txt: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/require-corp-revalidated-images.https.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/resources/corp-image.py: (main):
  • web-platform-tests/html/cross-origin-embedder-policy/resources/fetch-and-create-url.html: Added.
  • web-platform-tests/html/cross-origin-embedder-policy/resources/load-corp-images.html:
  • web-platform-tests/html/cross-origin-embedder-policy/resources/w3c-import.log:
  • web-platform-tests/html/cross-origin-embedder-policy/resources/worker-support.js: Added. (setCoep): (resolveUrl): (async withIframe): (waitForMessage): (async createLocalUrl):
  • web-platform-tests/html/cross-origin-embedder-policy/shared-workers.https-expected.txt:
  • web-platform-tests/html/cross-origin-embedder-policy/shared-workers.https.html:
  • web-platform-tests/html/cross-origin-embedder-policy/w3c-import.log:

Source/WebKit:

Add CORP header to the 304 response if previously set to avoid being blocked by load checker due to COEP.

Test: imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-revalidated-images.https.html

  • NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::didReceiveResponse):

LayoutTests:

Mark some tests with DumpJSConsoleLogInStdErr modifier.

Canonical link: https://commits.webkit.org/249428@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@292595 268f45cc-cd09-0410-ab3c-d52691b4dbfc

7:30 PM Changeset in webkit [295322] by Alan Coon
  • 3 edits
    2 adds in branches/safari-613-branch

Cherry-pick e40c1e30bd61. rdar://problem/94467808

CSP: Fix script-src-elem policies in workers
https://bugs.webkit.org/show_bug.cgi?id=239840

Reviewed by Kate Cheney.

Source/WebCore:

Test: http/tests/security/contentSecurityPolicy/script-src-strict-dynamic-and-script-src-elem.html

  • page/csp/ContentSecurityPolicyDirectiveList.cpp: (WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForScript const):

LayoutTests:

CSP: Fix script-src-elem policies in workers

  • http/tests/security/contentSecurityPolicy/script-src-strict-dynamic-and-script-src-elem-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/script-src-strict-dynamic-and-script-src-elem.html: Added.

Canonical link: https://commits.webkit.org/250386@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@293940 268f45cc-cd09-0410-ab3c-d52691b4dbfc

7:30 PM Changeset in webkit [295321] by Alan Coon
  • 15 edits
    3 adds in branches/safari-613-branch

Cherry-pick bf09fd4a06a7. rdar://problem/92033309

Add testRunner API to clear memory cache
https://bugs.webkit.org/show_bug.cgi?id=239804
rdar://92033309

Reviewed by Chris Dumez.

Source/WebCore:

  • testing/Internals.cpp: (WebCore::Internals::clearMemoryCache): Beef up clearMemoryCache to be on par with testRunner counterpart.

Source/WebKit:

Add necessary WebKit API to implement the testRunner API.
Make use of new testRunner API in added test.

Test: http/wpt/fetch/clear-memory-cache.html

  • NetworkProcess/NetworkProcess.cpp:
  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

Tools:

Implement the clear memory cache testRunner API and related plumbery.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:
  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:
  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

LayoutTests:

  • http/wpt/fetch/clear-memory-cache-expected.txt: Added.
  • http/wpt/fetch/clear-memory-cache.html: Added.
  • http/wpt/fetch/resources/clear-memory-cache.py: Added.

Canonical link: https://commits.webkit.org/250033@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@293502 268f45cc-cd09-0410-ab3c-d52691b4dbfc

7:30 PM Changeset in webkit [295320] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore/platform/graphics/avfoundation/objc

Cherry-pick b3360dfccef2. rdar://problem/89387951

[Cocoa][MSE] Frames are displayed "fast forward" during seek operations
https://bugs.webkit.org/show_bug.cgi?id=241234
<rdar://89387951>

Reviewed by Eric Carlson.

When MSE was moved into the GPU process, certain operations that used to be synchronous became
async. This includes seek operations, where the seek request is initiated by the HTMLMediaElement,
async dispatched to the MediaPlayer in the GPU process, and then async dispatched back to the
WebContent process and MediaSource. Immediately prior to this last dispatch, the
SourceBufferPrivateAVFObjC flushes its sample buffer renderers, and during the subsequent async
portion there is an opportunity for the sample buffers to request new data. When that request
occurs before the response to the async dispatch, incorrect samples (future samples from the
previous playback location) are enqueued. These are then flushed again during the async response,
and replaced by correct samples.

Add a new ivar to SourceBufferPrivateAVFObjC that tracks this state, blocking enqueing new samples
while there is a pending seek operation.

  • Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
  • Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: (WebCore::SourceBufferPrivateAVFObjC::willSeek): (WebCore::SourceBufferPrivateAVFObjC::seekToTime): (WebCore::SourceBufferPrivateAVFObjC::isSeeking const):

Canonical link: https://commits.webkit.org/251301@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295253 268f45cc-cd09-0410-ab3c-d52691b4dbfc

7:30 PM Changeset in webkit [295319] by Alan Coon
  • 1 edit
    2 adds in branches/safari-613-branch

Cherry-pick 97487f0eee71. rdar://problem/90755619

[iOS 15] Unable to type in Google Docs with a hardware keyboard without refocusing editor
https://bugs.webkit.org/show_bug.cgi?id=241308
rdar://90755619

Reviewed by Tim Horton.

After the changes in r277265, we no longer call into -reloadInputViews when starting an input
session after programmatically focusing an editable container with inputmode="none", with a
hardware keyboard attached. This is because -_shouldShowKeyboardForElement: returns NO (due to
inputmode none), so we bail early at this check:

`

if (!shouldShowInputView
information.elementType == WebKit::InputType::None) {

_page->setIsShowingInputViewForFocusedElement(false);
return;

}
`

As a result, UIKit never resets UIKeyboardImpl's input delegate, which should now be the
WKContentView, and thus never consults whether we require key events (-requiresKeyEvents), which
in turn means that -handleKeyWebEvent:withCompletionHandler: is never invoked on the content view,
so we never dispatch key events to the page.

In the normal, non-editable key event case, we lazily call -reloadInputViews in
-_handleKeyUIEvent: (which is called just before keyboard WebEvents start getting dispatched by
UIKit). However, since we're still focusing an editable element in this case, we don't end up going
down this codepath.

When the hardware keyboard is not connected, avoiding the call to -reloadInputViews is expected,
since we aren't showing a keyboard anyways due to the fact that the element was programmatically
focused (so the user has no way of typing or dispatching key events, in the first place).

And finally, when the inputmode is not none, _isFocusingElementWithKeyboard is set to YES, so
we begin the input session and call -reloadInputViews as normal.

It's only in this inputmode=none case with both the hardware keyboard attached and the editable
container being programmatically focused, where we end up in a state where the user can type with a
hardware keyboard, but we haven't informed UIKit that we should receive key events.

We can fix this by consulting a separate -_shouldShowKeyboardForElementIgnoringInputMode: instead
which allows us to follow the normal routine for focusing an editable element with inputmode="none"
which includes zooming to reveal the focused element if it's on-screen and not hidden, as well as
calling the related delegate methods; the only difference is that we avoid showing the UCB or
software keyboard, by returning YES from -_disableAutomaticKeyboardUI in this case.

  • LayoutTests/fast/forms/ios/keydown-in-hidden-contenteditable-with-inputmode-none-expected.txt: Added.
  • LayoutTests/fast/forms/ios/keydown-in-hidden-contenteditable-with-inputmode-none.html: Added.

Add a new layout test to simulate typing in Google Docs with a hardware keyboard (i.e., focus a
hidden contenteditable container with inputmode="none"), and verify that we dispatch key events to
the focused editable element.

  • Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _elementTypeRequiresAccessoryView:]): (-[WKContentView _shouldShowKeyboardForElement:]): (-[WKContentView _shouldShowKeyboardForElementIgnoringInputMode:]):

Split this helper method into two versions (one of which ignores inputmode=none). See above for
more details.

(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]):

Canonical link: https://commits.webkit.org/251335@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295289 268f45cc-cd09-0410-ab3c-d52691b4dbfc

7:30 PM Changeset in webkit [295318] by Alan Coon
  • 10 edits
    1 add in branches/safari-613-branch

Cherry-pick 8a2d5954643f. rdar://problem/94467773

Calls to print can result in unresponsive print modal
https://bugs.webkit.org/show_bug.cgi?id=237940
<rdar://problem/88257828>

Reviewed by Chris Dumez.

Source/WebKit:

Calls to print were hanging in the case of the client asynchronously
handling the completion handler passed to the delegate. To fix this
we can adjust all printing IPC to have the option
DispatchMessageEvenWhenWaitingForUnboundedSyncReply which allows IPC
messages when waiting for a sync reply in the case where the receiver
of the message is not guranteed to call the completion handler at the
end of the runloop.

  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • UIProcess/API/Cocoa/WKWebViewTesting.mm: (-[WKWebView _computePagesForPrinting:completionHandler:]):
  • UIProcess/WebPageProxy.cpp: (WebKit::printingSendOptions):
  • WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::print):

Tools:

Add API test. Adjust delegate naming in the PDF case to be more
specific so we can use the generic PrintUIDelegate name in the general
case.

  • TestWebKitAPI/SourcesCocoa.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/WKPDFView.mm: (TEST): (-[PrintUIDelegate _webView:printFrame:pdfFirstPageSize:completionHandler:]): Deleted. (-[PrintUIDelegate waitForPageSize]): Deleted. (-[PrintUIDelegate lastPrintedFrame]): Deleted.
  • TestWebKitAPI/Tests/WebKitCocoa/WKPrinting.mm: Added. (-[PrintUIDelegate callBlockAsync:]): (-[PrintUIDelegate _webView:printFrame:pdfFirstPageSize:completionHandler:]): (-[PrintUIDelegate waitForPagination]): (TEST):

Canonical link: https://commits.webkit.org/248540@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@291412 268f45cc-cd09-0410-ab3c-d52691b4dbfc

7:30 PM Changeset in webkit [295317] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick 753398de3962. rdar://problem/92081823

Use more smart pointers in Element.cpp
https://bugs.webkit.org/show_bug.cgi?id=239836

Patch by Alex Christensen <achristensen@webkit.org> on 2022-04-28
Reviewed by Chris Dumez.

  • dom/Element.cpp: (WebCore::Element::setScrollLeft): (WebCore::Element::setScrollTop):

Canonical link: https://commits.webkit.org/250083@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@293569 268f45cc-cd09-0410-ab3c-d52691b4dbfc

7:30 PM Changeset in webkit [295316] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick 694fbb13c1b6. rdar://problem/92081556

afterprint event should be scheduled on event loop
https://bugs.webkit.org/show_bug.cgi?id=239883

Patch by Alex Christensen <achristensen@webkit.org> on 2022-04-28
Reviewed by Chris Dumez.

  • page/Page.cpp: (WebCore::dispatchPrintEvent): (WebCore::Page::dispatchBeforePrintEvent): (WebCore::Page::dispatchAfterPrintEvent):

Canonical link: https://commits.webkit.org/250112@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@293606 268f45cc-cd09-0410-ab3c-d52691b4dbfc

7:30 PM Changeset in webkit [295315] by Alan Coon
  • 9 edits
    2 adds in branches/safari-613-branch

Cherry-pick 2c80da108c11. rdar://problem/84667910

[iOS] Keyboard obscures file upload context menu when trying to attach a file in gmail.com
https://bugs.webkit.org/show_bug.cgi?id=241320
rdar://84667910

Reviewed by Tim Horton.

When composing a message on gmail.com, if a user taps the "Attach file" button in the bottom
toolbar, Gmail's script programmatically clicks a hidden file input and then immediately focuses the
editable body field. The context menu presents at the interaction location near the bottom of the
viewport; however, if no hardware keyboard is attached, the software keyboard appears right
afterwards, obscuring the context menu completely.

To address this, teach WKFileUploadPanel to reposition its context menu when the keyboard is
shown, if it might overlap with the bounds of the input view.

  • LayoutTests/fast/forms/ios/show-file-upload-context-menu-above-keyboard-expected.txt: Added.
  • LayoutTests/fast/forms/ios/show-file-upload-context-menu-above-keyboard.html: Added.

Add a layout test to verify that focusing a text field with the software keyboard while presenting a
file picker doesn't result in the file picker's context menu being obscured behind the keyboard.

  • LayoutTests/resources/ui-helper.js: (window.UIHelper.dismissMenu): (window.UIHelper.contextMenuRect):

Add a couple of new UIHelper methods.

  • Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _keyboardDidShow]):

If the keyboard appears while the file upload panel is active, reposition the context menu if it
overlaps with the new keyboard bounds.

(-[WKContentView _zoomToFocusRectAfterShowingKeyboardIfNeeded]):

Factor this existing logic out into a helper method.

  • Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.h:
  • Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.mm: (-[WKFileUploadPanel contextMenuInteraction:willEndForConfiguration:animator:]):

If the _isRepositioningContextMenu flag is set, avoid removing and destroying the context menu
interaction.

(-[WKFileUploadPanel ensureContextMenuInteraction]):

Drive-by fix: adjust -ensureContextMenuInteraction so that it returns the either the existing or
newly created context menu interaction.

(-[WKFileUploadPanel repositionContextMenuIfNeeded]):

Add a helper method to reposition the context menu by removing and re-presenting the context menu
interaction without animation, only if it overlaps the input view bounds. While removing and
presenting the context menu again, set a _isRepositioningContextMenu flag, such that

(-[WKFileUploadPanel showDocumentPickerMenu]):

  • Tools/TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • Tools/TestRunnerShared/UIScriptContext/UIScriptController.h: (WTR::UIScriptController::contextMenuRect const):
  • Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm: (-[TestRunnerWKWebView _dismissAllContextMenuInteractions]):

Adjust this helper to immediately cancel all context menu interactions without animation, so that
context menu removal delegate methods don't bleed into subsequent tests.

  • Tools/WebKitTestRunner/ios/UIScriptControllerIOS.h:
  • Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm: (WTR::UIScriptControllerIOS::menuRect const):

Use the new toObject helper method.

(WTR::UIScriptControllerIOS::contextMenuRect const):

Add support for a new script controller method to return the context menu container view's bounds
in window coordinates. Note that I'm using window coordinates here as opposed to root view
coordinates, since the new test that uses this method needs to compare the context menu's position
against the input view bounds in window coordinates.

(WTR::UIScriptControllerIOS::toObject const):

Add a helper method to convert the given CGRect into a JavaScript object reference.

Canonical link: https://commits.webkit.org/251344@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295299 268f45cc-cd09-0410-ab3c-d52691b4dbfc

7:30 PM Changeset in webkit [295314] by Alan Coon
  • 3 edits
    2 adds in branches/safari-613-branch

Cherry-pick 0fe83157c4d9. rdar://problem/94467906

CSP: Fix mixing strict-dynamic and unsafe-inline policies
https://bugs.webkit.org/show_bug.cgi?id=239862

Reviewed by Kate Cheney.

Source/WebCore:

Test: http/tests/security/contentSecurityPolicy/script-src-strict-dynamic-and-unsafe-inline-policies.html

  • page/csp/ContentSecurityPolicyDirectiveList.cpp: (WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForNonParserInsertedScripts const):

LayoutTests:

If you had multiple policies, one including strict-dynamic and another with unsafe-inline, the unsafe-inline
policy was incorrectly handled.

  • http/tests/security/contentSecurityPolicy/script-src-strict-dynamic-and-unsafe-inline-policies-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/script-src-strict-dynamic-and-unsafe-inline-policies.html: Added.

Canonical link: https://commits.webkit.org/250109@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@293603 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6:32 PM Changeset in webkit [295313] by Alan Coon
  • 1 edit in branches/safari-7614.1.16-branch/Source/WebCore/accessibility/AXObjectCache.h

Cherry-pick r295165.

Unreviewed !ENABLE(ACCESSIBILITY) build fix for r295139.

  • Source/WebCore/accessibility/AXObjectCache.h: (WebCore::AXObjectCache::relatedObjectIDsFor): (WebCore::AXObjectCache::relatedObjectsFor): Deleted.

Canonical link: https://commits.webkit.org/251249@main

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

6:27 PM Changeset in webkit [295312] by Alan Coon
  • 1 copy in branches/safari-7614.1.16-branch

New branch.

6:19 PM Changeset in webkit [295311] by Alan Coon
  • 1 copy in tags/WebKit-7614.1.15.2

Tag WebKit-7614.1.15.2.

5:58 PM Changeset in webkit [295310] by don.olmstead@sony.com
  • 1 edit in trunk/Tools/WebKitTestRunner/CMakeLists.txt

[CMake] Cleanup use of frameworks in WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=241349

Reviewed by Fujii Hironori.

Remove includes that are implicit from using a framework.

  • Tools/WebKitTestRunner/CMakeLists.txt:

Canonical link: https://commits.webkit.org/251348@main

5:35 PM Changeset in webkit [295309] by Alan Coon
  • 11 edits in branches/safari-613-branch

Cherry-pick b8c770451902. rdar://problem/84570717

[Modern Media Controls] macCatalyst should not use touch events
https://bugs.webkit.org/show_bug.cgi?id=240704
<rdar://problem/84570717>

Reviewed by Eric Carlson.

  • Source/WebCore/Modules/modern-media-controls/controls/layout-traits.js: (LayoutTraits.prototype.supportsTouches): Added.
  • Source/WebCore/Modules/modern-media-controls/controls/macos-layout-traits.js: (MacOSLayoutTraits.prototype.supportsTouches): Added. Allow LayoutTraits to indicate whether touches are supported.
  • Source/WebCore/Modules/modern-media-controls/controls/auto-hide-controller.js: (AutoHideController):
  • Source/WebCore/Modules/modern-media-controls/controls/button.js: (Button):
  • Source/WebCore/Modules/modern-media-controls/controls/range-button.js: (RangeButton):
  • Source/WebCore/Modules/modern-media-controls/controls/slider.js: (Slider.prototype._interactionEndTarget):
  • Source/WebCore/Modules/modern-media-controls/media/media-document-controller.js: (MediaDocumentController): Use LayoutTraits.prototype.supportsTouches instead of GestureRecognizer.SupportsTouches so that macOS (including macCatalyst) can always act as though touches are not supported (which is fine since mouse events are fully functional on macOS).
  • LayoutTests/media/modern-media-controls/button/button-icon-name.html:
  • LayoutTests/media/modern-media-controls/button/button.html:
  • LayoutTests/media/modern-media-controls/buttons-container/buttons-container-buttons-property.html:
  • LayoutTests/media/modern-media-controls/buttons-container/buttons-container-constructor.html:
  • LayoutTests/media/modern-media-controls/buttons-container/buttons-container-layout.html: Add layoutDelegate/layoutTraits where needed.

Canonical link: https://commits.webkit.org/250814@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294573 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5:35 PM Changeset in webkit [295308] by Alan Coon
  • 6 edits
    2 adds in branches/safari-613-branch

Cherry-pick 348b1a10ee87. rdar://problem/92449950

[CSS Cascade Layers] Endless recursion with revert-layer in other tree context
https://bugs.webkit.org/show_bug.cgi?id=239967
<rdar://92449950>

Reviewed by Alan Bujtas.

Source/WebCore:

We should only revert within a tree context (scope).

Adding more comprehensive WPTs separately.

Test: fast/css/revert-layer-tree-context-stack-overflow.html

  • style/PropertyCascade.cpp: (WebCore::Style::PropertyCascade::PropertyCascade):

Pass the property tree scope to the rollback cascade.

(WebCore::Style::PropertyCascade::addMatch):

Don't include properties from lower priority tree scopes to rollback cascade.
Reverse the logic for clarity.

  • style/PropertyCascade.h: (WebCore::Style::PropertyCascade::PropertyCascade):
  • style/StyleBuilder.cpp: (WebCore::Style::Builder::ensureRollbackCascadeForRevert): (WebCore::Style::Builder::ensureRollbackCascadeForRevertLayer): (WebCore::Style::Builder::makeRollbackCascadeKey):

Include tree scope to the key.

  • style/StyleBuilder.h:

LayoutTests:

  • fast/css/revert-layer-tree-context-stack-overflow-expected.html: Added.
  • fast/css/revert-layer-tree-context-stack-overflow.html: Added.

Canonical link: https://commits.webkit.org/250213@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@293725 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5:35 PM Changeset in webkit [295307] by Alan Coon
  • 5 edits
    2 adds in branches/safari-613-branch

Cherry-pick 077f4d227924. rdar://problem/94034984

AX: inert attribute doesn't cause display:contents element to be ignored
https://bugs.webkit.org/show_bug.cgi?id=241022

Reviewed by Chris Fleizach.

Prior to this patch, the inert attribute didn't cause node-only objects
(like those with display:contents) to be ignored. This was because
AccessibilityObject::defaultObjectInclusion only checked effectiveInert
for elements with renderers, even though you only need an element to
have style (not a renderer).

This patch fixes this by adding a new AccessibilityObject::style()
method which uses AccessibilityObject::element() to get
Element::computedStyle() and checking effectiveInert on that, which
works for both renderer and renderer-less objects.

  • LayoutTests/accessibility/node-only-inert-object-expected.txt: Added.
  • LayoutTests/accessibility/node-only-inert-object.html: Added.
  • LayoutTests/platform/ios/TestExpectations: Enable new test.
  • LayoutTests/platform/mac-wk1/TestExpectations: Skip new test.
  • Source/WebCore/accessibility/AccessibilityObject.cpp: (WebCore::AccessibilityObject::style const): Added. (WebCore::AccessibilityObject::defaultObjectInclusion const):
  • Source/WebCore/accessibility/AccessibilityObject.h:

Canonical link: https://commits.webkit.org/251185@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295090 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5:35 PM Changeset in webkit [295306] by Alan Coon
  • 9 edits in branches/safari-613-branch/Source

Versioning.

WebKit-7613.3.4

5:15 PM Changeset in webkit [295305] by commit-queue@webkit.org
  • 1 edit in trunk/Source/WebCore/platform/ios/UserAgentIOS.mm

Make Mobile Safari desktop mode report the same macOS version in the user agent as Safari on Mac
https://bugs.webkit.org/show_bug.cgi?id=241322

Patch by nitinseshadri <61258126+nitinseshadri@users.noreply.github.com> on 2022-06-06
Reviewed by Alexey Proskuryakov.

  • Source/WebCore/platform/ios/UserAgentIOS.mm:

(WebCore::standardUserAgentWithApplicationName):
Change reported macOS version in user agent to 10.15.7.

Canonical link: https://commits.webkit.org/251347@main

4:47 PM Changeset in webkit [295304] by Brent Fulgham
  • 1 edit in trunk/Source/WebKit/Configurations/BaseXPCService.xcconfig

Framework Mismatch Crash when loading any page if CaptivePortal mode enabled
rdar://89925654

Reviewed by Tim Horton.

Code signing flags were improperly set for the CaptivePortal process. This patch instructs the build
system to treat CaptivePortal code signing the same as Normal WebContent process builds.

  • Source/WebKit/Configurations/BaseXPCService.xcconfig:

Canonical link: https://commits.webkit.org/251346@main

4:23 PM Changeset in webkit [295303] by Russell Epstein
  • 12 edits in branches/safari-7614.1.15-branch/Source

Cherry-pick r295134. rdar://problem/93068926

Fix build failures introduced in "[Xcode] Prevent STP and other self-contained builds from overwriting content in the macOS SDK"
https://bugs.webkit.org/show_bug.cgi?id=240408

Reviewed by Alexey Proskuryakov.

Revert "Revert "[Xcode] Prevent STP and other self-contained builds from overwriting content in the macOS SDK""
This reverts commit 680fe6580f261df69a607a33b6252f3e19704169.

Apply small fixups across xcconfig files to address regressions:

  • Fix SYSTEM_HEADER_SEARCH_PATHS not referring to Catlyst's include directory.
  • Replace /usr/local/include literal in PROFILE_DATA_PATH with WK_ALTERNATE_WEBKIT_SDK_PATH and WK_LIBRARY_HEADERS_FOLDER_PATH to select the correct profdata for Catalyst or self-contained builds.
  • Source/JavaScriptCore/Configurations/Base.xcconfig: Clean up an old WK_STATICLIB_INSTALL_PREFIX, replacing it with WK_LIBRARY_HEADERS_FOLDER_PATH.
  • Source/JavaScriptCore/Configurations/JavaScriptCore.xcconfig:
  • Source/WebCore/Configurations/WebCore.xcconfig:
  • Source/WebCore/PAL/Configurations/PAL.xcconfig:
  • Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj: PAL's SDKVariant.xcconfig was not included in the project for some reason. This is fine for building (as it's still includable) but prevents Xcode from indexing it. Add it.
  • Source/WebGPU/Configurations/WGSL.xcconfig:
  • Source/WebGPU/Configurations/WebGPU.xcconfig:
  • Source/WebKit/Configurations/BaseTarget.xcconfig:
  • Source/WebKit/Configurations/SandboxProfiles.xcconfig: Clean up an old WK_STATICLIB_INSTALL_PREFIX setting. We don't need to redirect sandbox profiles to a separate directory, like we do headers and static libraries, so leave these paths hard coded to /usr/local/include.
  • Source/WebKitLegacy/mac/Configurations/WebKitLegacy.xcconfig:

Canonical link: https://commits.webkit.org/251225@main

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

4:23 PM Changeset in webkit [295302] by Russell Epstein
  • 45 edits in branches/safari-7614.1.15-branch/Source

Cherry-pick r295073. rdar://problem/93068926

[Xcode] Prevent STP and other self-contained builds from overwriting content in the macOS SDK
https://bugs.webkit.org/show_bug.cgi?id=240408

Reviewed by Alexey Proskuryakov.

When building with WK_OVERRIDE_FRAMEWORKS_DIR, we assume that WebKit is
being built as part of a self-contained application, e.g. Safari
Technology Preview. This means that most content is installed to the
override directory, instead of the normal /System/Library/Frameworks
directory.

However, static library content (e.g. headers and archives
for bmalloc, webrtc, WTF) is _not_ installed to the override directory,
as it is not needed at runtime. It was being installed to the default
/usr/local prefix, where it would merge with and overwrite whatever
WebKit content was already present.

To prevent overwrites and other sorts of conflict with the
system-provided WebKit, introduce WK_LIBRARY_HEADERS_FOLDER_PATH and
WK_LIBRARY_INSTALL_PATH, which expand to /usr/local/include/safari-sdk
and /usr/local/lib/safari-sdk respectively when building in this mode.
Static library headers and archives are built to these locations, where
they're still in the expected SDK location, but won't clobber system
WebKit.

  • Source/bmalloc/Configurations/Base.xcconfig:
  • Source/bmalloc/Configurations/bmalloc.xcconfig:
  • Source/bmalloc/Configurations/mbmalloc.xcconfig:
  • Source/JavaScriptCore/Configurations/Base.xcconfig:
  • Source/JavaScriptCore/Configurations/JavaScriptCore.xcconfig:
  • Source/JavaScriptCore/DerivedSources.make:
  • Source/JavaScriptCore/Scripts/generate-unified-sources.sh:
  • Source/JavaScriptCore/offlineasm/config.rb:
  • Source/JavaScriptCore/offlineasm/parser.rb:
  • Source/ThirdParty/ANGLE/Configurations/ANGLE-dynamic.xcconfig:
  • Source/ThirdParty/ANGLE/Configurations/AngleMetalLib.xcconfig:
  • Source/ThirdParty/ANGLE/Configurations/Base.xcconfig:
  • Source/ThirdParty/libwebrtc/Configurations/Base.xcconfig:
  • Source/ThirdParty/libwebrtc/Configurations/boringssl.xcconfig:
  • Source/ThirdParty/libwebrtc/Configurations/libabsl.xcconfig:
  • Source/ThirdParty/libwebrtc/Configurations/libsrtp.xcconfig:
  • Source/ThirdParty/libwebrtc/Configurations/libvpx.xcconfig:
  • Source/ThirdParty/libwebrtc/Configurations/libwebm.xcconfig:
  • Source/ThirdParty/libwebrtc/Configurations/libwebrtc.xcconfig:
  • Source/ThirdParty/libwebrtc/Configurations/libyuv.xcconfig:
  • Source/ThirdParty/libwebrtc/Configurations/opus.xcconfig:
  • Source/ThirdParty/libwebrtc/Configurations/usrsctp.xcconfig:
  • Source/ThirdParty/libwebrtc/Configurations/yasm.xcconfig:
  • Source/WebCore/PAL/Configurations/Base.xcconfig:
  • Source/WebCore/PAL/Configurations/PAL.xcconfig:
  • Source/WebGPU/Configurations/Base.xcconfig:
  • Source/WebGPU/Configurations/WGSL.xcconfig:
  • Source/WebGPU/Configurations/WGSLUnitTests.xcconfig:
  • Source/WebGPU/Configurations/WebGPU.xcconfig:
  • Source/WebKit/Configurations/Base.xcconfig:
  • Source/WebKit/Configurations/BaseTarget.xcconfig:
  • Source/WebKit/Configurations/SandboxProfiles.xcconfig:
  • Source/WebKit/WebKit.xcodeproj/project.pbxproj:
  • Source/WebKitLegacy/scripts/generate-unified-sources.sh:
  • Source/WebKitLegacy/mac/Configurations/Base.xcconfig:
  • Source/WebKitLegacy/mac/Configurations/WebKitLegacy.xcconfig:
  • Source/WTF/Configurations/Base.xcconfig:
  • Source/WTF/Configurations/WTF.xcconfig:
  • Source/WTF/Configurations/icu.xcconfig:
  • Source/WebCore/Configurations/Base.xcconfig:
  • Source/WebCore/Configurations/WebCore.xcconfig:
  • Source/WebCore/Configurations/WebCoreTestSupport.xcconfig:
  • Source/WebCore/DerivedSources.make:
  • Source/WebCore/Scripts/generate-unified-sources.sh:
  • Source/WebCore/WebCore.xcodeproj/project.pbxproj:

Canonical link: https://commits.webkit.org/251168@main

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

4:23 PM Changeset in webkit [295301] by Russell Epstein
  • 6 edits
    1 add in branches/safari-7614.1.15-branch/Source

Cherry-pick r295065. rdar://problem/93068926

Refer to correct profiling data in WebCore and WebKit
https://bugs.webkit.org/show_bug.cgi?id=239681

Reviewed by Alexey Proskuryakov.

Revert "Unreviewed, revert "[Xcode] Compute PGO profdata paths instead of searching for them at build time""
This reverts commit 2ee0d9d171e2ff7daa94d1a15727033a994e6414.

A bad copy-paste led to WebCore and WebKit's production builds using PGO
data from JavaScriptCore. Fix it, and add back a check that ensures
production builds fail instead of falling back to stub profiling data.

  • Source/WebCore/Configurations/WebCore.xcconfig:
  • Source/WebKit/Configurations/BaseTarget.xcconfig:

Canonical link: https://commits.webkit.org/251160@main

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

3:12 PM Changeset in webkit [295300] by Ryan Haddad
  • 1 edit in trunk/LayoutTests/platform/ios/TestExpectations

[iOS] Skip tests that cause crashes due to unfired UI script callbacks
https://bugs.webkit.org/show_bug.cgi?id=241350

Unreviewed test gardening.

These tests were identified in webkit.org/b/236794. Skip them to reduce flakes and
false positives on iOS test bots. Remove flaky expectations for tests that were caught
in the fallout from these bad tests.

  • LayoutTests/platform/ios/TestExpectations:

Canonical link: https://commits.webkit.org/251345@main

3:08 PM Changeset in webkit [295299] by Wenson Hsieh
  • 9 edits
    2 adds in trunk

[iOS] Keyboard obscures file upload context menu when trying to attach a file in gmail.com
https://bugs.webkit.org/show_bug.cgi?id=241320
rdar://84667910

Reviewed by Tim Horton.

When composing a message on gmail.com, if a user taps the "Attach file" button in the bottom
toolbar, Gmail's script programmatically clicks a hidden file input and then immediately focuses the
editable body field. The context menu presents at the interaction location near the bottom of the
viewport; however, if no hardware keyboard is attached, the software keyboard appears right
afterwards, obscuring the context menu completely.

To address this, teach WKFileUploadPanel to reposition its context menu when the keyboard is
shown, if it might overlap with the bounds of the input view.

  • LayoutTests/fast/forms/ios/show-file-upload-context-menu-above-keyboard-expected.txt: Added.
  • LayoutTests/fast/forms/ios/show-file-upload-context-menu-above-keyboard.html: Added.

Add a layout test to verify that focusing a text field with the software keyboard while presenting a
file picker doesn't result in the file picker's context menu being obscured behind the keyboard.

  • LayoutTests/resources/ui-helper.js:

(window.UIHelper.dismissMenu):
(window.UIHelper.contextMenuRect):

Add a couple of new UIHelper methods.

  • Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _keyboardDidShow]):

If the keyboard appears while the file upload panel is active, reposition the context menu if it
overlaps with the new keyboard bounds.

(-[WKContentView _zoomToFocusRectAfterShowingKeyboardIfNeeded]):

Factor this existing logic out into a helper method.

  • Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.h:
  • Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.mm:

(-[WKFileUploadPanel contextMenuInteraction:willEndForConfiguration:animator:]):

If the _isRepositioningContextMenu flag is set, avoid removing and destroying the context menu
interaction.

(-[WKFileUploadPanel ensureContextMenuInteraction]):

Drive-by fix: adjust -ensureContextMenuInteraction so that it returns the either the existing or
newly created context menu interaction.

(-[WKFileUploadPanel repositionContextMenuIfNeeded]):

Add a helper method to reposition the context menu by removing and re-presenting the context menu
interaction without animation, only if it overlaps the input view bounds. While removing and
presenting the context menu again, set a _isRepositioningContextMenu flag, such that

(-[WKFileUploadPanel showDocumentPickerMenu]):

  • Tools/TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • Tools/TestRunnerShared/UIScriptContext/UIScriptController.h:

(WTR::UIScriptController::contextMenuRect const):

  • Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:

(-[TestRunnerWKWebView _dismissAllContextMenuInteractions]):

Adjust this helper to immediately cancel all context menu interactions without animation, so that
context menu removal delegate methods don't bleed into subsequent tests.

  • Tools/WebKitTestRunner/ios/UIScriptControllerIOS.h:
  • Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::menuRect const):

Use the new toObject helper method.

(WTR::UIScriptControllerIOS::contextMenuRect const):

Add support for a new script controller method to return the context menu container view's bounds
in window coordinates. Note that I'm using window coordinates here as opposed to root view
coordinates, since the new test that uses this method needs to compare the context menu's position
against the input view bounds in window coordinates.

(WTR::UIScriptControllerIOS::toObject const):

Add a helper method to convert the given CGRect into a JavaScript object reference.

Canonical link: https://commits.webkit.org/251344@main

3:04 PM Changeset in webkit [295298] by Ryan Haddad
  • 1 edit in trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/AppPrivacyReport.mm

REGRESSION: [ iOS ] Six TestWebKitAPI.AppPrivacyReport API tests are a consistent timeout
https://bugs.webkit.org/show_bug.cgi?id=241233
<rdar://94298162>

Reviewed by Kate Cheney.

Two tests requiring a fix were missed in 251292@main.

  • Tools/TestWebKitAPI/Tests/WebKitCocoa/AppPrivacyReport.mm:

Canonical link: https://commits.webkit.org/251343@main

2:46 PM Changeset in webkit [295297] by timothy_horton@apple.com
  • 2 edits
    2 copies in trunk/LayoutTests/compositing

REGRESSION (r295269): compositing/hidpi-compositing-layer-with-zero-sized-container.html times out
https://bugs.webkit.org/show_bug.cgi?id=241346

Reviewed by Alan Bujtas.

  • LayoutTests/compositing/hidpi-compositing-layer-with-zero-sized-container-expected.html:
  • LayoutTests/compositing/hidpi-compositing-layer-with-zero-sized-container.html:
  • LayoutTests/compositing/hidpi-compositing-layer-with-zero-sized-container-offsets-above-one-expected.html:
  • LayoutTests/compositing/hidpi-compositing-layer-with-zero-sized-container-offsets-above-one.html:

This test was slow before, but r295269 made it even slower due to WKTR's force repaint
now causing the compositing layers to repaint as well (a progression).

Reduce the number of layers per test from 1600 to 400, and split the test
in half; one test for offsets below 1, one for offsets between 1 and 2;
Alan says that rounding behavior is different between these two cases.

Canonical link: https://commits.webkit.org/251342@main

2:35 PM Changeset in webkit [295296] by don.olmstead@sony.com
  • 2 edits in trunk/Tools/Scripts/hooks

Invoke perl in git hooks
https://bugs.webkit.org/show_bug.cgi?id=241345

Reviewed by Jonathan Bedard.

A windows command prompt doesn't understand shebangs and needs the interpreter to be specified in
order to run successfully.

  • Tools/Scripts/hooks/pre-commit:
  • Tools/Scripts/hooks/prepare-commit-msg:

Canonical link: https://commits.webkit.org/251341@main

1:41 PM Changeset in webkit [295295] by Alan Coon
  • 9 edits in branches/safari-7614.1.15-branch/Source

Versioning.

WebKit-7614.1.15.2

1:24 PM Changeset in webkit [295294] by don.olmstead@sony.com
  • 10 edits in trunk

[CMake] Use playstation_module for shared libs
https://bugs.webkit.org/show_bug.cgi?id=241049

Reviewed by Ross Kirsling.

The playstation_module function determines how to properly load a shared library. It figures out
if a shared library is being used and if so will create a target to copy it to the directory it
will load from. Additionally it exposes a ${target}_LOAD_AT variable that can be used with
dlopen.

  • Source/JavaScriptCore/shell/playstation/Initializer.cpp:
  • Source/WTF/wtf/PlatformPlayStation.cmake:
  • Source/WebCore/PlatformPlayStation.cmake:
  • Source/WebKit/NetworkProcess/EntryPoint/playstation/NetworkProcessMain.cpp:
  • Source/WebKit/WebProcess/EntryPoint/playstation/WebProcessMain.cpp:
  • Source/cmake/OptionsPlayStation.cmake:
  • Tools/MiniBrowser/playstation/CMakeLists.txt:
  • Tools/MiniBrowser/playstation/main.cpp:
  • Tools/TestWebKitAPI/PlatformPlayStation.cmake:
  • Tools/TestWebKitAPI/playstation/main.cpp:

Canonical link: https://commits.webkit.org/251340@main

1:13 PM Changeset in webkit [295293] by don.olmstead@sony.com
  • 2 edits in trunk/Tools/Scripts/hooks

Use raw string for LOCATION in git hooks
https://bugs.webkit.org/show_bug.cgi?id=241343

Reviewed by Jonathan Bedard.

  • Tools/Scripts/hooks/pre-commit:
  • Tools/Scripts/hooks/prepare-commit-msg:

Canonical link: https://commits.webkit.org/251339@main

12:22 PM Changeset in webkit [295292] by Russell Epstein
  • 9 edits in trunk/Source

Versioning.

WebKit-7614.1.17

10:50 AM Changeset in webkit [295291] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebCore

InteractionRegionOverlay should use RenderLayer-cached regions instead of computing them itself
https://bugs.webkit.org/show_bug.cgi?id=241338

Reviewed by Simon Fraser.

  • Source/WebCore/page/DebugPageOverlays.cpp:

(WebCore::RegionOverlay::shouldPaintOverlayIntoLayer):
(WebCore::InteractionRegionOverlay::updateRegion):
Stop computing InteractionRegions ourselves.

(WebCore::InteractionRegionOverlay::activeLayer):
Determine the layer from which to retrieve InteractionRegions. For now, we just
use the root layer, because that's where we stash all regions. Later, we'll
do a hit-test here to find the region under the mouse.

(WebCore::InteractionRegionOverlay::activeRegion):
Look up InteractionRegions cached on the aforementioned active layer, instead of
computing them ourselves.

(WebCore::InteractionRegionOverlay::drawRect):
Stop painting region-indicating borders into the overlay (see RenderLayerBacking changes).

(WebCore::InteractionRegionOverlay::mouseEvent):
Correctly map into layer coordinates. For now this is a no-op because we're using
the root layer, but it will be important in a future patch where we use regions
on a per-layer basis.

(WebCore::DebugPageOverlays::shouldPaintOverlayIntoLayer):

  • Source/WebCore/page/DebugPageOverlays.h:

(WebCore::DebugPageOverlays::shouldPaintOverlayIntoLayerForRegionType):

  • Source/WebCore/rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::paintDebugOverlays):
(WebCore::RenderLayerBacking::paintContents):
Paint region-indicating borders into the layer, instead of into the page overlay.
This will make them correctly scroll along with the content, and layer correctly.

Canonical link: https://commits.webkit.org/251337@main

10:36 AM Changeset in webkit [295290] by Wenson Hsieh
  • 15 edits
    1 copy in trunk

REGRESSION (r291302): editing/secure-input tests fail when run while a password input is focused on the system
https://bugs.webkit.org/show_bug.cgi?id=241324
rdar://94184618

Reviewed by Alexey Proskuryakov.

The tests in editing/secure-input fail after the removal of WebCoreTestShim in r291302, if a
secure text field is focused anywhere on the system while the tests are running. This is because we
now call into the real system IsSecureEventInputEnabled() API during these tests, instead of the
shimmed version for testing.

Since interposing these API functions apparently doesn't work on M1 Macs, we can't use this
technique to ensure that these tests are robust moving forward; instead, introduce and use testing-
only SPI (and IPI) to consult whether or not we're currently editing a secure input.

See below for more details.

  • Source/WebKit/UIProcess/API/mac/WKWebViewPrivateForTestingMac.h:
  • Source/WebKit/UIProcess/API/mac/WKWebViewTestingMac.mm:

(-[WKWebView _secureEventInputEnabledForTesting]):

Add testing-only SPI on WKWebView to return whether or not we're in a secure input, as an
alternative to calling into the actual IsSecureEventInputEnabled() API.

  • Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj:
  • Source/WebKitLegacy/mac/WebView/WebHTMLView.mm:

(-[WebHTMLView _secureEventInputEnabledForTesting]):

  • Source/WebKitLegacy/mac/WebView/WebHTMLViewForTestingMac.h: Copied from Source/WebKit/UIProcess/API/mac/WKWebViewPrivateForTestingMac.h.

Add a testing-only header file that's internal (i.e. non-exported), but imported in DumpRenderTree
through a Source-relative header include path. At the moment, this only contains a method to check
whether or not we're currently editing a secure text input, as an alternative to calling into
IsSecureEventInputEnabled().

  • Tools/DumpRenderTree/TestRunner.cpp:

(getSecureEventInputIsEnabledCallback):
(TestRunner::isSecureEventInputEnabled const):

Adjust DumpRenderTree to consult -[WebHTMLView _secureEventInputEnabledForTesting].

  • Tools/DumpRenderTree/TestRunner.h:
  • Tools/DumpRenderTree/mac/Configurations/Base.xcconfig:

Add a relative include path on DumpRenderTree, so that we can use WebHTMLViewForTestingMac.h in
DumpRenderTree without having to introduce new WebKitLegacy SPI.

  • Tools/DumpRenderTree/mac/TestRunnerMac.mm:

(TestRunner::isSecureEventInputEnabled const):

  • Tools/WebKitTestRunner/PlatformWebView.h:

(WTR::PlatformWebView::platformView const):
(WTR::PlatformWebView::platformWindow const):
(WTR::PlatformWebView::platformView): Deleted.
(WTR::PlatformWebView::platformWindow): Deleted.

Mark platformView const so that it can be invoked from isSecureEventInputEnabled, and also mark
platformWindow const for consistency.

  • Tools/WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

  • Tools/WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:

(WTR::PlatformWebView::isSecureEventInputEnabled const):

  • Tools/WebKitTestRunner/ios/PlatformWebViewIOS.mm:

(WTR::PlatformWebView::isSecureEventInputEnabled const):

  • Tools/WebKitTestRunner/libwpe/PlatformWebViewLibWPE.cpp:

(WTR::PlatformWebView::isSecureEventInputEnabled const):

  • Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm:

(WTR::PlatformWebView::isSecureEventInputEnabled const):

Add a new isSecureEventInputEnabled method on the PlatformWebView, and adjust WebKitTestRunner
to consult -[WKWebView _secureEventInputEnabledForTesting].

  • Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:

(WTR::PlatformWebView::isSecureEventInputEnabled const):

Canonical link: https://commits.webkit.org/251336@main

8:57 AM Changeset in webkit [295289] by Wenson Hsieh
  • 1 edit
    2 adds in trunk

[iOS 15] Unable to type in Google Docs with a hardware keyboard without refocusing editor
https://bugs.webkit.org/show_bug.cgi?id=241308
rdar://90755619

Reviewed by Tim Horton.

After the changes in r277265, we no longer call into -reloadInputViews when starting an input
session after programmatically focusing an editable container with inputmode="none", with a
hardware keyboard attached. This is because -_shouldShowKeyboardForElement: returns NO (due to
inputmode none), so we bail early at this check:

`

if (!shouldShowInputView
information.elementType == WebKit::InputType::None) {

_page->setIsShowingInputViewForFocusedElement(false);
return;

}
`

As a result, UIKit never resets UIKeyboardImpl's input delegate, which should now be the
WKContentView, and thus never consults whether we require key events (-requiresKeyEvents), which
in turn means that -handleKeyWebEvent:withCompletionHandler: is never invoked on the content view,
so we never dispatch key events to the page.

In the normal, non-editable key event case, we lazily call -reloadInputViews in
-_handleKeyUIEvent: (which is called just before keyboard WebEvents start getting dispatched by
UIKit). However, since we're still focusing an editable element in this case, we don't end up going
down this codepath.

When the hardware keyboard is not connected, avoiding the call to -reloadInputViews is expected,
since we aren't showing a keyboard anyways due to the fact that the element was programmatically
focused (so the user has no way of typing or dispatching key events, in the first place).

And finally, when the inputmode is not none, _isFocusingElementWithKeyboard is set to YES, so
we begin the input session and call -reloadInputViews as normal.

It's only in this inputmode=none case with both the hardware keyboard attached and the editable
container being programmatically focused, where we end up in a state where the user can type with a
hardware keyboard, but we haven't informed UIKit that we should receive key events.

We can fix this by consulting a separate -_shouldShowKeyboardForElementIgnoringInputMode: instead
which allows us to follow the normal routine for focusing an editable element with inputmode="none"
which includes zooming to reveal the focused element if it's on-screen and not hidden, as well as
calling the related delegate methods; the only difference is that we avoid showing the UCB or
software keyboard, by returning YES from -_disableAutomaticKeyboardUI in this case.

  • LayoutTests/fast/forms/ios/keydown-in-hidden-contenteditable-with-inputmode-none-expected.txt: Added.
  • LayoutTests/fast/forms/ios/keydown-in-hidden-contenteditable-with-inputmode-none.html: Added.

Add a new layout test to simulate typing in Google Docs with a hardware keyboard (i.e., focus a
hidden contenteditable container with inputmode="none"), and verify that we dispatch key events to
the focused editable element.

  • Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _elementTypeRequiresAccessoryView:]):
(-[WKContentView _shouldShowKeyboardForElement:]):
(-[WKContentView _shouldShowKeyboardForElementIgnoringInputMode:]):

Split this helper method into two versions (one of which ignores inputmode=none). See above for
more details.

(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]):

Canonical link: https://commits.webkit.org/251335@main

8:53 AM Changeset in webkit [295288] by Jonathan Bedard
  • 6 edits in trunk/Tools/Scripts

git webkit setup hard codes the path to Xcode in .git/hooks/pre-commit
https://bugs.webkit.org/show_bug.cgi?id=241284
<rdar://problem/94435371>

Reviewed by Tim Horton.

  • Tools/Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/hooks/prepare-commit-msg:
  • Tools/Scripts/hooks/pre-commit: Use git instead of git path.
  • Tools/Scripts/hooks/prepare-commit-msg: Ditto.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/setup.py:

(Setup.git): Remove git executable path.

Canonical link: https://commits.webkit.org/251334@main

8:22 AM Changeset in webkit [295287] by pvollan@apple.com
  • 3 edits in trunk/Source

Eagerly soft link Data Detection frameworks
https://bugs.webkit.org/show_bug.cgi?id=241267

Reviewed by Geoffrey Garen.

Eagerly soft link Data Detection frameworks in the WebContent process. There are two motivations behind this change.
First, soft linking frameworks may lead to communication with launchd. Doing the soft linking before the WebContent
process has finished launching, will help our effort in blocking launchd post launch. Second, the data detection
frameworks are normally used in every WebContent process, and eagerly soft linking them should be a performance
improvement. Ideally, these frameworks should be hard linked or weak linked. However, that would most likely create
cycles in the build dependencies.

  • Source/WebCore/PAL/pal/cocoa/DataDetectorsCoreSoftLink.h:
  • Source/WebCore/PAL/pal/cocoa/DataDetectorsCoreSoftLink.mm:
  • Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::softlinkDataDetectorsFrameworks):
(WebKit::WebProcess::platformInitializeWebProcess):

Canonical link: https://commits.webkit.org/251333@main

7:34 AM Changeset in webkit [295286] by eocanha@igalia.com
  • 6 edits in trunk

Revert of revert of [MSE][GStreamer] Honor MP4 edit lists, bis
https://bugs.webkit.org/show_bug.cgi?id=231019

Reviewed by Xabier Rodriguez-Calvar.

This patch reintroduces https://commits.webkit.org/243426@main with
some corrections that avoid the problems detected in
https://bugs.webkit.org/show_bug.cgi?id=233861, which motivated the
original patch revert.

Original author: Alicia Boya Garcia <aboya@igalia.com>

Source/WebCore:

This patch takes into consideration the GstSegment attached to a
sample to offset the PTS and DTS. This ensures accurate timestamps are
obtained for MP4 files containing edit lists (commonly necessary for
files containing video with B frames to have PTS starting at zero).

Before this was implemented, a workaround was in place based on a
heuristic (DTS = 0 && PTS > 0 && PTS < 0.1). The workaround is
preserved for the sake of content without proper edit lists, but
any edit list takes preference.

The time fudge factor has been modified from 0.083 seconds up to
0.100 seconds to accomodate the size of the empty edit in test.mp4
used by Web Platform Tests.

This test fixes improves expectation results and fixes two subtests in
imported/w3c/web-platform-tests/media-source/mediasource-remove.html.

This is a reworked version that avoids using gst_sample_set_buffer()
which is not available on GStreamer 1.14, and fixes an issue where
frames that would get a negative DTS were not being enqueued properly.

LayoutTests:

Update expectations for mediasource-remove.html in the GStreamer
ports, as a couple subtests get fixed.

  • LayoutTests/platform/glib/imported/w3c/web-platform-tests/media-source/mediasource-remove-expected.txt:
  • Source/WebCore/Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::currentTimeFudgeFactor):

  • Source/WebCore/platform/graphics/SourceBufferPrivate.h:

(WebCore::SourceBufferPrivate::timeFudgeFactor const):

  • Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h:

(WebCore::toGstClockTime):

  • Source/WebCore/platform/graphics/gstreamer/MediaSampleGStreamer.cpp:

(WebCore::MediaSampleGStreamer::MediaSampleGStreamer):

  • Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:

(WebCore::bufferTimeToStreamTime):
(WebCore::AppendPipeline::appsinkNewSample):
(WebCore::matroskademuxForceSegmentStartToEqualZero): Now we reset segment.time in addition to segment.start. This avoids the regressions.

Canonical link: https://commits.webkit.org/251332@main

7:18 AM Changeset in webkit [295285] by commit-queue@webkit.org
  • 68 edits
    16 deletes in trunk

Unreviewed, reverting r295278.
https://bugs.webkit.org/show_bug.cgi?id=241336

Causes crashes

Reverted changeset:

"Add a new DrawDecomposedGlyphs display list item to avoid repeatedly sending glyphs when using the GlyphDisplayListCache"
https://bugs.webkit.org/show_bug.cgi?id=240497
https://commits.webkit.org/r295278

Canonical link: https://commits.webkit.org/251331@main

6:42 AM Changeset in webkit [295284] by commit-queue@webkit.org
  • 8 edits in trunk

RemoteGraphicsContextGL autogeneration broken after 249754@main, 251204@main, 251325@main
https://bugs.webkit.org/show_bug.cgi?id=241328

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2022-06-06
Unreviewed, build fix.

Verifieable by running Tools/Scripts/generate-gpup-webgl and
observing no change.

Make generate-gpup-webgl add NOLINT for getIntegeri_v() to skip
warning about underscores in methods.

  • Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp:

(WebKit::RemoteGraphicsContextGL::paintRenderingResultsToPixelBuffer):

  • Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.h:
  • Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.messages.in:
  • Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGLFunctionsGenerated.h:

(getInternalformativ):
(paintRenderingResultsToPixelBuffer): Deleted.

  • Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:
  • Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:
  • Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxyFunctionsGenerated.cpp:

(WebKit::RemoteGraphicsContextGLProxy::paintRenderingResultsToPixelBuffer): Deleted.

  • Tools/Scripts/generate-gpup-webgl:

Canonical link: https://commits.webkit.org/251330@main

6:11 AM Changeset in webkit [295283] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

Implement FlexFormattingContext::usedContentHeight
https://bugs.webkit.org/show_bug.cgi?id=241325

Reviewed by Antti Koivisto.

Update the RenderFlexibleBox's content height.

  • Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:

(WebCore::Layout::FlexFormattingContext::usedContentHeight const):

  • Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.cpp:

(WebCore::LayoutIntegration::FlexLayout::contentLogicalHeight const):

  • Source/WebCore/rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::layoutUsingFlexFormattingContext):

Canonical link: https://commits.webkit.org/251329@main

6:08 AM Changeset in webkit [295282] by Alan Bujtas
  • 1 edit in trunk/Source/WebCore/layout/integration/LayoutIntegrationCoverage.cpp

Populate canUseForFlexLayout with unsupported styles and content
https://bugs.webkit.org/show_bug.cgi?id=241323

Reviewed by Tim Nguyen.

This is in preparation for being able to run WPT tests (filter out unsupported content).

  • Source/WebCore/layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForFlexLayout):

Canonical link: https://commits.webkit.org/251328@main

5:10 AM Changeset in webkit [295281] by ntim@apple.com
  • 2 edits
    3 moves
    57 adds in trunk/LayoutTests/imported/w3c

Re-import css/css-text/text-align/ WPT
https://bugs.webkit.org/show_bug.cgi?id=241305

Reviewed by Cameron McCormack.

Upstream revision: https://github.com/web-platform-tests/wpt/commit/a6101f13a28eb78dbef77e276ddee75052a8a2d4

  • LayoutTests/imported/w3c/resources/resource-files.json:
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-center-last-center-expected-mismatch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-center-last-center.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-center-last-default-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-center-last-default.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-center-last-end-expected-mismatch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-center-last-end.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-center-last-justify-expected-mismatch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-center-last-justify.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-center-last-start-expected-mismatch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-center-last-start.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-default-last-default-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-default-last-default.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-end-last-center-expected-mismatch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-end-last-center.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-end-last-default-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-end-last-default.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-end-last-end-expected-mismatch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-end-last-end.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-end-last-justify-expected-mismatch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-end-last-justify.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-end-last-start-expected-mismatch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-end-last-start.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-justify-last-center-expected-mismatch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-justify-last-center.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-justify-last-default-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-justify-last-default.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-justify-last-end-expected-mismatch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-justify-last-end.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-justify-last-justify-expected-mismatch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-justify-last-justify.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-justify-last-start-expected-mismatch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-justify-last-start.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-center-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-center-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-center.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-end-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-end-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-end.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-justify-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-justify-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-justify-rtl-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-justify-rtl-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-justify-rtl.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-justify.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-simple-expected.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-expected.html.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-simple-ref.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-ref.html.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-simple.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last.html.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-start-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-start-ref.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-start.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-start-last-center-expected-mismatch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-start-last-center.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-start-last-default-expected.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-start-last-default.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-start-last-end-expected-mismatch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-start-last-end.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-start-last-justify-expected-mismatch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-start-last-justify.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-start-last-start-expected-mismatch.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-start-last-start.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/w3c-import.log:

Canonical link: https://commits.webkit.org/251327@main

4:35 AM Changeset in webkit [295280] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore/platform/graphics

[Linux] Fix and improve format handling in DMABufFormat, TextureMapperPlatformLayerProxyDMABuf
https://bugs.webkit.org/show_bug.cgi?id=241326

Patch by Žan Doberšek <zdobersek@igalia.com> on 2022-06-06
Reviewed by Miguel Gomez.

In the DMABufFormat header, VYUY and AYUV format definitions are fixed to use
the correct FourCC values. In DMABufFormat::create(), a macro is used to map
FourCC values to corresponding DMABufFormat definitions.

In TextureMapperPlatformLayerProxyDMABuf, missing packed-YUV formats are
added to the switch statement, and properly ordered.

  • Source/WebCore/platform/graphics/gbm/DMABufFormat.h:

(WebCore::DMABufFormat::create<DMABufFormat::FourCC::VYUY>):
(WebCore::DMABufFormat::create<DMABufFormat::FourCC::AYUV>):
(WebCore::DMABufFormat::create):

  • Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxyDMABuf.cpp:

(WebCore::TextureMapperPlatformLayerProxyDMABuf::DMABufLayer::paintToTextureMapper):

Canonical link: https://commits.webkit.org/251326@main

1:43 AM Changeset in webkit [295279] by commit-queue@webkit.org
  • 22 edits
    3 adds in trunk

Add OES_draw_buffers_indexed WebGL extension support
https://bugs.webkit.org/show_bug.cgi?id=222430

Patch by Alexey Knyazev <3479527+lexaknyazev@users.noreply.github.com> on 2022-06-06
Reviewed by Kimmo Kinnunen.

  • Added the entrypoints defined by the extension
  • Added getIntegeri_v and getIntegeri context functions
  • LayoutTests/TestExpectations:
  • Source/WebCore/CMakeLists.txt:
  • Source/WebCore/DerivedSources-input.xcfilelist:
  • Source/WebCore/DerivedSources-output.xcfilelist:
  • Source/WebCore/DerivedSources.make:
  • Source/WebCore/Sources.txt:
  • Source/WebCore/WebCore.xcodeproj/project.pbxproj:
  • Source/WebCore/bindings/js/JSDOMConvertWebGL.cpp:

(WebCore::convertToJSValue):

  • Source/WebCore/html/canvas/OESDrawBuffersIndexed.cpp: Added.

(WebCore::OESDrawBuffersIndexed::OESDrawBuffersIndexed):
(WebCore::OESDrawBuffersIndexed::getName const):
(WebCore::OESDrawBuffersIndexed::supported):
(WebCore::OESDrawBuffersIndexed::enableiOES):
(WebCore::OESDrawBuffersIndexed::disableiOES):
(WebCore::OESDrawBuffersIndexed::blendEquationiOES):
(WebCore::OESDrawBuffersIndexed::blendEquationSeparateiOES):
(WebCore::OESDrawBuffersIndexed::blendFunciOES):
(WebCore::OESDrawBuffersIndexed::blendFuncSeparateiOES):
(WebCore::OESDrawBuffersIndexed::colorMaskiOES):

  • Source/WebCore/html/canvas/OESDrawBuffersIndexed.h: Added.
  • Source/WebCore/html/canvas/OESDrawBuffersIndexed.idl: Added.
  • Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::getIndexedParameter):
(WebCore::WebGL2RenderingContext::getIndexedBooleanArrayParameter):
(WebCore::WebGL2RenderingContext::getExtension):
(WebCore::WebGL2RenderingContext::getSupportedExtensions):

  • Source/WebCore/html/canvas/WebGL2RenderingContext.h:
  • Source/WebCore/html/canvas/WebGLExtension.h:
  • Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::extensionIsEnabled):
(WebCore::WebGLRenderingContextBase::loseExtensions):

  • Source/WebCore/html/canvas/WebGLRenderingContextBase.h:
  • Source/WebCore/platform/graphics/GraphicsContextGL.h:

(WebCore::GraphicsContextGL::getIntegeri):

  • Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLANGLE::getIntegeri_v):
(WebCore::GraphicsContextGLANGLE::enableiOES):
(WebCore::GraphicsContextGLANGLE::disableiOES):
(WebCore::GraphicsContextGLANGLE::blendEquationiOES):
(WebCore::GraphicsContextGLANGLE::blendEquationSeparateiOES):
(WebCore::GraphicsContextGLANGLE::blendFunciOES):
(WebCore::GraphicsContextGLANGLE::blendFuncSeparateiOES):
(WebCore::GraphicsContextGLANGLE::colorMaskiOES):

  • Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.h:
  • Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:

(WebCore::GraphicsContextGLOpenGL::getIntegeri_v):
(WebCore::GraphicsContextGLOpenGL::enableiOES):
(WebCore::GraphicsContextGLOpenGL::disableiOES):
(WebCore::GraphicsContextGLOpenGL::blendEquationiOES):
(WebCore::GraphicsContextGLOpenGL::blendEquationSeparateiOES):
(WebCore::GraphicsContextGLOpenGL::blendFunciOES):
(WebCore::GraphicsContextGLOpenGL::blendFuncSeparateiOES):
(WebCore::GraphicsContextGLOpenGL::colorMaskiOES):

  • Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.messages.in:
  • Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGLFunctionsGenerated.h:

(getIntegeri_v):
(enableiOES):
(disableiOES):
(blendEquationiOES):
(blendEquationSeparateiOES):
(blendFunciOES):
(blendFuncSeparateiOES):
(colorMaskiOES):

  • Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:
  • Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxyFunctionsGenerated.cpp:

(WebKit::RemoteGraphicsContextGLProxy::getIntegeri_v):
(WebKit::RemoteGraphicsContextGLProxy::enableiOES):
(WebKit::RemoteGraphicsContextGLProxy::disableiOES):
(WebKit::RemoteGraphicsContextGLProxy::blendEquationiOES):
(WebKit::RemoteGraphicsContextGLProxy::blendEquationSeparateiOES):
(WebKit::RemoteGraphicsContextGLProxy::blendFunciOES):
(WebKit::RemoteGraphicsContextGLProxy::blendFuncSeparateiOES):
(WebKit::RemoteGraphicsContextGLProxy::colorMaskiOES):

Canonical link: https://commits.webkit.org/251325@main

Jun 5, 2022:

11:19 PM Changeset in webkit [295278] by Cameron McCormack
  • 68 edits
    1 copy
    15 adds in trunk

Add a new DrawDecomposedGlyphs display list item to avoid repeatedly sending glyphs when using the GlyphDisplayListCache
https://bugs.webkit.org/show_bug.cgi?id=240497
<rdar://93387615>

Reviewed by Simon Fraser.

The GlyphDisplayListCache is used to record a display list for
frequently painting text content. With GPU Process DOM rendering, there
is significant overhead in sending the contents of these display lists
over IPC. The contents of these display lists don't change if the text
content in the document doesn't change, so we could greatly reduce the
overhead by treating the data inside a display list item for glyph
drawing as a remote resource.

This commit adds:

  • a new display list item, DrawDecomposedGlyphs, to represent drawing a glyph list resource
  • a new class, DecomposedGlyphs, which is the resource type
  • a new struct, PositionedGlyphs, to provide a common place for the glyph drawing fields (the vector of glyph IDs, the anchor position, etc.) to live, so that we don't have duplication between DisplayList::DrawGlyphs and DecomposedGlyphs

So that a DrawDecomposedGlyphs command can be replayed from a
GlyphDisplayListCache's in-memory display list and recorded to a
RemoteDisplayListRecorder, the GraphicsContext API gains a new
drawDecomposedGlyphs function.

A new argument to the DisplayList::RecordImpl constructor (and the
DrawGlyphsRecorder) is added to represent how to record drawText
commands:

  • DrawGlyphsMode::Normal, which records each GraphicsContext::drawText call with a single DrawText command
  • DrawGlyphsMode::DeconstructToDrawGlyphsCommands, which ensures different text layers get deconstructed into separate DrawText commands
  • DrawGlyphsMode::DeconstructToDrawDecomposedGlyphsCommands, which ensures different text layers get desconstructed into separate DrawDecomposedGlyphs commands

FontCascade::displayListForTextRun is updated to use that last value.

Additionally, GlyphDisplayListCache is extended to cache display lists
keyed off TextRun values. This allows sharing of the same cached display
list between different elements on the page that have the same text
content.

This sharing would not be valid if the two elements have different
values for the color property, and the text contains COLRv0 glyphs that
alternate painting of specific colors and the color fill color, since
the recording would incorrectly record a setFillBrush command
corresponding to the first element's fill color. Rather than extend the
glyph recorder to parameterize the current fill (and stroke) colors, we
detect when outlines are drawn with colors other than the context's
initial colors, and prevent sharing. This is done by checking whether
the recorded display list contains items that aren't known to be safe
for sharing.

Similarly, if the sharing would not be valid if the contains bitmap
images (like those from emoji fonts) or SVG glyphs, both of which are
captured as DrawNativeImage commands, if the text is drawn at different
scales. This is because the size of the images is dependent on the
scale. We detect and prevent reuse across different text runs if the
scale is different, by checking the recorded display list for
DrawNativeImage commands and by storing the context scale on the
GlyphDisplayListCache::Entry.

  • LayoutTests/fast/text/glyph-display-lists/glyph-display-list-colr-unshared-expected.txt: Added.
  • LayoutTests/fast/text/glyph-display-lists/glyph-display-list-colr-unshared.html: Added.
  • LayoutTests/fast/text/glyph-display-lists/glyph-display-list-scaled-unshared-expected.txt: Added.
  • LayoutTests/fast/text/glyph-display-lists/glyph-display-list-scaled-unshared.html: Added.
  • LayoutTests/fast/text/glyph-display-lists/glyph-display-list-shadow-unshared-expected.txt: Added.
  • LayoutTests/fast/text/glyph-display-lists/glyph-display-list-shadow-unshared.html: Added.
  • LayoutTests/fast/text/glyph-display-lists/glyph-display-list-shared-expected.txt: Added.
  • LayoutTests/fast/text/glyph-display-lists/glyph-display-list-shared.html: Added.
  • LayoutTests/fast/text/glyph-display-lists/glyph-display-list-svg-unshared-expected.txt: Added.
  • LayoutTests/fast/text/glyph-display-lists/glyph-display-list-svg-unshared.html: Added.
  • Source/WebCore/Headers.cmake:
  • Source/WebCore/Sources.txt:
  • Source/WebCore/WebCore.xcodeproj/project.pbxproj:
  • Source/WebCore/platform/graphics/BifurcatedGraphicsContext.cpp:

(WebCore::BifurcatedGraphicsContext::drawDecomposedGlyphs):

  • Source/WebCore/platform/graphics/BifurcatedGraphicsContext.h:
  • Source/WebCore/platform/graphics/DecomposedGlyphs.cpp: Added.

(WebCore::DecomposedGlyphs::create):
(WebCore::DecomposedGlyphs::DecomposedGlyphs):
(WebCore::m_renderingResourceIdentifier):

  • Source/WebCore/platform/graphics/DecomposedGlyphs.h: Added.

(WebCore::DecomposedGlyphs::positionedGlyphs const):
(WebCore::DecomposedGlyphs::bounds const):
(WebCore::DecomposedGlyphs::addObserver):
(WebCore::DecomposedGlyphs::removeObserver):
(WebCore::DecomposedGlyphs::renderingResourceIdentifier const):

  • Source/WebCore/platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::displayListForTextRun const):

  • Source/WebCore/platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::drawDecomposedGlyphs):

  • Source/WebCore/platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContext::drawGlyphsAndCacheResources):
(WebCore::GraphicsContext::drawGlyphsAndCacheFont): Deleted.

  • Source/WebCore/platform/graphics/NullGraphicsContext.h:
  • Source/WebCore/platform/graphics/PositionedGlyphs.cpp: Copied from Source/WebCore/platform/graphics/win/DrawGlyphsRecorderWin.cpp.

(WebCore::PositionedGlyphs::computeBounds const):

  • Source/WebCore/platform/graphics/PositionedGlyphs.h: Added.

(WebCore::PositionedGlyphs::PositionedGlyphs):
(WebCore::PositionedGlyphs::encode const):
(WebCore::PositionedGlyphs::decode):

  • Source/WebCore/platform/graphics/TextRun.cpp:

(WebCore::operator<<):

  • Source/WebCore/platform/graphics/TextRun.h:

(WebCore::TextRun::TextRun):
(WebCore::TextRun::isHashTableEmptyValue const):
(WebCore::TextRun::isHashTableDeletedValue const):
(WebCore::TextRun::cloneForStorage const):

  • Source/WebCore/platform/graphics/TextRunHash.h: Added.

(WebCore::add):
(WebCore::TextRun::operator== const):
(WebCore::TextRunHash::hash):
(WebCore::TextRunHash::equal):
(WTF::HashTraits<WebCore::TextRun>::isDeletedValue):
(WTF::HashTraits<WebCore::TextRun>::isEmptyValue):
(WTF::HashTraits<WebCore::TextRun>::constructDeletedValue):
(WTF::HashTraits<WebCore::TextRun>::emptyValue):

  • Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::GraphicsContextCairo::drawDecomposedGlyphs):

  • Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.h:
  • Source/WebCore/platform/graphics/coretext/DrawGlyphsRecorderCoreText.cpp:

(WebCore::DrawGlyphsRecorder::createInternalContext):
(WebCore::DrawGlyphsRecorder::updateCTM):
(WebCore::DrawGlyphsRecorder::recordDrawGlyphs):

  • Source/WebCore/platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::description const):
(WebCore::DisplayList::DisplayList::append):

  • Source/WebCore/platform/graphics/displaylists/DisplayList.h:

(WebCore::DisplayList::DisplayList::cacheDecomposedGlyphs):

  • Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp:

(WebCore::DisplayList::ItemHandle::apply):
(WebCore::DisplayList::ItemHandle::destroy):
(WebCore::DisplayList::ItemHandle::safeCopy const):

  • Source/WebCore/platform/graphics/displaylists/DisplayListItemType.cpp:

(WebCore::DisplayList::sizeOfItemInBytes):
(WebCore::DisplayList::isDrawingItem):
(WebCore::DisplayList::isInlineItem):

  • Source/WebCore/platform/graphics/displaylists/DisplayListItemType.h:
  • Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::DrawGlyphs::DrawGlyphs):
(WebCore::DisplayList::m_bounds):
(WebCore::DisplayList::DrawGlyphs::apply const):
(WebCore::DisplayList::DrawDecomposedGlyphs::apply const):
(WebCore::DisplayList::operator<<):
(WebCore::DisplayList::dumpItem):
(WebCore::DisplayList::dumpItemHandle):
(WebCore::DisplayList::DrawGlyphs::computeBounds): Deleted.

  • Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::DrawGlyphs::localAnchor const):
(WebCore::DisplayList::DrawGlyphs::anchorPoint const):
(WebCore::DisplayList::DrawGlyphs::glyphs const):
(WebCore::DisplayList::DrawGlyphs::encode const):
(WebCore::DisplayList::DrawGlyphs::decode):
(WebCore::DisplayList::DrawDecomposedGlyphs::DrawDecomposedGlyphs):
(WebCore::DisplayList::DrawDecomposedGlyphs::fontIdentifier const):
(WebCore::DisplayList::DrawDecomposedGlyphs::decomposedGlyphsIdentifier const):
(WebCore::DisplayList::DrawDecomposedGlyphs::globalBounds const):
(WebCore::DisplayList::DrawDecomposedGlyphs::localBounds const):

  • Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::Recorder):
(WebCore::DisplayList::Recorder::shouldDeconstructDrawGlyphs const):
(WebCore::DisplayList::Recorder::drawGlyphs):
(WebCore::DisplayList::Recorder::drawDecomposedGlyphs):
(WebCore::DisplayList::Recorder::drawGlyphsAndCacheResources):
(WebCore::DisplayList::Recorder::drawGlyphsAndCacheFont): Deleted.

  • Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h:
  • Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp:

(WebCore::DisplayList::RecorderImpl::RecorderImpl):
(WebCore::DisplayList::RecorderImpl::recordDrawDecomposedGlyphs):
(WebCore::DisplayList::RecorderImpl::recordResourceUse):

  • Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h:
  • Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::applyDrawDecomposedGlyphs):
(WebCore::DisplayList::Replayer::applyItem):
(WebCore::DisplayList::Replayer::replay):

  • Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.h:
  • Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h:

(WebCore::DisplayList::LocalResourceHeap::add):

  • Source/WebCore/platform/graphics/harfbuzz/DrawGlyphsRecorderHarfBuzz.cpp:

(WebCore::DrawGlyphsRecorder::drawGlyphs):

  • Source/WebCore/platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:

(Nicosia::CairoOperationRecorder::drawDecomposedGlyphs):

  • Source/WebCore/platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.h:
  • Source/WebCore/platform/graphics/win/DrawGlyphsRecorderWin.cpp:

(WebCore::DrawGlyphsRecorder::drawGlyphs):

  • Source/WebCore/platform/text/TextDirection.h:

(WebCore::operator<<):

  • Source/WebCore/platform/text/TextFlags.cpp:

(WebCore::operator<<):

  • Source/WebCore/platform/text/TextFlags.h:

(WebCore::ExpansionBehavior::operator== const):

  • Source/WebCore/rendering/GlyphDisplayListCache.cpp: Added.

(WebCore::GlyphDisplayListCacheBase::displayListSharing):

  • Source/WebCore/rendering/GlyphDisplayListCache.h:

(WebCore::GlyphDisplayListCacheBase::size const):
(WebCore::GlyphDisplayListCacheBase::sizeInBytes const):
(WebCore::GlyphDisplayListCacheBase::Entry::create):
(WebCore::GlyphDisplayListCacheBase::Entry::displayList):
(WebCore::GlyphDisplayListCacheBase::Entry::relevantScaleFactor const):
(WebCore::GlyphDisplayListCacheBase::Entry::Entry):
(WebCore::GlyphDisplayListCache::get):
(WebCore::GlyphDisplayListCache::getIfExists):
(WebCore::GlyphDisplayListCache::remove):
(WebCore::GlyphDisplayListCache::clear):
(WebCore::GlyphDisplayListCache::size const): Deleted.
(WebCore::GlyphDisplayListCache::sizeInBytes const): Deleted.

  • Source/WebCore/rendering/RenderLayerCompositor.cpp:
  • Source/WebCore/rendering/TextPainter.cpp:
  • Source/WebCore/testing/Internals.cpp:

(WebCore::toDisplayListFlags):
(WebCore::Internals::displayListForElement):
(WebCore::Internals::replayDisplayListForElement):
(WebCore::Internals::cachedGlyphDisplayListsForTextNode):

  • Source/WebCore/testing/Internals.h:
  • Source/WebCore/testing/Internals.idl:
  • Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:

(WebKit::QualifiedResourceHeap::add):
(WebKit::QualifiedResourceHeap::getDecomposedGlyphs const):
(WebKit::QualifiedResourceHeap::removeDecomposedGlyphs):
(WebKit::QualifiedResourceHeap::checkInvariants const):

  • Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp:

(WebKit::RemoteDisplayListRecorder::drawDecomposedGlyphs):
(WebKit::RemoteDisplayListRecorder::drawDecomposedGlyphsWithQualifiedIdentifiers):

  • Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h:
  • Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.messages.in:
  • Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::cacheFontWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::cacheDecomposedGlyphs):
(WebKit::RemoteRenderingBackend::cacheDecomposedGlyphsWithQualifiedIdentifier):

  • Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
  • Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in:
  • Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp:

(WebKit::RemoteResourceCache::cacheDecomposedGlyphs):
(WebKit::RemoteResourceCache::cachedDecomposedGlyphs const):
(WebKit::RemoteResourceCache::releaseRemoteResource):

  • Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h:
  • Source/WebKit/Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<DecomposedGlyphs>::encode):
(IPC::ArgumentCoder<DecomposedGlyphs>::decode):

  • Source/WebKit/Shared/WebCoreArgumentCoders.h:
  • Source/WebKit/WebKit.xcodeproj/project.pbxproj:
  • Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:

(WebKit::RemoteDisplayListRecorderProxy::RemoteDisplayListRecorderProxy):
(WebKit::RemoteDisplayListRecorderProxy::recordDrawDecomposedGlyphs):
(WebKit::RemoteDisplayListRecorderProxy::recordResourceUse):

  • Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:
  • Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::cacheDecomposedGlyphs):

  • Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
  • Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:

(WebKit::RemoteResourceCacheProxy::~RemoteResourceCacheProxy):
(WebKit::RemoteResourceCacheProxy::recordDecomposedGlyphsUse):
(WebKit::RemoteResourceCacheProxy::releaseDecomposedGlyphs):
(WebKit::RemoteResourceCacheProxy::clearDecomposedGlyphsMap):
(WebKit::RemoteResourceCacheProxy::remoteResourceCacheWasDestroyed):

  • Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:

Canonical link: https://commits.webkit.org/251324@main

10:20 PM Changeset in webkit [295277] by Alan Bujtas
  • 1 edit in trunk/Source/WebCore/layout/formattingContexts/flex/FlexLayout.cpp

Take align-self into account when computing flex item's logical height.
https://bugs.webkit.org/show_bug.cgi?id=241314

Reviewed by Antti Koivisto.

  • Source/WebCore/layout/formattingContexts/flex/FlexLayout.cpp:

(WebCore::Layout::FlexLayout::computeLogicalHeightForFlexItems):

Canonical link: https://commits.webkit.org/251323@main

8:51 PM Changeset in webkit [295276] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore/layout/formattingContexts/flex

FlexLayout should only take logical values
https://bugs.webkit.org/show_bug.cgi?id=241310

Reviewed by Antti Koivisto.

Turn ConstraintsForFlexContent into LogicalConstraints.

  • Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:

(WebCore::Layout::FlexFormattingContext::layoutInFlowContentForIntegration):

  • Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.h:
  • Source/WebCore/layout/formattingContexts/flex/FlexLayout.cpp:

(WebCore::Layout::FlexLayout::computeAvailableLogicalVerticalSpace const):
(WebCore::Layout::FlexLayout::computeAvailableLogicalHorizontalSpace const):
(WebCore::Layout::FlexLayout::layout):

  • Source/WebCore/layout/formattingContexts/flex/FlexLayout.h:

Canonical link: https://commits.webkit.org/251322@main

6:24 PM Changeset in webkit [295275] by Alan Bujtas
  • 1 edit in trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp

Reset the flex item renderers before flex layout
https://bugs.webkit.org/show_bug.cgi?id=241311

Reviewed by Antti Koivisto.

Each layout frame should start with a clean state.

  • Source/WebCore/rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::layoutUsingFlexFormattingContext):

Canonical link: https://commits.webkit.org/251321@main

6:06 PM Changeset in webkit [295274] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore/layout/formattingContexts/flex

Distribute extra logical vertical space across lines
https://bugs.webkit.org/show_bug.cgi?id=241307

Reviewed by Antti Koivisto.

  • Source/WebCore/layout/formattingContexts/flex/FlexLayout.cpp:

(WebCore::Layout::FlexLayout::computeAvailableLogicalVerticalSpace const):
(WebCore::Layout::FlexLayout::computeLogicalHeightForFlexItems):
(WebCore::Layout::FlexLayout::layout):

  • Source/WebCore/layout/formattingContexts/flex/FlexLayout.h:

Canonical link: https://commits.webkit.org/251320@main

5:04 PM Changeset in webkit [295273] by Alan Bujtas
  • 1 edit in trunk/Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp

column-reverse content should take resolved flex box height into account when computing visual position
https://bugs.webkit.org/show_bug.cgi?id=241313

Reviewed by Antti Koivisto.

When the flex box has resolvable height, use it as the anchor point to compute the column-reverse content's visual vertical position.

  • Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp:

(WebCore::Layout::FlexFormattingContext::setFlexItemsGeometry):

Canonical link: https://commits.webkit.org/251319@main

2:53 PM Changeset in webkit [295272] by Chris Dumez
  • 1 edit in trunk/Source/WebKit/Shared/Cocoa/XPCEndpoint.mm

Unreviewed iOS build fix after 251316@main
https://bugs.webkit.org/show_bug.cgi?id=241321

  • Source/WebKit/Shared/Cocoa/XPCEndpoint.mm:

Canonical link: https://commits.webkit.org/251318@main

2:06 AM Changeset in webkit [295271] by commit-queue@webkit.org
  • 1 edit
    2 adds in trunk

REGRESSION(STP146): wpt/quirks/table-cell-width-calculation.html
https://bugs.webkit.org/show_bug.cgi?id=241005
rdar://problem/94025359

Patch by Youenn Fablet <youennf@gmail.com> on 2022-06-05
Reviewed by Brent Fulgham and Chris Dumez.

We should be able to use memory cache when images are either loaded using ServiceWorkerMode::All or None.
Make the reload check stricter by mandating reload in case service worker mode is none for requests that might trigger registration matching in network process.

  • LayoutTests/imported/w3c/web-platform-tests/quirks/table-cell-width-calculation-expected.txt: Added.
  • LayoutTests/imported/w3c/web-platform-tests/quirks/table-cell-width-calculation.html: Added.
  • Source/WebCore/loader/cache/CachedResourceLoader.cpp:

(WebCore::mustReloadFromServiceWorkerOptions):
(WebCore::CachedResourceLoader::determineRevalidationPolicy const):

Canonical link: https://commits.webkit.org/251317@main

Note: See TracTimeline for information about the timeline view.