Firefox 7 for developers

  • Revision slug: Firefox_7_for_developers
  • Revision title: Firefox 7 for developers
  • Revision id: 44450
  • Created:
  • Creator: fscholz
  • Is current revision? No
  • Comment update for bug 662038; 12 words added

Revision Content

Firefox 7 shipped on September 27, 2011. This article provides information about the changes that affect developers -- both of web content and of Firefox add-ons.

Changes for web developers

HTML

  • The {{ domxref("HTMLHeadElement") }} profile property has been removed, this property has been deprecated since {{ gecko("2.0") }}.
  • The {{ domxref("HTMLImageElement") }} x and y properties have been removed.
  • The {{ domxref("HTMLSelectElement") }} add() method before parameter is now optional.
  • The {{ HTMLElement("body") }} element's {{ htmlattrxref("background", "body") }} attribute is no longer resolved as a URI; this is in compliance with the current HTML specification.
  • The {{ HTMLElement("option") }} element's {{ htmlattrxref("label", "option") }} attribute now reflects the value of the element's text content if the attribute isn't specified.

Canvas

  • Specifying invalid values when calling setTransform(), bezierCurveTo(), or arcTo() no longer throws an exception; these calls are now correctly silently ignored.
  • The isPointInPath() method now correctly considers the transformation matrix when comparing the specified point to the current path.
  • Calling strokeRect() with a zero width and height now correctly does nothing.
  • Calling drawImage() with a zero width or height {{ HTMLElement("canvas") }} now throws INVALID_STATE_ERR.
  • Calling drawImage() with non-finite coordinates no longer throws an exception.
  • toDataURL() method now accepts a second argument to control JPEG quality.
  • Support for the non-standard globalCompositeOperation operations clear and over has been removed.
  • Shadows are now only drawn for source-over compositing operations.
  • You can now configure the fill rule used by canvas by setting the mozFillRule attribute on the context.
  • Support for the experimental mozDash and mozDashOffset attributes has been added.

CSS

  • {{ cssxref("text-overflow") }} is now supported.
  • The {{ cssxref("orient", "-moz-orient") }} property has been fixed so that {{ HTMLElement("progress") }} elements that are vertically oriented have appropriate default dimensions.

MathML

  • XLink href has been restored and the MathML3 href attribute is now supported. Developers are encouraged to move to the latter syntax.
  • Support for the voffset attribute on {{ MathMLElement("mpadded") }} elements has been added and behavior of lspace attribute has been fixed.
  • The top-level {{ MathMLElement("math") }} element now accepts any attributes of the {{ MathMLElement("mstyle") }} element.
  • Support for Asana Math fonts has been added.
  • The medium line thickness of fraction bars in {{ MathMLElement("mfrac") }} elements has been corrected to match the default thickness.
  • Names for negative spaces are now supported.

DOM

  • The {{ domxref("File") }} interface's non-standard methods getAsBinary(), getAsDataURL(), and getAsText() have been removed as well as the non-standard properties fileName and fileSize.
  • The {{ domxref("XMLHttpRequest/FormData", "FormData") }} interface no longer reports the filename as an empty string when sending the Content-Disposition HTTP header if the data was set using a {{ domxref("Blob") }}. This fixes errors that were happening with some servers.
  • The {{ domxref("element.dir") }} attribute now always returns its result as all lower-case, as required by the HTML specification.
  • The {{ domxref("FileReader") }} readAsArrayBuffer() method is now implemented.
  • {{ domxref("document.createEntityReference") }} has been removed. It was never properly implemented and is not implemented in most other browsers.
  • document.normalizeDocument has been removed. Use {{ domxref("Node.normalize") }} instead.
  • {{ domxref("DOMTokenList.item") }} now returns undefined if the index is out of bounds, previously it returned null.
  • Node.getFeature has been removed.
  • The HTMLInsElement and HTMLDelElement interfaces have been removed, since the {{ HTMLElement("ins") }} and {{ HTMLElement("del") }} elements actually use the {{ domxref("HTMLModElement") }} interface.
  • In a effort to conform to the upcoming DOM4 specification where {{ domxref("Attr") }} do not inherit from {{ domxref("Node") }} anymore (it did in DOM Core 1, 2 and 3), many {{ domxref("Node") }} properties and methods on the {{ domxref("Attr") }} interface are now reporting warnings as we work toward removing them in a later version.
  • Added support for the {{ domxref("window.ondeviceorientation") }} and {{ domxref("window.ondevicemotion") }} properties on {{ domxref("window") }} objects.
  • {{ domxref("window.resizeTo") }}, {{ domxref("window.resizeBy") }}, {{ domxref("window.moveTo") }} , and {{ domxref("window.moveBy") }} no longer apply to the main window.

