mozilla

Revision 536139 of Firefox 28 for developers

  • Revision slug: Mozilla/Firefox/Releases/28
  • Revision title: Firefox 28 for developers
  • Revision id: 536139
  • Created:
  • Creator: teoli
  • Is current revision? No
  • Comment

Revision Content

Firefox 28 was released on March 18, 2014. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.

Want to help document Firefox 28? See the list of bugs that need to be written about and pitch in!

Changes for Web developers

Developer Tools

  • The {{domxref("console.exception")}} property has been added ({{bug("922214")}}).
  • The {{domxref("console.assert")}} property has been added ({{bug("760193")}}).
  • App Manager: a new Manifest Editor was added.
  • App Manager: the toolbox used for debugging apps is now embedded in the app manager UI.
  • Web Console: added a "split console" mode - press Escape to quickly open the console in any other tool.
  • Web Console: added a dark theme for the output.
  • Debugger: pretty-print minified JavaScript.
  • Debugger: simply hover over any variable or click on it to bring up a pop-up that displays the current value.
  • Inspector: added a color picker in rules view and various tooltips.
  • Browser Toolbox: allows add-on and platform developers to use almost all of the developer tools while targeting the browser itself.

More details in this post.

CSS

  • Support for multi-line flexbox has been added ({{bug("939901")}}).
  • Longhand East Asian counter styles have been implemented ({{bug("934072")}}).
  • Support for the {{cssxref("background-blend-mode")}} property has been added ({{bug("841601")}}).
  • The none value has been added to {{cssxref("font-variant-ligatures")}} ({{bug("913264")}}).
  • Support for the {{cssxref(":hover")}} user action pseudo-class on pseudo-elements has been implemented ({{bug("922669")}}).

HTML

  • <input type=color> and <input type=number> have been implemented, disabled by default.

JavaScript

  • ECMAScript 6 (Harmony) implementation continues:
    • New Array methods have been implemented: {{jsxref("Array.prototype.entries()")}} and {{jsxref("Array.prototype.keys()")}} ({{bug("894658")}}).

Interfaces/APIs/DOM

  • HTMLVideoElement.canPlayType('video/webm') now reports maybe. ({{bug("884275")}}).
  • The {{domxref("DocumentFragment.getElementById()")}} method has been implemented. E.g. document.createDocumentFragment().getElementById() ({{bug("933193")}}).
  • The {{domxref("KeyboardEvent.repeat")}} attribute has been implemented ({{bug("600117")}}).
  • The {{domxref("File")}} constructor, e.g. new File(["foo"], "foo.txt") has been implemented. ({{bug("819900")}}).
  • The {{domxref("NavigatorPlugins.plugins", "navigator.plugins")}} is no more enumerable, for privacy reasons ({{bug(757726)}}).
  • The two attributes {{domxref("Window.screenX")}} and {{domxref("Window.screenY")}} now return CSS pixels (and no more device pixels) ({{bug(943668)}}).
  • The two methods {{domxref("CanvasRenderingContext2D.drawSystemFocusRing()")}} and {{domxref("CanvasRenderingContext2D.drawCustomFocusRing()")}} have been implemented. The preference canvas.focusring.enabled must be set to true to activate both ({{bug(540456)}}).
  • The following attributes have been added to {{domxref("NavigatorID")}}: {{domxref("NavigatorID.appCodeName", "appCodeName")}} and {{domxref("NavigatorID.product", "product")}} ({{bug(925847)}}).

MathML

  • Support of the mathvariant attribute has been added ({{bug("114365")}}).

SVG

No change.

Audio/Video

  • Opus in WebM is now supported ({{bug("887978")}}).
  • The VP9 video decoder is now supported ({{bug("833023")}}).

Network

  • Support of SPDY/2 has been removed.

Changes for addon and Mozilla developers

  • The interface of DeferredTask.jsm has been changed, and the isPending(), start(), flush(), and cancel() methods have been removed ({{bug("940408")}}).

Security

  • CSP was not enforced in sandboxed iframes. This has been fixed ({{bug(886164)}}).
  • The CSP 1.1 experimental script-nonce directive has been implemented. The preference security.csp.experimentalEnabled should be set to true to enable this functionality ({{bug(855326)}}).

See also

Older versions

{{Firefox_for_developers('27')}}

Revision Source

<p>Firefox 28 was released on March 18, 2014. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.</p>
<p>Want to help document Firefox 28? See the <a class="external" href="http://beta.elchi3.de/doctracker/#list=fx&amp;version=28.0">list of bugs that need to be written about</a> and pitch in!</p>
<h2 id="Changes_for_Web_developers">Changes for Web developers</h2>
<h3 id="Developer_Tools">Developer Tools</h3>
<ul>
 <li>The {{domxref("console.exception")}} property has been added ({{bug("922214")}}).</li>
 <li>The {{domxref("console.assert")}} property has been added ({{bug("760193")}}).</li>
 <li>App Manager: a new Manifest Editor was added.</li>
 <li>App Manager: the toolbox used for debugging apps is now embedded in the app manager UI.</li>
 <li>Web Console: added a "split console" mode - press Escape to quickly open the console in any other tool.</li>
 <li>Web Console: added a dark theme for the output.</li>
 <li>Debugger: pretty-print minified JavaScript.</li>
 <li>Debugger: simply hover over any variable or click on it to bring up a pop-up that displays the current value.</li>
 <li>Inspector: added a color picker in rules view and various tooltips.</li>
 <li>Browser Toolbox: allows add-on and platform developers to use almost all of the developer tools while targeting the browser itself.</li>
