On Fri, 21 Aug 2026 11:51:56 GMT, Prasanta Sadhukhan <[email protected]> 
wrote:

>> `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).
>
> Prasanta Sadhukhan has updated the pull request incrementally with three 
> additional commits since the last revision:
> 
>  - Use shared implementation
>  - Use shared implementation
>  - Use shared implementation

We stand by the implementation to provide a secure-by-default behaviour and if 
somebody wants to opt for the legacy insecure way of browsing, then the newly 
launched system property can be used, which is mentioned in the CSR alongside 
and will be mentioned in the release note..
We cannot change the spec for this change as we intend to backport this to 
other releases..

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

PR Comment: https://git.openjdk.org/jdk/pull/32247#issuecomment-5421918222

Reply via email to