Posted on Nov 26, 2019

JxBrowser 7.4 comes with a number of great possibilities: now you can embed video and audio content from Netflix, Amazon Prime, Spotify, and other platforms that use DRM decryption. And to add to it: you can embed JxBrowser into applications intended for ARM devices.

What’s New

ARM

JxBrowser 7.4 supports the ARM architecture on Linux 64-bit. It has been tested in the following environments:

  • Raspberry Pi 2 (A 900MHz quad-core ARM Cortex-A7 CPU) and AWS (AWS Graviton Processors);
  • Ubuntu 16.04 LTS and 18.04 LTS 64-bit;
  • JDK 8 64-bit (no GUI provided by JRE), OpenJDK 11 (Swing + JavaFX).

Proprietary Features

H.264, MP4, AAC

We are glad to announce, that starting with this release you do not need to request a separate *c build with the enabled proprietary codecs to play the H.264, MP4, and AAC formats. You can enable the proprietary codecs, which are disabled by default, through the API as shown below:

Engine engine = Engine.newInstance(
        EngineOptions.newBuilder(renderingMode)
                .enableProprietaryFeature(ProprietaryFeature.AAC)
                .enableProprietaryFeature(ProprietaryFeature.H_264)
                .build());

The H.264 and AAC codecs are the proprietary components. By enabling these codecs you state that you are aware that H.264 and AAC are the proprietary components and you should have a license in order to use them. For more information, you could contact patent holders: Via Licensing and MPEG LA. TeamDev shall not be responsible for your use of the H.264 and AAC codecs.

Widevine

Now you can enable the proprietary component called Widevine, which allows playing the video/audio content on Netflix, Amazon Prime, Spotify, and content on other web services that use Widevine to distribute content.

The Widevine component is disabled by default. Use the following code to enable it:

Engine engine = Engine.newInstance(
        EngineOptions.newBuilder(renderingMode)
                .enableProprietaryFeature(ProprietaryFeature.WIDEVINE)
                .build());

Widevine is a Google proprietary component, governed by its own terms of use. For more information, see https://www.widevine.com/.

Windows Server 2019

Now the library officially supports Windows Server 2019.

Disabling DnD

By default drag and drop is enabled for both Swing and JavaFX BrowserView. To disable drag and drop use the following new API:

browserView.dragAndDrop().disable();

DOM Attribute

The DOM API has been extended with the new functionality that allows getting the list of the attribute nodes of the element. For example:

element.attributeNodes().forEach(attribute -> 
        System.out.println("name = " + attribute.nodeName()));

Improvements

  • The Navigation class has been extended with the browser() method that allows getting the Browser instance associated with the Navigation.
  • Now the spell checker dictionaries are downloaded into the user data directory instead of the directory with the Chromium binaries on Windows. We did it because very often the directory, where the Chromium binaries are located, has read-only access and the engine is not allowed to create new files there. In such case, the spell checker dictionaries are not loaded and initialized successfully, so the spell checking might not be working as expected. Not a case anymore with this update.
  • The drag cursor is now updated when you drag something to an external application in the off-screen rendering mode.
  • Add the NetError. BLOCKED_BY_RESPONSE error which occurs when frame embedding is forbidden by a web server. The missing error code lead to the issue when the FrameLoadFailed event was not fired for some web pages.
  • Support of the Document.visibilityState property has been added. Now if you remove BrowserView from its container or minimize the window where BrowserView is embedded, this property will change its value.
  • The JxBrowser binaries for macOS are signed and notarized to meet the macOS Catalina requirements.
  • The library creates the symlinks to the system libraries on Linux only if they are missing. Sometimes the system libraries might be updated or removed due to the system updates. In this case, the next launch will fail because of the broken symlinks. Now the library checks and creates the symlinks every time on startup.
  • JxBrowser now allows throwing exceptions from the methods marked with the @JsAccessible annotation. You can throw an exception or assert.
  • The “Print using system dialogue…” action has been restored in the Print Preview dialog to allow you to print the web page using the system print dialog.
  • JxBrowser now allows dropping the files (e.g. images) into BrowserView with the appropriate reaction (e.g. loading and displaying the dropped file).

Fixed issues

  • The memory leak when adding and removing the BrowserView component into a Swing or JavaFX container.
  • The unexpected Chromium process termination after ~2 hours of inactivity on Linux. The root cause came from the Chromium updater functionality that is trying to clone the main Chromium process after ~2 hours of inactivity. Since the library doesn’t support automatic updates, we disabled this functionality in Chromium to resolve this issue.
  • The java.lang.UnsatisfiedLinkError exception on Linux with Java 13. It was caused bu the missing dependency.
  • The Chromium startup failure on macOS configured to Spanish language due to the missing language pack.
  • The java.lang.NullPointerException exception when dragging the files from the filesystem into the Swing BrowserView component on macOS with Java 11 and higher.
  • The invalid cookie expiration time being returned for a session cookie that does not have an expiration time. Now if the cookie does not have an expiration time, it returns Timestamp.NONE.
  • The text finder iterating backward by default.
  • The search match case not working inside PDF.
  • The web content being displayed at the top left corner of the main screen when a Swing BrowserView component is embedded into the JTabbedPane container.
  • The native crash in the Chromium engine when moving BrowserView between multiple displays in the off-screen rendering mode.
  • The issue when the JavaFX BrowserView in the hardware accelerated rendering mode begins to detach the native window and encounters the IllegalStateException due to missing main Chromium process.
  • Some keyboard listeners generated via Angular not processing keyboard events in the off-screen rendering mode.

Deprecated API

The CertificateErrorCallback functionality that allows ignoring the SSL certificate errors has been marked as @deprecated and will be removed in one of the next versions. Please use the VerifyCertificateCallback callback instead where you can tell the engine that the invalid SSL certificate is valid and the engine should continue loading the resource.

Request evaluation license
Download JxBrowser 7.4

Go Top