JavaScript

WebSockets

  • The network.websocket.max-connections preference is used to determine the maximum number of WebSocket connections that can be open at a time. The default value is 200.
  • The underlying WebSocket protocol version 8 (as specified by IETF draft 10) is used now instead of the version 7 protocol used by Firefox 6.
  • The WebSocket API is now available on Firefox Mobile.

console API

  • Message logged with console.log while the web console isn't open are still logged, although they aren't displayed when the web console is opened.

Web timing

XML

Changes for Mozilla and add-on developers

These changes affect add-on developers as well as developers working on or with Mozilla code itself. Add-on developers should see Updating extensions for Firefox 7 for additional information.

Note: Firefox 7 requires that binary components be recompiled, as do all major releases of Firefox. See Binary Interfaces for details.

JavaScript code modules

FileUtils.jsm

  • New method openFileOutputStream() opens a file output stream, the non-safe variant, for writing.

AddonManager.jsm

  • The Add-on Manager has new methods for managing lists of add-ons that changed during applications startup: {{ AMInterface("AddonManager", "addStartupChange") }}, {{ AMInterface("AddonManager", "removeStartupChange") }}, and {{ AMInterface("AddonManager", "getStartupChanges") }}.

XUL

  • {{ xulelem("tree") }} elements can now persist the state of disclosure triangles if the nodes referenced by {{ XULAttr("datasources") }} all have unique IDs specified by "id" attributes.
  • {{ xulelem("panel") }} elements can now be configured to let the user drag them by clicking anywhere on their background by using the new {{ XULAttr("backdrag") }} attribute.

XPCOM

Memory reporters

Support has been added for multi-reporters; that is, memory reporters that gather data on request and call a callback for each generated result. See {{ interface("nsIMemoryMultiReporter") }} and {{ interface("nsIMemoryMultiReporterCallback") }} for the relevant interfaces, as well as the {{ ifmethod("nsIMemoryReporterManager", "registerMultiReporter") }} and {{ ifmethod("nsIMemoryReporterManager", "unregisterMultiReporter") }} methods.

User experience changes

Changes to the build system

  • The ActiveX embedding API is no longer built and support has been removed from the build system. Supporting interfaces have also been removed; see {{ anch("Removed interfaces") }}.
  • You should no longer specify -Zc:wchar_t- when building on Windows. See the updated Build documentation for details.

Interface changes

  • {{ interface("nsISocketTransport") }} now offers a new connection flag: DISABLE_IPV6; this causes a socket to only attempt to connect to IPv4 addresses, ignoring any available IPv6 addresses. In addition, {{ interface("nsIDNSService") }} now offers a new resolve flag: RESOLVE_DISABLE_IPV6; this causes domain name resolution to only consider IPv4 hosts, ignoring any available IPv6 addresses. These changes are used to implement the "happy eyeballs" strategy for improving response time when attempting to connect on hosts that support both IPv4 and IPv6 (especially those that have broken IPv6 connectivity).
  • {{ interface("inIDOMUtils") }} has two new methods, {{ ifmethod("inIDOMUtils","getChildrenForNode") }} which returns a list of child nodes of a node and {{ ifmethod("inIDOMUtils","getUsedFontFaces") }} which returns a list of font faces used in a range.
  • The nsIMarkupDocumentViewer_MOZILLA_2_0_BRANCH interface has been merged into the {{ interface("nsIMarkupDocumentViewer") }} interface.
  • The nsIDOMWindow2 interface has been merged into the {{ interface("nsIDOMWindow") }} interface.
  • The nsIDOMWindow_2_0_BRANCH interface has been merged into the {{ interface("nsIDOMWindowInternal") }} interface.
  • {{ interface("nsINavHistoryObserver") }} methods with URI parameters now require a GUID as well.
  • The nsISHistory_2_0_BRANCH interface has been merged into the {{ interface("nsISHistory") }} interface.
  • {{ interface("nsITelemetry") }} has a new method, {{ ifmethod("nsITelemetry","getHistogramById") }} which returns a histogram by its ID, and a new attribute, canRecord which when set to false disables recording of telemetry statistics. Telemetry statistics are no longer recorded when in Private Browsing Mode. (see {{ bug("661574") }} and {{ bug("661573") }})
    Telemetry histograms defined with {{ ifmethod("nsITelemetry","newHistogram") }} will not be reported in the telemetry ping.
  • The {{ interface("nsIMemoryReporter") }} interface has been substantially changed; if you use it, you will need to make some adjustments to your code.
  • {{ interface("nsIXMLHttpRequest") }}, headers set by {{ ifmethod("nsIXMLHttpRequest","setRequestHeader") }} are sent with the request when following a redirect. Previously these headers would not be sent.
  • {{ interface("nsIDocShell") }} has a new allowWindowControl attribute. If true, the docshell's content is allowed to control the window (that is, to move or resize the window).
  • The nsIThreadInternal2 interface has been merged into the {{ interface("nsIThreadInternal") }} interface.

