[webkit-changes] [WebKit/WebKit] 47212f: Versioning.
Jonathan Bedard
noreply at github.com
Mon Nov 27 16:19:13 PST 2023
Branch: refs/heads/safari-7616.1.14.10-branch
Home: https://github.com/WebKit/WebKit
Commit: 47212f0dff65964ca103a313655c176c172d9f74
https://github.com/WebKit/WebKit/commit/47212f0dff65964ca103a313655c176c172d9f74
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-15 (Mon, 15 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
Identifier: 263769.29 at safari-7616.1.14.10-branch
Commit: eca1876e391623dd11a48c7edd2952de8c5fc07e
https://github.com/WebKit/WebKit/commit/eca1876e391623dd11a48c7edd2952de8c5fc07e
Author: Sammy Gill <sammy.gill at apple.com>
Date: 2023-05-15 (Mon, 15 May 2023)
Changed paths:
M LayoutTests/TestExpectations
A LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width-expected.html
A LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width.html
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp
M Source/WebCore/rendering/GridTrackSizingAlgorithm.h
M Source/WebCore/rendering/RenderGrid.cpp
Log Message:
-----------
Cherry-pick ff409be22993. rdar://problem/109170495
[css-grid][masonry] Containing block for items in a masonry columns grid should be the grid's content box logical width
https://bugs.webkit.org/show_bug.cgi?id=256611
rdar://109170495
Reviewed by Matt Woodrow.
The masonry spec states, "The containing block for a grid item is
formed by its grid area in the grid axis and the grid container’s
content-box in the masonry axis."
This means that for a grid that has masonry columns specified, the
masonry axis will be in the logical width direction of the grid. The
items should have their containing block set to the content box logical
box of the grid.
We can modify GridTrackSizingAlgorithm::gridAreaBreadthForChild to
return this value when the grid is a masonry columns grid since normally
the grid area would be used as the containing block in non-masonry
grids. This allows the rest of the code to use the grid area sizes of
the containing block in both masonry and non-masonry scenarios.
Previously, this function would have attempted to compute the
value by iterating over the tracks in the specified direction, but there
are no tracks in the masonry direction so we use the logic specified by
the masonry spec instead.
However, in order for this change to work properly we had to make a
change in RenderGrid::layoutMasonry by removing code that was
incorrectly overriding the logical width of the grid. The previous code
was attempting to set the logical width of the grid to the masonry
content size when the grid had masonry columns specified and an auto
logical width. There were 2 main issues with this piece of code:
1.) m_masonryLayout.gridContentSize() will always return 0 since we
actually haven't performed masonry layout at this point
2.) The grid shouldn't be overriding its logical width like this anyways
and it should instead be set by sized by the rules of the formatting
context it is participating in (e.g. block or inline layout).
By removing this code we can get the actual width of the grid later on
when we call m_renderGrid->contentLogicalWidth() rather than the
incorrect 0 value that it was being set to.
The following example highlights the changes that were made.
<style>
grid {
display: grid;
grid-template-columns:masonry;
grid-template-rows: auto;
}
</style>
<grid>
<svg width="100" height="100" viewBox="0 0 1 1" style="width: 100%; max-width: 100px; background: green;"></svg>
</grid>
By removing the extra code in RenderGrid::layoutMasonry, the grid will
get sizes as a block level box in the block formatting context it is
participating in, giving it a logical width that takes up its available
space. The svg's containing block logical width is set to its value so
it is able to resolve its percentage width to the correct value whereas
before the containing block logical width would have been 0px.
https://drafts.csswg.org/css-grid-3/#containing-block
* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width.html: Added.
* LayoutTests/platform/glib/TestExpectations:
* Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:
(WebCore::GridTrackSizingAlgorithm::gridAreaBreadthForChild const):
* Source/WebCore/rendering/GridTrackSizingAlgorithm.h:
* Source/WebCore/rendering/RenderGrid.cpp:
(WebCore::RenderGrid::layoutMasonry):
Canonical link: https://commits.webkit.org/264011@main
Identifier: 263769.30 at safari-7616.1.14.10-branch
Commit: 2b611c6f3bb30277a79bb5bcae42460ceca91426
https://github.com/WebKit/WebKit/commit/2b611c6f3bb30277a79bb5bcae42460ceca91426
Author: Said Abou-Hallawa <said at apple.com>
Date: 2023-05-15 (Mon, 15 May 2023)
Changed paths:
M Source/WebKit/Shared/cg/ShareableBitmapCG.cpp
Log Message:
-----------
Cherry-pick 58702859275c. rdar://problem/108072383
[GPU Process] (REGRESSION 262607 at main): Copy pixels of CGImage only if it is not a sub-image
https://bugs.webkit.org/show_bug.cgi?id=255677
rdar://108072383
Reviewed by Simon Fraser.
In ShareableBitmap::createFromImagePixels(), CGImage and its CGDataProvider
may disagree about how many bytes are in the pixels buffers. CGImage is most
likely a sub-image of another CGImage which inherits its meta data but not
the full pixels buffer.
In this case we should fallback to ShareableBitmap::createFromImageDraw().
Ortherwise ShareableBitmapConfiguration will falsely describe the data in the
SharedMemory.
* Source/WebKit/Shared/cg/ShareableBitmapCG.cpp:
(WebKit::ShareableBitmap::createFromImagePixels):
Canonical link: https://commits.webkit.org/264021@main
Identifier: 263769.31 at safari-7616.1.14.10-branch
Commit: 2cb2cce241db5f95ec6aae9eed700d80d00862ae
https://github.com/WebKit/WebKit/commit/2cb2cce241db5f95ec6aae9eed700d80d00862ae
Author: Chris Dumez <cdumez at apple.com>
Date: 2023-05-15 (Mon, 15 May 2023)
Changed paths:
M Source/WebKit/UIProcess/API/APIPageConfiguration.cpp
M Source/WebKit/UIProcess/API/APIPageConfiguration.h
M Source/WebKit/UIProcess/API/Cocoa/WKProcessGroup.mm
M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h
M Source/WebKit/UIProcess/Inspector/WebInspectorUtilities.cpp
M Source/WebKit/UIProcess/WebProcessPool.cpp
M Source/WebKit/UIProcess/WebProcessPool.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
Log Message:
-----------
Cherry-pick 7f048d704b87. rdar://problem/109277324
Add SPI to delay a WKWebView's WebProcess launch
https://bugs.webkit.org/show_bug.cgi?id=256727
rdar://109277324
Reviewed by Ben Nham.
Add SPI to delay a WKWebView's WebProcess launch. We already have this
preference internally but it could not be controlled by the client application.
* Source/WebKit/UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::delaysWebProcessLaunchUntilFirstLoad const):
* Source/WebKit/UIProcess/API/APIPageConfiguration.h:
(API::PageConfiguration::setDelaysWebProcessLaunchUntilFirstLoad):
* Source/WebKit/UIProcess/API/Cocoa/WKProcessGroup.mm:
(-[WKProcessGroup setDelegate:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _launchInitialProcessIfNecessary]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration _delaysWebProcessLaunchUntilFirstLoad]):
(-[WKWebViewConfiguration _setDelaysWebProcessLaunchUntilFirstLoad:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:
* Source/WebKit/UIProcess/Inspector/WebInspectorUtilities.cpp:
(WebKit::prepareProcessPoolForInspector):
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::globalDelaysWebProcessLaunchDefaultValue):
(WebKit::WebProcessPool::createWebPage):
* Source/WebKit/UIProcess/WebProcessPool.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
Canonical link: https://commits.webkit.org/264031@main
Identifier: 263769.32 at safari-7616.1.14.10-branch
Commit: 6e7d9a19f2fb283fa9e4d25038487748844e6591
https://github.com/WebKit/WebKit/commit/6e7d9a19f2fb283fa9e4d25038487748844e6591
Author: Sihui Liu <sihui_liu at apple.com>
Date: 2023-05-15 (Mon, 15 May 2023)
Changed paths:
M Source/WebCore/workers/service/server/SWRegistrationDatabase.cpp
M Source/WebCore/workers/service/server/SWRegistrationDatabase.h
M Source/WebKit/NetworkProcess/storage/ServiceWorkerStorageManager.cpp
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm
Log Message:
-----------
Cherry-pick abde730eecbb. rdar://problem/108841865
ServiceWorkerStorageManager should only delete its own files when clearing registrations
https://bugs.webkit.org/show_bug.cgi?id=256725
rdar://108841865
Reviewed by Chris Dumez.
Existing SPI allows clients to set the same path for different data types, so directory of ServiceWorkerStorageManager
might contain files for other types. Therefore, ServiceWorkerStorageManager should not remove the directory when
clearing registrations.
Test: WKWebsiteDataStoreConfiguration.SameCustomPathForDifferentTypes
* Source/WebCore/workers/service/server/SWRegistrationDatabase.cpp:
(WebCore::SWRegistrationDatabase::~SWRegistrationDatabase):
(WebCore::SWRegistrationDatabase::close):
(WebCore::SWRegistrationDatabase::clearAllRegistrations):
* Source/WebCore/workers/service/server/SWRegistrationDatabase.h:
* Source/WebKit/NetworkProcess/storage/ServiceWorkerStorageManager.cpp:
(WebKit::ServiceWorkerStorageManager::clearAllRegistrations):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
(TEST):
Canonical link: https://commits.webkit.org/264036@main
Identifier: 263769.33 at safari-7616.1.14.10-branch
Commit: d721aae18b77b362b8994ee8830b3e9b6dc9764f
https://github.com/WebKit/WebKit/commit/d721aae18b77b362b8994ee8830b3e9b6dc9764f
Author: Matthew Finkel <sysrqb at apple.com>
Date: 2023-05-15 (Mon, 15 May 2023)
Changed paths:
M Source/WebCore/Headers.cmake
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/html/CanvasBase.cpp
M Source/WebCore/html/CanvasBase.h
A Source/WebCore/html/CanvasNoiseInjection.cpp
A Source/WebCore/html/CanvasNoiseInjection.h
M Source/WebCore/html/HTMLCanvasElement.cpp
Log Message:
-----------
Cherry-pick 9084db41d592. rdar://problem/107371244
Refactor Canvas noise injection logic and improve support for gradients in post-processed ImageData
https://bugs.webkit.org/show_bug.cgi?id=255993
rdar://107371244
Reviewed by Kimmo Kinnunen.
Gradients present an interesting problem when post-processing canvas ImageData
because tweaking colors result in significant visual anomalies. This change
introduces some naive gradient detection by looking at all of the immediate
neighbors of a pixel. We decide that a pixel is within a gradient if the
current color is between its opposing adjacent colors (e.g., above and below,
left and right, etc). If a color is decided to be within a gradient, then we
set those adjacent colors as bounds within which we can tweak the current
color.
In addition, within this change, we move the noise injection logic into its own
class, it removes the dependency on supplied colors for post-processing, and it
reduces the magnitude of noise from ~5% to ~1%.
* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/html/CanvasBase.cpp:
(WebCore::CanvasBase::makeRenderingResultsAvailable):
(WebCore::CanvasBase::didDraw): We clip the rect before passing it into
CanvasNoiseInjection, and if the rect is std::nullopt then we pass in the
entire canvas.
(WebCore::CanvasBase::postProcessPixelBufferResults const):
(WebCore::CanvasBase::postProcessDirtyCanvasBuffer const): Deleted.
* Source/WebCore/html/CanvasBase.h:
* Source/WebCore/html/CanvasNoiseInjection.cpp: Added.
(WebCore::CanvasNoiseInjection::updateDirtyRect):
(WebCore::isIndexInBounds):
(WebCore::setTightnessBounds):
(WebCore::getGradientNeighbors):
(WebCore::CanvasNoiseInjection::postProcessDirtyCanvasBuffer):
(WebCore::CanvasNoiseInjection::postProcessPixelBufferResults const):
* Source/WebCore/html/CanvasNoiseInjection.h: Added.
* Source/WebCore/html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::getImageData):
Originally-landed-as: 264019 at main (bfc25dc6ca1c). rdar://107371244
Identifier: 263769.34 at safari-7616.1.14.10-branch
Commit: 581a650640d01d268223ff394bbaffa7cdf026c5
https://github.com/WebKit/WebKit/commit/581a650640d01d268223ff394bbaffa7cdf026c5
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-15 (Mon, 15 May 2023)
Changed paths:
M LayoutTests/TestExpectations
R LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width-expected.html
R LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width.html
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp
M Source/WebCore/rendering/GridTrackSizingAlgorithm.h
M Source/WebCore/rendering/RenderGrid.cpp
Log Message:
-----------
Revert ff409be22993. rdar://problem/109170495
Identifier: 263769.35 at safari-7616.1.14.10-branch
Commit: 40f28720e0f3bf8367761dba1cb3c29a70b2ff4d
https://github.com/WebKit/WebKit/commit/40f28720e0f3bf8367761dba1cb3c29a70b2ff4d
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
Identifier: 263769.36 at safari-7616.1.14.10-branch
Commit: c8c136c12d8903270b1cf8ba7f58d0e03b0191d9
https://github.com/WebKit/WebKit/commit/c8c136c12d8903270b1cf8ba7f58d0e03b0191d9
Author: Wenson Hsieh <wenson_hsieh at apple.com>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
M Source/WebCore/platform/graphics/FontCascade.cpp
M Source/WebCore/platform/graphics/FontCascade.h
M Source/WebCore/rendering/RenderObject.cpp
M Source/WebCore/rendering/RenderObject.h
M Source/WebCore/rendering/RenderText.cpp
M Source/WebCore/rendering/RenderText.h
M Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
M Tools/TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm
A Tools/TestWebKitAPI/Tests/WebKitCocoa/editable-body-mixed-text.html
Log Message:
-----------
Cherry-pick 299bc278524d. rdar://problem/106950483
[iOS] Typing is extremely slow when editing very long sentences, with out-of-process keyboard
https://bugs.webkit.org/show_bug.cgi?id=256762
rdar://106950483
Reviewed by Myles Maxfield, Alan Baradlay and Tim Horton.
When out-of-process keyboard is enabled, UIKit requests document editing contexts upon every
selection change, and asks for three sentences-worth of context before and after the selection. For
extremely long sentences (e.g. 1000+ characters), each document context request can take hundreds of
milliseconds to process, causing the web process to noticeably hang during each keystroke. The vast
majority of this time is spent computing individual rects corresponding to each character in the
editing context range; the way we currently do this is by:
1. Using `CharacterIterator` to construct a single-character `SimpleRange` for each character in
the editing context range.
2. Using `RenderObject::absoluteTextRects` on each character range, and uniting the results.
3. Mapping each rect back into root view coordinate space.
The performance issues arise in step (2), since `RenderObject::absoluteTextRects` for a range in a
text run works by using text layout helpers to advance from the start of the run to the beginning
of the requested range, advancing to the end of the requested range, and using the difference in
width to compute the final rect. When called over *all* individual character ranges in a given text
run of length `N`, this means that the number of times we advance through the text run is `O(N^2)`.
As such, the current performance characteristics of step (2) above are `O(MN^2)`, where `M` is the
number of text runs in the context and `N` represents (on average) the number of characters per run.
To fix this, we improve the `O(N^2)` algorithm for computing character rects to just `O(N)`, by
introducing and adopting new helper methods to ask for a list of each individual character rect in
a given text run. In my testing on an iPad Pro 3rd generation with ~3000 characters worth of context
before and after the selection, this speeds document editing request time up by a factor of roughly
25x, which is enough to make typing and text interactions feel instantly responsive.
Though these changes shouldn't change behavior (since it's only a performance optimization), the
patch adds 4 new API tests to help exercise some additional corner cases that aren't already covered
by existing tests: `DocumentEditingContext.CharacterRectConsistency*`. See below for more details.
* Source/WebCore/layout/integration/inline/InlineIteratorTextBox.cpp:
* Source/WebCore/layout/integration/inline/InlineIteratorTextBox.h:
* Source/WebCore/platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::characterSelectionRectsForText const):
Add a new helper method to return a list of character rects, in the given range in a text run. This
works similarly to the existing `adjustSelectionRectForText` method, except that it uses a single
complex text controller to advance from the start to the end, and emits a character rect every time
it advances.
* Source/WebCore/platform/graphics/FontCascade.h:
* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::RenderObject::absoluteTextQuads):
Refactor this to pass the whole `OptionSet` of behaviors down to `absoluteQuadsForRange`.
(WebCore::absoluteRectsForRangeInText):
* Source/WebCore/rendering/RenderObject.h:
Add a new `BoundingRectBehavior` type: `ComputeIndividualCharacterRects`, which indicates that the
client wants a rect representing each individual text character.
* Source/WebCore/rendering/RenderText.cpp:
(WebCore::RenderText::absoluteRectsForRange const):
Refactor this to pass in an `OptionSet`.
(WebCore::characterRects const):
Add a new helper function to return a list of character rects, in the given range.
(WebCore::RenderText::absoluteQuadsForRange const):
Make this take an `OptionSet` of behaviors instead of individual boolean flags. I opted for this
approach over adding a third `bool` parameter to this function, since it would be cleaner (and make
this more extensible moving forward).
* Source/WebCore/rendering/RenderText.h:
(WebCore::RenderText::absoluteQuadsForRange):
Honor `ComputeIndividualCharacterRects` here by using the per-character helpers described above to
compute a list of character rects for each character in the given range.
* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::requestDocumentEditingContext):
Switch from `CharacterIterator` to `TextIterator`, and ask for rects for each text run found by the
text iterator using the new `ComputeIndividualCharacterRects` option.
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:
(-[NSString composedCharacterRanges]):
(-[UIWKDocumentContext boundingRectForCharacterRange:]):
(-[TestWKWebView firstSelectionRect]):
(-[TestWKWebView waitForFirstSelectionRectToChange:]):
Add several API test helper methods.
(checkThatAllCharacterRectsAreConsistentWithSelectionRects):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/editable-body-mixed-text.html: Added.
Add a few new test cases to verify that the character rects received via document editing context
are consistent with actual selection rects. To do this, we first use the document context API to
request character rects after focusing the test page; we then select every grapheme cluster in the
page, and verify that the final selection rect (as presented by UIKit) matches what we got in the
beginning, via the context's character rect info.
This approach keeps the tests robust over time against platform changes (as opposed to more naive
approaches like checking against hard-coded values). We also exercise various text layout scenarios
that aren't fully covered by existing tests:
- Emojis and other glyphs that span multiple codepoints
- Bidirectional text
- Left-to-right vs. right-to-left text on the body
- Horizontal vs. vertical writing mode on the body
Canonical link: https://commits.webkit.org/264086@main
Identifier: 263769.37 at safari-7616.1.14.10-branch
Commit: 8e7792e8762fae199a033dc502811f19f4406b21
https://github.com/WebKit/WebKit/commit/8e7792e8762fae199a033dc502811f19f4406b21
Author: Russell Epstein <repstein at apple.com>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.10.3
Canonical link: https://commits.webkit.org/263769.38@safari-7616.1.14.10-branch
Commit: b26d9a939776000a61f0f7982d16e304bd474cb6
https://github.com/WebKit/WebKit/commit/b26d9a939776000a61f0f7982d16e304bd474cb6
Author: Dan Robson <dtr_bugzilla at apple.com>
Date: 2023-05-18 (Thu, 18 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.10.4
Identifier: 263769.39 at safari-7616.1.14.10-branch
Commit: fe600fae0ce82df84e7e8d03a9ca3e8cfe963491
https://github.com/WebKit/WebKit/commit/fe600fae0ce82df84e7e8d03a9ca3e8cfe963491
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-19 (Fri, 19 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
Identifier: 263769.40 at safari-7616.1.14.10-branch
Commit: bbc8deb87cf19ea0cbbaabad4d7a13865a295ab8
https://github.com/WebKit/WebKit/commit/bbc8deb87cf19ea0cbbaabad4d7a13865a295ab8
Author: Youenn Fablet <youennf at gmail.com>
Date: 2023-05-19 (Fri, 19 May 2023)
Changed paths:
M Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.h
M Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm
Log Message:
-----------
Cherry-pick 49ad76ecb745. rdar://problem/109220107
[iOS] AVCatpureDeviceManager should set userPreferrerCamera
https://bugs.webkit.org/show_bug.cgi?id=256882
rdar://109220107
Reviewed by Eric Carlson.
Before https://bugs.webkit.org/show_bug.cgi?id=255451, we were forcing the default camera to be the front camera using media constraints.
This was blocking edfaulting to higher priority cameras, hence the fix.
The drawback is that we are now fully relying on systemPreferredCamera to select the default camera.
systemPreferredCamera might change depending on which camera was last used by the application.
We do not want that behavior, so we use userPreferredCamera to state that we are more interested in the front camera than in the back cameras.
Other camneras should still be higher priority if available.
Manually tested.
* Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.h:
* Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:
(WebCore::AVCaptureDeviceManager::computeCaptureDevices):
(WebCore::AVCaptureDeviceManager::refreshCaptureDevicesInternal):
(WebCore::AVCaptureDeviceManager::setUserPreferredCamera):
(WebCore::AVCaptureDeviceManager::refreshCaptureDevices): Deleted.
Canonical link: https://commits.webkit.org/264165@main
Identifier: 263769.41 at safari-7616.1.14.10-branch
Commit: 524c0cd7a2893a17bb8305b3900ff71355ecafc7
https://github.com/WebKit/WebKit/commit/524c0cd7a2893a17bb8305b3900ff71355ecafc7
Author: Alan Baradlay <zalan at apple.com>
Date: 2023-05-19 (Fri, 19 May 2023)
Changed paths:
A LayoutTests/fast/inline/range-replace-partial-layout-invalidation-expected.html
A LayoutTests/fast/inline/range-replace-partial-layout-invalidation.html
M Source/WebCore/layout/formattingContexts/inline/invalidation/InlineInvalidation.cpp
Log Message:
-----------
Cherry-pick 8922f7c4d332. rdar://problem/109538333
(REGRESSION 262148 at main) No repaint when deleting text, possibly only when the deleted text spans more than one line
https://bugs.webkit.org/show_bug.cgi?id=257043
<rdar://109538333>
Reviewed by Antti Koivisto.
Normally while editing inline content in a content-editable container e.g
"This is some long
long long long
long text content"
and select/delete "long long text" (spanning over line#2 and #3)
What happens is RenderText receives a content mutation event pointing to the _beginning_ of "long long text".
As a result we damage line #2 and run a partial layout staring from line#2 until after we see no layout change anymore or we hit content end.
However some JS based editors call innerHTML instead to mimic editing steps turning the above example to a "range replace"
type of mutation where the entire text content is getting replaced with the "new", shortened content.
In such cases, instead of receiving the position of the actual damage, we end up with the offset value of 0
since the entire content is being replaced (even though it's just a slight change in the text content)
Now we damage line#0 and start running layout from the very first line until we see no layout change...which is the second line
since the actual damage is on the third line.
Since IFC does not support such mutations yet, in this patch we disable range based bailout which means while
we still run partial inline layout, we always go all the way to the bottom of the content.
/fast/inline/range-replace-partial-layout-invalidation-expected.html: Added.
* LayoutTests/fast/inline/range-replace-partial-layout-invalidation.html: Added.
* Source/WebCore/layout/formattingContexts/inline/invalidation/InlineInvalidation.cpp:
(WebCore::Layout::InlineInvalidation::textWillBeRemoved):
Canonical link: https://commits.webkit.org/264274@main
Identifier: 263769.42 at safari-7616.1.14.10-branch
Commit: 1573a06e8fe4e3b19ca5b130e9735bb5eef4e645
https://github.com/WebKit/WebKit/commit/1573a06e8fe4e3b19ca5b130e9735bb5eef4e645
Author: Brady Eidson <beidson at apple.com>
Date: 2023-05-19 (Fri, 19 May 2023)
Changed paths:
M Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj
Log Message:
-----------
Cherry-pick fbe202e644f1. rdar://problem/108176822
WebKitSwiftOverlay should (once again) include a WebKitAdditions overlay
https://bugs.webkit.org/show_bug.cgi?id=257046
rdar://109577606
Reviewed by Andy Estes.
Include WebKitAdditionsSwiftOverlay from a well known location.
* Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj:
Canonical link: https://commits.webkit.org/264278@main
Identifier: 263769.43 at safari-7616.1.14.10-branch
Commit: 4b95cae88a62817134aba45a4704425e428f094f
https://github.com/WebKit/WebKit/commit/4b95cae88a62817134aba45a4704425e428f094f
Author: Russell Epstein <repstein at apple.com>
Date: 2023-05-20 (Sat, 20 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.10.6
Identifier: 263319.494 at safari-7616.1.14.10-branch
Commit: 3c53d4ebf73eed6d0b6814287f852ec0bf5cbbc7
https://github.com/WebKit/WebKit/commit/3c53d4ebf73eed6d0b6814287f852ec0bf5cbbc7
Author: Dan Robson <dtr_bugzilla at apple.com>
Date: 2023-05-22 (Mon, 22 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.10.7
Identifier: 263769.45 at safari-7616.1.14.10-branch
Commit: 20fd0853e47f5ae9e1103b8cada61c3b4dba77f4
https://github.com/WebKit/WebKit/commit/20fd0853e47f5ae9e1103b8cada61c3b4dba77f4
Author: Matt Woodrow <mattwoodrow at apple.com>
Date: 2023-05-22 (Mon, 22 May 2023)
Changed paths:
M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp
M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h
M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.messages.in
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm
Log Message:
-----------
Cherry-pick d2f31696424a. rdar://problem/108642579
RemoteImageBufferProxyFlushState::waitForDidFlushOnSecondaryThread blocks on a task running on the main thread.
https://bugs.webkit.org/show_bug.cgi?id=256073
<rdar://108642579>
Reviewed by Simon Fraser.
We attempt to wait for flushes of RemoteImageBufferProxy on a background thread, but the 'didFlush' IPC message is received on the main thread.
This can mean it gets delayed (and we don't know the flush is completed) if the main thread is otherwise busy. This delays first-paint on CPLT.
This change passes a Semphore across to the GPUP instead of the flush identifier, and we signal it when the flush is completed rather than sending a return 'didFlush' message.
The WebProcess waits on each flush Semaphore in a background WorkQueue, and then processes the equivalent of 'didFlush' asynchronously and notifies the condition variable to wake any waiting threads.
waitForDidFlushWithTimeout is removed, and all waiters now use the waitForDidFlushOnSecondaryThread code path (renamed) since all waiters are now 'secondary' WRT the flushing WorkQueue.
Synchronous flushes now use a proper synchronous IPC message, rather than relying on async + wait.
Adds a 0-delay asynchronous callOnMainThread hop when triggering the rendering update from RemoteLaterTreeDisplayRefreshMonitor::requestRefreshCallback.
It appears that when doing the first requestRefreshCallback after idle, we currently just trigger a rendering update immediately, rather than waiting for displayDidRefresh. This differs
from the non-GPUP code.
This 0-delay step makes our behaviour more similar to the old code, but adding a proper displayDidRefresh wait would be preferable in the longer term.
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
(WebKit::RemoteDisplayListRecorder::flushContext):
(WebKit::RemoteDisplayListRecorder::flushContextSync):
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h:
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.messages.in:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::didFlush): Deleted.
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
(WebKit::RemoteDisplayListRecorderProxy::sendSync):
(WebKit::RemoteDisplayListRecorderProxy::flushContext):
(WebKit::RemoteDisplayListRecorderProxy::flushContextSync):
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp:
(WebKit::RemoteImageBufferProxy::flushDrawingContext):
(WebKit::RemoteImageBufferProxy::flushDrawingContextAsync):
(WebKit::RemoteImageBufferProxyFlushState::waitForDidFlush):
(WebKit::RemoteImageBufferProxy::waitForDidFlushWithTimeout): Deleted.
(WebKit::RemoteImageBufferProxyFlushState::waitForDidFlushOnSecondaryThread): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::RemoteRenderingBackendProxy):
(WebKit::RemoteRenderingBackendProxy::disconnectGPUProcess):
(WebKit::RemoteRenderingBackendProxy::addPendingFlush):
(WebKit::RemoteRenderingBackendProxy::waitForDidFlush): Deleted.
(WebKit::RemoteRenderingBackendProxy::didFlush): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:
(WebKit::RemoteLayerTreeDisplayRefreshMonitor::requestRefreshCallback):
Canonical link: https://commits.webkit.org/263993@main
Identifier: 263769.46 at safari-7616.1.14.10-branch
Commit: d58a337ccefff1e901d1957f8c104256504c3940
https://github.com/WebKit/WebKit/commit/d58a337ccefff1e901d1957f8c104256504c3940
Author: Dan Robson <dtr_bugzilla at apple.com>
Date: 2023-05-23 (Tue, 23 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.10.8
Identifier: 263769.47 at safari-7616.1.14.10-branch
Commit: 04d12df4bf77a57e340abcd3c6ad4dfc5243ede5
https://github.com/WebKit/WebKit/commit/04d12df4bf77a57e340abcd3c6ad4dfc5243ede5
Author: Jer Noble <jer.noble at apple.com>
Date: 2023-05-24 (Wed, 24 May 2023)
Changed paths:
M Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm
Log Message:
-----------
Cherry-pick 0c7bb633923a. rdar://problem/109528876
[iOS] Auto-PiP on Yahoo.com may display black feed
https://bugs.webkit.org/show_bug.cgi?id=257059
rdar://109528876
Reviewed by Eric Carlson.
Auto-PiP (as opposed to an explicit PiP operation) works by creating a empty WebAVPlayerLayerView,
and WebAVPlayerViewController, and returning YES from the
-playerViewControllerShouldStartPictureInPictureFromInlineWhenEnteringBackground: delegate. However,
auto-PiP will transfer the video view from the empty WebAVPlayerLayerView to the PiP window, and if
the empty view doesn't have a video view, the resulting PiP window will be empty.
* Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:
(VideoFullscreenInterfaceAVKit::doSetup):
Canonical link: https://commits.webkit.org/264307@main
Identifier: 262728.1089 at safari-7616.1.14.10-branch
Commit: c8446e404ceb5d71b856412ff0a9bee80f7813d1
https://github.com/WebKit/WebKit/commit/c8446e404ceb5d71b856412ff0a9bee80f7813d1
Author: Russell Epstein <repstein at apple.com>
Date: 2023-05-24 (Wed, 24 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.10.8
Identifier: 262728.1090 at safari-7616.1.14.10-branch
Commit: 645d9c0b8064c4ba437dda9efb28d90338b06232
https://github.com/WebKit/WebKit/commit/645d9c0b8064c4ba437dda9efb28d90338b06232
Author: Dan Robson <dtr_bugzilla at apple.com>
Date: 2023-05-24 (Wed, 24 May 2023)
Changed paths:
A LayoutTests/fast/images/decode-decoding-change-image-src-expected.html
A LayoutTests/fast/images/decode-decoding-change-image-src.html
M LayoutTests/fast/images/decoding-attribute-async-small-image.html
M LayoutTests/fast/images/decoding-attribute-dynamic-async-small-image.html
M Source/WebCore/rendering/RenderBoxModelObject.cpp
Log Message:
-----------
Apply patch. rdar://problem/108930635
Identifier: 263769.50 at safari-7616.1.14.10-branch
Commit: 0cc8a5f9a958a35aa9c45d58babd18b8034c9566
https://github.com/WebKit/WebKit/commit/0cc8a5f9a958a35aa9c45d58babd18b8034c9566
Author: Brent Fulgham <bfulgham at apple.com>
Date: 2023-05-24 (Wed, 24 May 2023)
Changed paths:
M Source/WebKit/GPUProcess/GPUProcess.cpp
M Source/WebKit/GPUProcess/GPUProcess.h
M Source/WebKit/GPUProcess/GPUProcess.messages.in
M Source/WebKit/GPUProcess/GPUProcessCreationParameters.cpp
M Source/WebKit/GPUProcess/GPUProcessCreationParameters.h
M Source/WebKit/UIProcess/Cocoa/GPUProcessProxyCocoa.mm
M Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm
M Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
M Source/WebKit/UIProcess/GPU/GPUProcessProxy.h
Log Message:
-----------
Cherry-pick 20d3e87d7269. rdar://problem/107631614
[Cocoa] Extend access to the 'com.apple.gputools.service' mach service if Web Inspector is enabled
https://bugs.webkit.org/show_bug.cgi?id=256673
<rdar://107631614>
Reviewed by Per Arne Vollan.
Access to the `com.apple.gputools.service` mach service is denied to the GPU Process.
Unfortunately, some developer diagnostic tools for graphics investigation need this
access to work.
We should have the UI Process extend permission for the GPU Process to talk to relevant
services when the Web Inspector has been enabled.
* Source/WebKit/GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::initializeGPUProcess): Consume the GPU tools extensions if present.
(WebKit::GPUProcess::updateSandboxAccess): Move outside the MEDIA_SESSION enablement macro
so we can use it for WebInspector purposes.
* Source/WebKit/GPUProcess/GPUProcess.h:
* Source/WebKit/GPUProcess/GPUProcess.messages.in: Ditto.
* Source/WebKit/GPUProcess/GPUProcessCreationParameters.cpp:
(WebKit::GPUProcessCreationParameters::encode const): Update for additional sandbox extensions.
(WebKit::GPUProcessCreationParameters::decode): Ditto.
* Source/WebKit/GPUProcess/GPUProcessCreationParameters.h:
* Source/WebKit/UIProcess/Cocoa/GPUProcessProxyCocoa.mm:
(WebKit::GPUProcessProxy::platformInitializeGPUProcessParameters): Add GPU tools extensions to
process launch parameters if needed.
(WebKit::GPUProcessProxy::createGPUToolsSandboxExtensionHandlesIfNeeded): Added.
* Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess): Extend GPU tools extensions to the GPU
process if they haven't been sent before, but the WebInspector is now enabled.
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::GPUProcessProxy::GPUProcessProxy):
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.h:
Canonical link: https://commits.webkit.org/264029@main
Identifier: 263769.51 at safari-7616.1.14.10-branch
Commit: 835f87755a7f426c0466686af51bf08015487155
https://github.com/WebKit/WebKit/commit/835f87755a7f426c0466686af51bf08015487155
Author: Brent Fulgham <bfulgham at apple.com>
Date: 2023-05-24 (Wed, 24 May 2023)
Changed paths:
M Source/WebKit/GPUProcess/GPUProcess.cpp
M Source/WebKit/GPUProcess/cocoa/GPUProcessCocoa.mm
Log Message:
-----------
Cherry-pick fe4af8b17fb6. rdar://problem/109380900
[Cocoa] Call [AVCaptureDevice ensureServerConnection] when new extensions are made to the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=257241
<rdar://109380900>
Reviewed by Eric Carlson.
Our current code only calls [AVCaptureDevice ensureServerConnection] the first time we extend the sandbox.
This can lead to problems if the user visits a site that only needs Microphone access (for example), and
then visits a site that needs Camera access. Because the camera-related extensions are only recognized by
the video capture system when [AVCaptureDevice ensureServiceConnection] is called, the fact that we called
it before the new sandbox extensions were in place mean we never activate the relevant features.
To fix this, we should simply call [AVCaptureDevice ensureServerConnection] any time we extend the sandbox.
I have confirmed with the relevant teams that this call is low-cost (performance wise), and is not harmful
to call repeatedly for things that have already been activated.
This patch also adds new logging to help debug similar problems in the future.
* Source/WebKit/GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::updateSandboxAccess): Add logging.
(WebKit::GPUProcess::updateCaptureAccess): Ditto.
* Source/WebKit/GPUProcess/cocoa/GPUProcessCocoa.mm:
(WebKit::GPUProcess::ensureAVCaptureServerConnection): Add new logging, no longer make this a 'std::call_once'.
Canonical link: https://commits.webkit.org/264460@main
Identifier: 263769.52 at safari-7616.1.14.10-branch
Commit: 042a2b78092aa533dbdcae79cb6ad51e1d4fe9d2
https://github.com/WebKit/WebKit/commit/042a2b78092aa533dbdcae79cb6ad51e1d4fe9d2
Author: J Pascoe <j_pascoe at apple.com>
Date: 2023-05-24 (Wed, 24 May 2023)
Changed paths:
M Source/WebKit/UIProcess/WebAuthentication/Cocoa/CcidService.h
M Source/WebKit/UIProcess/WebAuthentication/Cocoa/CcidService.mm
Log Message:
-----------
Cherry-pick 52e6f05d3e91. rdar://problem/109060751
[WebAuthn] Clean up observers in CcidService
https://bugs.webkit.org/show_bug.cgi?id=257240
rdar://109060751
Reviewed by Brent Fulgham.
This change ensures removeObserver:forKeyPath: is called for each observer we
add via addObserver in CcidService.
* Source/WebKit/UIProcess/WebAuthentication/Cocoa/CcidService.h:
* Source/WebKit/UIProcess/WebAuthentication/Cocoa/CcidService.mm:
(WebKit::CcidService::~CcidService):
(WebKit::CcidService::removeObservers):
(WebKit::CcidService::platformStartDiscovery):
(WebKit::CcidService::updateSlots):
(-[_WKSmartCardSlotStateObserver observeValueForKeyPath:ofObject:change:context:]):
(-[_WKSmartCardSlotStateObserver removeObserver]):
Canonical link: https://commits.webkit.org/264485@main
Identifier: 263769.53 at safari-7616.1.14.10-branch
Commit: 5c1e0cc622259fbba9afb8641f378e7dd6ef0ce1
https://github.com/WebKit/WebKit/commit/5c1e0cc622259fbba9afb8641f378e7dd6ef0ce1
Author: Dan Robson <dtr_bugzilla at apple.com>
Date: 2023-05-24 (Wed, 24 May 2023)
Changed paths:
M Source/WebKit/GPUProcess/GPUProcess.cpp
M Source/WebKit/GPUProcess/cocoa/GPUProcessCocoa.mm
Log Message:
-----------
Revert "Cherry-pick fe4af8b17fb6. rdar://problem/109380900"
This reverts commit 835f87755a7f426c0466686af51bf08015487155.
Identifier: 263769.54 at safari-7616.1.14.10-branch
Commit: 0ba620bea6e184f92865472d6ef69f7086f7b23b
https://github.com/WebKit/WebKit/commit/0ba620bea6e184f92865472d6ef69f7086f7b23b
Author: Dan Robson <dtr_bugzilla at apple.com>
Date: 2023-05-24 (Wed, 24 May 2023)
Changed paths:
M Source/WebKit/GPUProcess/GPUProcess.cpp
M Source/WebKit/GPUProcess/GPUProcess.h
M Source/WebKit/GPUProcess/GPUProcess.messages.in
M Source/WebKit/GPUProcess/GPUProcessCreationParameters.cpp
M Source/WebKit/GPUProcess/GPUProcessCreationParameters.h
M Source/WebKit/UIProcess/Cocoa/GPUProcessProxyCocoa.mm
M Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm
M Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
M Source/WebKit/UIProcess/GPU/GPUProcessProxy.h
Log Message:
-----------
Revert "Cherry-pick 20d3e87d7269. rdar://problem/107631614"
This reverts commit 0cc8a5f9a958a35aa9c45d58babd18b8034c9566.
Identifier: 263769.55 at safari-7616.1.14.10-branch
Commit: 67f23c4f71fe18a56c29f4088b6ce469f9b3160b
https://github.com/WebKit/WebKit/commit/67f23c4f71fe18a56c29f4088b6ce469f9b3160b
Author: Russell Epstein <repstein at apple.com>
Date: 2023-05-25 (Thu, 25 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.10.9
Identifier: 262728.1097 at safari-7616.1.14.10-branch
Commit: 723517a531bdfc0f82a93def21fc59b7129c9a53
https://github.com/WebKit/WebKit/commit/723517a531bdfc0f82a93def21fc59b7129c9a53
Author: Kimmo Kinnunen <kkinnunen at apple.com>
Date: 2023-05-25 (Thu, 25 May 2023)
Changed paths:
M Source/WebCore/platform/ScrollbarsController.h
M Source/WebCore/platform/graphics/cocoa/IOSurface.h
M Source/WebCore/platform/graphics/cocoa/IOSurface.mm
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
M Source/WebKit/SourcesCocoa.txt
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp
A Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.cpp
A Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollbarsController.h
Log Message:
-----------
Cherry-pick b9e5b9ff4fe9. rdar://problem/106651668
Cocoa Small RemoteLayerBackingStores should be drawn with software
https://bugs.webkit.org/show_bug.cgi?id=253447
rdar://problem/106651668
Reviewed by Simon Fraser.
Add a specific GPUP side backend for ImageBitmaps used for LayerBacking
purposes, e.g. RemoteLayerBackingStore buffers. The buffers are drawn
to with software rasterization.
Fixes a bug in RemoteDisplayListRecorderProxy::createImageBuffer where
intermediate ImageBuffers for filters would be created as Layer
rendering purpose, where as the Layer purpose is supposed to be only
for the Layer backing stores.
Fixes a bug in RenderingPurpose where missing ShareableLocalSnapshot
was not part of the enum serialization, making the serialization
incorrect.
* Source/WebCore/platform/ScrollbarsController.h:
* Source/WebCore/platform/graphics/cocoa/IOSurface.h:
* Source/WebCore/platform/graphics/cocoa/IOSurface.mm:
(WebCore::IOSurface::createBitmapPlatformContext):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::isSmallLayerBacking):
(WebKit::RemoteRenderingBackend::createImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::prepareLayerBuffersForDisplay):
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/SourcesCocoa.txt:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
(WebKit::RemoteDisplayListRecorderProxy::createImageBuffer const):
* Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.cpp: Added.
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::create):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::ImageBufferShareableMappedIOSurfaceBitmapBackend):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::createBackendHandle const):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::context):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::setOwnershipIdentity):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::backendSize const):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::bytesPerRow const):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::copyNativeImage):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::copyNativeImageForDrawing):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::sinkIntoNativeImage):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::isInUse const):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::releaseGraphicsContext):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::setVolatile):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::setNonVolatile):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::volatilityState const):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::setVolatilityState):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::transferToNewContext):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::getPixelBuffer):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::putPixelBuffer):
* Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.h: Added.
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollbarsController.h:
Canonical link: https://commits.webkit.org/264004@main
Identifier: 262728.1098 at safari-7616.1.14.10-branch
Commit: b9dabf6ac3b91d32a7ed58cdd7a0b258bbb63224
https://github.com/WebKit/WebKit/commit/b9dabf6ac3b91d32a7ed58cdd7a0b258bbb63224
Author: Matthew Finkel <sysrqb at apple.com>
Date: 2023-05-25 (Thu, 25 May 2023)
Changed paths:
M Source/WebCore/html/CanvasBase.cpp
Log Message:
-----------
Cherry-pick 1212e9728215. rdar://problem/109318643
Ensure we have an image buffer before considering Canvas noise
https://bugs.webkit.org/show_bug.cgi?id=257143
rdar://109318643
Reviewed by Matt Woodrow.
If we don't have a ImageBuffer, then we don't have a canvas that needs
post-processing. We can shortcircuit this path by checking if the image buffer
is present.
* Source/WebCore/html/CanvasBase.cpp:
(WebCore::CanvasBase::shouldInjectNoiseBeforeReadback const):
Canonical link: https://commits.webkit.org/264427@main
Identifier: 263769.58 at safari-7616.1.14.10-branch
Commit: 6ddbb89bf57125c8c6c33594892485d2e7119fd9
https://github.com/WebKit/WebKit/commit/6ddbb89bf57125c8c6c33594892485d2e7119fd9
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-25 (Thu, 25 May 2023)
Changed paths:
M Source/WebCore/platform/ScrollbarsController.h
M Source/WebCore/platform/graphics/cocoa/IOSurface.h
M Source/WebCore/platform/graphics/cocoa/IOSurface.mm
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
M Source/WebKit/SourcesCocoa.txt
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp
R Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.cpp
R Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollbarsController.h
Log Message:
-----------
Revert Cherry-pick rdar://106651668 (MotionMark marketing benchmark regressed 3% (Cocoa Small RemoteLayerBackingStores should be drawn with software (253447)))
* Source/WebCore/platform/ScrollbarsController.h:
* Source/WebCore/platform/graphics/cocoa/IOSurface.h:
* Source/WebCore/platform/graphics/cocoa/IOSurface.mm:
(WebCore::IOSurface::createBitmapPlatformContext): Deleted.
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::createImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::prepareLayerBuffersForDisplay):
(WebKit::isSmallLayerBacking): Deleted.
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/SourcesCocoa.txt:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
(WebKit::RemoteDisplayListRecorderProxy::createImageBuffer const):
* Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.cpp: Removed.
* Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.h: Removed.
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollbarsController.h:
Identifier: 263769.59 at safari-7616.1.14.10-branch
Commit: e425ec5b722931bfbfda91d9f52733152fbc4284
https://github.com/WebKit/WebKit/commit/e425ec5b722931bfbfda91d9f52733152fbc4284
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-26 (Fri, 26 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.10.10
Identifier: 263769.60 at safari-7616.1.14.10-branch
Commit: cb082b2e116b3103fd1a99e26ffc827f135dd509
https://github.com/WebKit/WebKit/commit/cb082b2e116b3103fd1a99e26ffc827f135dd509
Author: Brent Fulgham <bfulgham at apple.com>
Date: 2023-05-26 (Fri, 26 May 2023)
Changed paths:
M Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.in
Log Message:
-----------
Cherry-pick 21a4b1c5559f. rdar://problem/109409569
[iOS] REGRESSION (264028 at main): Memory regression
https://bugs.webkit.org/show_bug.cgi?id=257126
<rdar://109409569>
Reviewed by Per Arne Vollan.
Relaxing the iOS GPU Process Sandbox in Bug 256728 had the unintended effect of increasing memory use. Since blocking this call didn't create any functional issues, but regressed memory, we will instead silence the logging to avoid flooding telemetry with irrelevant logging.
* Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.in:
Canonical link: https://commits.webkit.org/264386@main
Identifier: 263769.61 at safari-7616.1.14.10-branch
Commit: 1cd2f18593f45e6d812afbf40042e03de29dd545
https://github.com/WebKit/WebKit/commit/1cd2f18593f45e6d812afbf40042e03de29dd545
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-31 (Wed, 31 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.10.11
Identifier: 263319.512 at safari-7616.1.14.10-branch
Commit: 238d8991db20c6ce660ca5aa56d0569469c6500e
https://github.com/WebKit/WebKit/commit/238d8991db20c6ce660ca5aa56d0569469c6500e
Author: Per Arne Vollan <pvollan at apple.com>
Date: 2023-05-31 (Wed, 31 May 2023)
Changed paths:
M Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in
Log Message:
-----------
Cherry-pick 46d0ad25749c. rdar://problem/109916897
Fix syscall sandbox violations in Lockdown Mode
https://bugs.webkit.org/show_bug.cgi?id=257542
rdar://109916897
Reviewed by Brent Fulgham and Chris Dumez.
Fix syscall sandbox violations in Lockdown Mode in the WebContent process on iOS.
These have been identified from telemetry and local reports.
* Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
Canonical link: https://commits.webkit.org/264743@main
Identifier: 263319.513 at safari-7616.1.14.10-branch
Commit: 1484f73a1aad72dca500cdb222d55820134e470c
https://github.com/WebKit/WebKit/commit/1484f73a1aad72dca500cdb222d55820134e470c
Author: Dan Robson <dtr_bugzilla at apple.com>
Date: 2023-05-31 (Wed, 31 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.10.12
Identifier: 263769.64 at safari-7616.1.14.10-branch
Commit: 778737e5c78b604d21e9158f14846d627a63e4dd
https://github.com/WebKit/WebKit/commit/778737e5c78b604d21e9158f14846d627a63e4dd
Author: Dan Robson <dtr_bugzilla at apple.com>
Date: 2023-05-31 (Wed, 31 May 2023)
Changed paths:
M Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.in
Log Message:
-----------
Revert "Cherry-pick 21a4b1c5559f. rdar://problem/109409569"
This reverts commit cb082b2e116b3103fd1a99e26ffc827f135dd509.
Identifier: 263769.65 at safari-7616.1.14.10-branch
Compare: https://github.com/WebKit/WebKit/compare/47212f0dff65%5E...778737e5c78b
More information about the webkit-changes
mailing list