We are happy to announce the release of Awesomium.NET 18.104.22.168. This is a stable, critical release including many fixes, new experimental features and enhancements.
- Download the Awesomium 1.7.5 SDK (includes the Awesomium.NET binaries and samples)
- Awesomium.NET 1.7.5 API Reference
- Setting up on Windows
- Setting up on Mac OS X
Major New Features
With this release we are introducing many important new features and improvements. Some of them may require refactoring your code.
Please read: Breaking API Changes in v1.7.5 for a list and presentation of important API changes in version 1.7.5 that require refectoring your code.
Here is a short presentation of some of these new features and improvements:
All throughout the Awesomium.NET project, a series of code optimizations have been applied that significantly improve the overall performance of Awesomium.NET components.
- Pages and resources are now loaded faster.
- Overall memory usage improved.
- Rendering and resizing in offscreen surfaces is performed faster, using less resources.
- Awesomium.NET now logs messages to the log file (see:
LogLevel). Exceptions and their stack trace are also logged.
- Performance of Awesomium.NET’s synchronization context (for non-UI environments and cross-thread interaction) has been improved and more features are added.
This is only a short list of the new features:
JSObjectinstances passed, acquired or created in a JEC, are automatically disposed upon exiting the method (handler) associated with the execution context. You no longer need to explicitly dispose JSObjects in those methods (by wrapping code with
usingstatements for example).
documentor the generics of
Global. Applications no longer need to perform additional synchronous calls to acquire these objects (using
- Users can now derive
JSObject(it is no longer
- Dynamic Language Runtime (DLR) support on
Global, are already of type
dynamic. The overall performance and reliability of DLR on
JSObjecthas also been improved and basic DLR support has been added to
- All dynamic expressions now return either
JSObject(and subclasses of it). Unary and binary operations support has been added to
JSValueand many new casting operators and features are added to both
JSObjectthat simplify code.
JSFunction, a custom subclass of
functionacquired from the page, are wrapped as
JSFunctionand implicit casting from
- JSObject’s indexer now also returns members of type
- You can now check for
- An indexer has been added to
navigator.languagenow correctly reports a value related to the hosting application’s
CultureInfoand extension methods have been added to the
Utilitiesof technology-specific assemblies that help you set the application’s culture and thus also control the appearance of web applications that rely on
navigator.language. Also, the missing
clickmethod has been added to the prototype of
WebControlwith a multi-touch surface (or code the new
InjectTouchEventmethod with any web-view component). Event listener assignment properties for touch events have been added to
Node, the base class of all DOM elements.
- Many more fixes and reliability improvements under the hood.
- Synchronous & Asynchronous API
- Dynamic Language Runtime (DLR) Support
New WPF Design-Time Support
Three new WPF Designer support assemblies have been added to the SDK that provide design-time features for Awesomium.NET WPF components for Visual Studio 2010, 2012 and 2013.
Here’s a list of the new design-time support features provided to WPF components:
- You can now edit the
WebSessionProviderdirectly from the Properties window when a
WebSessionProvideris selected in XAML (even if a
WebPreferenceselement is not added in XAML). Even if properties in the Properties window are not sorted by Category, a dialog is available for editing
- Default values of preferences are shown to the Properties window or dialog and tooltips with descriptions for each setting are available.
- A dialog has been added that allows you to see and edit the properties of
WebSessionProviderwhen it’s selected in XAML.
- New Properties window editors have been added for most of the properties of a WPF
- Awesomium.NET’s designer of a
WebControlnow controls the settings and the availability of properties of a
WebControlin the Properties window, based on other settings of the application or the
- WebControl’s editor of the
WebSessionproperty in the Properties window provides a drop-down menu that allows you to select from existing
WebSessionProviderresources. Upon selection, XAML is automatically generated.
- When you drag and drop a
WebControlfrom the Visual Studio toolbox in Visual Studio 2012 and 2013, the control automatically performs initialization and fills the parent container in the designer.
Install the SDK now and explore the new WPF design-time features.
As always, don’t forget to download the ClickOnce WPF demo, from here.
PDF Files Viewer
Awesomium.NET v1.7.5 incorporates PDF.js. When you navigate to a PDF file, Awesomium.NET’s PDF.js implementation is loaded and shows the PDF file in any Awesomium.NET web-view component.
This technology is experimental.
- Users can still download the original PDF file using the Download button available in the viewer’s toolbar.
- Awesomium.NET automatically replaces HTML
<object>tags in a page that attempt to load Adobe’s PDF Reader plugin (that is officially not supported by Awesomium), with an
<iframe>that loads Awesomium.NET’s PDF.js implementation.
- Users can enable or disable PDF.js support through
- The PDF viewer is automatically localized based on the value of
navigator.language, thus based on the application’s current
Run an Awesomium.NET sample or demo now, and navigate to the PDF version of this CHANGELOG.
A single powerful new API member,
IgnoreDataSources, now allows users to asynchronously load resources for remote pages, combining the power of an
IResourceInterceptor implementation and of a custom
Members of an
IResourceInterceptor are called in the I/O thread and providing a response must be performed synchronously (actually, delaying the I/O thread in any way can cause all sorts of side effects). However, custom DataSources (designed to load local pages and resources on a web-view), can provide responses and resources asynchronously. Using the available new API, users can now combine the power of these two classes to asynchronously load resources for remote pages:
Simple WebView Example:
- Create a custom
AsyncDataSourceor use any of the predefined Awesomium.NET DataSources to load resources from assembly resources, a local directory or a compressed PAK file).
LoadResourceAsyncrespectively) to asynchronously provide one or more resources upon certain requests. (Skip this step if you use a predefined
- Explicitly initialize the
- Create a
WebSessionand add your custom
CATCH_ALLas host name.
Create a new
WebViewusing the created
Now, all requests for and from remote pages (using the
"https"protocol), irrespective of hostname (domain name), will be directed to your custom catch-all
DataSource. But you cannot (and you don’t want to) provide all resources from local assets.
IResourceInterceptorand assign your implementation to
WebCore.ResourceInterceptor. Even when you use DataSources, all requests targeting a
DataSourceare still passing from
- In your implementation of
IResourceInterceptor.OnRequest, check the value of
ResourceRequest.Url(or any other parameters you want to evaluate). If the request targets a resource that you want to load asynchronously, set
false; for all other requests, set
IgnoreDataSourcestells Awesomium to ignore any DataSources registered for this asset protocol and hostname, and process the request normally (which means the request will be sent to the remote server).
This way you can load only certain resources asynchronously while let the rest of the resources be normally loaded from the remote server.
For a sample of this scenario, see the Windows Forms WinFormsSample available with the SDK. The sample code (see:
WebForm.cs) can be used with any technology and web-view component (WPF, MonoMac etc.).
- Code optimizations and performance improvements all throughout the Awesomium.NET project.
- Added logging of Awesomium.NET events to application log.
- Improved JIF to assist native
HTMLproperty contents and handle pending
- Added PDF.js integration.
- Added support for environment variables in
- Improved performance of
- Added support for DOM
- Added standard
booloperator to process all types.
- Added binary and unary operators to
JSValueis now a class.
- Many performance improvements in
- Added support for asynchronous
- Completely redesigned (re-wrote) JIF using supported ECMAScript 5 features.
- Designed and created the
OSMJIFAPI allows clients obtain global and per-view information.
OSMJIFAPI allows clients add listeners for global or per-view native events.
OSMJIFAPI allows clients control parts of the native application.
OSMJIFextends the DOM to handle all multi-touch-related features (such as scrolling).
- Made it so most
JSObjectoperations are first handled by JIF, if available, significantly improving performance.
- Made it so implicit casting of
JSFunctionalways succeeds returning an invalid object.
- Added full support for dynamically indexing JSObjects.
- Made it so local JSObjects hold members in internal managed dictionaries.
- Made it so all dynamic expressions on
- Many optimizations and performance improvements on
JSObjectis not sealed any more.
JSObjectindexer overloads that take a
JSObjectis now enumerable (enumerates ECMAScript enumerable property names).
- Made it so users can restore local JSObjects back to their original subclass when reacquired from V8.
- Most late binding errors on
JSObject(in DLR) no longer throw an exception.
- Added dynamic conversion support to
- Added support for passing managed handlers as callbacks directly to dynamic expressions.
- Added basic support of DLR to
- Added indexer to
JSValuethat allows accessing and editing arrays, objects and strings.
- Added support for passing objects through the synchronous
- More VB.NET DLR improvements.
- A single background thread is now handling auto-update in
- Significantly improved and added more documentation.
http://schemas.awesomium.com/coreXMLNS schema for Core assembly.
- Added WPF Designer extensions for
WebSessionProviderfor Visual Studio 2010, 2012 and 2013.
- Added full WPF Touch/Stylus support.
- Made it so mouse is only injected on tap or after press-and-hold.
- Added support for scrolling (touch-drag) parent scrollable elements instead of the view.
- Implemented Undo/Redo for Inspector changes.
- Added API to create Inspector Views.
JSValue (All Unary & Binary operators)
Awesomium.Windows.Forms (Windows Forms)
- Fixed crash on Windows XP when using Facebook Connect (and other sites with similar certificate signing modes).
- Fixed crash that occurs if user unfocuses a textbox during an IME composition.
- Fixed crash with very large strings of
- Fixed issue in
ResourceDataSource(folders with a dash are replaced by an underscore).
- Assigning null string to
- Fixed invalid synchronization context issues that may occur on UpdateTimerCallback, when
- Fixed illegal disposal of the managed wrapper of the global
- Fixed issues with
IWebView.HTMLnot returning the full page contents. (#61)
- Fixed issue where early
window.closecalls where not being processed. (#61)
- Using invoke on several threads crashes Awesomium. (#59)
- Fixed issues with
JSObjectdynamic indexer calls on VB.NET.
- Fixed issues with
- Fixed issue with
JSObject.ToStringcrashing when called on Global objects.
- Fixed issue in
WebSession.HasViewsthat could cause a
WebSessionbeing prematurely released.
- Fixed issue where local
JSObjectinstances being assigned as members of other local JSObjects, are set by value.
- Fixed massive thread spawning at
InAutoUpdatemode when UI thread is blocked. (#71)
- Fixed issue where
SurfaceFactorywould fail to destroy unused surfaces.
- Fixed issue preventing navigation when only the anchor of a URL is changed. (#52)
- Fixed issue with
IsDocumentReadybeing set to false when secondary frames are being edited or unloaded. (#75)
- Fixed issues with, and improved behavior of
- Added support for loading local PDF files through the
- Fixed exception that occurred during the initialization of
- Fixed error in
- Fixed issue with
- Fixed issue that would prevent temporarily unloaded
WebControlcontainers (such as those in a TabControl’s tab), accessing the
- Fixed issue that caused windowed WebControls crash the app when being destroyed.
- Fixed issue that prevented windowed WebControls from loading the initial (design-time)
- Fixed issue that prevented user code from overriding the WPF “Sad Tab”. (#84)
- Fixed issue that caused the Cut/Paste commands be always enabled in the WPF context menu. (#85)
- Fixed issue that prevented subclassing of
- Fixed issue with exception thrown occasionally at
- Fixed issue with locating PAK files of internal DataSources.
- Fixed issue with creating on-disk WebSessions through an
Changes in Samples
- Updated all samples to use a standard
- Fixes and improvements in BasicAsyncSample to use latest features.
- Updated WinFormsSample demonstrating asynchronously loading resources through ResourceInterceptor+DataSource.
- Updated TabbedWPFSample demonstrating how to extend JIF.
- Updated WPF WebControlSample to reflect the new JEC features and new DLR support features.
- Expanded WPF StarterSample and VBStarterSample with examples of taking screenshot and interacting with the page.
- Updated WPF StarterSample and VBStarterSample to reflect the new JEC features and new DLR support features.
- Updated WPF WebControlSample to demonstrate forcing use of SKIA for font rendering.
- On Windows 8, WebGL is currently not supported.
- Multi-touch support for WPF
WebControlon Windows 7 and earlier, lacks the press-and-hold feature. This is a system limitation. However, events are still propagated to the mouse if you keep your finger to the surface until the system’s press-and-hold gesture completes.
- Manipulating scrollbars when you are using a touch surface or stylus with the WPF
WebControl, is currently handled as regular touch manipulation and may have the oposite from the expected effect. To manipulate scrollbars with a touch point as you would with a mouse, use the press-and-hold gesture. (You can still however scroll pages using normal touch gestures, inside the page.)
- Design-time support of the WPF
WebSessionProvidercurrently does not allow editing the
DataSourceslist directly through the respective dialog but this feature is planned for next release.
- When you are using the OSX
OSMWebView, drop-down (popup) menus (e.g., HTML:
<select>), are not displayed automatically. Predefined drop-down (popup) menus have been added to the WPF
WebControland the Windows Forms
WebControlbut not to the MonoMac
OSMWebViewyet. However, the new powerful API allows you to design and display these yourself, by handling the
You can find this and previous Changelogs, under the Changelogs category.