New interfaces

{{ interface("nsIDOMFontFace") }}
Describes a single font face.
{{ interface("nsIDOMFontFaceList") }}
Describes a list of font faces, each represented by {{ interface("nsIDOMFontFace") }}.

Removed interfaces

The following interfaces were implementation details that are no longer needed:

  • nsIDOM3Attr
  • nsIDOM3Node
  • nsIDOM3TypeInfo
  • nsIDOM3Text
  • nsIDOMDocumentStyle
  • nsIDOMNSDocument
  • nsIDOMNSFeatureFactory
  • {{ interface("nsIDOMNSHTMLDocument") }}
  • nsIDOMNSHTMLFormElement
  • nsIDOMNSHTMLHRElement
  • nsIDOMNSHTMLTextAreaElement

The following interfaces were removed as part of the removal of the ActiveX embedding API:

  • DITestScriptHelper
  • DWebBrowserEvents
  • DWebBrowserEvents2
  • {{ interface("IDispatch") }}
  • IMozControlBridge
  • IMozPluginHostCtrl
  • IWebBrowser
  • IWebBrowser2
  • IWebBrowserApp
  • IXMLDocument
  • IXMLElement
  • IXMLElementCollection
  • IXMLError
  • nsIActiveXSecurityPolicy
  • {{ interface("nsIDispatchSupport") }}
  • nsIMozAxPlugin
  • nsIScriptEventHandler
  • nsIScriptEventManager

See also

{{ languages( { "ja": "ja/Firefox_7_for_developers", "zh-tw": "zh-tw/Firefox_7_for_developers" } ) }}

Revision Source

