Migration
From 9.2.0 to 9.3.0
In JxBrowser 9.3.0, SelectMediaDeviceCallback is now asynchronous to prevent
potential EDT deadlocks. On macOS, the Chromium bundle ID has changed, which may
cause one-time permission re-prompts after upgrading.
SelectMediaDeviceCallback is now asynchronous
SelectMediaDeviceCallback now extends AsyncCallback instead of
SyncCallback. The lambda signature changes from one parameter returning a
Response to two parameters — params and action — returning void.
9.2.0 and earlier:
engine.mediaDevices().set(SelectMediaDeviceCallback.class, params -> {
MediaDevice selected = chooseDevice(params.mediaDevices());
return SelectMediaDeviceCallback.Response.select(selected);
});
9.3.0:
engine.mediaDevices().set(SelectMediaDeviceCallback.class, (params, action) -> {
MediaDevice selected = chooseDevice(params.mediaDevices());
action.select(selected);
});
The proceed() and cancel() responses follow the same pattern:
9.2.0 and earlier:
engine.mediaDevices().set(SelectMediaDeviceCallback.class,
params -> SelectMediaDeviceCallback.Response.cancel());
9.3.0:
engine.mediaDevices().set(SelectMediaDeviceCallback.class,
(params, action) -> action.cancel());
Chromium bundle ID changed on macOS
The Chromium bundle ID changed from org.chromium.Chromium to
com.teamdev.JxBrowser. Because macOS identifies applications by their bundle
ID, it treats the updated build as a new application on first launch.
As a result, any macOS permission previously granted to your application — such as camera, microphone, screen recording, notifications, or accessibility access — may be re-requested. Grant them once, and normal operation resumes.
Applications or enterprise policies that reference org.chromium.Chromium by
bundle ID must be updated to use com.teamdev.JxBrowser.