List icon Contents

Posted on December 12, 2017

JxBrowser 6.18

We are very happy to announce that JxBrowser 6.18 version is now available for download. In this version we focused on the features, reinforcing the users’ browsing security. The release also contains several more requested features and improvements.

U2F authentication

In this version we enabled support of the U2F authentication standard. You don’t need to configure the library or your Java application to be able to authenticate using the U2F standard. Please note that U2F device registration is not supported at the moment. You can register your U2F device in Google Chrome or other web browser application, and then use it in JxBrowser for authentication.

CacheStorage.clearHttpAuthenticationCache()

The API has been extended with new functionality that allows clearing HTTP Auth cache. The following code demonstrates how to use this new functionality:

browser.getCacheStorage().

clearHttpAuthenticationCache(new Callback() {
    @Override
    public void invoke () {
        System.out.println("HTTP Auth cache has been cleared");
    }
});

Cookies encryption

JxBrowser does not encrypt cookies by default. To enable cookies encryption, use the --enable-cookie-encryption Chromium switcher.

JxBrowser uses Chromium cookies encryption routines, so it uses the same way to store cookies as Chromium.

On Linux to encrypt cookies JxBrowser uses GNOME Keyring or KWallet. Although Chromium chooses which store to use automatically, the store to use can also be specified with a command line argument:

  • --password-store=gnome (to use GNOME Keyring)
  • --password-store=kwallet (to use KWallet)

On Windows to encrypt cookies JxBrowser uses only DPAPI. There are no alternatives at the moment.

On macOS, JxBrowser uses the private key stored with the Keychain Application to encrypt cookies with AES encryption.

Async find text

In previous versions there was no way to cancel the current search until it was completed. In this version we extended the API with new functionality that allows performing text search on the loaded web page and being able to cancel it anytime.

The following example demonstrates how to use this new API:

SearchParams request = new SearchParams("Text to find");
browser.findText(request, new SearchResultCallback() {
    @Override
    public void onResultReceived (SearchResult result){
        // If search has been completed, get the number of matches.
        if (result.isCompleted()) {
            int numberOfMatches = result.getNumberOfMatches();
        }
        // otherwise - cancel search.
        else {
            browser.stopFindingText(StopFindAction.CLEAR_SELECTION);
        }
    }
});

Java 9 support

Now, JxBrowser can be used in Java desktop applications that are running on JRE 9.

Please note that Java 9 support has several limitations:

  • JxBrowser supports only Java 9 applications that don’t use the Java Platform Module System. Support of the Module System will be added in one of the next versions.
  • JxBrowser doesn’t support SWT+Java 9.
  • JxBrowser supports only default JVM parameters. If you modify default values, e.g. "--illegal-access=deny" instead of the default "--illegal-access=permit", of the VM parameters, then the library might not work on JRE 9.

The rest of JxBrowser functionality is supposed to be working in the same way as on JRE 6, 7, and 8.

Fixed issues

  • The "IllegalStateException: HTML document is not available" exception thrown sometimes when a new web page is loaded. The native crash when disposing Browser instance while there’s an active printing job. Now, the pending printing jobs will be canceled when the Browser instance, which initiated the printing has been disposed.
  • The sporadic native crash on macOS and Windows when using the Browser instances in multi-threaded environment.
  • The issue with a single pixel white line at right and bottom of a Java frame running in the fullscreen mode on Linux.
  • The native crash in Chromium render process that happens when destroying JSContext instance in multi-threaded Java environment.
  • The native crash in Chromium main process on Linux platform with the AMD Radeon and nVIDIA GeForce GPU devices when running JavaFX application.
  • Passing a custom client SSL certificate to Chromium not having any effects unless the certificate is registered in OS.

Improvements

  • Chromium binary files have been signed using time-stamping. In previous builds, the binary files were signed with the TeamDev certificate that is valid until April 25, 2018. Time-stamping wasn’t used during signing, so the signature will be invalid starting the next day.
  • The fix that resolves the Chromium vulnerability CVE-2017-5124 (Chromium 62) has been back-ported to Chromium 60 used in JxBrowser 6.18.
  • We have also improved performance when finding text with the same search request on the loaded web page multiple times.

Write us at customer-care@teamdev.com to download JxBrowser 6.18.