Releases
Posted on
JxBrowser 8.16.0
Copy passwords between stores
You can now copy password records between different profiles using
PasswordStore.all() and PasswordStore.add().
// Copy passwords from one store to another
var sourcePasswords = sourceProfile.passwordStore();
var targetPasswords = targetProfile.passwordStore();
for (var password : sourcePasswords.all()) {
targetPasswords.add(password);
}
Breaking changes
Context menu API changes
The ShowContextMenuCallback.Params.contentType() method was renamed to
contentTypes(), and ContextMenuContentType enum values no longer have the
CONTEXT_MENU_CONTENT_TYPE_ prefix.
Previous versions:
import com.teamdev.jxbrowser.menu.internal.rpc.ContextMenuContentType;
browser.set(ShowContextMenuCallback.class, (params, tell) -> {
var contentType = params.contentType();
if (contentType.contains(ContextMenuContentType.CONTEXT_MENU_CONTENT_TYPE_EDITABLE)) {
// Handle editable content
}
tell.close();
});
8.16.0:
import com.teamdev.jxbrowser.menu.ContextMenuContentType;
browser.set(ShowContextMenuCallback.class, (params, tell) -> {
var contentTypes = params.contentTypes();
if (contentTypes.contains(ContextMenuContentType.EDITABLE)) {
// Handle editable content
}
tell.close();
});
Learn more in the migration guide.
Validation methods throw exceptions
Methods for adding passwords, credit cards, and user data profiles now throw exceptions for validation errors instead of returning error strings.
Previous versions:
String result = passwordStore.add(invalidPasswordRecord);
if (!result.isEmpty()) {
System.err.println("Failed to add password: " + result);
}
8.16.0:
try {
passwordStore.add(invalidPasswordRecord);
} catch (IllegalArgumentException e) {
System.err.println("Failed to add password: " + e.getMessage());
}
This applies to:
PasswordStore.add(PasswordRecord)— throwsIllegalArgumentExceptionwhen the password record has an invalid URL or an empty password.CreditCards.add(CreditCard)— throwsIllegalArgumentExceptionwhen the credit card has already expired.UserDataProfiles.add(UserDataProfile)— throwsIllegalArgumentExceptionon validation errors.
Learn more in the migration guide.
Enum technical values removed
We removed *_UNRECOGNIZED and *_UNSPECIFIED values from all enum types.
These were technical values for internal use. For a limited number of enums, we
added UNKNOWN values where the removed values represented a logical enum value.
Learn more in the migration guide.
NetError enum values removed
The upgrade to Chromium 144 removed certain NetError enum values that no
longer exist in the upstream Chromium codebase. If your code references these
removed values, you will see compilation errors.
Learn more in the migration guide.
Chromium 144.0.7559.60
We upgraded Chromium to a newer version, which introduces major security fixes, including:
- CVE-2026-0899: Out of bounds memory access in V8
- CVE-2026-0900: Inappropriate implementation in V8
- CVE-2026-0901: Inappropriate implementation in Blink
- CVE-2026-0902: Inappropriate implementation in V8
- CVE-2026-0903: Insufficient validation of untrusted input in Downloads
You can read more about it in the Chromium blog post:
Download JxBrowser 8.16.0
Please share your email with us, and we'll send you download instructions.
We were unable to send the email. Please use the direct link to download JxBrowser.
If you are a registered customer you don't need to do anything to use this update.
If you would like to evaluate the product, you need an evaluation license.
Follow @JxBrowser to get notified of the library updates.
Subscribe to our RSS feed to get instant updates on new releases.
Subscribe to get notifications about the latest releases.