On Thu, 12 Jan 2023 11:11:23 GMT, Lukasz Kostyra <lkost...@openjdk.org> wrote:

> Windows implementation of GlassClipboard.cpp uses IStorage interface in 
> `PopImage()` to allocate a temporary file, which is then used to capture 
> Image data from system clipboard and move it to JVM side. In order for 
> temporary file to be removed automatically on `IStorage::Release()`, 
> `StgCreateDocfile` API requires passing STGM_DELETEONRELEASE flag - otherwise 
> the file will be left behind when IStorage is released. Contents of temporary 
> file are immediately copied to a JNI Byte Array after acquiring them from 
> clibpoard, so it is safe to provide this flag and remove the file after 
> `PopImage()` is done.
> 
> Creating a unit test for this case would a bit difficult, as IStorage and its 
> file are created with random temporary name each time, which we cannot easily 
> access. On the other hand, just scouting the temp directory for any leftover 
> .TMP files might prove false results, as other apps or even JFX itself might 
> use IStorage temporary files for some other purposes than managing clipboard 
> images. As such, because this is a simple API change, I did not make a test 
> for this.
> 
> Tested this change on Windows 10 and it doesn't break any existing tests. 
> Calling `Clipboard.getSystemClipboard().getImage()` with an image stored 
> inside the system clipboard now leaves no leftover files.

We could do it this way, my main worry is that during the test some other 
application running in the system will use the Temp directory (ex. add a 
temporary file of its own between pre- and post-`getImage()`) and disturb with 
the test result. The chances of that happening are very small, but still not 
zero.

If we did this only for Windows, we could eventually filter through the list 
and look only at files ending in `.TMP`. Then the above scenario will have even 
less chances of happening.

If such a situation is not a big cause of concern I can implement the test and 
add it to this PR.

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

PR: https://git.openjdk.org/jfx/pull/994

Reply via email to