Firefox 6 release notes for developers
Firefox 6, based on Gecko 6.0, was released on August 16, 2011. This article provides links to information about the changes that affect developers in this release.
Changes for web developers
>HTML
- The HTML5
<progress>element, which lets you create a progress bar, is now supported. - The parsing of the HTML5
<track>element, which specifies text tracks for media elements, is now supported. This element should appear in the DOM now, though its behavior is still not implemented. - The
<iframe>element is now clipped correctly by its container when the container's corners have been rounded using theborder-radiusproperty. <form>elements' text<input>fields no longer support the XULmaxwidthproperty; this was never intentional, and is in violation of the HTML specification. You should instead use thesizeattribute to set the maximum width of input fields.- The
<canvas>CanvasRenderingContext2dpropertiesfillStyleandstrokeStyleused to ignore garbage included after a valid color definition; now this is correctly treated as an error. For example, "red blue" as a color used to be treated as "red", when it should have been ignored. - The width and height of
<canvas>elements can now properly be set to 0px; previously, these were getting arbitrarily set to 300px when you tried to do that. - Support for the HTML custom data attributes (
data-*) has been added. The DOMdatasetproperty allows to access them. - When a
<textarea>element receives focus, the text insertion point is now placed, by default, at the beginning of the text rather than at the end. This makes Firefox's behavior consistent with other browsers.
CSS
-moz-text-decoration-color-
This new property lets you set the color used by text decorations, such as underlines, overlines, and strikethroughs.
-moz-text-decoration-line-
This new property lets you set the kind of text decorations added to an element.
-moz-text-decoration-style-
This new property lets you set the style of text decorations, such as underlines, overlines, and strikethroughs. Styles include single-strokes, double strokes, wavy lines, dotted lines, and so forth.
-moz-hyphens-
This new property lets you control how hyphenation of words during line wrapping is handled.
-moz-orient-
A new (currently Mozilla-specific) property which lets you control the vertical or horizontal orientation of certain elements (particularly
<progress>). ::-moz-progress-bar-
A Mozilla-specific pseudo-element that lets you style the area of a
<progress>element representing the completed portion of a task.
Other changes
- The
@-moz-documentproperty has a newregexp()function, which lets you match the document's URL to a regular expression. - The
azimuthCSS property is no longer supported, as we have removed what little code we had for theauralmedia group. It was never significantly implemented, so it made more sense to remove the crufty implementation for the time being rather than try to patch it up. - In the past, the
:hoverpseudoclass was not applied to class selectors when in quirks mode; for example,.some-class:hoverdid not work. This quirk has been removed. - The
:indeterminatepseudo-class can be applied to<progress>elements. This is non-standard, but we hope it will be adopted by other browsers, because it will be useful. - The
-moz-win-exclude-glassvalue has been added to the-moz-appearanceCSS property in order to exclude opaque regions in Aero Glass glaze effects on Windows systems. - Firefox bug 658949 changed how the hash (#) symbol is treated in data URLs which may break CSS stylesheets which contain such a symbol if it is not escaped.
DOM
- Using media queries from code
-
You can now test the result of a media query string programmatically using the
window.matchMedia()method and theMediaQueryListinterface. - Touch events
-
Firefox 6 adds support for W3C standard touch events; these make it easy to interpret one or more touches at a time on touch-sensitive surfaces such as touch screens and trackpads.
- Server-sent events
-
Server-sent events make it possible for a web application to ask a server to send events just like any locally-created DOM event.
navigator.securityPolicy, which has returned an empty string for a long time, has been removed outright.BlobBuilderis now implemented, although for now it's prefixed (so you need to useMozBlobBuilder).- The
Document.heightandDocument.widthhave been removed. Firefox bug 585877 - The
DocumentTypeobject'sentitiesandnotationsproperties, which were never implemented and always returnednull, have been removed, since they've been removed from the specification anyway. - The
DOMConfigurationinterface and thedocument.domConfigproperty that used it have both been removed; they were never supported and have since been removed from the DOM specification. - The
hashchangeevent now correctly includes thenewURLandoldURLfields. - The
FileReaderinterface'sabort()method now throws an exception when used if no file read is in progress. - The
window.postMessage()method now uses the structured clone algorithm to let you pass JavaScript objects instead of just strings from one window to another. - The
window.historyAPI now uses the structured clone algorithm to serialize the objects you pass to thepushState()andreplaceState()methods; this lets you use more complex objects (including those that contain cyclic graphs of references). - You can now detect when printing has been initiated and has completed by listening for the new
beforeprintandafterprintevents. - The
document.strictErrorCheckingproperty has been removed, since it was never implemented and was removed from the DOM specification. - The standard
event.defaultPreventedproperty is now supported; you should use this instead of the non-standardgetPreventDefault()method to detect whether or notevent.preventDefault()was called on the event. - The
window.topproperty is now properly read only. - DOM views, which we never documented, have been removed. This was a bit of implementation detail that was unnecessarily complicating things, so we got rid of it. If you notice this change, you're probably doing something wrong.
- The
EventTargetfunctionaddEventListener()'suseCaptureparameter is now optional, as it is in WebKit (and as per the latest version of the specification). - The
mozResponseArrayBufferproperty of theXMLHttpRequestobject has been replaced with theresponseTypeandresponseproperties. - The
datasetproperty has been added to theHTMLElementinterface allowing access to thedata-*global attributes of an element. - The
CustomEventinterface has been implemented. (see Firefox bug 427537) - For security reasons,
data:andjavascript:URLs no longer inherit the security context of the current page when the user enters them in the location bar; instead, a new, empty, security context is created. This means that script loaded by enteringjavascript:URLs in the location bar no longer has access to DOM methods and the like, for example. These URLs continue to work as before when used by script, however.
JavaScript
- In the past, it was possible to use the
newoperator on several built-in functions (eval(),parseInt(),Date.parse(), …) that should not have allowed it, according to the specification. This behavior is no longer supported. Using thenewoperator in this way was never officially supported and was not widely done, so it's unlikely that this change affects you. - ECMAScript 2015 WeakMaps have been added as a prototype implementation.
SVG
- The
pathLengthattribute is now supported. - SVG patterns, gradients, and filters now work correctly when loaded from
data:URLs.
MathML
- The implementation of
<mstyle>has been corrected.
Accessibility (ARIA)
- A state change event is now correctly sent when the value of
aria-busychanges. - An attribute change event is now correctly sent when
aria-sortoccurs.
Networking
- WebSockets
-
WebSockets was updated to protocol version 07 for Firefox 6. In addition, the global
WebSocketobject has been renamed toMozWebSocketto prevent it from incorrectly being used to detect the availability of unprefixed WebSockets.
- Parsing of the
Content-Dispositionheader has been fixed to properly interpret backslash-escaped ASCII characters as just that character itself. Previously it was incorrectly replacing that character with an underscore ("_"). - The value of the path field on
Set-Cookieheaders is now interpreted correctly when quotes are used; previously, they were being treated as part of the path string instead of as delimiters. This change may affect compatibility with some websites, so authors should check their code. - The
Upgraderequest header is now supported; you can request an upgrade of an HTTP channel to another protocol by callingnsIHttpChannelInternal.HTTPUpgrade().
Other changes
- Support for microsummaries has been removed; these were never widely used, were not very discoverable, and continuing to support them was making improvements to the Places (bookmark and history) architecture difficult.
- WebGL now supports the
OES_texture_floatextension. - The new Scratchpad tool provides a handy place to experiment with JavaScript code.
- The
console.trace()method has been added to the Console API (Firefox bug 585956).
Changes for Mozilla and add-on developers
For an overview of the changes you may need to make in order to make your add-on compatible with Firefox 6, see Updating add-ons for Firefox 6.
Note: Firefox 6 requires that binary components be recompiled, as do all major releases of Firefox. See Binary Interfaces for details.
JavaScript code modules
FileUtils.jsm
- The
openSafeFileOutputStream()method now opens files with theDEFER_OPENbehavior flag instead of attempting to open them immediately.
XPCOMUtils.jsm
- The new
importRelative()method lets you load one JavaScript code module from a path relative to the path of another JavaScript code module. This makes it easier to build modules that depend on each other.
XPCOM
nsCOMArray<T>now has aRemoveObjectsAt()method for removing multiple objects at once from the array.
Using the DOM from chrome
- Using the DOM File API in chrome code
-
Although you've always been able to use the DOM File API from chrome code, the
Fileconstructor now supports specifying a local pathname string when used from chrome. In addition, you can also specify the file to access using the DOM File API using annsIFileobject.
Interface changes
nsINavHistoryQueryOptionsnow supports sorting in frequency order using the newSORT_BY_FREQUENCY_ASCENDINGandSORT_BY_FREQUENCY_DESCENDINGconstants.nsIFilePickerhas a newnsIFilePicker.addToRecentDocsattribute, which lets you indicate that the selected file should be added to the user's "recent documents" list if there is one. This attribute has no effect when in private browsing mode.nsINavBookmarkObservermethods with item ID parameters now require a GUID as well.nsIPrefBranch.clearUserPref()no longer throws an exception if the specified preference doesn't exist or has no user-set value. Instead, it does nothing.- The
nsIMemoryReporterinterface now provides support for indicating the kind of memory being described (mapped, heap, or other). - The
stateDataattribute ofnsISHEntrynow returns ansIStructuredCloneContainer. nsIURIhas a newnsIURI.refattribute, which returns the reference portion (the part after the "#") of the URI. It also has new methodsnsIURI.cloneIgnoringRef()which clones thensIURIwithout the ref member andnsIURI.equalsExceptRef()which compares to anothernsIURIignoring the ref member.
New interfaces
mozIAsyncFavicons-
A new service that lets you access the favicon service asynchronously.
nsIEventSource-
Details forthcoming.
nsIGSettingsCollection-
Details forthcoming.
nsIGSettingsService-
Details forthcoming.
nsIHttpUpgradeListener-
The callback interface for handling HTTP upgrade requests via the
nsIHttpChannelInternal.HTTPUpgrade()method. nsIStructuredCloneContainer-
A container for objects that have been serialized using the structured clone algorithm.
nsITelemetry-
Implements telemetry support to allow recording of telemetry data to be used to present histograms for performance tracking purposes. See Firefox bug 649502 and Firefox bug 585196.
nsITimedChannel-
See Firefox bug 576006.
nsIWebSocketListener-
See Firefox bug 640003.
nsIWebSocketProtocol-
See Firefox bug 640003.
Removed interfaces
The following interfaces were implementation details that are no longer needed:
nsIDOMDocumentEvent(see Firefox bug 655517)nsIDOMDocumentTraversal(see Firefox bug 655514)nsIDOMDocumentRange(see Firefox bug 655513)IWeaveCrypto(see Firefox bug 651596)nsIDOM3DocumentEvent(see Firefox bug 481863)nsIDOMAbstractViewnsILiveTitleNotificationSubjectnsIPlugin(see Firefox bug 637253)nsIPluginInstance(see Firefox bug 637253)nsIHTMLEditRules(see Firefox bug 633750)nsIXSLTProcessorObsolete(see Firefox bug 649534)
Other changes
- Using preferences from application code
-
A new static API is available for easily accessing preferences; this is only available to application code and can't be used by add-ons.