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-176Getting issue details... STATUS : 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-171Getting issue details... STATUS : 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-196Getting issue details... STATUS : 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-177Getting issue details... STATUS
- 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-174Getting issue details... STATUS : fixed innerHTML on IE
Mac changes
- Fixed misc warnings from deprecated APIs
- - FIREBREATH-178Getting issue details... STATUS : 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-198Getting issue details... STATUS : 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-128Getting issue details... STATUS - 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-28Getting issue details... STATUS : Proxy Detection implemented - added BrowserHost::DetectProxySettings
- - FIREBREATH-17Getting issue details... STATUS : Added some cmake logic to handle inconsistent proxy settings.
- - FIREBREATH-52Getting issue details... STATUS
- - FIREBREATH-78Getting issue details... STATUS : Fix bug where setReady is called multiple times
- - FIREBREATH-92Getting issue details... STATUS : add shutdown method to JSAPI class to notify of browser shutdown
- - FIREBREATH-94Getting issue details... STATUS : Changed UTF8 libraries to use a more C++ friendly and better cross-platform one (UTF-CPP)
- - FIREBREATH-99Getting issue details... STATUS : Fixed
- - FIREBREATH-100Getting issue details... STATUS : Fixed unsafe vector iteration on JSAPIProxy unregisterProxy
- - FIREBREATH-62Getting issue details... STATUS : Updated async method firing to use js delegate to fix ff4 issues
- - FIREBREATH-115Getting issue details... STATUS
- 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-126Getting issue details... STATUS - Add modifier to mouse messages
- - FIREBREATH-129Getting issue details... STATUS
- - FIREBREATH-121Getting issue details... STATUS - Plugin version number now used by default everywhere
- - FIREBREATH-130Getting issue details... STATUS - added BrowserHost::Navigate for opening a url in a new window
- - FIREBREATH-123Getting issue details... STATUS - Added SynchronousPost method to SimpleStreamHelper
Windows changes
- - FIREBREATH-85Getting issue details... STATUS : Enabled Precompiled headers, major build time speed improvement on windows!
- - FIREBREATH-44Getting issue details... STATUS : Enable hosting in a native application (not web browser).
- - FIREBREATH-47Getting issue details... STATUS : Clear the window during InPlaceDeactivate. Bookend
- - FIREBREATH-49Getting issue details... STATUS : changed CreateURLMoniker to CreateURLMonikerEx (IE streams)
- - FIREBREATH-56Getting issue details... STATUS : Patch applied; thanks!
- - FIREBREATH-63Getting issue details... STATUS : Added suspend and resume to ActiveXBrowserHost
- - FIREBREATH-64Getting issue details... STATUS : invalidate entire control for ax windowless
- - FIREBREATH-69Getting issue details... STATUS : Fix incorrect windows focus management for Windows platforms
- - FIREBREATH-86Getting issue details... STATUS : getDelayedInvokeDelegate can fail, check for nulls
- - FIREBREATH-89Getting issue details... STATUS : Allow custom winproc in WinMessageWindow
- - FIREBREATH-90Getting issue details... STATUS : Plugin crashes when loaded
- - FIREBREATH-97Getting issue details... STATUS : fixed
- - FIREBREATH-98Getting issue details... STATUS : fix ActiveX windowless not setting browser hwnd
- - FIREBREATH-101Getting issue details... STATUS : Paths to ATL headers and to libraries in ScriptingCore are added
- - FIREBREATH-102Getting issue details... STATUS : fix mouse coords in windowless on Windows
- - FIREBREATH-105Getting issue details... STATUS : add 64bit build support for windows
- - FIREBREATH-109Getting issue details... STATUS : Turn off boost autolinking on windows - FireBreath manages linking, even for system boost
- - FIREBREATH-113Getting issue details... STATUS : fix crash by removing _asyncCallData when _scheduleAsyncCall fails
- - FIREBREATH-124Getting issue details... STATUS
- - FIREBREATH-134Getting issue details... STATUS : Fix build error w/ vs express and HTTPService library
- Fixed an occasional bug with windowless plugins on Windows (thanks dougma!)
Mac changes
- - FIREBREATH-48Getting issue details... STATUS : Fixed crash on mac plugin shutdown
- - FIREBREATH-53Getting issue details... STATUS : Fix memory leak in Safari 64bit
- - FIREBREATH-54Getting issue details... STATUS : Added logging of who initiated setReady(). Fixed race condition in OneShotManager.
- - FIREBREATH-96Getting issue details... STATUS : Fleshed out the coco events a bit
- - FIREBREATH-110Getting issue details... STATUS : 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-111Getting issue details... STATUS : missing break in case statement
- - FIREBREATH-112Getting issue details... STATUS : Add Keyboard support on linux
- - FIREBREATH-114Getting issue details... STATUS : Change UTF8 libs
- - FIREBREATH-120Getting issue details... STATUS - fix to work with older versions of gtk
- - FIREBREATH-127Getting issue details... STATUS
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-52Getting issue details... STATUS : correct for when T is an unsigned 32-bit integer type
- - FIREBREATH-55Getting issue details... STATUS : Added locks to attach/detach evt handler code
- - FIREBREATH-61Getting issue details... STATUS : New take on async CrossThreadCall dependencies
- - FIREBREATH-62Getting issue details... STATUS Updated async method firing to use js delegate to fix ff4 issues
- - FIREBREATH-67Getting issue details... STATUS : Add option to disable htmlLog
- - FIREBREATH-66Getting issue details... STATUS : Fixed Crash in SimpleStreams callback
- - FIREBREATH-70Getting issue details... STATUS : Fixed detachobserver to allow recursion
- - FIREBREATH-73Getting issue details... STATUS : Fixed exception handling on FireEvent
- - FIREBREATH-78Getting issue details... STATUS : Fix bug where setReady is called multiple times
- - FIREBREATH-83Getting issue details... STATUS : Do not by default override CMAKE_INSTALL_PREFIX
- - FIREBREATH-82Getting issue details... STATUS : Renamed FB::boost_variant::generic to fb_compat
Windows changes
- - FIREBREATH-59Getting issue details... STATUS : Minor modifications to the WIX project to improve the install/upgrade process.
- - FIREBREATH-49Getting issue details... STATUS : changed CreateURLMoniker to CreateURLMonikerEx (IE streams)
- - FIREBREATH-63Getting issue details... STATUS : Added suspend and resume to ActiveXBrowserHost to fix intermittent shutdown memory leaks
- - FIREBREATH-64Getting issue details... STATUS : invalidate entire control for ax windowless
- - FIREBREATH-72Getting issue details... STATUS : fixed xslt for wix to not lose progid
- - FIREBREATH-84Getting issue details... STATUS : CustomWinProc now called first in PluginWindowWin winproc
Mac changes
- - FIREBREATH-53Getting issue details... STATUS : Fix memory leak in Safari 64bit
- - FIREBREATH-54Getting issue details... STATUS : Added logging of who initiated setReady(). Fixed race condition in OneShotManager.
- - FIREBREATH-71Getting issue details... STATUS : Mac OS 10.4 support working
1.5.1
No Breaking Changes since 1.5.0!
Core Changes
- - FIREBREATH-45Getting issue details... STATUS
- - FIREBREATH-17Getting issue details... STATUS
- - FIREBREATH-44Getting issue details... STATUS
- - FIREBREATH-46Getting issue details... STATUS
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:
set (PROJNAME ${PLUGIN_NAME}) browserplugin_project(${PROJNAME})
You should replace it with this:
Project (${PLUGIN_NAME})
Also, anywhere in your
CMakeLists.txt
file orprojectDef.cmake
files that you use ${PROJNAME} you should use ${PROJECT_NAME} instead.Your project's
CMakeLists.txt
file mustinclude the following line:include_directories(${PLUGIN_INCLUDE_DIRS})
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-26Getting issue details... STATUS
- - FIREBREATH-27Getting issue details... STATUS
- - FIREBREATH-16Getting issue details... STATUS
- - FIREBREATH-29Getting issue details... STATUS
- - FIREBREATH-31Getting issue details... STATUS
- - FIREBREATH-32Getting issue details... STATUS
-
-
FIREBREATH-18Getting issue details...
STATUS
- 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-6Getting issue details... STATUS
- - FIREBREATH-33Getting issue details... STATUS
-
-
FIREBREATH-34Getting issue details...
STATUS
- make_method now supports methods with up to 50 arguments
- Added new shutdown() method to PluginCore
- - FIREBREATH-37Getting issue details... STATUS
- - FIREBREATH-43Getting issue details... STATUS
- - FIREBREATH-41Getting issue details... STATUS
Windows specific
- - FIREBREATH-12Getting issue details... STATUS
- - FIREBREATH-23Getting issue details... STATUS
- - FIREBREATH-30Getting issue details... STATUS
- - FIREBREATH-11Getting issue details... STATUS
- - FIREBREATH-42Getting issue details... STATUS
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
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
- - FIREBREATH-14Getting issue details... STATUS
- - FIREBREATH-15Getting issue details... STATUS
- - FIREBREATH-16Getting issue details... STATUS
- - FIREBREATH-25Getting issue details... STATUS
- - FIREBREATH-27Getting issue details... STATUS
Windows
- - FIREBREATH-11Getting issue details... STATUS
- - FIREBREATH-13Getting issue details... STATUS
- - FIREBREATH-19Getting issue details... STATUS
- - FIREBREATH-23Getting issue details... STATUS
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-9Getting issue details... STATUS
- Fixed misc GCC warnings (thanks, Kalev!)
-
-
FIREBREATH-10Getting issue details...
STATUS
- 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:
git submodule update
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::JSObject
FB::JSObject
=>FB::JSObjectPtr
FB::BrowserHostWrapper
=>FB::BrowserHost
FB::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.cpp
from your project and replace it withFactory.cpp
from the current sourcefbgen
template. - 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 wrapJSObjectPtr
objects (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.cmake
file: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.cmake
file. Highly experimental, may need tweaking. JSAPIAuto
now 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
JSAPIAuto
now takes an optionaldescription
parameter 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
RELWITHDEBINFO
andMINSIZEREL
configurations 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
null
value into a JS function as avariant
Linux
FSPath
now works on Linux- Fixed some GCC warnings
Mac
FSPath
now works on Mac- Fixed issue with Safari 32 bit plugins not firing events properly
- Fixed bug in
prepmac.sh
causing things to not work correctly when run from another directory - Added support for the
InvalidatingCoreAnimation
drawing 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