Posted on December 15, 2020

We are glad to announce a patch update with several important fixes and improvements.

Improvements

  • The CFProcessPath environment variable on macOS is now skipped when launching the Main Chromium process, preventing Chromium from finding its internal resources which results in failure to start. The CFProcessPath environment variable is used on macOS to make it possible to drag items onto the application’s dock icon for processing. Your Java application will still be able to use it.
  • No Advanced button is now shown on the error page that is shown when you load an HTTPS web page with an invalid SSL certificate. Now the only way to load a web page with an invalid SSL certificate is to use the CertificateErrorCallback as shown below:

      browser.set(CertificateErrorCallback.class, (params, tell) -> tell.allow());
    
  • The jxbrowser.force.dpi.awareness system property has been added. The presence of this property tells the library that the DPI awareness mode of the current Java process should be programmatically set to System before launching the Main Chromium process.

    This property addresses the HiDPI issue in Java 8u211+. When creating an Engine instance before the UI toolkit is initialized, the Java and Chromium processes end up with different DPI awareness modes. This leads to the rendering issues in the HiDPI environments. It happens because starting from 8u211, Java does not enforce any DPI awareness mode to the applications via manifest like before. Since 8u211, Java starts unaware and lets the application configure the DPI awareness mode programmatically during UI toolkit initialization.

    When the library runs the Chromium process, it does not know whether a UI toolkit is initialized and the DPI awareness mode is configured. It is important to know this in order to synchronize the modes between Java and Chromium processes. To bypass the issue we decided to set the Java DPI awareness mode programmatically if this property is set. In this case, we do not need to know whether a UI toolkit has been initialized or not. We can just set the mode and launch the Chromium process and the DPI awareness mode of Java and Chromium will be the same.

  • It is now allowed to access LocalStorage from JavaScript if the web page was loaded from a JAR archive.
  • During Engine initialization Kaspersky shows a security warning that “Chromium is attempting to get access to webcam”. We updated the initialization flow so that the webcam functionality is initialized only when the web page requests access to it. It allows suppressing the warning dialog during Engine startup.

Fixed issues

  • Chromium crash when loading about:blank after http://localhost/any.xml.
  • Chromium crash when loading a data URI to a non-main frame.
  • Chromium crash when accessing content document of an IFRAME if loading content of the IFRAME was canceled.
  • JVM crash when opening RPC connection on macOS and Linux.
  • Dragging/selecting items inside a web page leading to browser becoming unresponsive or JVM crashing in the off-screen rendering mode on Windows and Linux.
  • No keyboard modifiers passed when dispatching the MouseMoved events to the Chromium in the off-screen rendering mode. resulting in no keyboard modifiers received on the JavaScript side.
  • Thread deadlock when accessing the main frame of the currently loaded web page from the main SWT thread in the hardware accelerated rendering mode on Windows.
  • Thread deadlock when accessing the URL of the currently loaded web page from the main SWT thread in the hardware accelerated rendering mode on Windows when displaying popups.
  • Thread deadlock when accessing cookies from the main JavaFX thread in the hardware accelerated rendering mode on Windows after closing javafx.scene.control.TextInputDialog.
  • Thread deadlock when frequently showing/hiding JavaFX BrowserView in the hardware accelerated rendering mode on Windows.
  • Invalid key codes in JavaScript for the NumPad keys in the off-screen rendering mode.
  • Invalid key codes in JavaScript for the Enter, Tab, Backspace keys when dispatching the KeyTyped event in the hardware accelerated rendering mode on Swing.
  • Incorrect KeyboardEvent.location passed for the NumPad, Left, and Right keys in the off-screen rendering mode.
  • Popups size and location calculated improperly when non-default DPI is set in the operating system.
  • Not being able to access the content document of an IFRAME which loads a web page from another domain.
  • Memory leak in the Chromium Render process when working with the DOM and JavaScript objects in the different web pages using JxBrowser DOM and JavaScript API.
  • Scrolling not working after SWT BrowserView is once hidden in the off-screen rendering mode.
  • Chromium window getting destroyed after JavaFX Stage is hidden with the embedded BrowserView in the hardware accelerated rendering mode on Linux.
  • JavaFX BrowserView dispatching Enter twice in the off-screen rendering mode.
  • Drag and Drop between JavaFX BrowserView and other JavaFX controls not working in the off-screen rendering mode on Linux for JavaFX older than 14th.
  • Drag and Drop on the web pages that use the custom drag data not working properly in the off-screen rendering mode.
  • Drag and drop for links and text not working, when attempted more than once in JavaFX off-screen rendering mode.
  • Black JavaFX BrowserView after hiding then showing in the off-screen rendering mode.
  • HTML slider not working in SWT BrowserView in the off-screen rendering mode.
  • Incorrect size of the popup that is displayed after suppressing the previous popup.

Request evaluation license
Download JxBrowser 7.12.1

Go Top