`JDK has the following API : java.awt.Desktop.browse(URI) "Launches the default browser to display a URI."
On Windows and macOS, the JDK used to call platform APIs to do this which would recognise some schemes as ones which would launch an associated application. For example on Windows "calculator:" is a scheme that windows may open the calculator, and on macOS "facetime:" may open the facetime application. Desktop.browse now always launches the browser directly, which is a problem for apps that took advantage of the previous behavior, since the browser itself may not re-direct to those applications. The current behaviour is intentional to provide a secure-by-default behaviour. The proposal here is to introduce an implementation system property ( **awt.desktop.browse_insecure**) which will allow apps to opt back into the old behaviour on Windows and macOS. The end-user, or the application, can set this property as a comma separated list of allowed schemes : -Dawt.desktop.browse_insecure=calculator,file where on Windows, the calculator and file scheme will be opened in open calc.exe and the File Explorer app respectively. or -Dawt.desktop.browse_insecure=* which allows all schemes. If -Dawt.desktop.browse_insecure is set or the scheme is in the allowed list, then JDK will open the URI using platform APIs which may open an associated app instead of the browser If -Dawt.desktop.browse_insecure is NOT set or scheme is NOT in the allowed list, the browser is explicitly launched and URI is handled by the browser - i.e. no change from current behaviour. --------- - [x] I confirm that I make this contribution in accordance with the [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). ------------- Commit messages: - 8377972: Desktop.browse() no longer delegates custom URI schemes to the OS handler and instead opens the default browser Changes: https://git.openjdk.org/jdk/pull/32247/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=32247&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8377972 Stats: 39 lines in 3 files changed: 31 ins; 2 del; 6 mod Patch: https://git.openjdk.org/jdk/pull/32247.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/32247/head:pull/32247 PR: https://git.openjdk.org/jdk/pull/32247
