On Mon, 10 Mar 2025 20:30:43 GMT, Andy Goryachev <ango...@openjdk.org> wrote:

>> Summary
>> -------
>> 
>> Adds a thread check to a number of `Platform` methods:
>> 
>> accessibilityActiveProperty()
>> getPreferences()
>> isAccessibilityActive()
>> 
>> These methods will throw an `IllegalStateException` if called on a thread 
>> other than the JavaFX Application Thread.
>> 
>> Problem
>> -------
>> 
>> JavaFX allows the Nodes and Scenes to be created and modified on any thread 
>> as long as they are not yet attached to a `Window` that is showing.
>> 
>> This is allowed in an implicit assumption that the construction code only 
>> modifies the properties of the said Nodes and Scenes, but not other static 
>> or global entities.  Concurrent multi-threaded access of such entities not 
>> only breaks the initialization of the properties, but also causes the 
>> failures down the road, if the change to the global properties happens while 
>> the Nodes and Scenes are still being constructed.
>> 
>> Even JavaFX platform developers did not avoid tripping over this issue, as 
>> can be illustrated by https://bugs.openjdk.org/browse/JDK-8348987 . 
>> 
>> Solution
>> --------
>> 
>> Fail each method fast with an  `IllegalStateException` if called from a 
>> background thread.
>> 
>> While this solution won't prevent other possible abuse, such as getting a 
>> reference to the property in the JavaFX Application Thread and later 
>> accessing it in a background thread, adding a check and allowing these 
>> methods to fail fast should prevent most likely scenarios.
>
> Andy Goryachev has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   get preferences

Looks good. I left one minor comment on the test.

tests/system/src/test/java/test/javafx/application/PlatformTest.java line 129:

> 127: 
> 128:     @Test
> 129:     public void accessibilityActiveNotOnFxThread() {

Minor: Since you now also test `Platform::getPreferences` you might consider 
renaming this test method.

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

Marked as reviewed by kcr (Lead).

PR Review: https://git.openjdk.org/jfx/pull/1728#pullrequestreview-2682396958
PR Review Comment: https://git.openjdk.org/jfx/pull/1728#discussion_r1993769589

Reply via email to