JxBrowser Changelog

What's new in JxBrowser 6.19

Feb 28, 2018
  • BrowserContext.setAcceptLanguage():
  • The BrowserContext.setAcceptLanguage() is added. The Browser.setAcceptLanguage() method was marked as deprecated, because it doesn't support language ranges according to RFC 7231. The BrowserContext.setAcceptLanguage() method supports language ranges, so you can use it in the following way: browserContext.setAcceptLanguage("fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5");
  • StartLoadingEvent.isSameDocument():
  • The StartLoadingEvent.isSameDocument() and ProvisionalLoadingEvent.isSameDocument() methods are implemented. These methods indicate whether the loading event is initiated by a navigation within the same document.
  • Java 10 Early-Access:
  • This version was tested, and proved to work as expected with Java 10 Early-Access Build on Windows, Linux, and macOS. JxBrowser supports Java 10 with the same limitations as for Java 9.
  • Improvements:
  • JavaFX App Thread checking has been added to handle situations when its methods are already invoked in JavaFX App Thread.
  • JavaFX File Save dialog was tuned to keep file extensions when downloading and saving files.
  • The ~AppDataLocalChromiumUser Data directory creation on JxBrowser startup is disabled.
  • Support of the links in PDF documents is restored.
  • Fixed issues:
  • Each invocation of the JSFunction.invokeAsync() method creating a new Java thread.
  • CertificateVerifier being invoked for all BrowserContext instances.
  • LoadHandler not intercepting load events of an IFRAME embedded into a web page.
  • window.matchMedia() JS function returning different result in the heavyweight and lightweight rendering modes.
  • Incorrect component positioning in a HiDPI environment on Windows platforms.
  • NullPointerException when calling JSObject.hasProperty() in a popup window.
  • The current page number being cropped in PDF Viewer.
  • Thread deadlock when reparenting Swing BrowserView on macOS.

New in JxBrowser 6.16 (Oct 5, 2017)

  • Extended DOM API, the ability to enable and disable form autofill suggestions, and a way to provide a custom HTTP status code.

New in JxBrowser 6.15 (Sep 14, 2017)

  • Chromium 60:
  • The Chromium engine is upgraded to version 60.0.3112.113. It means that support of WebGL 2.0 has been automatically enabled.
  • Due to Chromium engine upgrade the list of supported platforms have been changed as well. Some time ago, the Chromium team announced that they will end support for Google Chrome on 32-bit Linux, Ubuntu Precise (12.04), and Debian 7 (wheezy) in early March, 2016.
  • With Chromium upgrade to version 60, we drop support of Ubuntu Precise (12.04), Debian 7 (wheezy) both 32-bit and 64-bit, and all 32-bit Linux distributions as well. Now, JxBrowser supports only 64-bit Linux. The updated list of supported platforms is available here.
  • DOMNode.getXPath():
  • The DOMNode.getXPath() method that allows getting XPath for the given DOMNode has been implemented.
  • Browser.setUserAgent(String userAgent):
  • The Browser.setUserAgent(String userAgent) method was added. It provides an ability to change user agent string runtime without re-creating Browser instance.
  • Browser.setAcceptLanguage(String acceptLanguage):
  • The Browser.setAcceptLanguage(String acceptLanguage) method was added. It allows changing accept language string runtime.
  • ProxySerivce:
  • A long awaited functionality that allows modifying proxy settings runtime is now available in JxBrowser. Now, you can change proxy settings runtime for specific BrowserContext instance. The new proxy configuration will be applied automatically to all Browser instances associated with the BrowserContext.
  • accept attribute:
  • The FileChooserParams.getAcceptableExtensions() method was added. This method returns HTML accept attribute value. Default implementation of the DialogHandler interface for both JavaFX and Swing have been updated, so that they support this attribute, and filter the files in the dialog according to the given extensions.
  • Pinch to zoom:
  • The --disable-pinch switcher now can be used to disable pinch to zoom on macOS when using trackpad. This functionality is supported only by JxBrowser. Google Chrome doesn't allow disabling pinch to zoom on macOS when using trackpad.
  • Improvements:
  • Startup time on Windows is decreased.
  • Extra log messages printed into console output on macOS even when logging is disabled were removed.
  • Fixed issues:
  • JavaScript mouse event listener receiving incorrect mouse button.
  • DialogHandler.onBeforeUnload() method not being invoked when disposing Browser.
  • The default BrowserContext instance always creating empty directories in user's temp directory.
  • RejectedExecutionException exception being thrown from internal logic.
  • An internal issue with the OnPaint message deserialization.

New in JxBrowser 6.14 (Apr 13, 2017)

  • Injecting custom style sheet (CSS):
  • Now you can inject a custom style sheet into every web page loaded in JxBrowser. In order to inject CSS use the Browser.setCustomStyleSheet(String customStyleSheet)method. Once you set a string that represents CSS, all web pages loaded in this Browser instance will be updated with the given CSS. See example to get more details on how to use this functionality.
  • Injecting custom SSL certificate:
  • The DialogHandler.onSelectCertificate(CertificatesDialogParams params)method allows selecting SSL certificate from the list of installed certificates. Now, you can tell Chromium engine to use SSL certificate that isn’t installed in your environment. See example.
  • Accessing Browser in NetworkDelegate events:
  • A lot of developers requested that we provide an ability to associate Browser instance with HTTP request/response. Now you can do that. See the RequestParams.getBrowser()method.
  • Improvements:
  • Added Chromium profile directory validator. In general, Chromium engine doesn’t allow running several processes or BrowserContext instances configured to the same profile directory. Sharing profile directory between different native processes and BrowserContext instances may lead to unexpected behavior including crashes in Chromium engine. To protect Java application from the unexpected crash in Chromium engine, since 6.14 version JxBrowser checks whether Chromium profile directory is already used by another BrowserContext instance or native process, and throws an exception if Browser instance cannot be configured to use the given profile directory.
  • Improved Chromium binaries validation. JxBrowser allows configuring the path to the directory where it should find/extract Chromium binaries. If the directory already contained Chromium binaries, then old validator implementation simply checked the existence of the required Chromium files. Now, JxBrowser validates that the Chromium binaries in the directory not only exist but also correspond to the current JxBrowser version. So, the situation when old Chromium binaries are used with new JxBrowser library won’t happen.
  • Fixes:
  • The issue when the Event.dataTransfer.setDragImage() JavaScript method invocation causes crash in Chromium engine on macOS.
  • The issue when some CSS cursors such as zoom in, zoom out, etc. aren’t supported in heavyweight rendering mode.
  • Wrong scrolling in SWT-JavaFX applications on macOS.
  • Wrong cursor location in JavaFX applications with enabled lightweight rendering mode.
  • The issue when the drop down doesn’t work in JavaFX TabPane with enabled lightweight rendering mode.
  • Wrong scaling in the multi HiDPI/Non-HiDPI monitor environment on macOS and Windows in both lightweight and heavyweight rendering modes in JavaFX and Swing.
  • Improved stability in the multi-threaded environment.
  • Smooth font rendering in heavyweight and lightweight rendering modes on Windows.
  • Wrong BrowserView location in JavaFX SplitPane in heavyweight rendering mode on Windows.
  • Memory leak when using JSObject.setProperty().
  • Native crash when calling JSObject.removeProperty().
  • The "Go Forward" button in JxBrowser Demo is disabled when should be enabled.
  • Broken rendering in drop downs in JavaFX and Swing with enabled lightweight rendering mode.
  • Java 9 isn’t recognized properly. Now you can launch JxBrowser on Java 9 without unexpected environment validator exceptions.
  • Broken file upload functionality.
  • File chooser dialog isn’t displayed in IFRAMEs.
  • Broken JavaFX lightweight rendering with low RAM.
  • Broken JavaFX lightweight rendering when resizing BrowserView.
  • Default print dialog allows printing only 100 pages.
  • WebStorage doesn't work until it's initialized from JavaScript.
  • The BrowserPreferences.setDefaultEncoding()method should be marked as deprecated because Chromium 55 ignores encoding settings.
  • Drop down is not closed when moving JavaFX window in heavyweight rendering mode.

