Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Revision 1132581 of Firefox 51 for developers

  • Revision slug: Mozilla/Firefox/Releases/51
  • Revision title: Firefox 51 for developers
  • Revision id: 1132581
  • Created:
  • Creator: Sheppy
  • Is current revision? No
  • Comment

Revision Content

{{ReleaseChannelInfo("51", "51", "January 2017", "Aurora")}}

Changes for Web developers

Developer Tools

No change.

HTML

No change.

CSS

  • Implemented inset() value for {{cssxref("clip-path")}} behind the preference layout.css.clip-path-shapes.enabled, defaulting to false ({{bug(1246762)}}).
  • [css-grid] Implement {{cssxref("fit-content()")}} value for <track-size> ({{bug(1281320)}}).
  • [css-grid] Percentage gutters are wrong calculated on grid containers with indefinite sizes ({{bug(1279182)}}).
  • [css-grid] Reject repeat() column tracks in <grid-template> when there's a grid template area string in the row part ({{bug(1282643)}}).
  • [css-grid] {{cssxref("calc()")}} with negative percentage can result in negative track size ({{bug(1282418)}}).
  • Implemented {{cssxref(":indeterminate")}} for <input type="radio"> ({{bug(885359)}}).
  • Implemented the {{cssxref(":placeholder-shown")}} pseudo-class on <input type="text"> ({{bug(1069015)}}).
  • Unprefixed {{cssxref("::placeholder")}} pseudo-element ({{bug(1069012)}}).
  • Fix {{cssxref(":valid")}} CSS pseudo-class doesn't match valid <form>s ({{bug(1285425)}}).
  • Fix initial value for {{cssxref("mask-repeat")}} property should be no-repeat, but is implemented as repeat ({{bug(1258623)}}).
  • The plaintext value of {{cssxref("unicode-bidi")}} now also works with vertical writing modes ({{bug(1302734)}}).
  • The fill-box and stroke-box values of {{cssxref("clip-path")}} are now properly supported; previously, they wear aliases of border-box ({{bug(1289011)}}).

JavaScript

  • The ES2015 {{jsxref("Symbol.toStringTag")}} property has been implemented ({{bug(1114580)}}).
  • The ES2015 {{jsxref("TypedArray.prototype.toString()")}} and {{jsxref("TypedArray.prototype.toLocaleString()")}} methods have been implemented ({{bug(1121938)}}).
  • The {{jsxref("DateTimeFormat.prototype.formatToParts()")}} method is now available ({{bug(1289340)}}).
  • {{jsxref("Statements/const", "const")}} and {{jsxref("Statements/let", "let")}} are now fully ES2015-compliant ({{bug(950547)}}).
  • Using {{jsxref("Statements/const", "const")}} in for...of loops now has a fresh binding for each iteration and no longer throws a {{jsxref("SyntaxError")}} ({{bug(1101653)}}).
  • The deprecated for each...in loop now presents a warning in the console ({{bug(1293205)}}). Please migrate your code to use the standardized for...of loop.
  • Generator functions can't have a label anymore and "let" as a label name is disallowed now ({{bug(1288459)}}).
  • Deprecated legacy generator functions will now throw when used in method definitions ({{bug(1199296)}}).
  • The next() method of the iterator protocol will now throw a {{jsxref("TypeError")}} if the returned value is not an object ({{bug(1016936)}}).

Interfaces/APIs/DOM

DOM & HTML DOM

  • Throttling in background tabs of timers created by {{domxref("WindowTimers.setInterval", "Window.setInterval()")}} and {{domxref("WindowTimers.setTimeout", "Window.setTimeout()")}} was changed in Firefox 50 to no longer occur if a Web Audio API {{domxref("AudioContext")}} is actively playing sound. However, this didn't resolve all scenarios in which timing-sensitive audio playback (such as music players generating individual notes using timers) could fail to work properly. For that reason, Firefox 51 no longer throttles background tabs which have an {{domxref("AudioContext")}}, even if it's not currently playing sound.
  • The {{domxref("DOMImplementation.hasFeature()")}} now returns true in all cases ({{bug(984778)}}).

