Title: [295648] trunk/Source/WebKit
- Revision
- 295648
- Author
- [email protected]
- Date
- 2022-06-17 16:47:50 -0700 (Fri, 17 Jun 2022)
Log Message
Avoid using hardware JPEG decoding in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=241560
<rdar://94474188>
Reviewed by Simon Fraser.
This patch switches the file thumbnail logic in WebKit to use PNG, rather than JPEG.
This provides two benefits: (1) it uses a better image format for this use case,
and (2) it avoids attempts by CoreGraphics to perform hardware JPEG decoding in the
WebContent process, which is prohibited by the current sandbox.
* Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.mm:
(-[WKFileUploadPanel _chooseFiles:displayString:iconImage:]): Switch to using UIImagePNGRepresentation.
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didChooseFilesForOpenPanelWithDisplayStringAndIcon):
Canonical link: https://commits.webkit.org/251653@main
Modified Paths
Diff
Modified: trunk/Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.mm (295647 => 295648)
--- trunk/Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.mm 2022-06-17 23:18:36 UTC (rev 295647)
+++ trunk/Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.mm 2022-06-17 23:47:50 UTC (rev 295648)
@@ -436,8 +436,8 @@
for (NSURL *fileURL in fileURLs)
filenames.uncheckedAppend(String::fromUTF8(fileURL.fileSystemRepresentation));
- NSData *jpeg = UIImageJPEGRepresentation(iconImage, 1.0);
- RefPtr<API::Data> iconImageDataRef = adoptRef(toImpl(WKDataCreate(reinterpret_cast<const unsigned char*>([jpeg bytes]), [jpeg length])));
+ NSData *png = UIImagePNGRepresentation(iconImage);
+ RefPtr<API::Data> iconImageDataRef = adoptRef(toImpl(WKDataCreate(reinterpret_cast<const unsigned char*>([png bytes]), [png length])));
_listener->chooseFiles(filenames, displayString, iconImageDataRef.get());
[self _dispatchDidDismiss];
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (295647 => 295648)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2022-06-17 23:18:36 UTC (rev 295647)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2022-06-17 23:47:50 UTC (rev 295648)
@@ -4969,7 +4969,7 @@
if (!iconData.empty()) {
RetainPtr<CFDataRef> dataRef = adoptCF(CFDataCreate(nullptr, iconData.data(), iconData.size()));
RetainPtr<CGDataProviderRef> imageProviderRef = adoptCF(CGDataProviderCreateWithCFData(dataRef.get()));
- RetainPtr<CGImageRef> imageRef = adoptCF(CGImageCreateWithJPEGDataProvider(imageProviderRef.get(), nullptr, true, kCGRenderingIntentDefault));
+ RetainPtr<CGImageRef> imageRef = adoptCF(CGImageCreateWithPNGDataProvider(imageProviderRef.get(), nullptr, true, kCGRenderingIntentDefault));
icon = Icon::createIconForImage(WTFMove(imageRef));
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes