On Mon, 15 Nov 2021 11:19:13 GMT, Jose Pereda <jper...@openjdk.org> wrote:

> This PR fixes an exception that can happen when dragging an image from a 
> WebView on macOS.
> 
> Dragging an image that is directly included like `<img src="some image"/>` 
> works fine, without exception. However, there are (at least) two other cases 
> when the IAE is thrown: 
> 
> - Dragging an image that is part of an hyperlink, like `<a href="some 
> url"><img src="some image"/></a>`.
> - Dragging an image encoded as base64.
> 
> The IAE happens only on macOS, where a native image is created in 
> `GlassPasteboard.m` from an URL, and in those two cases the generated image 
> has 0x0 dimensions:
>  
> `<NSImage 0x... Size={0, 0} ...>`
> 
> which leads to `ByteArrayFromPixels` being called with a null byte array. 
> 
> The included test reproduces the case by directly pushing the `MacPasteboard` 
> content (instead of adding a more complex test with a webView and a drag and 
> drop gesture).

The fix looks good. The test looks good with one minor comment.

tests/system/src/test/java/test/com/sun/glass/ui/mac/MacPasteboardTest.java 
line 56:

> 54:     public static void setup() throws Exception {
> 55:         Platform.startup(() -> {
> 56:             if (PlatformUtil.isMac()) {

Minor: it might be cleaner to wrap the entire body of the `setup` and 
`teardown` methods in `if (PlatformUtil.isMac())` so that we don't even start 
FX on platforms other than macOS.

-------------

PR: https://git.openjdk.java.net/jfx/pull/668

Reply via email to