Page tree
Skip to end of metadata
Go to start of metadata

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:

Core changes

  • FIREBREATH-176 - Getting 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-171 - Getting 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-196 - Getting 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-177 - Getting 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-174 - Getting issue details... STATUS : fixed innerHTML on IE

Mac changes

  • Fixed misc warnings from deprecated APIs 
  • FIREBREATH-178 - Getting 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-198 - Getting 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-128 - Getting 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-28 - Getting issue details... STATUS : Proxy Detection implemented - added BrowserHost::DetectProxySettings
  • FIREBREATH-17 - Getting issue details... STATUS : Added some cmake logic to handle inconsistent proxy settings.
  • FIREBREATH-52 - Getting issue details... STATUS
  • FIREBREATH-78 - Getting issue details... STATUS : Fix bug where setReady is called multiple times
  • FIREBREATH-92 - Getting issue details... STATUS : add shutdown method to JSAPI class to notify of browser shutdown
  • FIREBREATH-94 - Getting issue details... STATUS : Changed UTF8 libraries to use a more C++ friendly and better cross-platform one (UTF-CPP)
  • FIREBREATH-99 - Getting issue details... STATUS : Fixed
  • FIREBREATH-100 - Getting issue details... STATUS : Fixed unsafe vector iteration on JSAPIProxy unregisterProxy
  • FIREBREATH-62 - Getting issue details... STATUS : Updated async method firing to use js delegate to fix ff4 issues
  • FIREBREATH-115 - Getting 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-126 - Getting issue details... STATUS - Add modifier to mouse messages
  • FIREBREATH-129 - Getting issue details... STATUS
  • FIREBREATH-121 - Getting issue details... STATUS  - Plugin version number now used by default everywhere
  • FIREBREATH-130 - Getting issue details... STATUS  - added BrowserHost::Navigate for opening a url in a new window
  • FIREBREATH-123 - Getting issue details... STATUS  - Added SynchronousPost method to SimpleStreamHelper

Windows changes

  • FIREBREATH-85 - Getting issue details... STATUS : Enabled Precompiled headers, major build time speed improvement on windows!
  • FIREBREATH-44 - Getting issue details... STATUS : Enable hosting in a native application (not web browser).
  • FIREBREATH-47 - Getting issue details... STATUS : Clear the window during InPlaceDeactivate. Bookend
  • FIREBREATH-49 - Getting issue details... STATUS : changed CreateURLMoniker to CreateURLMonikerEx (IE streams)
  • FIREBREATH-56 - Getting issue details... STATUS : Patch applied; thanks!
  • FIREBREATH-63 - Getting issue details... STATUS : Added suspend and resume to ActiveXBrowserHost
  • FIREBREATH-64 - Getting issue details... STATUS : invalidate entire control for ax windowless
  • FIREBREATH-69 - Getting issue details... STATUS : Fix incorrect windows focus management for Windows platforms
  • FIREBREATH-86 - Getting issue details... STATUS : getDelayedInvokeDelegate can fail, check for nulls
  • FIREBREATH-89 - Getting issue details... STATUS : Allow custom winproc in WinMessageWindow
  • FIREBREATH-90 - Getting issue details... STATUS : Plugin crashes when loaded
  • FIREBREATH-97 - Getting issue details... STATUS : fixed
  • FIREBREATH-98 - Getting issue details... STATUS : fix ActiveX windowless not setting browser hwnd
  • FIREBREATH-101 - Getting issue details... STATUS : Paths to ATL headers and to libraries in ScriptingCore are added
  • FIREBREATH-102 - Getting issue details... STATUS : fix mouse coords in windowless on Windows
  • FIREBREATH-105 - Getting issue details... STATUS : add 64bit build support for windows
  • FIREBREATH-109 - Getting issue details... STATUS : Turn off boost autolinking on windows - FireBreath manages linking, even for system boost
  • FIREBREATH-113 - Getting issue details... STATUS : fix crash by removing _asyncCallData when _scheduleAsyncCall fails
  • FIREBREATH-124 - Getting issue details... STATUS
  • FIREBREATH-134 - Getting 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-48 - Getting issue details... STATUS : Fixed crash on mac plugin shutdown
  • FIREBREATH-53 - Getting issue details... STATUS : Fix memory leak in Safari 64bit
  • FIREBREATH-54 - Getting issue details... STATUS : Added logging of who initiated setReady(). Fixed race condition in OneShotManager.
  • FIREBREATH-96 - Getting issue details... STATUS : Fleshed out the coco events a bit
  • FIREBREATH-110 - Getting 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 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 - Getting issue details... STATUS : correct for when T is an unsigned 32-bit integer type
  • FIREBREATH-55 - Getting issue details... STATUS : Added locks to attach/detach evt handler code
  • FIREBREATH-61 - Getting issue details... STATUS : New take on async CrossThreadCall dependencies
  • FIREBREATH-62 - Getting issue details... STATUS Updated async method firing to use js delegate to fix ff4 issues
  • FIREBREATH-67 - Getting issue details... STATUS : Add option to disable htmlLog
  • FIREBREATH-66 - Getting issue details... STATUS : Fixed Crash in SimpleStreams callback
  • FIREBREATH-70 - Getting issue details... STATUS : Fixed detachobserver to allow recursion
  • FIREBREATH-73 - Getting issue details... STATUS : Fixed exception handling on FireEvent
  • FIREBREATH-78 - Getting issue details... STATUS : Fix bug where setReady is called multiple times
  • FIREBREATH-83 - Getting issue details... STATUS : Do not by default override CMAKE_INSTALL_PREFIX
  • FIREBREATH-82 - Getting issue details... STATUS : Renamed FB::boost_variant::generic to fb_compat

