RFR: 8319669: [macos14] Running any JavaFX app prints Secure coding warning [v2]

Harshitha Onkar honkar at openjdk.org
Fri Nov 10 00:39:09 UTC 2023


On Wed, 8 Nov 2023 19:43:24 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:

>> Fix [JDK-8319669](https://bugs.openjdk.org/browse/JDK-8319669) as follows:
>> 
>> 1. Override the `NSApplicationDelegate` method `applicationSupportsSecureRestorableState` in `GlassApplication` and return `YES`. This silences the warning that FX applications now get on macOS 14.
>> 2. Create and initialize an `NSApplicationFX` subclass of `NSApplication` with no additional functionality. This stops AWT from overwriting the NSApplicationDelegate (`GlassApplication`) that JavaFX sets during toolkit initialization in the case where the AWT toolkit is used from a JavaFX Application (e.g., when using SwingNode or other Swing functionality), and is necessary in order to safely do the above. It also fixes other problems that can result from the delegate being overwritten.
>> 
>> As noted in the bug report, this PR solves the following problems:
>> 
>> * Eliminates the "Secure coding is not enabled for restorable state" warning on macOS 14
>> * The assertion error reported in [JDK-8318129](https://bugs.openjdk.org/browse/JDK-8318129)
>> 
>> * The FX application stops getting messages when the application is hidden, deactivated, reactivated, etc. We currently don't do anything with these messages once the application is running, but we might do so in the future.
>> 
>> * Probably related to the above, we sometimes get an odd behavior when trying to hide an application on macOS 13 using the CMD-H key after the AWT Toolkit has been initialized. Instead of hiding the window, it pops up a finder window with a folder icon and a label that shows the version of Java.
>> 
>> * If AWT and FX return a different answer from their delegate's `applicationSupportsSecureRestorableState` method, it will crash on macOS 13.x.
>> 
>> This is the FX equivalent of [JDK-8318854](https://bugs.openjdk.org/browse/JDK-8318854) in AWT.
>
> Kevin Rushforth has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fix typo: remove redundant `isEmbedded =` assignement

Fix looks good and works well with the corresponding JDK patch

Tested by applying JavaFX changes + corresponding JDK patch. Testing looks good on older macOS version and macOS 14.1 GA. 

All combinations of patched/unpatched JDK and patched/unpatched FX along with different combinations of env vars was tested.

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

Marked as reviewed by honkar (no project role).

PR Review: https://git.openjdk.org/jfx/pull/1280#pullrequestreview-1723740084
PR Comment: https://git.openjdk.org/jfx/pull/1280#issuecomment-1804892483


More information about the openjfx-dev mailing list