Change-Log for releases
1.7.0
Most noteworthy changes:
- PCH is no longer enabled by default – it speeds up build times but breaks intellisense :-/
- Visual Studio 2012 is now supported
- FB::variant had a memory leak which has now been fixed – FB::variant now uses boost::any internally
- boost has been updated to 1.50.0
- log4cplus has been updated to 1.1.0
PluginConfig changes
FBSTRING_FileDescription has been renamed to FBSTRING_PluginDescription (with fallback to the old to preserve backwards compatibility)
DOM abstraction changes:
- added appendChild method to DOM::Node
Core changes
- FIREBREATH-176 : Fixed memory leak w/ multiple references to a JSAPIAuto on NPAPI browsers
- Added a new static method BrowserPlugin::getFSPath (alias to getFSPath on the PluginCore object that can be called from anywhere)
- FIREBREATH-171 : Added support for unsolicited streams on NPAPI browsers
- class FB::URI has been updated to support + characters and has support for adding query parameters
- BrowserStreams have been updated to use class FB::BrowserStreamRequest objects; old APIs are still there for backwards compatibility
- The fbgen template now includes commented-out code for creating a CRX chrome extension for distributing the plugin on Chrome. - EXPERIMENTAL
- The fbgen template now includes commented-out code for creating a XPI firefox extension for distributing the plugin on Firefox. - EXPERIMENTAL
- Removed JSArray (never finished, documentation was confusing)
- Added support for converting container and dictionary return values from JSAPI methods
- FIREBREATH-196 : InvokeAsync was failing sometimes on all browsers
- FireBreath plugins now build with UNICODE and _UNICODE defined to improve consistency with libraries (including log4cplus)
Windows changes
- Fixed bug in IE where objects were not always being retained.
- FIREBREATH-177
- The fben template now includes commented-out code for creating a CAB file for distributing the plugin on IE. - EXPERIMENTAL
- WIN_ERASE_BACKGROUND is now suppressed by default (should prevent the flickering issue on scrolling that some users experienced)
- FIREBREATH-174 : fixed innerHTML on IE
Mac changes
- Fixed misc warnings from deprecated APIs
- FIREBREATH-178 : fixed crash if StopAutoInvalidate is called twice
- The default drawing models on Mac for a new plugin is now Cocoa and CoreGraphics
- The fbgen template now includes commented-out code for creating a DMG installer for your plugin (just uncomment and go) - EXPERIMENTAL
- FIREBREATH-198 : Removed an unneeded CFRelease from a codepath that should never run
- Added 3 new cmake macros to assist with signing on Mac:
firebreath_find_plugin_path (OUTPATH PROJECT_NAME)
- example: firebreath_find_plugin_path(PLUGIN_PATH ${PLUGIN_NAME})
firebreath_sign_file (PROJECT_NAME FILE_TO_SIGN IDENTITY)
- This is used by firebreath_sign_plugin internally; usage is the same, except FILE_TO_SIGN should be the aboslute path of the file to sign
firebreath_sign_plugin (PROJNAME IDENTITY)
- example: firebreath_sign_plugin (${PLUGIN_NAME} "3rd Party Mac Developer Application: FireBreath Team"
X11 changes
- InvalidateWindow on X11 should now work (does a X11NativeGdkEventExpose)
- FB_GUI_DISABLED should work again to remove the dependency on gdk
1.6.0
Most noteworthy changes:
- Major (2-3 times) build time speed increase on Windows by enabling Precompiled Headers (PCH)
- Proxy detection support
- Fix for non-drawing plugins on Safari 5.1 (workaround for older versions: enable Cocoa and CoreGraphics)
- Improved UTF8 support
- Improved stability, particularly on Mac
- Better support for Firefox 4 and later
- Support for building against Mac OS X 10.7 SDK
- FireBreath now requires CMake 2.8.5 or later on Mac OS X.
- FIREBREATH-128 - Now works on Safari 5.1 on windows (workaround for Safari dropping an NPAPI API)
- Now builds with the new CLANG compiler on Mac
No breaking changes this release!
Core changes
- FIREBREATH-28 : Proxy Detection implemented - added BrowserHost::DetectProxySettings
- FIREBREATH-17 : Added some cmake logic to handle inconsistent proxy settings.
- FIREBREATH-52
- FIREBREATH-78 : Fix bug where setReady is called multiple times
- FIREBREATH-92 : add shutdown method to JSAPI class to notify of browser shutdown
- FIREBREATH-94 : Changed UTF8 libraries to use a more C++ friendly and better cross-platform one (UTF-CPP)
- FIREBREATH-99 : Fixed
- FIREBREATH-100 : Fixed unsafe vector iteration on JSAPIProxy unregisterProxy
- FIREBREATH-62 : Updated async method firing to use js delegate to fix ff4 issues
- FIREBREATH-115
- Added FB_OPTIMIZE flag to allow optimizing for size or speed (only supported on windows, currently)
- Fix to work with newer versions of boost
- FIREBREATH-126 - Add modifier to mouse messages
- FIREBREATH-129
- FIREBREATH-121 - Plugin version number now used by default everywhere
- FIREBREATH-130 - added BrowserHost::Navigate for opening a url in a new window
- FIREBREATH-123 - Added SynchronousPost method to SimpleStreamHelper
Windows changes
- FIREBREATH-85 : Enabled Precompiled headers, major build time speed improvement on windows!
- FIREBREATH-44 : Enable hosting in a native application (not web browser).
- FIREBREATH-47 : Clear the window during InPlaceDeactivate. Bookend
- FIREBREATH-49 : changed CreateURLMoniker to CreateURLMonikerEx (IE streams)
- FIREBREATH-56 : Patch applied; thanks!
- FIREBREATH-63 : Added suspend and resume to ActiveXBrowserHost
- FIREBREATH-64 : invalidate entire control for ax windowless
- FIREBREATH-69 : Fix incorrect windows focus management for Windows platforms
- FIREBREATH-86 : getDelayedInvokeDelegate can fail, check for nulls
- FIREBREATH-89 : Allow custom winproc in WinMessageWindow
- FIREBREATH-90 : Plugin crashes when loaded
- FIREBREATH-97 : fixed
- FIREBREATH-98 : fix ActiveX windowless not setting browser hwnd
- FIREBREATH-101 : Paths to ATL headers and to libraries in ScriptingCore are added
- FIREBREATH-102 : fix mouse coords in windowless on Windows
- FIREBREATH-105 : add 64bit build support for windows
- FIREBREATH-109 : Turn off boost autolinking on windows - FireBreath manages linking, even for system boost
- FIREBREATH-113 : fix crash by removing _asyncCallData when _scheduleAsyncCall fails
- FIREBREATH-124
- FIREBREATH-134 : Fix build error w/ vs express and HTTPService library
- Fixed an occasional bug with windowless plugins on Windows (thanks dougma!)
Mac changes
- FIREBREATH-48 : Fixed crash on mac plugin shutdown
- FIREBREATH-53 : Fix memory leak in Safari 64bit
- FIREBREATH-54 : Added logging of who initiated setReady(). Fixed race condition in OneShotManager.
- FIREBREATH-96 : Fleshed out the coco events a bit
- FIREBREATH-110 : Safari 5.1 requires drawing/event model
- Removed "main" entrypoint to make it possible to build with CLANG
- Improved Cocoa event handling
- Added CarbonToNPCocoaEvent for converting carbon events to cocoa events to simplify your event handling code on mac
Linux changes
- FIREBREATH-111 : missing break in case statement
- FIREBREATH-112 : Add Keyboard support on linux
- FIREBREATH-114 : Change UTF8 libs
- FIREBREATH-120 - fix to work with older versions of gtk
- FIREBREATH-127
FireBreath Optional Library changes
- Added functions to convert between variand and jsoncpp (undocumented FireBreath library)
- Added experimental WebView (undocumented FireBreath library)
- Updated openssl and curl libs used with the undocumented HttpService FireBreath library
- Added undocumented WebKitCore project (used by WebView) with WebCore JSObject <-> FB::JSAPI wrappers
1.5.2
This is a bugfix release – there are a lot of them! Most significant, perhaps, are vastly improved Firefox 4 support, Mac OS 10.4 support, and several fixes to potential crashes related to threading.
No breaking Changes since 1.5.0!
Core changes
- FIREBREATH-52 : correct for when T is an unsigned 32-bit integer type
- FIREBREATH-55 : Added locks to attach/detach evt handler code
- FIREBREATH-61 : New take on async CrossThreadCall dependencies
- FIREBREATH-62 Updated async method firing to use js delegate to fix ff4 issues
- FIREBREATH-67 : Add option to disable htmlLog
- FIREBREATH-66 : Fixed Crash in SimpleStreams callback
- FIREBREATH-70 : Fixed detachobserver to allow recursion
- FIREBREATH-73 : Fixed exception handling on FireEvent
- FIREBREATH-78 : Fix bug where setReady is called multiple times
- FIREBREATH-83 : Do not by default override CMAKE_INSTALL_PREFIX
- FIREBREATH-82 : Renamed FB::boost_variant::generic to fb_compat
Windows changes
- FIREBREATH-59 : Minor modifications to the WIX project to improve the install/upgrade process.
- FIREBREATH-49 : changed CreateURLMoniker to CreateURLMonikerEx (IE streams)
- FIREBREATH-63 : Added suspend and resume to ActiveXBrowserHost to fix intermittent shutdown memory leaks
- FIREBREATH-64 : invalidate entire control for ax windowless
- FIREBREATH-72 : fixed xslt for wix to not lose progid
- FIREBREATH-84 : CustomWinProc now called first in PluginWindowWin winproc
Mac changes
- FIREBREATH-53 : Fix memory leak in Safari 64bit
- FIREBREATH-54 : Added logging of who initiated setReady(). Fixed race condition in OneShotManager.
- FIREBREATH-71 : Mac OS 10.4 support working
1.5.1
No Breaking Changes since 1.5.0!
Core Changes
Windows changes
Mac changes
1.5.0
Breaking Changes:
FireBreath 1.5 contains a major refactor of the cmake projects. This is a very very good thing, and will make it much easier to use FireBreath with existing cmake build systems as well as enabling nicer and more flexible CMake projects for FireBreath plugins. This is a work in progress, but we will *try* to document all the changes here. Please feel free to update this if you find something we missed.
FireBreath also contains a major refactor of the Mac PluginWindow objects which make better use of polymorphism. Hopefully we'll have more docs on this later, but for now check out the new classes in the source code.
shared_ptr() gone, use shared_from_this()
There was a misunderstanding when we first started using the boost shared_ptr class which resulted in a superfluous call for getting shared_ptr of the current class. We have now removed that and if you were using it you should use shared_from_this() instead.
CMake Structure Changes:
- You should no longer include common.cmake in any of your files.
the browserplugin_project macro is deprecated (and unneccesary). If you have code like this:
You should replace it with this:
Also, anywhere in your
CMakeLists.txtfile orprojectDef.cmakefiles that you use ${PROJNAME} you should use ${PROJECT_NAME} instead.Your project's
CMakeLists.txtfile mustinclude the following line:
CMake Variable Changes:
The following variables that FireBreath sets in CMake for use in your CMake files have changed to prevent accidental collision when used with other CMake projects:
${BIN_DIR} =>${FB_BIN_DIR}${CMAKE_DIR} =>${FB_ROOT}/cmake${GEN_DIR} =>${FB_TEMPLATE_DEST_DIR}
Examples conforming to the new CMake changes:
- FBTestPlugin CMakeLists.txt
- FBTestPlugin Mac/projectDef.cmake
- FBTestPlugin Win/projectDef.cmake
- FBTestPlugin X11/projectDef.cmake
Core Changes
- Added support for POST streams in BrowserStreams
- Added PLUGIN_EVENT_MAP_CASCADE macro
- Several both major and minor memory leak fixes
- Fixed several crashes
- FIREBREATH-26
- FIREBREATH-27
- FIREBREATH-16
- FIREBREATH-29
- FIREBREATH-31
- FIREBREATH-32
- FIREBREATH-18
- example use of new macro:
FB_JSAPI_EVENT(open, 2, (const int, const std::string));- Fire the event with
this->fire_open(5, "five");
- Fire the event with
- registerEvent no longer needed
- example use of new macro:
- FIREBREATH-6
- FIREBREATH-33
- FIREBREATH-34
- make_method now supports methods with up to 50 arguments
- Added new shutdown() method to PluginCore
- Added to fbgen template
- FIREBREATH-40
- FIREBREATH-37
- FIREBREATH-43
- FIREBREATH-41
Windows specific
Mac specific
- Complete refactor of PluginWindowMac classes
- Support for StartAutoInvalidate to provide easy drawing loop
- Single class for drawing model, e.g. PluginWindowMacCG instead of PluginWindowMacCocoaCG, etc.
- Full support for all drawing models
- BasicMediaPlayer now has an example of drawing with all 4 drawing models on Mac!
Other Changes
- Improvements to fb_installer.js
- FIREBREATH-25
1.4.3
This is a bugfix release. There are no breaking changes since 1.4.0. There is are fixes for significant memory leaks in this release as well as fixes to make IE9 work correctly, so we highly recommend that you update.
General Changes
Windows
Mac
1.4.2
This is a bugfix release. There are no breaking changes since 1.4.0. There is a fix for a potentially significant memory leak in this release, so we highly recommend that you update.
General Changes
Core
- Fixed Issue 166: unicode chars in an URL don't work
- Fixed potential crash on chrome when calling JSAPI methods
- FIREBREATH-9
- Fixed misc GCC warnings (thanks, Kalev!)
- FIREBREATH-10
- This memory leak affected all platforms and could have wide reaching effects.
Windows
- Fixed an issue causing the wrong version of the ATL headers to be used in some cases
1.4.1 (1.4.0 w/ build fix)
Among other things, the packaged boost libraries have been updated, so if you got FireBreath from GitHub make sure you update the submodules in your firebreath tree:
Breaking Changes:
Files Moved
- COM_config.h is global/COM_config.h
- resource.h is global/resource.h
- Win/targetver.h is win_targetver.h
- Win/win_common.h is win_common.h
- config.h is global/config.h
- You no longer need to provide the following files in your project; if you do, they will be used and override the default entrypoints:
- Win/np_winmain.cpp
- Win/dllmain.cpp
- Mac/np_macmain.cpp
- X11/np_x11main.cpp
Plugin Window
- New functions added to base class for getting window dimensions and position. Since each platform had its own version of these functions, some minor changes have been made to each to make them all work the same. (See FB::PluginWindow) Particularly changes have been made to the Mac PluginWindow classes.
Browser Stream
- BrowserHost::createStream is taking PluginEventSinkPtr and returning BrowserStreamPtr. They are boost::shared_ptr<T> as opposed to straight pointers.
General changes
- Param tag names should no longer be specified in the Plugin class; they will now be automatically detected
- This may break code since the data structures which previously held the list of supported param names has been removed
- FB::variant no longer accepts arbitrary types implicitly (see below)
- PluginCore::OS and PluginCore::Browser are now private; please use the new accessors
Release Summary:
This release comes almost exactly a year after the first 1.0 release and has a significant number of bugfixes and new features. Most significant features include vastly improved type conversion and handling, proper scope (module-wide) of StaticInitialize and StaticDeinitialize, security zone (public, protected, private, local) support for JSAPI, multiple mimetype/plugin in one module, and much more!
Changes
Core
Major improvements
- Fixed long-standing (all versions) intermittent crash on browser shutdown!
- StaticInitialize and StaticDeinitialize are now properly module-wide instead of reference counted
- JSAPIAuto methods now return as function objects which can be stored and called later if desired (thus used for callbacks in javascript)
- Param tag names no longer need to be specified (thanks jtojanen!)
- Support for multiple mimetypes in plugins
- Multiple mimetypes with the same PluginCore-derived object supported
- Multiple plugins each with its own mimetype also supported
- See JSAPI and FB::variant changes; those are pretty much all major improvements!
- Added getDOMElement() to BrowserHost – gets the DOM::Element for the object tag the current plugin instance resides in
- Windowless support on all Windows browsers (experimental)
Other improvements
- Updated boost to 1.45.0
- Smarter detection of plugin location
- BrowserStreams now use boost::shared_ptr (see breaking changes)
- Minor improvements to DOM::Document and DOM::Element (thanks, Kevin!)
- Added FB_GUI_DISABLED to facilitate plugins with no drawing requirements
- Particularly useful on linux where it removes the GTK dependency
- Created FB_FORWARD_PTR macro, which for
FB_FORWARD_PTR(MyPluginAPI)will:- Does a forward declaration of the class (
class MyPluginAPI;) - Creates a boost::shared_ptr typedef (
typedef boost::shared_ptr<MyPluginAPI> MyPluginAPIPtr;) - Creates a boost::weak_ptr typedef (
typedef boost::weak_ptr<MyPluginAPI> MyPluginAPIWeakPtr;)
- Does a forward declaration of the class (
- New FB::URI type to assist with applying security policies by web address
- dllmain.cpp and np_winmain.cpp now live in PluginAuto, but can be specialized in a plugin simply by copying them to your Win/ directory in your plugin
- HTTPService library added – provides an embedded web server which can be used to improve security of your plugin. Experimental, undocumented
- Fixed a race condition between BrowserStreams and plugin shutdown (beta 3)
JSAPI and FB::variant
- FB::variant (and thus JSAPI) no longer accepts all arbitrary types; unsupported types will cause a compiler error
- Other types can still be forced through the system by using FB::variant(value, true) or var.assign(value, true)
- FB::variant supports boost::shared_ptr and boost::weak_ptr types of all FB::JSAPI or FB::JSObjectderived objects
- JSAPI objects no longer need to be upcast to FB::JSAPIPtr before assigning them to a variant or returning them from a function. Any boost::shared_ptr or weak_ptr for a JSAPI-derived type works
- FB::variant::convert_cast will try to cast to a specific JSAPI-derived shared_ptr or weak_ptr type.
- This means that you can use those types as parameter types in JSAPI auto functions!
- If a FB::JSObject passed in from JavaScript came from FireBreath originally calls will not be sent through the browser (this caused instabilities) so things that would normally be transformed going through the browser layer will not be!
- JSAPI now has a built-in concept of "Security Zones" which can be used to control access to certain API calls
- The logic for setting the zone is plugin-specific
- This could be used to have certain APIs only available on your company website
- This could be used to lock out certain APIs until some form of authentication has taken place
- JSAPIAuto now has support for "optional" parameters using boost::optional<type>. This can be used as a better alternative to FB::CatchAll to have a variable number of parameters!
- JSAPIAuto and FB::variant now support convert_cast to (and assignment from) boost::variant<type, type, ..., type> types. They can also be used as parameters to JSAPI methods or as property types.
- JSAPI object lifetime no longer controlled by the browser
- if a JSAPI object is returned in a weak_ptr the object sent to javascript will become invalid when the object is destroyed
- if a JSAPI object is returned in a shared_ptr the object sent to javascript will become invalid when the plugin shuts down or when freeRetainedObjects is called on BrowserHost. releaseJSAPIPtr can also be called to release an individual JSAPI object.
- JSAPIProxyobject created
- Wraps either a shared_ptr or weak_ptr, depending on lifetime goals
- Can optionally have a different SecurityZone setting than the embedded object
- The internal JSAPI object can be traded out even after it is given to the page
- Events fired on the wrapped object get sent to handlers registered on the proxy object
- JSAPIAuto now has support for boost::tribool
- JSAPIAuto now supports unregisterProperty and unregisterMethod
Windows
- Vastly improved support for Visual C++ Express w/ DDK; DDK should now be automatically found
- Fixed edge case where certain custom USER HWND messages could conflict with FireBreath internals
- Fixed ActiveX events from non-root JSAPI objects
- Calling of a default "" method on a JSAPI object now works on IE/ActiveX
- Startup initialization on IE improved
- Fixed long-standing typo/bug in COM registration
- Added FB_ATLREG_MACHINEWIDE option for PluginConfig.cmake, which if set will cause COM and Firefox registration to occur machine-wide instead of per-user (re-run of prep script required to take affect)
- Multiple memory leak and stability fixes in IE (thanks jtojanen)
- IE now supports instantiating plugins using new ActiveXObject(progid) syntax from javascript
- Registry definition file properly handles machine-wide installation now (if FB_ATLREG_MACHINEWIDE is set in cmake)
- Numerous WiX installer improvements
- You may want to copy the WiX template from fbgen/src/Win/WiX/ to get these improvements
- Upgrade now supported by default
- Now works with all versions of Visual Studio (including express!)
- Default WiX template now supports friendly name
- Machine-wide install now supported if FB_ATLREG_MACHINEWIDE is set in cmake
- New cmake macros for code-signing on windows
- created firebreath_sign_plugin (see example)
- created firebreath_sign_file (see example)
Mac
- Fixed race condition (crash) affecting cross-thread marshalling
- Misc fixes to InvalidatingCoreAnimation
- Plugin coordinates have been standardized to top left on all drawing and event models
Linux/X11
- PluginWindowX11 getWindow returns the XID (GtkDrawingArea) instead of the browser window
- PluginWindowX11 clipping and window position now saved correctly
Code improvements
- Major refactor of projects; ActiveXPlugin has been refactored into plugin-specific and global parts.
- Global parts are now in ActiveXCore
- Plugin-specific parts are now in PluginAuto, the only plugin-specific auto-generated project
- NPAPIPlugin has been refactored into plugin-specific and global parts.
- Global parts are now in NpapiCore
- Plugin-specific parts are now in PluginAuto, the only plugin-specific auto-generated project
- Unit test projects have all been moved from src/ to test/
1.3.2
Breaking Changes:
No breaking changes this release
Release Summary:
Mostly bugfixes. The major new "feature" of this release is that it should be possible to build with the free Visual Studio Express Edition.
Bug fixes
- Fixed Issue 112: Deep JavaScript Object traversal not working in worker threads
- Fixed ActiveX issue for callbacks from a non-root object
- Fixed issue that prevented WiX 3.5 from working correctly
- Fixed issue where in some cases uint64_t can't be found in variant.h
- Updated check for AtlSetPerUserRegistration to check ATL ver instead of compiler ver; this should fix the issue with Visual C++ Express edition using ATL from platform SDK
- Changed order to prefer wget (which is packaged on windows with firebreath) over curl
- Updated boost submodule for property_tree
- Improved project directory detection to only detect directories with a PluginConfig.cmake as plugin directories
- Moved source code to Git and added script in cmake to automatically download boost if it is missing
- Misc ActiveX Streams bugfixes
1.3.1
Breaking Changes:
None!
Release Summary:
Bugfix release, should not break any old code. Highly recommended to update! If you are developing on Mac, PLEASE UPDATE! There is a major memory leak fix.
XCode's Leaks tool detects no memory leaks in FBTestPlugin as of 1.3.1!
Bug fixes
- Fixed bug: HasProperty doesn't work correctly with numeric index
- Fixed bug: add_boost_library doesn't work correctly with WITH_SYSTEM_BOOST
- Fixed bug: Synchronous calls from secondary thread can crash in some cases
- Fixed memory leak in Synchronous and Asynchronous cross-thread calls
- Fixed issue #102: Javascript exceptions thrown from a callback crash the plugin
- Fixed issue #103: Plugin and API object do not get released (memory leak and plugin logic error)
- Fixed issue #98: no conversion from unsigned long et al to script (arithmetic truncation issues)
- Fixed issue #110: Windows prep-scripts don't work on some systems
- Fixed bug: Windows prep-scripts don't work when firebreath or projects/ path has spaces
- Fixed bug: ResizedEvent not fired on Windows
- Fixed minor issues in BrowserStreams
- Fixed stream caching issue in ActiveX BrowserStreams
- Hid exception thrown when IE requests DISPID_SECURITYCTX
- Fixed major memory leak on Mac when using CoreGraphics and Carbon events
- Fixed minor memory leak in fbgen template (copy the dllmain.cpp from fbgen/src/Win/ to get it for your project)
- Fixed issue #106: ONMOUSEACTIVATE causing plugin window to resize
1.3.0
Breaking changes:
Core
Type names have changed for consistency:
FB::BrowserObjectAPI=>FB::JSObjectFB::JSObject=>FB::JSObjectPtrFB::BrowserHostWrapper=>FB::BrowserHostFB::BrowserHost=>FB::BrowserHostPtr
Factory functions have been replaced with a FactoryBase class that is extended by each plugin.
If you haven't made any changes to your factory functions from the original fbgen output, this should be pretty easy to migrate to:
- Remove
FactoryMain.cppfrom your project and replace it withFactory.cppfrom the current sourcefbgentemplate. - Remove
Win/FactoryMainWin.cpp. If you have made changes to this, you may need to look at FactoryBase to see what other methods you need to override. - Remove
Mac/FactoryMainMac.cpp. If you have made changes to this, you may need to look at FactoryBase to see what other methods you need to override. - Remove
X11/FactoryMainX11.cpp. If you have made changes to this, you may need to look at FactoryBase to see what other methods you need to override.
Sorry for the inconvenience, but believe us: this will help avoid breaking changes in the future.
Other changes
DOM Wrappers
- Moved and renamed
FB::JSAPIDOM_*classes. These wrapJSObjectPtrobjects (JavaScript representations of DOM object) They can be found at:FB::DOM::Node- wraps a DOM NodeFB::DOM::Element- wraps a DOM ElementFB::DOM::Document- wraps the DOM Document - get this from FB::BrowserHost::getDOMDocument()FB::DOM::Window- wraps the DOM Window - - get this from FB::BrowserHost::getDOMWindow()- Please note that these are not finished, but all are welcome to add things to them and send us patches! =]
Core
- Added new
add_boost_library()cmake command. Insert lines like so in yourPluginConfig.cmakefile:add_boost_library(thread)add_boost_library(filesystem)- also supported are:
system,regex,date_time,smart_ptr,serialization,signals
- Added new
add_firebreath_library()CMake command as an example of how to create libraries that can easily be used in FireBreath - Added new logging abstraction; default is disabled, to enable put
add_firebreath_library(log4cplus)in yourPluginConfig.cmakefile. Highly experimental, may need tweaking. JSAPIAutonow allows all numeric types as parameters and return values, but will throw a JS exception if a value passed in can't be coerced into the type.- The ctor of
JSAPIAutonow takes an optionaldescriptionparameter that is used byJSAPIAuto::ToString(). - Code Documentation added for user-facing classes
- Added BrowserHost::ScheduleOnMainThread for calling arbitrary methods asynchronously on the main thread
- Added BrowserHost::CallOnMainThread for calling arbitrary methods synchronously on the main thread (cross-thread synchronous calls can have performance ramifications)
- All FB::JSObject methods can be called cross-thread and will automatically use thread synchronization to make the call on the correct thread.
- CMake
RELWITHDEBINFOandMINSIZERELconfigurations should work correctly now - FB::ptr_cast<type> added as an alias for
boost::dynamic_pointer_cast - EVENTTYPE_CASE now checks the event source type as well as the event type
- Support from returning an empty FB::JSAPIPtr from a JSAPI method
- Support for overriding configuration template files from
gen_templates/by copying the file into the plugin directory. - Support for passing a
nullvalue into a JS function as avariant
Linux
FSPathnow works on Linux- Fixed some GCC warnings
Mac
FSPathnow works on Mac- Fixed issue with Safari 32 bit plugins not firing events properly
- Fixed bug in
prepmac.shcausing things to not work correctly when run from another directory - Added support for the
InvalidatingCoreAnimationdrawing model - Fixed Issue #88 which caused build errors with paths with spaces in them
Windows
- Fixed Issue #88 which caused project generation errors with paths with spaces in them