[Webkit-unassigned] [Bug 161450] No reliable way to get a snapshot of WKWebView (macOS)
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Tue Jan 31 17:53:01 PST 2017
https://bugs.webkit.org/show_bug.cgi?id=161450
--- Comment #45 from Tim Horton <thorton at apple.com> ---
Comment on attachment 300288
--> https://bugs.webkit.org/attachment.cgi?id=300288
Patch
View in context: https://bugs.webkit.org/attachment.cgi?id=300288&action=review
> Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewSnapshot.mm:28
> +#if WK_API_ENABLED
Do these tests work with different display colorspaces? We should test with a few.
> Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewSnapshot.mm:44
> + RetainPtr<CGImageSourceRef> source = adoptCF(CGImageSourceCreateWithData((CFDataRef)[image TIFFRepresentation], NULL));
> + return adoptCF(CGImageSourceCreateImageAtIndex(source.get(), 0, NULL));
Is there any reason this doesn't just use CGImageForProposedRect?
> Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewSnapshot.mm:54
> + CGImageRef cgImage = [image CGImage];
> + CFRetain(cgImage);
> + return adoptCF(cgImage);
No need for this dance, just 'return image.CGImage;' will do the right thing (it is autoreleased, RetainPtr constructor will retain it).
> Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewSnapshot.mm:73
> + WKSnapshotConfiguration *snapshotConfiguration = [[WKSnapshotConfiguration alloc] init];
Pretty sure this leaks.
> Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewSnapshot.mm:94
> + [webView loadHTMLString:@"<body style='background-color: red;'><div style='background-color: blue;position: absolute;width: 100px; height: 100px; top: 50px; left: 50px'></div></body>" baseURL:nil];
Spaces after semicolons? Kind of inconsistent at the moment.
> Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewSnapshot.mm:97
> + WKSnapshotConfiguration *snapshotConfiguration = [[WKSnapshotConfiguration alloc] init];
Pretty sure this leaks.
> Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewSnapshot.mm:99
> + snapshotConfiguration.snapshotWidth = viewWidth;
Here, viewWidth is being used as points...
> Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewSnapshot.mm:108
> + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
Why not a RetainPtr?
> Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewSnapshot.mm:111
> + CGContextRef context = CGBitmapContextCreate(rgba, viewWidth, viewHeight, 8, 4 * viewWidth, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
... and here as pixels. Does this matter? Does the test succeed on hardware of various deviceScaleFactors?
Also, why not a RetainPtr?
> Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewSnapshot.mm:112
> + CGContextDrawImage(context, CGRectMake(0, 0, viewWidth, viewHeight), cgImage.get());
Or maybe it's OK because it gets scaled into place here?
> Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewSnapshot.mm:148
> + WKSnapshotConfiguration *snapshotConfiguration = [[WKSnapshotConfiguration alloc] init];
Pretty sure this leaks.
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20170201/884c6025/attachment.html>
More information about the webkit-unassigned
mailing list