> This PR removes support for running JavaFX applications with the Java 
> Security Manager.
> 
> The initial work was done in 4 separate commits as follows:
> 
> * Fail fast at startup if the Security Manager is enabled
> * Remove `-Djava.security.manager` and all security policy files; delete 
> `SandboxAppTest`
> * Delete remaining tests that depend on the Security Manager; as part of 
> this, I renamed`CustomSecurityManagerTest` to `StageRobotTest` and removed 
> all of the tests that depend on the security manager, since the test methods 
> that don't depend on SM are useful functional tests of a Stage's FullScreen 
> and AlwaysOnTop mode.
> * API spec change to remove mention of security manager (including mention of 
> throwing SecurityException)
> 
> This PR is both necessary and sufficient to remove support for running with 
> the Java Security Manager enabled. I have tested this with JDK 23, which 
> still has SM support (although deprecated for removal), and with a local JDK 
> built from the 
> [jdk-sandbox:jep486](https://github.com/openjdk/jdk-sandbox/tree/jep486) 
> branch, which has the SM disabled. With both JDKs, I can build and run this 
> PR branch; all tests pass. Attempting to enable the security manager with JDK 
> 23 will now fail in `<clinit>` of either `LauncherImpl` (called by 
> `Application.launch`) or `PlatformImpl` (called by `Platform.startup`) with 
> an informative error message.
> 
> This PR should be integrated prior to the integration of JEP 486, so that we 
> can continue to run JavaFX tests on JDK 24 after the SM is disabled. 
> Otherwise they will fail to run with a fatal error launching the JVM (we 
> currently pass `-Djava.security.manager=allow` when running our tests).
> 
> #### Follow-on work
> 
> I will file additional JBS issues to track follow-up work to cleanup the 
> remaining calls to the security manager methods that are deprecated for 
> removal. The follow-up work can be done independently of the timing of the 
> integration of JEP 486 into JDK 24, but all of them will be targeted for 
> JavaFX 24.
> 
> Follow-on issues for JavaFX 24:
> 
> * Remove all calls to `doPrivileged` (there are 350 such calls in 168 files)
> * Remove all other calls to `AccessController` (48 calls in 33 files)
> * Remove all remaining calls to `System::getSecurityManager` (45 calls in 27 
> files)
> * Remove calls to deprecated SM methods from `PlatformUtil` and `MethodUtil` 
> in `javafx.base` (these are lightly modified copies of those classes in 
> `java.base` so I will check how they are being handled)
> * Remove all uses (either throw or catch) o...

Kevin Rushforth has updated the pull request with a new target base due to a 
merge or a rebase. The incremental webrev excludes the unrelated changes 
brought in by the merge/rebase. The pull request contains seven additional 
commits since the last revision:

 - Merge branch 'master' into 8341090-remove-sm
 - Merge branch 'master' into 8341090-remove-sm
 - Merge branch 'master' into 8341090-remove-sm
 - SM removal part 5: Update API spec to remove mention of security manager
 - SM removal part 4: delete remaining tests that depend on security manager
 - SM removal part 2: remove -Djava.security.manager and security policy files
   SM removal part 3: remove SandboxAppTest
 - SM removal part 1: Fail fast at startup if the Security Manager is enabled

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

Changes:
  - all: https://git.openjdk.org/jfx/pull/1595/files
  - new: https://git.openjdk.org/jfx/pull/1595/files/6506f774..4a262de2

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jfx&pr=1595&range=03
 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1595&range=02-03

  Stats: 702 lines in 20 files changed: 350 ins; 212 del; 140 mod
  Patch: https://git.openjdk.org/jfx/pull/1595.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1595/head:pull/1595

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

Reply via email to