Windows changes

  • FIREBREATH-59 - Getting issue details... STATUS : Minor modifications to the WIX project to improve the install/upgrade process.
  • FIREBREATH-49 - Getting issue details... STATUS : changed CreateURLMoniker to CreateURLMonikerEx (IE streams)
  • FIREBREATH-63 - Getting issue details... STATUS : Added suspend and resume to ActiveXBrowserHost to fix intermittent shutdown memory leaks
  • FIREBREATH-64 - Getting issue details... STATUS : invalidate entire control for ax windowless
  • FIREBREATH-72 - Getting issue details... STATUS : fixed xslt for wix to not lose progid
  • FIREBREATH-84 - Getting issue details... STATUS : CustomWinProc now called first in PluginWindowWin winproc

Mac changes

  • FIREBREATH-53 - Getting issue details... STATUS : Fix memory leak in Safari 64bit
  • FIREBREATH-54 - Getting issue details... STATUS : Added logging of who initiated setReady(). Fixed race condition in OneShotManager.
  • FIREBREATH-71 - Getting issue details... STATUS : 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:

    set (PROJNAME ${PLUGIN_NAME})
      browserplugin_project(${PROJNAME})

    You should replace it with this:

    Project (${PLUGIN_NAME})

    Also, anywhere in your CMakeLists.txt file or projectDef.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:

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 - Getting issue details... STATUS
  • FIREBREATH-27 - Getting issue details... STATUS
  • FIREBREATH-16 - Getting issue details... STATUS
  • FIREBREATH-29 - Getting issue details... STATUS
  • FIREBREATH-31 - Getting issue details... STATUS
  • FIREBREATH-32 - Getting issue details... STATUS
  • FIREBREATH-18 - Getting 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");
    • registerEvent no longer needed
  • FIREBREATH-6 - Getting issue details... STATUS
  • FIREBREATH-33 - Getting issue details... STATUS
  • FIREBREATH-34 - Getting issue details... STATUS
    • make_method now supports methods with up to 50 arguments
  • Added new shutdown() method to PluginCore
    • Added to fbgen template
    • FIREBREATH-40 - Getting issue details... STATUS
  • FIREBREATH-37 - Getting issue details... STATUS
  • FIREBREATH-43 - Getting issue details... STATUS
  • FIREBREATH-41 - Getting issue details... STATUS

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 - Getting issue details... STATUS

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 - Getting issue details... STATUS
  • Fixed misc GCC warnings (thanks, Kalev!)
  • FIREBREATH-10 - Getting 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;)
  • 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
  • New cmake macros for code-signing on windows

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 with Factory.cpp from the current source fbgen 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 wrap JSObjectPtrobjects (JavaScript representations of DOM object) They can be found at:
    • FB::DOM::Node - wraps a DOM Node
    • FB::DOM::Element - wraps a DOM Element
    • FB::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 your PluginConfig.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 your PluginConfig.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 optional description parameter that is used by JSAPIAuto::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 and MINSIZEREL 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 a variant

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
  • No labels