Canvas

  • The non-standard CanvasRenderingContext2D.mozFillRule() method has been removed; the fill rule can be define by a parameter of the standard {{domxref("CanvasRenderingContext2D.fill()")}} method ({{bug(826619)}}).
  • The {{domxref("CanvasRenderingContext2D.imageSmoothingEnabled")}} has been unprefixed ({{bug(768072)}}).

WebGL

No change.

IndexedDB

No change.

Service Workers

No change.

WebRTC

  • The {{domxref("RTCPeerConnection.removeStream()")}} method has been removed. It was deprecated back in Firefox 22, and has been throwing a NotSupportedError for a long time. You need to use {{domxref("RTCPeerConnection.removeTrack()")}} instead.

New APIs

No change.

Others

  • For privacy reasons, both {{domxref("BatteryManager.chargingTime")}} and {{domxref("BatteryManager.dischargingTime")}} now round the returned value to the closest 15 minutes ({{bug(1292655)}}).
  • Our implementation of Page Visibility API doesn't accept prefixed version anymore ({{bug(812701)}}).

MathML

No change.

SVG

  • Added {{SVGAttr("tabindex")}} attribute ({{bug(778654)}}).
  • Added {{SVGAttr("href")}} attribute obsoleting {{SVGAttr("xlink:href")}} ({{bug(1245751)}}).
  • CSS Animations used in a SVG used in an {{HTMLElement("img")}} element now works again; it was an old regression ({{bug(1190881)}}).

Audio/Video

  • Add FLAC support (FLAC codec) in both FLAC and Ogg containers ({{bug(1195723)}}). Supported FLAC mimetype: audio/flac, audio/x-flac. For FLAC in Ogg: audio/ogg; codecs=flac and video/ogg; codecs=flac

HTTP

No change.

Networking

No change.

Security

No change.

Changes for add-on and Mozilla developers

Interfaces

No change.

XUL

No change.

JavaScript code modules

No change.

XPCOM

No change.

Other

  • The Mozilla-specific Social API has been substantially changed (largely to remove APIs no longer used), as follows:
    • The {{domxref("MozSocial")}} interface and the {{domxref("navigator.mozSocial")}} property which supports it have been removed.
    • The Social Bookmarks API has been removed.
    • The Social chat functionality has been removed.
    • The Social Status API has been removed.
    • All of the social widgets, except for the Share panel, have been removed. This includes the social sidebar, flyover panels, and so forth.
    • All supporting user interface features and functionality for the removed APIs have been removed as well.
    • Social service provider manifest properties supporting the removed functionality are no longer supported.

See also

Older versions

{{Firefox_for_developers(50)}}

Revision Source

<p>{{ReleaseChannelInfo("51", "51", "January 2017", "Aurora")}}</p>

<h2 id="Changes_for_Web_developers">Changes for Web developers</h2>

<h3 id="Developer_Tools">Developer Tools</h3>

<p><em>No change.</em></p>

<h3 id="HTML">HTML</h3>

<p><em>No change.</em></p>

<h3 id="CSS">CSS</h3>

<ul>
 <li>Implemented <code>inset()</code> value for {{cssxref("clip-path")}} behind the preference <code>layout.css.clip-path-shapes.enabled</code>, defaulting to <code>false</code> ({{bug(1246762)}}).</li>
 <li>[css-grid] Implement {{cssxref("fit-content()")}}&nbsp;value for &lt;track-size&gt; ({{bug(1281320)}}).</li>
 <li>[css-grid] Percentage gutters are wrong calculated on grid containers with indefinite sizes ({{bug(1279182)}}).</li>
 <li>[css-grid] Reject repeat() column tracks in &lt;grid-template&gt; when there's a grid template area string in the row part ({{bug(1282643)}}).</li>
 <li>[css-grid] {{cssxref("calc()")}} with negative percentage can result in negative track size ({{bug(1282418)}}).</li>
 <li>Implemented {{cssxref(":indeterminate")}} for &lt;input type="radio"&gt; ({{bug(885359)}}).</li>
 <li>Implemented the {{cssxref(":placeholder-shown")}} pseudo-class on <code>&lt;input type="text"&gt;</code> ({{bug(1069015)}}).</li>
 <li>Unprefixed {{cssxref("::placeholder")}} pseudo-element&nbsp;({{bug(1069012)}}).</li>
 <li>Fix {{cssxref(":valid")}} CSS pseudo-class doesn't match valid &lt;form&gt;s&nbsp;({{bug(1285425)}}).</li>
 <li>Fix&nbsp;initial value for {{cssxref("mask-repeat")}} property should be <code>no-repeat</code>, but is implemented as <code>repeat</code>&nbsp;({{bug(1258623)}}).</li>
 <li>The <code>plaintext</code> value of {{cssxref("unicode-bidi")}} now also works with vertical writing modes ({{bug(1302734)}}).</li>
 <li>The <code>fill-box</code> and <code>stroke-box</code> values of {{cssxref("clip-path")}} are now properly supported; previously, they wear aliases of <code>border-box</code> ({{bug(1289011)}}).</li>
