Posted on November 26, 2019
JxBrowser 7.4
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.
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 thebrowser()
method that allows getting theBrowser
instance associated with theNavigation
. - 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 theFrameLoadFailed
event was not fired for some web pages. - Support of the
Document.visibilityState
property has been added. Now if you removeBrowserView
from its container or minimize the window whereBrowserView
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 orassert
. - 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 SwingBrowserView
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 theJTabbedPane
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 theIllegalStateException
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.
Download JxBrowser 7.4
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 @JxBrowserTeam to get notified of the library updates.
Subscribe to our RSS feed to get instant updates on new releases.