</ul>
<p>More details in <a href="https://hacks.mozilla.org/2013/12/split-console-pretty-print-minified-js-and-more-firefox-developer-tools-episode-28/" title="Split console, pretty-print minified JS and more – Firefox Developer Tools Episode 28">this post</a>.</p>
<h3 id="CSS">CSS</h3>
<ul>
 <li>Support for multi-line <a href="/en-US/docs/Web/Guide/CSS/Flexible_boxes">flexbox</a> has been added ({{bug("939901")}}).</li>
 <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Longhand East Asian <a href="/en-US/docs/Web/CSS/list-style-type">counter styles</a></span></span> have been implemented ({{bug("934072")}}).</li>
 <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Support for the {{cssxref("background-blend-mode")}} property has been added</span></span> ({{bug("841601")}}).</li>
 <li>The <code>none</code> value has been added to {{cssxref("font-variant-ligatures")}} ({{bug("913264")}}).</li>
 <li>Support for the {{cssxref(":hover")}} user action pseudo-class on pseudo-elements has been implemented ({{bug("922669")}}).</li>
</ul>
<h3 id="HTML">HTML</h3>
<ul>
 <li><code>&lt;input type=color&gt;</code> and <code>&lt;input type=number&gt;</code> have been implemented, disabled by default.</li>
</ul>
<h3 id="JavaScript">JavaScript</h3>
<ul>
 <li><a href="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla" title="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla">ECMAScript 6</a> (Harmony) implementation continues:
  <ul>
   <li>New <code>Array</code> methods have been implemented: {{jsxref("Array.prototype.entries()")}} and {{jsxref("Array.prototype.keys()")}} ({{bug("894658")}}).</li>
  </ul>
 </li>
</ul>
<h3 id="Interfaces.2FAPIs.2FDOM">Interfaces/APIs/DOM</h3>
<ul>
 <li><span id="summary_alias_container"><span id="short_desc_nonedit_display"><code>HTMLVideoElement.canPlayType('video/webm')</code> now reports <code>maybe</code>.</span></span> ({{bug("884275")}}).</li>
 <li>The {{domxref("DocumentFragment.getElementById()")}} method has been implemented. E.g. <code>document.createDocumentFragment().getElementById()</code> ({{bug("933193")}}).</li>
 <li>The {{domxref("KeyboardEvent.repeat")}} attribute has been implemented ({{bug("600117")}}).</li>
 <li>The {{domxref("File")}} constructor, e.g.&nbsp;<code>new File(["foo"], "foo.txt")</code> has been implemented. ({{bug("819900")}}).</li>
 <li>The {{domxref("NavigatorPlugins.plugins", "navigator.plugins")}} is no more enumerable, for privacy reasons ({{bug(757726)}}).</li>
 <li>The two attributes {{domxref("Window.screenX")}} and {{domxref("Window.screenY")}} now return CSS pixels (and no more device pixels) ({{bug(943668)}}).</li>
 <li>The two methods {{domxref("CanvasRenderingContext2D.drawSystemFocusRing()")}} and {{domxref("CanvasRenderingContext2D.drawCustomFocusRing()")}} have been implemented. The preference <code>canvas.focusring.enabled</code> must be set to <code>true</code> to activate both ({{bug(540456)}}).</li>
 <li>The following attributes have been added to {{domxref("NavigatorID")}}: {{domxref("NavigatorID.appCodeName", "appCodeName")}} and {{domxref("NavigatorID.product", "product")}} ({{bug(925847)}}).</li>
</ul>
<h3 id="MathML">MathML</h3>
<ul>
 <li>Support of <span id="summary_alias_container"><span id="short_desc_nonedit_display">the </span></span><code>mathvariant</code> attribute has been added ({{bug("114365")}}).</li>
</ul>
<h3 id="SVG">SVG</h3>
<p><em>No change.</em></p>
<h3 id="Audio.2FVideo">Audio/Video</h3>
<ul>
 <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Opus in WebM</span></span> is now supported ({{bug("887978")}}).</li>
 <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">The VP9 video decoder</span></span> is now supported ({{bug("833023")}}).</li>
</ul>
<h3 id="Network">Network</h3>
<ul>
 <li>Support of <code>SPDY/2</code> has been removed.</li>
</ul>
<h2 id="Changes_for_addon_and_Mozilla_developers">Changes for addon and Mozilla developers</h2>
<ul>
 <li>The interface of <a href="/en-US/docs/Mozilla/JavaScript_code_modules/DeferredTask.jsm">DeferredTask.jsm</a> has been changed, and the <code>isPending()</code>, <code>start()</code>, <code>flush()</code>, and <code>cancel()</code> methods have been removed ({{bug("940408")}}).</li>
</ul>
<h2 id="Security">Security</h2>
<ul>
 <li>CSP was not enforced in sandboxed iframes. This has been fixed ({{bug(886164)}}).</li>
 <li>The CSP 1.1 experimental <code>script-nonce</code> directive has been implemented. The preference <code>security.csp.experimentalEnabled</code> should be set to <code>true</code> to enable this functionality ({{bug(855326)}}).</li>
</ul>
<h2 id="See_also">See also</h2>
<ul>
 <li><a href="/en-US/docs/Mozilla/Firefox/Releases/28/Site_Compatibility">Site Compatibility for Firefox 28</a></li>
</ul>
<h3 id="Older_versions">Older versions</h3>
<p>{{Firefox_for_developers('27')}}</p>
Revert to this revision