<p>Firefox 7 shipped on September 27, 2011. This article provides information about the changes that affect developers -- both of web content and of Firefox add-ons.</p>
<h2>Changes for web developers</h2>
<h3>HTML</h3>
<ul> <li>The {{ domxref("HTMLHeadElement") }} <code>profile</code> property has been removed, this property has been deprecated since {{ gecko("2.0") }}.</li> <li>The {{ domxref("HTMLImageElement") }} <code>x</code> and <code>y</code> properties have been removed.</li> <li>The {{ domxref("HTMLSelectElement") }} <code>add()</code> method <code>before</code> parameter is now optional.</li> <li>The {{ HTMLElement("body") }} element's {{ htmlattrxref("background", "body") }} attribute is no longer resolved as a URI; this is in compliance with the current HTML specification.</li> <li>The {{ HTMLElement("option") }} element's {{ htmlattrxref("label", "option") }} attribute now reflects the value of the element's text content if the attribute isn't specified.</li>
</ul>
<h4>Canvas</h4>
<ul> <li>Specifying invalid values when calling <code>setTransform()</code>, <code>bezierCurveTo()</code>, or <code>arcTo()</code> no longer throws an exception; these calls are now correctly silently ignored.</li> <li>The <a href="/en/DOM/CanvasRenderingContext2D#isPointInPath()" title="en/DOM/CanvasRenderingContext2D#isPointInPath()"><code>isPointInPath()</code></a> method now correctly considers the transformation matrix when comparing the specified point to the current path.</li> <li>Calling <code>strokeRect()</code> with a zero width and height now correctly does nothing.</li> <li>Calling <a href="/en/DOM/CanvasRenderingContext2D#drawImage()" title="en/DOM/CanvasRenderingContext2D#drawImage()"><code>drawImage()</code></a> with a zero width or height {{ HTMLElement("canvas") }} now throws <code>INVALID_STATE_ERR</code>.</li> <li>Calling <a href="/en/DOM/CanvasRenderingContext2D#drawImage()" title="en/DOM/CanvasRenderingContext2D#drawImage()"><code>drawImage()</code></a> with non-finite coordinates no longer throws an exception.</li> <li><code>toDataURL()</code> method now accepts a second argument to control JPEG quality.</li> <li>Support for the non-standard <code>globalCompositeOperation</code> operations <code>clear</code> and <code>over</code> has been removed.</li> <li><a href="/en/Canvas_tutorial/Applying_styles_and_colors#Shadows" title="en/Canvas_tutorial/Applying_styles_and_colors#Shadows">Shadows</a> are now only drawn for <code>source-over</code> compositing operations.</li> <li>You can now configure the fill rule used by canvas by setting the <code>mozFillRule </code><a href="/en/DOM/CanvasRenderingContext2D#Attributes" title="en/DOM/CanvasRenderingContext2D#Attributes">attribute</a> on the context.</li> <li>Support for the experimental <code>mozDash</code> and <code>mozDashOffset</code> attributes has been added.</li>
</ul>
<h3>CSS</h3>
<ul> <li>{{ cssxref("text-overflow") }} is now supported.</li> <li>The {{ cssxref("orient", "-moz-orient") }} property has been fixed so that {{ HTMLElement("progress") }} elements that are vertically oriented have appropriate default dimensions.</li>
</ul>
<h3>MathML</h3>
<ul> <li>XLink href has been restored and the MathML3 <code>href</code> attribute is now supported. Developers are encouraged to move to the latter syntax.</li> <li>Support for the <code>voffset</code> attribute on {{ MathMLElement("mpadded") }} elements has been added and behavior of <code>lspace</code> attribute has been fixed.</li> <li>The top-level {{ MathMLElement("math") }} element now accepts any attributes of the {{ MathMLElement("mstyle") }} element.</li> <li>Support for <a class="external" href="http://www.ctan.org/tex-archive/fonts/Asana-Math/">Asana Math</a> fonts has been added.</li> <li>The <code>medium</code> line thickness of fraction bars in {{ MathMLElement("mfrac") }} elements has been corrected to match the default thickness.</li> <li><a href="/en/MathML/Attributes/Values#Constants_(namedspaces)" title="en/MathML/Attributes/Values#Constants_(namedspaces)">Names for negative spaces</a> are now supported.</li>
</ul>
<h3>DOM</h3>
<ul> <li>The {{ domxref("File") }} interface's non-standard methods <code>getAsBinary()</code>, <code>getAsDataURL()</code>, and <code>getAsText()</code> have been removed as well as the non-standard properties <code>fileName</code> and <code>fileSize</code>.</li> <li>The {{ domxref("XMLHttpRequest/FormData", "FormData") }} interface no longer reports the filename as an empty string when sending the <code>Content-Disposition</code> HTTP header if the data was set using a {{ domxref("Blob") }}. This fixes errors that were happening with some servers.</li> <li>The {{ domxref("element.dir") }} attribute now always returns its result as all lower-case, as required by the HTML specification.</li> <li>The {{ domxref("FileReader") }} <code>readAsArrayBuffer()</code> method is now implemented.</li> <li>{{ domxref("document.createEntityReference") }} has been removed. It was never properly implemented and is not implemented in most other browsers.</li> <li><code>document.normalizeDocument</code> has been removed. Use {{ domxref("Node.normalize") }} instead.</li> <li>{{ domxref("DOMTokenList.item") }} now returns <code>undefined</code> if the <code>index</code> is out of bounds, previously it returned <code>null</code>.</li> <li><code>Node.getFeature</code> has been removed.</li> <li>The <code>HTMLInsElement</code> and <code>HTMLDelElement</code> interfaces have been removed, since the {{ HTMLElement("ins") }} and {{ HTMLElement("del") }} elements actually use the {{ domxref("HTMLModElement") }} interface.</li> <li>In a effort to conform to the upcoming <a class="external" href="http://www.w3.org/TR/dom/">DOM4</a> specification where {{ domxref("Attr") }} do not inherit from {{ domxref("Node") }} anymore (it did in DOM Core 1, 2 and 3), many {{ domxref("Node") }} properties and methods on the {{ domxref("Attr") }} interface are <a href="/En/DOM/Attr#Deprecated_properties_and_methods" title="En/DOM/Attr#Deprecated_properties_and_methods">now reporting warnings</a> as we work toward removing them in a later version.</li> <li>Added support for the {{ domxref("window.ondeviceorientation") }} and {{ domxref("window.ondevicemotion") }} properties on {{ domxref("window") }} objects.</li> <li>{{ domxref("window.resizeTo") }}, {{ domxref("window.resizeBy") }}, {{ domxref("window.moveTo") }} , and {{ domxref("window.moveBy") }} no longer apply to the main window.</li>
</ul>
<h3>JavaScript</h3>
<ul> <li>The <code><a href="/en/JavaScript/Reference/Global_Objects/Function/arity" title="en/JavaScript/Reference/Global_Objects/Function/arity">Function.arity</a></code> property has been removed; use <code><a href="/en/JavaScript/Reference/Global_Objects/Function/length" title="en/JavaScript/Reference/Global_Objects/Function/length">Function.length</a></code> instead.</li>
</ul>
<h3>WebSockets</h3>
<ul> <li>The <code>network.websocket.max-connections</code> preference is used to determine the maximum number of WebSocket connections that can be open at a time. The default value is 200.</li> <li>The underlying WebSocket protocol version 8 (as specified by <a class="external" href="http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-10" title="http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-10">IETF draft 10</a>) is used now instead of the version 7 protocol used by Firefox 6.</li> <li>The WebSocket API is now available on Firefox Mobile.</li>
</ul>
<h3>console API</h3>
<ul> <li>Message logged with <code>console.log</code> while the <a href="/en/Using_the_Web_Console" title="Using the Web Console">web console</a> isn't open are still logged, although they aren't displayed when the web console is opened.</li>
</ul>
<div class="changelog"> <h3>Web timing</h3> <ul> <li>Initial implementation of the <a class="external" href="http://www.w3.org/TR/navigation-timing/">Navigation Timing</a> specification.</li> </ul> <h3>XML</h3> <ul> <li>In addition to the previously supported <code>text/xsl</code>, XSLT stylesheets can now use the official internet media (MIME) type <code>application/xslt+xml</code> (in the <a class="external" href="http://www.w3.org/TR/xml-stylesheet/" title="http://www.w3.org/TR/xml-stylesheet/">stylesheet processing instruction</a> or the <a class="external" href="http://tools.ietf.org/html/rfc5988">HTTP Link header field</a>).</li> </ul>
</div>
<h2>Changes for Mozilla and add-on developers</h2>
<p>These changes affect add-on developers as well as developers working on or with Mozilla code itself. Add-on developers should see <a href="/en/Firefox/Updating_extensions_for_Firefox_7" title="en/Firefox/Updating extensions for Firefox 7">Updating extensions for Firefox 7</a> for additional information.</p>
<div class="note"><strong>Note:</strong> Firefox 7 requires that binary components be recompiled, as do all major releases of Firefox. See <a href="/En/Developer_Guide/Interface_Compatibility#Binary_Interfaces" title="En/Developer_Guide/Interface_Compatibility#Binary_Interfaces">Binary Interfaces</a> for details.</div>
<h3>JavaScript code modules</h3>
<h4>FileUtils.jsm</h4>
<ul> <li>New method <code>openFileOutputStream()</code> opens a file output stream, the non-safe variant, for writing.</li>
</ul>
<h4>AddonManager.jsm</h4>
<ul> <li>The Add-on Manager has new methods for managing lists of add-ons that changed during applications startup: {{ AMInterface("AddonManager", "addStartupChange") }}, {{ AMInterface("AddonManager", "removeStartupChange") }}, and {{ AMInterface("AddonManager", "getStartupChanges") }}.</li>
</ul>
<h3>XUL</h3>
<ul> <li>{{ xulelem("tree") }} elements can now persist the state of disclosure triangles if the nodes referenced by {{ XULAttr("datasources") }} all have unique IDs specified by "id" attributes.</li> <li>{{ xulelem("panel") }} elements can now be configured to <a href="/en/XUL/PopupGuide/Panels#Letting_panels_be_dragged_by_grabbing_the_background" title="en/XUL/PopupGuide/Panels#Letting_panels_be_dragged_by_grabbing_the_background">let the user drag them by clicking anywhere on their background</a> by using the new {{ XULAttr("backdrag") }} attribute.</li>
</ul>
<h3>XPCOM</h3>
<ul> <li>The new <a href="/en/Components.utils.schedulePreciseGC" title="en/Components.utils.schedulePreciseGC"><code>Components.utils.schedulePreciseGC()</code></a> method lets you schedule a thorough garbage collection cycle to occur at some point in the future when no JavaScript code is executing; a callback is executed once collection is complete.</li> <li>The <a href="/en/Components.utils.unload" title="Components.utils.unload"><code>Components.utils.unload()</code></a> method lets you unload JavaScript code modules previously loaded by calling <a href="/en/Components.utils.load" title="en/Components.utils.load"><code>Components.utils.load()</code></a>.</li>
</ul>
<h3>Memory reporters</h3>
<p>Support has been added for multi-reporters; that is, memory reporters that gather data on request and call a callback for each generated result. See {{ interface("nsIMemoryMultiReporter") }} and {{ interface("nsIMemoryMultiReporterCallback") }} for the relevant interfaces, as well as the {{ ifmethod("nsIMemoryReporterManager", "registerMultiReporter") }} and {{ ifmethod("nsIMemoryReporterManager", "unregisterMultiReporter") }} methods.</p>
<h3>User experience changes</h3>
<ul> <li>Extension options can now be <a href="/en/Extensions/Inline_Options" title="en/Extensions/Inline_Options">displayed inside the Add-on Manager</a> for both restartless and traditional extensions.</li> <li>The destination of downloads is now remembered on a site-by-site basis. This data can be accessed using <a href="/en/JavaScript_code_modules/DownloadLastDir.jsm" title="en/JavaScript_code_modules/DownloadLastDir.jsm">DownloadLastDir.jsm</a>.</li>
</ul>
<h3>Changes to the build system</h3>
<ul> <li>The ActiveX embedding API is no longer built and support has been removed from the build system. Supporting interfaces have also been removed; see {{ anch("Removed interfaces") }}.</li> <li>You should no longer specify <code>-Zc:wchar_t-</code> when building on Windows. See the <a href="/En/Developer_Guide/Build_Instructions#Build_and_install" title="En/Developer_Guide/Build_Instructions#Build_and_install">updated Build documentation</a> for details.</li>
</ul>
<h3>Interface changes</h3>
<ul> <li>{{ interface("nsISocketTransport") }} now offers a new connection flag: <code>DISABLE_IPV6</code>; this causes a socket to only attempt to connect to IPv4 addresses, ignoring any available IPv6 addresses. In addition, {{ interface("nsIDNSService") }} now offers a new resolve flag: <code>RESOLVE_DISABLE_IPV6</code>; this causes domain name resolution to only consider IPv4 hosts, ignoring any available IPv6 addresses. These changes are used to implement the <a class="external" href="http://tools.ietf.org/html/draft-wing-http-new-tech-00">"happy eyeballs" strategy</a> for improving response time when attempting to connect on hosts that support both IPv4 and IPv6 (especially those that have broken IPv6 connectivity).</li> <li>{{ interface("inIDOMUtils") }} has two new methods, {{ ifmethod("inIDOMUtils","getChildrenForNode") }} which returns a list of child nodes of a node and {{ ifmethod("inIDOMUtils","getUsedFontFaces") }} which returns a list of font faces used in a range.</li> <li>The <code>nsIMarkupDocumentViewer_MOZILLA_2_0_BRANCH</code> interface has been merged into the {{ interface("nsIMarkupDocumentViewer") }} interface.</li> <li>The <code>nsIDOMWindow2</code> interface has been merged into the {{ interface("nsIDOMWindow") }} interface.</li> <li>The <code>nsIDOMWindow_2_0_BRANCH</code> interface has been merged into the {{ interface("nsIDOMWindowInternal") }} interface.</li> <li>{{ interface("nsINavHistoryObserver") }} methods with URI parameters now require a GUID as well.</li> <li>The <code>nsISHistory_2_0_BRANCH</code> interface has been merged into the {{ interface("nsISHistory") }} interface.</li> <li>{{ interface("nsITelemetry") }} has a new method, {{ ifmethod("nsITelemetry","getHistogramById") }} which returns a histogram by its ID, and a new attribute, <code>canRecord</code> which when set to <code>false</code> disables recording of telemetry statistics. Telemetry statistics are no longer recorded when in Private Browsing Mode. (see {{ bug("661574") }} and {{ bug("661573") }})<br> Telemetry histograms defined with {{ ifmethod("nsITelemetry","newHistogram") }} will not be reported in the telemetry ping.</li> <li>The {{ interface("nsIMemoryReporter") }} interface has been substantially changed; if you use it, you will need to make some adjustments to your code.</li> <li>{{ interface("nsIXMLHttpRequest") }}, headers set by {{ ifmethod("nsIXMLHttpRequest","setRequestHeader") }} are sent with the request when following a redirect. Previously these headers would not be sent.</li> <li>{{ interface("nsIDocShell") }} has a new <code>allowWindowControl</code> attribute. If <code>true</code>, the docshell's content is allowed to control the window (that is, to move or resize the window).</li> <li>The <code>nsIThreadInternal2</code> interface has been merged into the {{ interface("nsIThreadInternal") }} interface.</li>
</ul>
<h4>New interfaces</h4>
<dl> <dt>{{ interface("nsIDOMFontFace") }}</dt> <dd>Describes a single font face.</dd> <dt>{{ interface("nsIDOMFontFaceList") }}</dt> <dd>Describes a list of font faces, each represented by {{ interface("nsIDOMFontFace") }}.</dd>
</dl>
<h4>Removed interfaces</h4>
<p>The following interfaces were implementation details that are no longer needed:</p>
<ul> <li><code>nsIDOM3Attr</code></li> <li><code>nsIDOM3Node</code></li> <li><code>nsIDOM3TypeInfo</code></li> <li><code>nsIDOM3Text</code></li> <li><code>nsIDOMDocumentStyle</code></li> <li><code>nsIDOMNSDocument</code></li> <li><code>nsIDOMNSFeatureFactory</code></li> <li>{{ interface("nsIDOMNSHTMLDocument") }}</li> <li><code>nsIDOMNSHTMLFormElement</code></li> <li><code>nsIDOMNSHTMLHRElement</code></li> <li><code>nsIDOMNSHTMLTextAreaElement</code></li>
</ul>
<p>The following interfaces were removed as part of the removal of the ActiveX embedding API:</p>
<ul> <li><code>DITestScriptHelper</code></li> <li><code>DWebBrowserEvents</code></li> <li><code>DWebBrowserEvents2</code></li> <li>{{ interface("IDispatch") }}</li> <li><code>IMozControlBridge</code></li> <li><code>IMozPluginHostCtrl</code></li> <li><code>IWebBrowser</code></li> <li><code>IWebBrowser2</code></li> <li><code>IWebBrowserApp</code></li> <li><code>IXMLDocument</code></li> <li><code>IXMLElement</code></li> <li><code>IXMLElementCollection</code></li> <li><code>IXMLError</code></li> <li><code>nsIActiveXSecurityPolicy</code></li> <li>{{ interface("nsIDispatchSupport") }}</li> <li><code>nsIMozAxPlugin</code></li> <li><code>nsIScriptEventHandler</code></li> <li><code>nsIScriptEventManager</code></li>
</ul>
<h2>See also</h2>
<ul> <li><a href="/en/Firefox_6_for_developers" title="en/Firefox_6_for_developers">Firefox 6 for developers</a></li> <li><a href="/en/Firefox_5_for_developers" title="en/Firefox_5_for_developers">Firefox 5 for developers </a></li> <li><a href="/en/Firefox_4_for_developers" title="en/Firefox_4_for_developers">Firefox 4 for developers </a></li> <li><a href="/en/Firefox_3.6_for_developers" title="en/Firefox_3.6_for_developers">Firefox 3.6 for developers </a></li> <li><a href="/En/Firefox_3.5_for_developers" title="En/Firefox_3.5_for_developers">Firefox 3.5 for developers</a></li> <li><a href="/en/Firefox_3_for_developers" title="en/Firefox_3_for_developers">Firefox 3 for developers</a></li> <li><a href="/en/Firefox_2_for_developers" title="en/Firefox_2_for_developers">Firefox 2 for developers</a></li> <li><a href="/en/Firefox_1.5_for_developers" title="en/Firefox_1.5_for_developers">Firefox 1.5 for developers</a></li>
</ul>
<p>{{ languages( { "ja": "ja/Firefox_7_for_developers", "zh-tw": "zh-tw/Firefox_7_for_developers" } ) }}</p>
Revert to this revision