New in JxBrowser 6.13 (Feb 28, 2017)

  • CREATING AND DISPATCHING DOM EVENTS:
  • In this version JxBrowser DOM Events API is extended with new methods and classes, which allow creating and triggering DOM events at the specified HTML element. Starting from v6.13 JxBrowser supports the Event, UIEvent, MouseEvent, and KeyEvent DOM events. To dispatch an event use the DOMEventTarget.dispatchEvent(DOMEvent event) method.
  • WEBRTC IP HANDLING POLICY:
  • The BrowserPreferences class is extended with the setWebRTCIPHandlingPolicy(WebRTCIPHandlingPolicy policy) method that allows configuring WebRTC IP handling policy. The list of supported policies is available in the WebRTCIPHandlingPolicy enum.
  • NO PAIN WITH OS DETECTION IN OLD JRES:
  • The environment validation algorithm is improved. JxBrowser detects OS name and version using standard Java system properties such as “os.name” and “os.version”. Old JREs such as 1.6 don’t recognize modern operating systems and detect them as “Windows NT (unknown)” which leads to the “com.teamdev.jxbrowser.chromium.internal.EnvironmentException: Unsupported operating system. Supported OS: Windows 7, 8, 10, Windows Server 2008 R2, 2012, 2016, macOS 10.9+ & Linux. Current OS: Windows NT (unknown), version: 6.2” exception. The workaround was to manually set “os.name” to a string that contains supported operating system name such as “Windows 7” or “Windows Server 2016”. This workaround wasn’t convenient for JxBrowser customers.
  • In this update we made environment validation less strong. Now, JxBrowser checks only minimal supported OS and JRE version. It allows using the library with old JREs such as 1.6 on modern operating systems such as Windows Server 2016 without any workarounds or manipulations with the “os.name” system properties.
  • IMPROVEMENTS:
  • The following functionality got better in v6.13:
  • JAWS support in heavyweight rendering mode.
  • Memory usage on Windows, macOS and Linux platforms. We discovered and resolved several memory leaks related to lightweight rendering mode, virtual memory usage, internal IPC implementation, JNI code, etc.
  • FIXES:
  • Here’s what has been resolved in this update:
  • The deadlock issue during drag and drop on macOS and Windows platforms in both Swing and JavaFX views. It was caused by a logical error in drag and drop implementation on Java side in lightweight rendering mode.
  • The regression issue when mouse and keyboard events are not fired in heavyweight rendering mode is fixed. The issue arose after upgrade to Chromium 55. Now, this functionality works exactly as in previous JxBrowser versions based on previous Chromium builds.
  • The issue when the onblur event isn’t fired when BrowserView lost focus.
  • The issue when the “java.lang.IllegalArgumentException: The certificateStr cannot be null or empty” exception is thrown when loading HTTPS web pages.
  • The regression issue when DownloadItem.setDestinationFile() is ignored.
  • The issue when mouse clicks are ignored in drop downs and are not recognized by some JavaScript libraries such as Hammer.js in the lightweight rendering mode is resolved. It was a regression issue after upgrade to Chromium 55. Now, this functionality works as expected.
  • This update addresses the rendering issues on macOS and Windows in lightweight rendering mode in both Swing and JavaFX views. The rendering issues used to happen during resizing browser view, displaying drop downs, after disposing and creating Browser instances, on Windows platforms with HiDPI monitors. There were several root causes of the rendering issues. All of them are fixed in this version.

New in JxBrowser 6.12 (Jan 27, 2017)

  • Fixes:
  • Thread leak when creating multiple BrowserContext instances.
  • UI freezing and NullPointerException in JavaFX implementation with enabled lightweight rendering mode.
  • The issue with accessing POST body data.

New in JxBrowser 6.10 (Dec 14, 2016)

  • New features:
  • Support of transparent background on a web page has been implemented. Now, in lightweight rendering mode, BrowserView component supports transparency and allows displaying web pages with transparent background. See example for more details.
  • A new implementation of the lightweight rendering mode has been added. This new implementation significantly improves rendering performance on Windows, Linux, and macOS. To find out how to enable this implementation check the article.
  • Fixed:
  • The repainting when changing system time back issue.
  • The issue with firing events in different AWT-Event-Thread when the library is being used in Java Web Start application.
  • The memory leak when overriding JavaScript property via the JSObject.setProperty() method.
  • The memory leak when invoking Java code from JavaScript.

New in JxBrowser 6.9 (Dec 1, 2016)

  • New features and improvements:
  • The JSFunction.invokeAsync() method has been implemented. This method allows invoking JavaScript function asynchronously and get the result of the invocation through Future. See example.
  • The Browser.forwardMouseEvent(BrowserMouseEvent event) method has been implemented. This method allows forwarding mouse events directly to the currently loaded web page as if the mouse events were sent due to user actions. See example.
  • This update also contains fixes for the following issues:
  • Memory leak when creating/disposing Browser instances.
  • Issue when symlinks are created asynchronously on Linux. It causes the situation when by the time when Chromium engine is started, the symlinks on required native libraries haven’t been created yet. As result the error message such as “error while loading shared libraries: libgcrypt.so.11: cannot open shared object file: No such file or directory” might be displayed.
  • Freezing issue when terminating Chromium engine.
  • Issue with pending jxbrowser-helper processed when terminating JVM on macOS.
  • Native crash in Chromium engine when forcing full spell check via the SpellCheckerService.setFullSpellCheckForced(true) method.
  • The java.lang.IndexOutOfBoundsException error when creating Browser instance on macOS.

