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

Reply via email to