</ul>

<h3 id="JavaScript">JavaScript</h3>

<ul>
 <li>The ES2015 {{jsxref("Symbol.toStringTag")}} property has been implemented ({{bug(1114580)}}).</li>
 <li>The ES2015 {{jsxref("TypedArray.prototype.toString()")}} and {{jsxref("TypedArray.prototype.toLocaleString()")}} methods have been implemented ({{bug(1121938)}}).</li>
 <li>The {{jsxref("DateTimeFormat.prototype.formatToParts()")}} method is now available ({{bug(1289340)}}).</li>
 <li>{{jsxref("Statements/const", "const")}} and {{jsxref("Statements/let", "let")}} are now fully ES2015-compliant ({{bug(950547)}}).</li>
 <li>Using {{jsxref("Statements/const", "const")}} in <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a></code> loops now has a fresh binding for each iteration and no longer throws a {{jsxref("SyntaxError")}} ({{bug(1101653)}}).</li>
 <li>The deprecated <a href="/en-US/docs/Web/JavaScript/Reference/Statements/for_each...in">for each...in</a> loop now presents a <a href="/en-US/docs/Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated">warning in the console</a> ({{bug(1293205)}}). Please migrate your code to use the standardized <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a></code> loop.</li>
 <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/function*">Generator functions</a> can't have a <a href="/en-US/docs/Web/JavaScript/Reference/Statements/label">label</a> anymore and "<code>let</code>" as a label name is disallowed now ({{bug(1288459)}}).</li>
 <li>Deprecated <a href="/en-US/docs/Web/JavaScript/Reference/Statements/Legacy_generator_function">legacy generator functions</a> will now throw when used in <a href="/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions">method definitions</a> ({{bug(1199296)}}).</li>
 <li>The <code>next()</code> method of the <a href="/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterator_protocol">iterator protocol</a> will now throw a {{jsxref("TypeError")}} if the returned value is not an object ({{bug(1016936)}}).</li>
</ul>

<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3>

<h4 id="DOM_HTML_DOM">DOM &amp; HTML DOM</h4>

<ul>
 <li>Throttling in background tabs of timers created by {{domxref("WindowTimers.setInterval", "Window.setInterval()")}} and {{domxref("WindowTimers.setTimeout", "Window.setTimeout()")}} was changed in Firefox 50 to no longer occur if a <a href="/en-US/docs/Web/API/Web_Audio_API">Web Audio API</a> {{domxref("AudioContext")}} is actively playing sound. However, this didn't resolve all scenarios in which timing-sensitive audio playback (such as music players generating individual notes using timers) could fail to work properly. For that reason, Firefox 51 no longer throttles background tabs which have an {{domxref("AudioContext")}}, even if it's not currently playing sound.</li>
 <li>The {{domxref("DOMImplementation.hasFeature()")}} now returns <code>true</code> in all cases ({{bug(984778)}}).</li>
</ul>

<h4 id="Canvas">Canvas</h4>

<ul>
 <li>The non-standard <code>CanvasRenderingContext2D.mozFillRule</code>() method has been removed; the fill rule can be define by a parameter of the standard {{domxref("CanvasRenderingContext2D.fill()")}} method ({{bug(826619)}}).</li>
 <li>The {{domxref("CanvasRenderingContext2D.imageSmoothingEnabled")}} has been unprefixed ({{bug(768072)}}).</li>
</ul>

<h4 id="WebGL">WebGL</h4>

<p><em>No change.</em></p>

<h4 id="IndexedDB">IndexedDB</h4>

<p><em>No change.</em></p>

