[OpenJDK 2D-Dev] RFR: 8254825: Monitoring available clipboard formats should be done via new Windows APIs [v2]

Daniel Kamil Kozar github.com+127875+xavery at openjdk.java.net
Sun Oct 25 18:41:48 UTC 2020


> This change replaces the usage of SetClipboardViewer with Add/RemoveClipboardFormatListener, introduced in Windows Vista. This makes OpenJDK immune to external applications failing to process clipboard messages properly.
> I have put this proposal forward in the [mailing list](https://mail.openjdk.java.net/pipermail/awt-dev/2020-July/015990.html), which was tentatively accepted by Mr. Sergey Bylokhov.
> 
> The deficiencies of the old APIs are well known and might result in some subscribed applications not receiving notifications from the operating system, as they rely on all the applications in the current clipboard chain processing clipboard messages properly. Porting the code to use the new APIs not only makes OpenJDK immune to these issues, but also results in slightly less code needed to support clipboard-related functionality.
> 
> As this is a change that's very platform-specific, I don't think providing a unit test is practical, as it would also require providing a native application that runs alongside the test and deliberately breaks the keyboard chain, resulting in OpenJDK not being able to receive clipboard format change notifications. This is a bug/limitation of the old Windows API, not OpenJDK itself. Anyhow, the already existing ClipboardInterVMTest passes, which shows that already existing functionality is not impacted by this change.
> 
> I have prepared a proof-of-concept test which illustrates the deficiencies of the old API, however it is not integrated with the test suite, as it requires compiling a native WinAPI application. I will gladly share the source if needed.

Daniel Kamil Kozar has updated the pull request incrementally with one additional commit since the last revision:

  Update copyright headers to 2020

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/594/files
  - new: https://git.openjdk.java.net/jdk/pull/594/files/c39c39a5..be1b6cbf

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=594&range=01
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=594&range=00-01

  Stats: 3 lines in 3 files changed: 0 ins; 0 del; 3 mod
  Patch: https://git.openjdk.java.net/jdk/pull/594.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/594/head:pull/594

PR: https://git.openjdk.java.net/jdk/pull/594


More information about the 2d-dev mailing list