New in JxBrowser 6.8 (Nov 17, 2016)

  • Highlights:
  • HTML5 Desktop Notifications API. Now you can handle situation when a web page wants to display desktop notifications. You decide whether the web page is allowed to display notifications or not. By default, desktop notifications are suppressed.
  • Incognito mode. By default, each Browser instance stores all user data such as history, cookies, cache on disk. Starting from version 6.8 you can configure Browser instance to store all user data in memory (Chromium's "Incognito" mode), so that all user data will be cleared once your Java application is terminated. Read more.
  • Voice recognition. This functionality is used in Google’s search by voice. By default, voice recognition functionality is enabled, but it requires that Chromium Speech API key is enabled. So, you must provide Google API key to enable search by voice functionality in JxBrowser. Read more.
  • The Browser.getRenderProcessInfo() method. It returns information about Chromium render process associated with the current Browser instance. You can use this functionality to get process ID of Chromium render process associated with the Browser instance. Read more.
  • HTTP server whitelist functionality. Read more.
  • The BrowserView.forwardKeyEvent() method for JavaFX and Swing implementations. This method allows programmatically forward keyboard events to the currently loaded web page.
  • The Environment.isSupported() method. It allows checking whether current environment is supported by JxBrowser or not.
  • JavaScript – Java Bridge API has been extended with functionality that allows obtaining Java object from JSValue, if JSValue represents a JavaScript wrapper for Java object. Read more.
  • JavaScript – Java Bridge API has been extended with functionality that allows configuring what public fields/methods of the injected Java object are accessible from JavaScript and what fields/methods are not. Read more.
  • Functionality that allows taking screenshots of the entire web page has been improved. There was a limitation in Chromium engine related to maximum texture height of the Browser surface where the web page’s content is rendered. If the texture height exceeds the maximum value (16384), Chromium engine fills the rest of the web page with black color. Now you can configure the maximum texture height programmatically depending on your requirements. Read more.
  • Support of the file extension filter in the File Save dialog has been added in the com.teamdev.jxbrowser.chromium.javafx.DefaultDownloadHandler implementation.
  • This update also contains fixes for the following issues:
  • The issue with pending jxbrowser-helper processes when terminating JVM on macOS.
  • The crash when loading PDF document several times in a row.
  • The focus isn’t restored when Scene is added back to Stage issue.
  • The focus doesn’t work in JavaFX TabPane issue.
  • The issue when IllegalStateException is thrown during processing callbacks during disposing Browser instance.
  • The memory leak when disposing Browser instance.

New in JxBrowser 6.7 (Sep 16, 2016)

  • What has been improved:
  • We have added functionality that allows enabling/disabling zoom for a Browser instance. Now you can disable zoom functionality for a specific Browser instance to prevent web page from zooming via zoom in/out/reset functions or via touch gestures on the touch screen devices. Read more.
  • The new version now features functionality that allows getting notifications when web page becomes unresponsive/responsive. Read more.
  • Support of HiDPI monitors on Windows platforms has been improved. Several developers reported the issue with positioning BrowserView component inside Java frame on HiDPI monitors on Windows platform. The issue is reproducible only when system font scale factor is != 100% and Java process doesn’t have the DPI Awareness flag in the process’ manifest. So, they were running Java program using patched java.exe where the DPI Awareness flag is removed. JxBrowser Chromium process has the DPI Awareness flag in the process’ manifest. Thus, it leads to the situation when Java and JxBrowser Chromium processes are differently configured. To solve the issue we need to run JxBrowser Chromium process with the same DPI Awareness flag value. We updated code in JxBrowser Chromium process, so that it programmatically detects whether the flag is set in Java process and configures JxBrowser Chromium process accordingly.
  • JavaScript-Java Bridge API has been extended. We added functionality that allows setting items to JSArray at specific index, implemented support of access to (ability to modify) public field of injected Java object into JavaScript code, and added the ability to instantiate JavaScript objects in Java code.
  • The DOMElement.getBoundingClientRect() method has been implemented. This method allows getting bounds of the element and its position relative to the top-left of the viewport of the current document. Read more.
  • The Browser.forwardKeyEvent() method has been added. This method allows forwarding keyboard events to the currently loaded web page. It’s very useful when using JxBrowser in a kiosk Java application that must run on terminals with touch screen. Read more.
  • Size of JxBrowser JAR files has been reduced by ~30% by using a better compression algorithm for archiving Chromium binaries.
  • Default logging level has been changed to SEVERE instead of ALL. According to your feedback, you prefer that JxBrowser doesn’t print all log messages into console output by default.
  • Default popup window title has been changed. Now, popup window title displays the currently loaded document’s title. If the document’s title represents an empty string, the popup window title will be empty as well. It will not display the “JxBrowser Popup” text like in previous versions.
  • We have removed TeamDev’s signature from JAR files. Starting from this update we decided to ship JxBrowser as a set of unsigned JAR files. From the support requests we noticed that signed JAR files cause deployment and modification issues for developers. The developers cannot modify Manifest files of the signed JxBrowser JAR files or combine them into a single JAR. When they deploy JxBrowser in their JWS application, then have to remove TeamDev’s signature and sign JxBrowser JAR files with their own signature. To get rid of these little big issues, we decided to remove signature from JxBrowser JAR files to make life of Java developers easier. You can still download JxBrowser distribution package with signed JAR files from http://cloud.teamdev.com/downloads/jxbrowser/jxbrowser-x.x.x-cross-desktop-win_mac_linux-signed.zip, where the x.x.x must be replaced with an actual JxBrowser version.
  • The version introduces fixes for the following issues:
  • The StringIndexOutOfBoundsException error when calling the DOMElement.getAttributes() method.
  • The “IllegalArgumentException: Unsupported value: 17” error when loading web page.
  • The issue when printer prints documents in color when the “Black and White” option in default Print dialog is selected. The issue was in incorrect print setting flag sent to Chromium engine during printing.
  • The issue when render process is unexpectedly terminated when calling the DOMElement.hasProperty() method.
  • The issue when keyboard shortcuts such as Cmd+A, Cmd+C, Cmd+V, Cmd+X, Cmd+Z, Cmd+Y don’t work on macOS when CapsLock is on.
  • Stability of the library in multi-threaded environment when creating a number of Browser instances with unique BrowserContext.

New in JxBrowser 6.6.1 (Aug 10, 2016)

  • In this minor update we fixed several critical issues reported by our customers and improved existing functionality:
  • Felix and Eclipse OSGi. JxBrowser has been adopted and tested in Felix OSGi environment. Now JxBrowser supports two OSGi implementations: Eclipse and Felix. Eclipse OSGi environment support has been improved as well. Now, each JxBrowser JAR file represents an OSGi bundle. To use JxBrowser in your OSGi application, you just need to include JxBrowser JAR files/bundles into your OSGi application.
  • Spell Checker API. By default, Chromium engine does spell checking only for the text in the modified paragraph. In this version we introduced functionality that forces Chromium engine to spell check the whole text upon every change including text in TinyMCE editor.
  • JavaScript-Java Bridge API. Using JavaScript-Java Bridge you can inject Java object into JavaScript code and associate it with JavaScript object’s property. When Java object is injected into JavaScript code via the bridge, JavaScript code can access only public methods of the Java object. When Java object represented a class that inherited another class with public methods, there was no way to access public methods of the parent class. Starting from version 6.6.1 you can access all public methods of the registered Java object, including parent’s methods.
  • Printing API. Support of page ranges when printing web page as PDF document has been implemented.
  • Deadlock in multi-threaded environment on Windows XP and OS X. In multi-threaded environment, when Browser instances are created and destroyed in different threads at the same time, sometimes thread deadlock happens. We reproduced the issue, figured out what causes it and fixed it in this minor update. So, stability of the library in multi-threaded environment on Windows and OS X was significantly improved.
  • Deadlock during Drag and Drop on Windows. The issue happens when dragging something in Java application and displaying BrowserView without releasing the drag. It was simple thread deadlock that is now fixed in JxBrowser code.
  • Printing in PDF Viewer. An issue when empty page was printed when printing from PDF viewer is fixed.
  • Zoom in/out in PDF Viewer. An issue when the Browser.zoomIn() and Browser.zoomOut() methods do nothing when PDF document is displayed in PDF Viewer is fixed.
  • Failed to load PDF document in PDF Viewer. If we load the http://www.orimi.com/pdf-test.pdf web page, click the link in the document, wait until web page is loaded completely, and then press backspace, we will see the “Failed to load PDF document” error message. The issue is fixed in this update.
  • Startup error on OS X with Portuguese or Chinese locale. When OS X language is set to Portuguese or Chinese, JxBrowser fails to start because Chromium cannot find the appropriate language pack. The reason of this issue is that Java detects the language as “PT” or “ZH”, but Chromium doesn’t have appropriate packs for these languages. It only has the “PT_BR”, “PT_PT”, “ZH_CH”, and “ZH_TW” packs. So, the language identifier that is received from Java default locale must be combined with country identifier in case of Portuguese and Chinese language. We made this change to improve the functionality in JxBrowser that detects current language and country to get rid of such issues on OS X.
  • Wrong Redo shortcut on OS X. In previous JxBrowser versions the Redo shortcut (Cmd+Y) doesn’t match the native OS X combination (Cmd+Shift+Z). Starting from JxBrowser 6.6.1 the Redo shortcut on OS X is correct — Cmd+Shift+Z.
  • Render Process events. It turns out that the RenderListener.onRenderGone() event is fired only when lightweight rendering mode is enabled. In heavyweight rendering mode there was no way to find out when render process is unexpectedly terminated. Now the event is fired in both rendering modes: heavyweight and lightweight.

New in JxBrowser 6.4 (May 13, 2016)

  • Chromium 49:
  • JxBrowser 6.4 is based on Chromium 49.0.2623.110.
  • This is fairly cool, because apart from general compatibility with the latest web standards, this Chromium engine solves tricky tasks, which were hard to accomplish in some previous versions, like displaying WebGL content on Linux platforms, and enabling incoming audio RTP streams. Also, in Chromium 49, PDF Viewer UI has been updated. So, now you can enjoy the new look, when displaying PDF documents in JxBrowser.
  • Plugins support:
  • There were some big changes, too. In this Chromium build support of NPAPI plugins has been removed at all. Now, NPAPI plugins such as Microsoft Silverlight, Java Applets, etc. are not supported. The “--enable-npapi” Chromium switcher doesn’t work either. PPAPI plugins such as Adobe Flash work well with this Chromium build. So, if you have to use NPAPI plugins, we recommend that you stick to JxBrowser versions up to 6.4.
  • Further plans on OS support:
  • Chromium team announced that Chromium 50 drops support of Windows XP, as well as Windows Vista, and Mac OS X 10.6, 10.7, and 10.8, since these platforms are no longer supported by Microsoft and Apple. So here we are giving you a heads up related to these platforms, and we will, too, let them rest in peace, when we are ready with the oncoming update based on Chromium 50 or higher.
  • Features & Improvements:
  • WebGL on Linux support has been added. In previous JxBrowser versions, WebGL didn’t work on Linux platforms, because Chromium didn’t start GPU process for rendering WebGL content. Once we upgraded to Chromium 49, WebGL started working as expected on Linux platforms.
  • In JxBrowser versions based on Chromium 43, there was an issue related to incoming audio RTP streams support. Alas, it just doesn’t work with Chromium 43. With Chromium versions before 43 and Chromium 49 this issue isn’t reproducible. So, now incoming audio RTP streams are officially supported in JxBrowser.
  • Below let us list the issues that, however, no longer endanger your development process.
  • The placeholder text used to stay visible while a user was already typing in a text area. Happy to say it doesn’t in the new release.
  • A surprising black rectangle used to show up instead of a scroll bar when a PDF Viewer window was resized. This issue was reproducible only on Windows 8.1 and higher. Upgrade to Chromium 49 fixes this issue.
  • You will not see the IllegalArgumentException error when you right-click PDF Document.
  • No more native crashes in Chromium renderer process, at least not when your app finds a DOM HTML element by ID string with a single quote. The issue was in WebKit DOM functionality that didn’t handle such situation. We applied several patches to WebKit source code that fix the issue.
  • You have no installed printer devices? This is not a reason for failing of the printing functionality on Linux. Now, if there’s no available printer devices, we don’t ask Chromium engine to print web page at all. To print web page using printer, at least one printer device must be installed.
  • Deadlock in JavaScript-Java Bridge used to happen under several circumstances. For example, when loading XML document and executing JavaScript code in the ScriptContextListener.onScriptContextCreated(ScriptContextEvent event) method. If we execute JavaScript code in XML document, it will be executed in a separate JavaScript world. As result, the ScriptContextListener.onScriptContextCreated(ScriptContextEvent event) method is invoked again and the code will be blocked in the synchronized Browser.executeJavaScriptAndReturnValue() method. To solve this issue we enabled reentrancy support in JxBrowser IPC functionality and modified synchronization logic in the Browser.executeJavaScriptAndReturnValue() method.
  • BrowserView now retains its focus context, even after showing/hiding the context menu, so users can type texts in the text field normally after closing the context menu. The issue has been fixed by updating focus context info when showing/hiding context menu.
  • In multi-threaded environment we used to see see the “Deadlock in safepoint code” error that came from JxBrowser JNI code. To fix this issue we made sure we create and access JNIEnv variable in the same thread.

New in JxBrowser 6.3 (May 13, 2016)

  • Audio API has been extended with functionality that allows muting/unmuting audio on the loaded web page. Read more.
  • SSL Certificate Verifier API has been added. With this new functionality you can decide what SSL certificate should be accepted or rejected. Read more.
  • Automatic conversion of String, Number, Boolean, JSObject to java.lang.Object in JavaScript-Java Bridge has been implemented. In previous versions you might receive NoSuchMethodException when calling Java method from JavaScript.
  • Access to local storage from Flash has been implemented. Without access to local storage you might get the issue when web page loaded in JxBrowser cannot access and use Flash shared object.
  • Ability to disable drag and drop for both Java Swing and JavaFX implementations has been added.
  • Ability to filter/suppress mouse and keyboard events has been implemented. See example.
  • Support of the window.webkitStorageInfo.requestQuota on JavaScript has been added.
  • Support of the application/json mime type in drag and drop functionality has been implemented.
  • Support of Apple Java 1.6 on Mac OS X has been restored.
  • The DOMNode.equals() method has been added.
  • The DOMNode.getNextSibling() method has been added.
  • The DOMNode.getPreviousSibling() method has been added.
  • Fixed issue when drag and drop doesn’t work on Linux.
  • Fixed issue when library fails to extract Chromium binaries in OSGi environment.
  • Fixed NullPointerException when embedding BrowserView into JavaFX TabPane with empty first tab.
  • Fixed IOException when parsing X509Certificate using Java 1.6. With Java 1.7 and higher the issue isn’t reproducible.
  • Fixed the “Address already in use: JVM_Bind” error when creating Browser instance.
  • Fixed issue when NetworkDelegate corrupts POST binary data.
  • Fixed issue when LoadURLParams(String url) constructor corrupts HTTP request headers.
  • Fixed issue that prevents JavaFX application from exit on Mac OS X.
  • Fixed issue with native crash during resizing Browser instance on Windows.

New in JxBrowser 6.0.2 (Jan 7, 2016)

  • Support of Adobe Flash on Linux 32-bit and 64-bit has been implemented. See instruction about how to configure Flash on Linux.
  • The LightWeightWidgetListener API for receiving notifications when in lightweight rendering mode web page has been repainted has been implemented [lightweight, swing]. See example
  • The issue when Geolocation JavaScript API doesn’t work has been fixed.
  • The native crash during notification when cache has been successfully cleared has been fixed.
  • The native crash during document’s title update has been fixed.
  • The native crash during sending network events has been fixed.

New in JxBrowser 6.0.1 (Dec 29, 2015)

  • Fixes and improvements:
  • Support of PPAPI Flash plugin has been added [heavyweight, lightweight, swing, javafx, mac].
  • Support of HiDPI monitors has been improved [heavyweight, swing, javafx, windows].
  • PPAPI Flash context menu has been implemented [heavyweight, lightweight, swing, javafx, windows, mac].
  • Support of Java Swing key binding system has been added [heavyweight, swing, windows, mac, linux].
  • Fixed issue with wrong key codes [lightweight, swing, mac].
  • Fixed issue when Chromium prints log messages into Java console even when logging is disabled [mac].
  • Fixed crash in Flash video full screen mode [heavyweight, javafx, swing, windows].

New in JxBrowser 6.0 (Dec 29, 2015)

  • Heavyweight GPU-accelerated rendering mode has been added.
  • Support of Citrix environment has been added.
  • Support of SOCKS protocol in Proxy functionality has been added.
  • Support of Maven projects has been added. See instruction about how to use JxBrowser in Maven project.
  • The JSArray and JSDictionary types in JavaScript Java Bridge API has been added.
  • JavaScript Java Bridge performance has been improved. Now it works ~10 times faster.
  • Support of passing JSON string to JavaScript side via JavaScript Java Bridge has been added.
  • The NetworkDelegate.onPACScriptError() event has been implemented.
  • Support of Accessibility on Windows and Mac has been implemented [heavyweight, swing, javafx].
  • Support of CJK Input on Windows and Mac has been added [heavyweight, swing, javafx].
  • Support of --disable-direct-write Chromium switcher has been added [heavyweight].
  • Support of SWT environment has been implemented [heavyweight, swing, javafx].
  • Fixed issue with missing Move cursor on Mac [lightweight, swing, javafx].
  • Fixed issue with wrong key codes on Mac [lightweight, swing, javafx].
  • Fixed issue with wrong cursor names in the cursors.properties file [lightweight, swing, javafx].
  • Fixed issue with wrong custom cursor location [lightweight, swing].
  • Fixed issue with incorrect target in DOMEventListener.
  • Fixed issue when video at vimeo.com doesn’t work.
  • Fixed issue when it’s possible to type text when Alt key is pressed [lightweight].
  • Fixed issue when print to PDF fails when pages count is 0.
  • Fixed issue when closing popup with PDF document leads to crash [heavyweight, swing, javafx].
  • Fixed issue when menu item doesn’t dismiss when click BrowserView control [heavyweight, swing, javafx].
  • Fixed deadlock when Browser displays default SSL certificate dialog [heavyweight, swing, javafx].
  • Fixed issue when multiple Browser instances cannot be configured to have their own proxy settings.
  • Fixed NoSuchMethodException on Mac when JxBrowser is used in Java Applet [heavyweight, lightweight, swing, javafx].
  • Fixed NullPointerException in the BrowserPreferences.getDefaultAcceptLanguage() method.
  • Chromium UI language by default is configured according to Java UI language.
  • The Trusted-Library attribute in JAR manifest files has been removed.
  • The debug.log file generation on Windows has been disabled.
  • Symlink for libcrypto.so.1.0.0 on Linux has been added.
  • In case of native crash in Chromium process on Windows, the library generates the jxbrowser-chromium.dmp file and stores it in %localappdata%\JxBrowser directory (e.g. c:\users\\appdata\local\JxBrowser\jxbrowser-chromium.dmp).

New in JxBrowser 5.4.3 (Sep 3, 2015)

  • Support of Mac OS X 10.6 has been enabled.
  • Support of Windows 10 and JRE 1.8.0_60 has been implemented.

New in JxBrowser 5.4.2 (Aug 8, 2015)

  • Stability of Chromium engine when open/close dropdown menu has been improved.
  • Fixed wrong initial document bounds on HiDPI monitors.
  • Fixed wrong location of dropdowns, popups, mouse during drag and drop on HiDPI monitors.
  • Fixed IllegalStateException exception when resize Browser during destroying.

New in JxBrowser 5.4.1 (Aug 4, 2015)

  • Support of Windows 10 has been added
  • Support of HiDPI Monitors in JavaFX has been implemented.
  • Improved rendering performance in Swing and JavaFX.
  • Improved stability with dropdowns on web page.
  • Improved stability when Flash full screen mode exits.

New in JxBrowser 5.4 (Aug 4, 2015)

  • Support of Speech Synthesis has been added.
  • Support of HTML5 FullScreen feature has been implemented.
  • Support of HIDPI displays on Windows 8 and higher has been implemented.
  • Support of Adobe Flash PPAPI has been added. PPAPI is used by default from now.
  • Support of WebSocket Cookies has been implemented.
  • Support of headers parameter in the LoadURLParams class has been added.
  • CPU and memory usage on Windows, Mac and Linux has been decreased.
  • Memory usage when open/close drop down menu on web page has been improved.
  • Memory usage when create/dispose Browser instance has been improved.
  • Stability on Windows XP SP2 and Windows Server 2012 has been improved.
  • Fixed the “DLL is being used by another process” error message in Java Applets.
  • Fixed issue with pending jxbrowser-chromium.exe processes on Windows.
  • Fixed issue with wrong key codes in JavaFX environment.
  • Fixed issue with wrong mouse location in Flash.
  • Fixed issue when keyboard doesn’t work in Flash on Mac OS X.
  • Fixed issue when it’s not possible to close Flash Settings dialog.

New in JxBrowser 5.3 (Jun 23, 2015)

  • Fixes and improvements:
  • Chromium engine has been upgraded to version 43.
  • Support of Ubuntu 15.04 has been added.
  • Support of all web cursors has been implemented.
  • Support of IBM JDK/JRE 1.7 and higher on Windows and Linux has been added.
  • The com.teamdev.jxbrowser.chromium.javafx.BrowserView.setDragAndDropEnabled(boolean enabled) method has been implemented.
  • Fixed issue when the PrintJobListener.onPrintingDone() event is never fired.
  • Fixed issue when programmatically upload file via INPUT TYPE=FILE doesn’t work.
  • Fixed painting issue in SELECT tag in JavaFX.
  • Fixed focus lost issue when load a new URL in JavaFX.
  • Fixed focus issue when BrowserView is displayed in JavaFX TabPane.
  • Fixed wrong location of DropDown popup in JavaFX.
  • Fixed issue when switching to another BrowserView when DropDown popup is open causes crash in JavaFX.

New in JxBrowser 5.2.1 (May 22, 2015)

  • Support of Ubuntu 14.04 has been added.
  • Deploying JxBrowser inside Mac App bundle has been restored.
  • HTTPS resources caching for web sites with invalid SSL certificate has been implemented.
  • JavaScript and DOM access on the loaded web page in a child window has been implemented.
  • Fixed deadlock when dispose Browser instance.
  • Fixed StringIndexOutOfBoundsException exception in the HttpHeadersImpl.buildFromString() method.

New in JxBrowser 5.2 (Apr 20, 2015)

  • Fixes and improvements:
  • Support of Custom Client SSL X.509 certificates has been implemented.
  • Support of Rich Text and Base64 Images in Drag and Drop functionality has been implemented.
  • Fixed NullPointerException when scroll page.
  • Fixed drawing issue when move BrowserView from Retina display to a regular display on Mac OS X.
  • Fixed IllegalStateException when update cursor in JavaFX.
  • Fixed issue when NetworkDelegate corrupts POST data.
  • Fixed native crash in Chromium engine when resize Browser component on Mac OS X.
  • Fixed native crash in JavaScript Java Bridge.
  • Fixed native crash in Chromium engine when Render process is terminated unexpectedly.
  • Fixed native crash in Chromium engine when set default zoom level.
  • Fixed issue when double value of JSValue instance has wrong numbers in JavaScript Java Bridge.
  • Fixed issue when Print Header & Footer have wrong number of total pages.
  • Print Dialog functionality has been improved. Fixed incorrect Duplex Mode in Print Dialog.
  • Print Dialog functionality has been improved. Fixed incorrect Page Range in Print Dialog. Now page number starts from 1.
  • Print Dialog functionality has been improved. Default printer is selected by default.
  • Print Dialog functionality has been improved. Fixed issue when initial print settings are not applied in Print Dialog.

New in JxBrowser 5.1 (Mar 23, 2015)

  • Support of Print Header and Footer has been implemented.
  • Support of Print Page Ranges has been implemented.
  • Support of Print Page Color Model has been implemented.
  • Support of Print Page Duplex Mode has been implemented.
  • Support of Print Page Size has been implemented.
  • Print and Save buttons in PDF Viewer have been enabled.
  • Custom Swing/JavaFX Print Dialog has been implemented.
  • Support of multi-threaded environment has been improved.
  • Fixed RuntimeException when drag and drop Base64 Image or Rich Text.
  • Fixed a native crash when open a new popup window.
  • Fixed a deadlock when invoke synchronous command from synchronous callback.

New in JxBrowser 5.0 (Feb 18, 2015)

  • features and improvements:
  • Support of JavaFX.
  • Support of Chromium 64-bit on Mac OS X.
  • Support of OSGi environment.
  • Support of system MP3/MP4 codecs on Linux.
  • New classes and methods added:
  • The DOMKeyEvent class.
  • The DOMMouseEvent class.
  • The DOMEvent.preventDefault() method.
  • The DOMEvent.stopPropagation() method has been added.
  • The DOMFormElement class.
  • The DOMInputElement class.
  • The DOMSelectElement class.
  • The DOMOptionElement class.
  • The DOMTextAreaElement class.
  • The JSObject class.
  • The JSFunction class.
  • The ResourceHandler class.
  • The NetworkDelegate.onDestroyed() method.
  • The NetworkDelegate.onBeforeSendProxyHeaders() method.
  • The RequestParams.getRequestId() method.
  • The ZoomService.setDefaultZoomLevel(double level) method.
  • The ZoomService.getDefaultZoomLevel() method.
  • The DownloadItem.cancel() method.
  • The DownloadItem.pause() method.
  • The DownloadItem.resume() method.
  • The DownloadItem.isCanceled() method.
  • The DownloadItem.isPaused() method.
  • Support of Chromium Geolocation API has been added. You can use BrowserPreferences.setChromiumVariable() method to configure Chromium engine with required API keys including Geolocation.
  • Support of Vertical and Horizontal Resize Cursors has been added.
  • The "--disable-web-security" and "–allow-file-access-from-files" Chromium switchers support has been added. You can use these switchers to disable Same-origin policy in Chromium engine which is enabled by default.
  • The DefaultDownloadHandler has been improved. It checks permissions of the selected directory and informs if Java process doesn't have rights to save file there.
  • The issue when the Browser.isDisposed() method returns false for already disposed or crashed Chromium engine.
  • Improved CPU and memory usage.
  • Improved stability in multi-threaded environment.
  • Improved stability in flash plugin.
  • Fixed IllegalArgumentException in cookie parser.

New in JxBrowser 5.0 Beta (Jan 15, 2015)

  • JavaFX:
  • Now, apart from Swing component, JxBrowser provides another one, that is designed for JavaFX applications. This new component allows to embed JxBrowser into JavaFX application like any other standard JavaFX component. Now Java developer should decide which component is to be used in their Java application. If Java application is based on Swing/AWT, then Swing component must be used. In case of JavaFX — JavaFX component.
  • JSObject:
  • In 5.0 API we introduced two new objects: JSObject and JSFunction. So, now you can work with JavaScript objects and functions directly from Java code.
  • Resource Interceptor:
  • With ResourceHandler you can get information about every resource that Chromium engine is going to load and decide whether it should be suppressed or not.
  • Chromium 64-bit on Mac OS X:
  • Since Google Chrome 64-bit is used on Mac OS X by default, we decided to enable support of Chromium 64-bit engine on Mac OS platform. This solution allows you to load and use web pages with Java Applets on Mac OS X.
  • OSGi:
  • JxBrowser 5.0 JAR files contains the required for OSGi bundles information, so you can use them in OSGi environment as well.
  • CPU\Memory usage:
  • We also improved CPU and memory usage of JxBrowser library. Now, when UI component that displays web page isn't visible, it doesn't allocate memory for web page rendering. It allows significantly decreasing CPU and memory usage of your Java application.
  • Google API Keys:
  • With the BrowserPreferences.setChromiumVariable() method you can configure Chromium engine with specified API Keys such as Geolocation Keys (GOOGLE_API_KEY, GOOGLE_DEFAULT_CLIENT_ID and GOOGLE_DEFAULT_CLIENT_SECRET) that allows enabling Geolocation API in Chromium engine.
  • DOM Events:
  • We added new classes and methods to JxBrowser DOM Events API. Now you can get more information about DOM event and, if it's a mouse or keyboard event, you can get additional information about mouse location, button, key code, etc. Also we introduced two new methods in DOMEvent: stopPropagation() and preventDefault().
  • Features & Improvements:
  • The DownloadItem.cancel() | pause() | resume() | isCanceled() | isPaused() methods have been implemented.
  • The DefaultDownloadHandler has been improved. It checks permissions of the selected directory and informs if Java process doesn't have rights to save file there.
  • The Browser.isDisposed() method has been improved. Now it pings Chromium engine to make sure that it's really alive.
  • The ZoomService.setDefaultZoomLevel(double level) and ZoomService.getDefaultZoomLevel() methods have been added. You can use them to configure default zoom level for all Browser instances in the current context.
  • The RequestParams.getRequestId() method has been implemented. You can use it to associated HTTP request with its response by ID.
  • The NetworkDelegate.onDestroyed() method has been added.
  • The NetworkDelegate.onBeforeSendProxyHeaders() method has been added.
  • The "--disable-web-security" and "–allow-file-access-from-files" Chromium switchers support has been added. You can use these switchers to disable Same-origin policy in Chromium engine which is enabled by default.
  • Support of Chromium Geolocation API has been added.
  • The DOMKeyEvent class has been added.
  • The DOMMouseEvent class has been added.
  • The DOMEvent.preventDefault() method has been added.
  • The DOMEvent.stopPropagation() method has been added.
  • The BrowserPreferences.setChromiumVariable() method has been implemented. You can use it to configure Chromium engine with required API keys.
  • The ResourceHandler API has been added. This API allows intercepting all resources that Chromium is trying to load from a web server.

New in JxBrowser 4.8 (Dec 27, 2014)

  • Support of multiple file upload has been implemented.
  • Support of the “--allow-running-insecure-content” Chromium switcher has been added.
  • Fixed IllegalStateException when parse POST form data.
  • Fixed IllegalStateException when POST data contains “|” character.
  • Fixed ArrayIndexOutOfBoundsException in the DialogHandler.onSelectCertificate() method.
  • Fixed native crash in Chromium network delegate functionality.

New in JxBrowser 4.7 (Dec 6, 2014)

  • Chromium engine has been upgraded to version 39.
  • Support of Debian 7.7 32-bit and 64-bit has been added.
  • Support of Mac OS X 10.10 has been added.
  • Fixed wrong encoding in JSValue.
  • Fixed StringIndexOutOfBoundsException in CookieParser.
  • Fixed memory leak when resizing Browser component on Linux and Mac OS X.
  • Fixed access violation error when loading URL with wrong cookie format.
  • Fixed incorrect behavior of drop down list in JTabbedPane.
  • Fixed incorrect behavior of drop down list when pressing Enter.

New in JxBrowser 4.6 (Oct 14, 2014)

  • Support of Ubuntu 14.04 has been added.
  • Support of Mac OS X 10.7 has been restored.
  • Printing API has been implemented. See example.
  • The LoadHandler.canNavigateOnBackspace() method has been added. This method allows handling navigation on Backspace or Shift+Backspace. See example.
  • The NetworkDelegate.onCanSetCookies() and NetworkDelegate.onCanGetCookies() methods have been added. These methods allows filtering cookies. See example.
  • Support of HTML5 local storage has been implemented.
  • Support of touch scrolling for Windows 8.x has been implemented.
  • Support of German and other symbols in Silverlight plugin has been added.
  • Support of --disk-cache-size Chromium switcher has been implemented. This switcher allows configuring Chromium cache size.
  • Support of OpenGL has been added. The required d3dcompiler_46.dll library has been included into Windows Chromium binaries.
  • Chromium executable files now are marked as executable for all users in Linux environment.
  • The rendering in Windows environments with scaled font has been improved.
  • Drag and Drop functionality has been improved.
  • Fixed:
  • NullPointerException in the CookieParser.parseCookiesString() method.
  • Issue when combo box doesn’t work in modal dialogs.
  • StringIndexOutOfBoundsException in the HttpHeadersImpl.getStringRepresentation() method.
  • Incorrect key codes in JavaScript key events.
  • Fixed incorrect LoadPolicy flag value in the LoadParams.getPolicy() method.
  • Fixed issue when Java plugin isn’t recognized in PluginFilter.

New in JxBrowser 4.5 (Aug 7, 2014)

  • Chromium engine has been upgraded to version 38.
  • Support of PDF Viewer has been implemented.
  • Stability in multi-threaded environment has been improved.
  • Support of --enable-file-cookies switcher has been added. This switcher allows enabling cookies for local web pages.
  • Plugin Manager API has been added. See example.
  • XPath API has been added. See example.
  • The DOMElement.setInnerHTML(String html) method has been added.
  • The Browser.getSelectedText() method has been added. See example.
  • Support of Space and Enter in combo box has been implemented.
  • Support of Retina displays in HTMLToImageSample has been added. See updated example.
  • Fixed incorrect painting in combo box popup menu.
  • Fixed NullPointerException when capture POST data.
  • Fixed incorrect painting when create several Browser instances.
  • Fixed issue when empty class in chromium JAR file causes an error in analysis tool.
  • Fixed wrong length of the string with accented characters in JavaScript to Java Bridge.
  • Fixed issue when BrowserPreferences cannot be applied on the fly.
  • Fixed issue when Silverlight text fields ignores Ctrl and Shift key strokes.

New in JxBrowser 4.4 (May 30, 2014)

  • Support of Fedora 20 has been added.
  • Support of OpenSUSE 13 has been added.
  • Support of left/right scrolling on Mac OS X has been implemented.
  • Support of default Chromium navigation error web page has been implemented.
  • Support of Drag and Drop has been added on Linux.
  • Support of Drag and Drop has been added on Mac OS X.
  • API that allows accessing and modifying request POST data has been implemented. See example.
  • Fixed HeadlessException when user creates Browser component in headless mode.
  • Fixed issue when empty popup window isn’t closed when user downloads a file.
  • Fixed issue when Chromium process is unexpectedly terminated when user closes popup window right after it has been displayed.
  • Fixed hang issue during Browser instance initialization on Mac OS X.

New in JxBrowser 4.3.1 (Apr 25, 2014)

  • Support of multi-threaded environment has been implemented.
  • Support of custom cursors has been implemented. See example.
  • The Browser.getFramesIds() method has been added. See example.
  • The Browser.findText(SearchParams params) and Browser.stopFindingText(StopFindAction action) methods has been implemented. See example.
  • Fixed issue when tooltips on a web page are not displayed.
  • Fixed issue when Chromium doesn’t recognize system proxy settings when they are configure to automatically detect proxy settings.
  • Fixed issue when invalid frame ID can be passed to the methods such as Browser.getDocument(long frameId), Browser.loadURL(long frameId, String url), Browser.getHTML(long frameId) etc. Now such methods throw IllegalArgumentException when frameId parameter is invalid.
  • Fixed NullPointerException when user drags and drops files over Browser component.
  • Fixed StringIndexOutOfBoundsException in the HttpHeadersImpl.buildFromString() method.
  • Fixed issue when calling the Browser.reload(true) method data doesn’t display confirmation dialog on a web page with POST that must be re-sent to a web server.

New in JxBrowser 4.3 (Mar 22, 2014)

  • Support of Java 8 has been added.
  • Support of Ubuntu 13.10 has been added.
  • Support of DnD has been implemented for Windows platforms.
  • Support of WebRTC has been added.
  • Support of Chromium Developer Tools and Remote Debugging Port has been implemented.
  • Support of web camera has been implemented.
  • Navigation History API has been added. See example.
  • Network Delegate API has been implemented. Using this API you can handle HTTP request/response headers. See example.
  • The DOMElement.getAttributes() method has been added. See example.
  • The DOMDocument.createElement(String tagName) method has been added. See example.
  • The DOMDocument.createTextNode(String text) method has been added. See example.
  • The DOMNode.appendChild(DOMNode childNode) method has been added. See example.
  • The DOMNode.setNodeValue(String value) method has been implemented. See example.
  • The DOMNode.querySelector(String selectors) method has been added. See example.
  • The DOMNode.querySelectorAll(String selectors) method has been added. See example.
  • The CookieStorage.setSessionCookie() method has been added. Using this method you can create session cookies.
  • The Cookie.isSession() method has been implemented.
  • The LoadHandler.onCertificateError(CertificateErrorParams params) event has been added. This method can be used to handle SSL certificate errors. See example.
  • The LoadListener.onProvisionalLoadingFrame(ProvisionalLoadingEvent event) event has been added. This method can be used to get notifications about navigations inside loaded web page. See example.
  • The Browser.setPreferences(BrowserPreferences preferences) method has been implemented. You can use this method to modify different browser preferences such as enable/disable JavaScript, Images, plugins etc. See example.
  • Fixed issue when JavaScript slider doesn’t work.
  • Fixed issue when Browser instance cannot be created due to socket connection error.
  • Fixed issue when Browser instance cannot be created on the latest Linux distributions because of missing libudev.so.0 native library.
  • The CloseStatus com.teamdev.jxbrowser.chromium.DialogHandler.onAuthRequired(AuthDialogParams params) method has been moved to boolean com.teamdev.jxbrowser.chromium.NetworkDelegate.onAuthRequired(AuthRequiredParams params)

New in JxBrowser 4.2.1 (Feb 13, 2014)

  • The CacheStorage.clearCache() method has been implemented. You can use it to clear Browser’s cache data during program execution. See example.
  • The DOMNode.click() method has been added. See example.
  • The Product.getVersion() method has been added. You can use it to get information about JxBrowser build and version. See example.
  • The Browser.executeCommand() method has been added. This method allows you to execute different commands on the web page such as Cut, Copy, Paste, Select All, Unselect, Insert Text etc. See example.
  • Support for Japanese IME on Windows platforms has been added.
  • Support for JxBrowser deploying via Mac *.app bundle has been implemented. Now you can deploy your Java application with JxBrowser library on Mac OS X platform as *.app file.
  • Improved rendering performance. Now rendering works 10 times faster on all platforms.
  • Improved rendering stability on Mac OS X and Linux platforms.
  • Fixed issue when it’s not possible to create, dispose and create Browser instance again.
  • Fixed issue when "Too many open files" message dialog appears on Mac OS X during program execution.

New in JxBrowser 4.2 (Jan 27, 2014)

  • Upgrade Chromium from 25.0.1364.68 to 31.0.1650.57.
  • Add Windows Vista support.
  • Add Windows Server 2003 SP1 support.
  • Add MacBooks with Retina displays support.
  • Add the DOMDocument.getElementsByClassName() method.
  • Add the DOMDocument.getElementsByName() method.
  • Add the DOMElement.innerHTML() method.
  • Add StatusListener. See example.
  • Add the Browser.saveWebPage() method. See example.
  • Add FTP protocol support. Now you can load FTP URLs.
  • Add Drag and Drop support. Now you can drag links from loaded web page.
  • Add Mouse listener. See example.
  • Add Keyboard listener. See example.
  • Add Copy, Cut, Paste, Select All shortcuts support on Mac OS X.
  • Add missing HTML5 video controls.
  • Add system language support for HTTP headers. By default JxBrowser uses system language in HTTP headers. In previous versions it uses only English.
  • Improve Flash rendering on Windows.
  • Improve stability in renderer process on Windows XP SP3.
  • Improve default popup windows functionality. By default popup windows are not empty anymore.
  • Fix the issue with pending jxbrowser-chromium.exe processes. Now all jxbrowser-chromium.exe processes will be closed automatically when java.exe process is closed.
  • Fix the issue when JxBrowser creates unnecessary directories in user’s temp folder.
  • Fix file encoding dependence issue. Now JxBrowser supports any application file encoding. Previously the file.encoding=UTF-8 VM option should be used.
  • Fix concurrency issue on Mac OS X. Now JxBrowser doesn’t hang when you load several web pages at the same time on Mac OS X.
  • Fix unexpected file download interruption. Now the download process isn’t interrupted and continue working even when user disposes Browser instance that initiated file download.
  • Fix issue when enabled auto detect proxy option overrides JxBrowser Proxy settings.
  • Fix deadlock on Save File dialog on Mac OS X with JDK 1.7.
  • Fix issue when it’s impossible to create a Browser instance after killing jxbrowser-chromium.exe processes.
  • Fix the “IllegalComponentStateException: component must be showing on the screen to determine its location” exception.

New in JxBrowser 4.1 (Nov 26, 2013)

  • Added Windows Server 2008 R2 support.
  • Added Windows Server 2012 support.
  • Added the DOMNode.getElementsByTagName() method.
  • Added the Browser.getNodeAtPoint() method. See example.
  • Now each Browser instance inherits system network and proxy settings by default.
  • Added LoadHandler interface to handle URL loading. See example.
  • Added ConsoleListener interface to listen to console messages including JavaScript errors. See example.
  • Added KeyFilter interface for filtering keyboard events. See example.
  • Improved memory usage. Resolved several small Java memory leaks.
  • Fixed 3.x and 4.x license conflict. Now you can use JxBrowser 3.x and 4.x in the same project.
  • Fixed the hang issue with the BrowserView.updateSize() method.

New in JxBrowser 4.0 (Nov 15, 2013)

  • Cookie API that can be used to receive all the cookies including secure and HTTP-only ones, delete all the cookies or a specific one, create and register new cookies. See the CookieSample.
  • Two-way communication bridge between JavaScript and Java. You can execute JavaScript code on the loaded web page and return the result of execution to the Java side. See the JavaScriptJavaSample.
  • DOM API with DOM Events.
  • The BrowserView.getImage() method that can be used to get an image of the loaded web page. See the HTMLToImageSample.
  • Chromium Switches support. See the BrowserPreferences.setChromiumSwitches(String… switches) method.
  • Windows XP SP2 environment support.

New in JxBrowser 4.0 Beta 2 (Jul 19, 2013)

  • Mac OS X Support
  • Added new methods to the Browser interface such as loadHTML(String html), loadHTML(int frameId, String html), loadHTML(LoadHTMLParams params), loadHTML(int frameId, LoadHTMLParams params), loadData(LoadDataParams params), getHTML() etc. Now you have a flexible way to load any string that represents HTML content or binaries data directly into Browser component and display it.
  • Added ContextMenuHandler that you can use to display context menu. New version of ContextMenuHandler interface provides more context menu parameters such as media type, link URL, link text, image source URL, page URL, frame URl, frame charset, selection text etc.
  • Added DownloadHandler, so you can handle all file downloads. See the DownloadSample.
  • Added DialogHandler that allows handling JavaScript dialogs such as Alert, Confirm and Prompt.
  • New Zoom API is introduced. In addition to standard set/get zoom level methods you can now listen to zoom change events using ZoomListener. We also added new methods such as zoomIn(), zoomOut() and zoomReset().

New in JxBrowser 3.1 (Aug 27, 2012)

  • New features:
  • Added Mac OS X 10.8 (Mountain Lion) support;
  • Added a new Mozilla engine based on XULRunner 15 that supports Windows 32-bit and Mac OS X 32/64-bit environments. See com.teamdev.jxbrowser.BrowserType.Mozilla15;
  • Added the domain parameter in the com.teamdev.jxbrowser.prompt.LoginParams class.
  • Improvements:
  • Fixed issue when Browser’s java.awt.event.KeyEvent doesn’t contain correct key code.
  • Mozilla engine:
  • Added the MozillaBrowser.getContent(String contentType) method;
  • Fixed issue when register the same JavaScript function in two Browser instances;
  • Improved JavaScriptJava Bridge. Fixed deadlock when register JavaScript function in the NavigationListener.navigationFinished(NavigationFinishedEvent event) event;
  • Added support of the window.print() JavaScript function;
  • Added support of default proxy settings. Now Mozilla allows reading default proxy settings;
  • Added support of Java 7 on Linux;
  • Added support of Turkish Windows 7 platform;
  • Added support of multiple plugin directories;
  • Added the com.teamdev.jxbrowser.dom.DOMElement.innerHTML() method;
  • Improved download functionality in Mozilla.
  • IE engine:
  • Improved clear cache functionality;
  • Improved performance of the Browser.executeScript(String javaScript) method;
  • Added the com.teamdev.jxbrowser.dom.DOMElement.innerHTML() method.
  • Safari engine:
  • Improved the Browser.navigate(String location, String postData) method;
  • Improved JavaScriptJava Bridge. Added support of negative double values;
  • Improved Safari component so it works in modal dialogs;
  • HttpCookieStorage now supports 64-bit environment;
  • Added support of Print functionality;
  • Disabled JNI logging in console.

New in JxBrowser 1.3 (Jul 16, 2009)

  • New Features:
  • Added method WebBrowser.toImage() for capturing the whole web page to image (sample).
  • Added class CookieManager for cookies management.
  • Added method isLoadingCompleted() that allows determine if entire document loading is completed.
  • Improvements:
  • Custom implementation of nsPromptService to show message, promt, confirmation and authentication dialogs.
  • WinPack and JNIWrapper updated to the latest official version.
  • Added ability to navigate through page content using TAB button.
  • Resolved Issues:
  • Sun Java 1.6 support (platform: Linux).
  • JxBrowser hangs up when proxy authentication dialog appears (platform: Mac OS X).
  • Duplicated proxy authentication dialogs (platform: All).
  • Low browser performance on sites with rich content (platform: All).
  • Meta redirects do not work (platform: All).
  • Several issues with focus in browser (platform: All).
  • setContentWithContext works unstable when we use it often over a small intervals of time (platform: All).
  • JavaScript alert, confirm and prompt do not stop JS execution (platform: All).
  • Mac Style menu disappears during Xpcom.initialize() or WebBrowserFactory.getInstance().createBrowser() (platform: Mac OS X).
  • Sometime black box appears instead of Browser component (platform:Linux & Mac OS X).
  • Problem with text encoding at some non-English sites (platform: All).
  • Corrected sample code for printing functionality (doc: JxBrowser Programmer's Guide)