<h4 id="Service_Workers">Service Workers</h4>

<p><em>No change.</em></p>

<h4 id="WebRTC">WebRTC</h4>

<ul>
 <li>The {{domxref("RTCPeerConnection.removeStream()")}} method has been removed. It was deprecated back in Firefox 22, and has been throwing a NotSupportedError for a long time. You need to use {{domxref("RTCPeerConnection.removeTrack()")}} instead.</li>
</ul>

<h4 id="New_APIs">New APIs</h4>

<p><em>No change.</em></p>

<h4 id="Others">Others</h4>

<ul>
 <li>For privacy reasons, both {{domxref("BatteryManager.chargingTime")}} and {{domxref("BatteryManager.dischargingTime")}} now round the returned value to the closest 15 minutes ({{bug(1292655)}}).</li>
 <li>Our implementation of <a href="/en-US/docs/Web/API/Page_Visibility_API">Page Visibility API</a> doesn't accept prefixed version anymore ({{bug(812701)}}).</li>
</ul>

<h3 id="MathML">MathML</h3>

<p><em>No change.</em></p>

<h3 id="SVG">SVG</h3>

<ul>
 <li>Added {{SVGAttr("tabindex")}} attribute ({{bug(778654)}}).</li>
 <li>Added {{SVGAttr("href")}} attribute obsoleting {{SVGAttr("xlink:href")}} ({{bug(1245751)}}).</li>
 <li>CSS Animations used in a SVG used in an {{HTMLElement("img")}} element now works again; it was an old regression ({{bug(1190881)}}).</li>
</ul>

<h3 id="AudioVideo">Audio/Video</h3>

<ul>
 <li>Add FLAC support (<a href="https://xiph.org/flac/index.html">FLAC codec</a>) in both FLAC and Ogg containers ({{bug(1195723)}}). Supported FLAC mimetype: <code>audio/flac</code>, <code>audio/x-flac</code>. For FLAC in Ogg: <code>audio/ogg; codecs=flac</code> and <code>video/ogg; codecs=flac</code></li>
</ul>

<h2 id="HTTP">HTTP</h2>

<p><em>No change.</em></p>

<h2 id="Networking">Networking</h2>

<p><em>No change.</em></p>

<h2 id="Security">Security</h2>

<p><em>No change.</em></p>

<h2 id="Changes_for_add-on_and_Mozilla_developers">Changes for add-on and Mozilla developers</h2>

<h3 id="Interfaces">Interfaces</h3>

<p><em>No change.</em></p>

<h3 id="XUL">XUL</h3>

<p><em>No change.</em></p>

<h3 id="JavaScript_code_modules">JavaScript code modules</h3>

<p><em>No change.</em></p>

<h3 id="XPCOM">XPCOM</h3>

<p><em>No change.</em></p>

<h3 id="Other">Other</h3>

<ul>
 <li>The Mozilla-specific <a href="/en-US/docs/Mozilla/Projects/Social_API">Social API</a> has been substantially changed (largely to remove APIs no longer used), as follows:

  <ul>
   <li>The {{domxref("MozSocial")}} interface and the {{domxref("navigator.mozSocial")}} property which supports it have been removed.</li>
   <li>The <a href="/en-US/docs/Mozilla/Projects/Social_API/Bookmarks">Social Bookmarks API</a> has been removed.</li>
   <li>The Social chat functionality has been removed.</li>
   <li>The Social Status API has been removed.</li>
   <li>All of the <a href="/en-US/docs/Mozilla/Projects/Social_API/Widgets">social widgets</a>, except for the Share panel, have been removed. This includes the social sidebar, flyover panels, and so forth.</li>
   <li>All supporting user interface features and functionality for the removed APIs have been removed as well.</li>
   <li><a href="/en-US/docs/Mozilla/Projects/Social_API/Manifest">Social service provider manifest</a> properties supporting the removed functionality are no longer supported.</li>
  </ul>
 </li>
</ul>

<h2 id="See_also">See also</h2>

<ul>
 <li><a href="https://www.fxsitecompat.com/en-US/versions/51">Site Compatibility for Firefox 51</a></li>
</ul>

<h2 id="Older_versions">Older versions</h2>

<p>{{Firefox_for_developers(50)}}</p>
Revert to this revision