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 922097 of Firefox 41 for developers

  • Revision slug: Mozilla/Firefox/Releases/41
  • Revision title: Firefox 41 for developers
  • Revision id: 922097
  • Created:
  • Creator: evilpie
  • Is current revision? No
  • Comment

Revision Content

Install Firefox Developer Edition {{ ReleaseChannelInfo("41", "41", "September 2015", "Aurora") }}

Changes for Web developers

Developer Tools

Highlights:

All devtools bugs fixed between Firefox 40 and Firefox 41: note that many of these bugs, especially those relating to the performance tools, were uplifted to Firefox 40.

CSS

  • Support for laying out vertical scripts has been activated by default ({{bug(1138384)}}). That means that the following CSS properties are now available:
    • Choosing the direction of writing: {{cssxref("writing-mode")}}.
    • Controlling orientation of characters: {{cssxref("text-orientation")}}.
    • Direction-independent equivalents of {{cssxref("width")}} and {{cssxref("height")}}: {{cssxref("block-size")}} and {{cssxref("inline-size")}}.
    • Direction-independent equivalents of {{cssxref("min-width")}} and {{cssxref("min-height")}}: {{cssxref("min-block-size")}} and {{cssxref("min-inline-size")}}.
    • Direction-independent equivalents of {{cssxref("max-width")}} and {{cssxref("max-height")}}: {{cssxref("max-block-size")}} and {{cssxref("max-block-size")}}.
    • Direction-independent equivalents of {{cssxref("margin-top")}}, {{cssxref("margin-right")}}, {{cssxref("margin-bottom")}} and {{cssxref("margin-left")}}: {{cssxref("margin-block-start")}}, {{cssxref("margin-block-end")}}, {{cssxref("margin-inline-start")}} and {{cssxref("margin-inline-end")}}.
    • Direction-independent equivalents of {{cssxref("padding-top")}}, {{cssxref("padding-right")}}, {{cssxref("padding-bottom")}} and {{cssxref("padding-left")}}: {{cssxref("padding-block-start")}}, {{cssxref("padding-block-end")}}, {{cssxref("padding-inline-start")}} and {{cssxref("padding-inline-end")}}.
    • Direction-independent equivalents of {{cssxref("border-top")}}, {{cssxref("border-right")}}, {{cssxref("border-bottom")}} and {{cssxref("border-left")}} and their longhands for width, style and color: {{cssxref("border-block-start")}}, {{cssxref("border-block-start-width")}}, {{cssxref("border-block-start-style")}}, {{cssxref("border-block-start-color")}}, {{cssxref("border-block-end")}}, {{cssxref("border-block-end-width")}}, {{cssxref("border-block-end-style")}}, {{cssxref("border-block-end-color")}}, {{cssxref("border-inline-start")}}, {{cssxref("border-inline-start-width")}}, {{cssxref("border-inline-start-style")}}, {{cssxref("border-inline-start-color")}}, {{cssxref("border-inline-end")}}, {{cssxref("border-inline-end-width")}}, {{cssxref("border-inline-end-style")}} and {{cssxref("border-inline-end-color")}}.
    • Direction-independent equivalents of {{cssxref("top")}}, {{cssxref("right")}}, {{cssxref("bottom")}} and {{cssxref("left")}}: {{cssxref("offset-block-start")}}, {{cssxref("offset-block-end")}}, {{cssxref("offset-inline-start")}} and {{cssxref("offset-inline-end")}}.
  • Support the {{cssxref("transform-origin")}} property in SVG and implement the {{cssxref("transform-box")}} property  ({{bug(923193)}}).

HTML

  • {{HTMLElement("a")}} without an href attribute is no longer classified as interactive content. Clicking it inside {{HTMLElement("label")}} will activate labelled content ({{bug(1167816)}}).
  • SVG icons are now supported for site icons, that is favicons and shortcut icons ({{bug(366324)}}).
  • The {{htmlattrxref('crossorigin', 'link')}} attribute is now supported for <link rel='preconnect'> ({{bug(1174152)}}).

JavaScript

  • {{jsxref("Date.prototype")}} is now an ordinary object, not a {{jsxref("Date")}} instance anymore ({{bug(861219)}}).
  • {{jsxref("Date.prototype.toString")}} is now a generic method ({{bug(861219)}}).
  • {{jsxref("Symbol.species")}} has been added ({{bug(1131043)}}).
  • {{jsxref("Map.@@species", "Map[@@species]")}} and {{jsxref("Set.@@species", "Set[@@species]")}} getters have been added ({{bug(1131043)}}).
  • Non-standard {{jsxref("Statements/let", "let expression", "#let_expressions", 1)}} support has been dropped ({{bug(1023609)}}).
  • {{jsxref("Functions/Default_parameters", "Destructured parameters with default value assignment", "#Destructured_parameter_with_default_value_assignment", 1)}} are now supported ({{bug(1018628)}}).
  • Per ES6, curly braces are required for method definitions. Syntax without them will fail from now on ({{bug(1150855)}}).
  • Method definitions (except for generator methods) are not constructable anymore ({{bug(1059908)}} and {{bug(1166950)}}).
  • As part of ES6 specification compliance, parenthesized destructuring patterns, like ([a, b]) = [1, 2] or ({a, b}) = { a: 1, b: 2 }, are now considered invalid and will throw a {{jsxref("SyntaxError")}}. See Jeff Walden's blog post for more details.
  • The new.target syntax has been added ({{bug(1141865)}}).

Interfaces/APIs/DOM

HTML Editing API

  • Cut, copy and paste commands handling has been revamped and now allow programmatic copying and cutting from JS for Web content:
    • With the 'paste' command as argument, {{domxref("Document.queryCommandSupported()")}} now returns false if has insufficient privileges to actually perform the action ({{bug(1161721)}}).
    • With the 'cut' or 'copy' command as argument, {{domxref("Document.queryCommandSupported()")}} now returns true if called within the context of a user-initiated or privileged code ({{bug(1162952)}}).
    • With the 'cut' or 'copy' command as argument, {{domxref("Document.execCommand()")}} now works, but only within the context of user-initiated or privileged code ({{bug(1012662)}}).

Events

  • The non-standard {{domxref("CloseEvent.initCloseEvent()")}} method and the ability to create a {{domxref("CloseEvent")}} using the {{domxref("Event.createEvent", "Event.createEvent('CloseEvent')")}} method has been removed; use the standard constructor, {{domxref("CloseEvent.CloseEvent", "CloseEvent()")}} instead ({{bug(1161950)}}).
  • On Desktop, {{domxref("PointerEvent")}} is now activated by default in Nightly; it is not activated in Developer Edition, Beta or Release and won't be for at least some versions ({{bug(1166347)}}).
  • The unprefixed version of {{domxref("MouseEvent.movementX")}} and {{domxref("MouseEvent.movementY")}}}} have been added; the prefixed versions are deprecated and will be removed at some point in the future ({{bug(1164981)}}).

Web Crypto

  • {{domxref("SubtleCrypto.importKey()")}} and {{domxref("SubtleCrypto.exportKey()")}} now supports ECDH keys ({{bug(1050175)}}).

Canvas API

  • {{domxref("HTMLCanvasElement.captureStream()")}} and {{domxref("CanvasCaptureMediaStream")}} have been added and allow to stream the display of a {{HTMLElement("canvas")}} in real-time ({{bug(1032848)}}).
  • {{domxref("MediaStream.id")}} now returns the unique id of a stream ({{bug(1089798)}}).
  • The initial value of {{domxref("CanvasRenderingContext2D.filter")}} is now correctly set to none ({{bug(1163124)}}).

Service Workers

  • Improvement to our experimental Service Worker implementation:
    • {{domxref("ServiceWorkerGlobalScope.skipWaiting()")}} has been implemented ({{bug(1131352)}}).
    • {{domxref("Clients.claim()")}} has been added ({{bug(1130684)}}).
    • The other functional events of Service Workers have been made to inherit from {{domxref("ExtendableEvent")}}, giving them access to the {{domxref("ExtendableEvent.waitUntil","waitUntil()")}} method ({{bug("1160527")}}).
  • The {{domxref("CacheStorage")}} and {{domxref("Cache")}} interfaces are now supported ({{bug("1110144")}}).

WebGL

  • The failIfMajorPerformanceCaveat WebGL context attribute has been added and can be set when creating a WebGL context with {{domxref("HTMLCanvasElement.getContext()")}} to indicate if a context creation should fail if the system performance is low ({{bug(1164970)}}).

Miscellaneous

  • On OS X and Windows, {{domxref("NavigatorOnLine.onLine", "Navigator.onLine")}} now changes regarding network connectivity (it always returned true, , unless "Work offline" mode was selected) before ({{bug(654579)}}).
  • {{domxref("MessagePort")}} and {{domxref("MessageChannel")}} now available in Web workers, and are enabled by default in all contexts ({{bug(952139)}}) and ({{bug(911972)}}).
  • The User Timing API is now available in Web workers ({{bug(1155761)}}).
  • The Notifications API is now available in Web workers ({{bug(916893)}}).
  • {{domxref("DOMRequest")}} and {{domxref("DOMCursor")}} are now available in Web workers ({{bug(1167650)}}).
  • The CSS Font Loading API is now enabled by default ({{bug(1149381)}}).
  • Shared workers can no longer be shared between private (i.e. browsing in a private window) and non-private documents (see {{bug(1177621)}}).
  • The {{domxref("URLUtilsSearchParams.searchParams")}} property is now read-only ({{bug(1174731)}}).
  • The {{domxref('URLUtils.hash')}} property no longer decodes URL fragment ({{bug(1093611)}}).

MathML

New default and fallback font handling

Mathematical formulas require special fonts. So far, these fonts were hard-coded in the mathml.css user agent stylesheet (which sets the font-family on {{MathMLElement("math")}} tag) and in the preference option font.mathfont-family (which sets the fallback fonts to use for stretchy and large operators). Firefox 41 introduces, an internal x-math language that is automatically set on the <math> tag as well as corresponding preference options (e.g. font.name.serif.x-math). The user agent stylesheet now sets font-family to serif on the <math> tag and the preference option font.mathfont-family is replaced with font.name.serif.x-math.  All platforms now essentially use the same list of fallback fonts, with "Latin Modern Math" as first one. The default/fallback fonts can be configured from the standard per-language font preference menu. For more details, see {{bug(947654)}} and {{bug(1160456)}}.

SVG

  • Site icons (favicons, shortcut icons) now support SVG ({{bug(366324)}}).

Audio/Video

  • The media.autoplay.enabled preference now also apply to untrusted {{domxref("HTMLMediaElement.play()")}} invocations too, that is calls from non-users activated scripts ({{bug(659285)}}).

HTTP

  • The X-Content-Duration header is no longer supported ({{Bug(1160695)}}).

Networking

No change.

Security

  • The CSP 1.1 manifest-src directive is now supported ({{bug(1089255)}}).

Changes for add-on and Mozilla developers

XUL

No change.

JavaScript code modules

No change.

XPCOM

Interfaces

No change.

Other

  • A new, internal, and chrome-context-only API to render the root widget of a window into a {{HTMLElement("canvas")}} has been added: {{domxref("CanvasRenderingContext2D.drawWidgetAsOnScreen()")}}. This API uses the operating system to snapshot the widget on-screen. For more details see {{bug(1167477)}}.

See also

Older versions

{{Firefox_for_developers('40')}}

Revision Source

<div class="column-container zone-callout"><a href="https://www.mozilla.org/en-US/firefox/developer/" style="float: right; margin-bottom: 20px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Install Firefox Developer Edition</a> {{ ReleaseChannelInfo("41", "41", "September 2015", "Aurora") }}</div>

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

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

<p>Highlights:</p>

<ul>
 <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Element_popup_menu">Take a screenshot of a DOM node</a></li>
 <li><a href="/en-US/docs/Tools/Network_Monitor#CopySave_All_As_HAR">Copy as HAR/save as HAR</a></li>
 <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Add_rules">"Add Rule" button in the Rules view</a></li>
 <li><a href="/en-US/docs/Tools/View_source">View source in a tab</a> (Disabled by default)</li>
 <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Copy_rules">More options to copy CSS rules</a></li>
 <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/View_background_images">Copy image as data: URI in the Rules view</a></li>
 <li><a href="/en-US/docs/Tools/GCLI/Display_security_information">Added command to GCLI to display CSP info</a></li>
</ul>

<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Client%20Software&amp;chfieldto=2015-06-29&amp;query_format=advanced&amp;chfield=resolution&amp;chfieldfrom=2015-05-11&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%203D%20View&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Performance%20Tools%20%28Profiler%2FTimeline%29&amp;component=Developer%20Tools%3A%20Responsive%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Storage%20Inspector&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20Web%20Audio%20Editor&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;component=Developer%20Tools%3A%20WebIDE&amp;product=Firefox&amp;list_id=12283503">All devtools bugs fixed between Firefox 40 and Firefox 41</a>: note that many of these bugs, especially those relating to the performance tools, were uplifted to Firefox 40.</p>

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

<ul>
 <li>Support for laying out vertical scripts has been activated by default ({{bug(1138384)}}). That means that the following CSS properties are now available:
  <ul>
   <li>Choosing the direction of writing: {{cssxref("writing-mode")}}.</li>
   <li>Controlling orientation of characters: {{cssxref("text-orientation")}}.</li>
   <li>Direction-independent equivalents of {{cssxref("width")}} and {{cssxref("height")}}: {{cssxref("block-size")}} and {{cssxref("inline-size")}}.</li>
   <li>Direction-independent equivalents of {{cssxref("min-width")}} and {{cssxref("min-height")}}: {{cssxref("min-block-size")}} and {{cssxref("min-inline-size")}}.</li>
   <li>Direction-independent equivalents of {{cssxref("max-width")}} and {{cssxref("max-height")}}: {{cssxref("max-block-size")}} and {{cssxref("max-block-size")}}.</li>
   <li>Direction-independent equivalents of {{cssxref("margin-top")}}, {{cssxref("margin-right")}}, {{cssxref("margin-bottom")}} and {{cssxref("margin-left")}}: {{cssxref("margin-block-start")}}, {{cssxref("margin-block-end")}}, {{cssxref("margin-inline-start")}} and {{cssxref("margin-inline-end")}}.</li>
   <li>Direction-independent equivalents of {{cssxref("padding-top")}}, {{cssxref("padding-right")}}, {{cssxref("padding-bottom")}} and {{cssxref("padding-left")}}: {{cssxref("padding-block-start")}}, {{cssxref("padding-block-end")}}, {{cssxref("padding-inline-start")}} and {{cssxref("padding-inline-end")}}.</li>
   <li>Direction-independent equivalents of {{cssxref("border-top")}}, {{cssxref("border-right")}}, {{cssxref("border-bottom")}} and {{cssxref("border-left")}} and their longhands for width, style and color: {{cssxref("border-block-start")}}, {{cssxref("border-block-start-width")}}, {{cssxref("border-block-start-style")}}, {{cssxref("border-block-start-color")}}, {{cssxref("border-block-end")}}, {{cssxref("border-block-end-width")}}, {{cssxref("border-block-end-style")}}, {{cssxref("border-block-end-color")}}, {{cssxref("border-inline-start")}}, {{cssxref("border-inline-start-width")}}, {{cssxref("border-inline-start-style")}}, {{cssxref("border-inline-start-color")}}, {{cssxref("border-inline-end")}}, {{cssxref("border-inline-end-width")}}, {{cssxref("border-inline-end-style")}} and {{cssxref("border-inline-end-color")}}.</li>
   <li>Direction-independent equivalents of {{cssxref("top")}}, {{cssxref("right")}}, {{cssxref("bottom")}} and {{cssxref("left")}}: {{cssxref("offset-block-start")}}, {{cssxref("offset-block-end")}}, {{cssxref("offset-inline-start")}} and {{cssxref("offset-inline-end")}}.</li>
  </ul>
 </li>
 <li>Support the {{cssxref("transform-origin")}}&nbsp;property in SVG and implement the {{cssxref("transform-box")}}&nbsp;property&nbsp; ({{bug(923193)}}).</li>
</ul>

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

<ul>
 <li>{{HTMLElement("a")}} without an&nbsp;<code>href</code> attribute is no longer&nbsp;classified as interactive content. Clicking it inside {{HTMLElement("label")}} will activate labelled content ({{bug(1167816)}}).</li>
 <li>SVG icons are now supported for site icons, that is favicons and shortcut icons ({{bug(366324)}}).</li>
 <li>The {{htmlattrxref('crossorigin', 'link')}} attribute is now supported for <a href="/en-US/docs/Web/HTML/Element/link">&lt;link rel='preconnect'&gt;</a> ({{bug(1174152)}}).</li>
</ul>

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

<ul>
 <li>{{jsxref("Date.prototype")}} is now an ordinary object, not a {{jsxref("Date")}} instance anymore ({{bug(861219)}}).</li>
 <li>{{jsxref("Date.prototype.toString")}} is now a generic method ({{bug(861219)}}).</li>
 <li>{{jsxref("Symbol.species")}} has been added ({{bug(1131043)}}).</li>
 <li>{{jsxref("Map.@@species", "Map[@@species]")}} and {{jsxref("Set.@@species", "Set[@@species]")}} getters have been added ({{bug(1131043)}}).</li>
 <li>Non-standard {{jsxref("Statements/let", "let expression", "#let_expressions", 1)}} support has been dropped ({{bug(1023609)}}).</li>
 <li>{{jsxref("Functions/Default_parameters", "Destructured parameters with default value assignment", "#Destructured_parameter_with_default_value_assignment", 1)}} are now supported ({{bug(1018628)}}).</li>
 <li>Per ES6, curly braces are required for <a href="/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions">method definitions</a>. Syntax without them will fail from now on ({{bug(1150855)}}).</li>
 <li><a href="/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions">Method definitions</a> (except for generator methods) are not constructable anymore ({{bug(1059908)}} and {{bug(1166950)}}).</li>
 <li>As part of ES6 specification compliance, parenthesized <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">destructuring</a> patterns, like <code>([a, b]) = [1, 2]</code> or <code>({a, b}) = { a: 1, b: 2 }</code>, are now considered invalid and will throw a {{jsxref("SyntaxError")}}. See <a href="https://whereswalden.com/2015/06/20/new-changes-to-make-spidermonkeys-and-firefoxs-parsing-of-destructuring-patterns-more-spec-compliant/">Jeff Walden's blog post</a> for more details.</li>
 <li>The <code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/new.target">new.target</a></code> syntax has been added ({{bug(1141865)}}).</li>
</ul>

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

<h4 id="HTML_Editing_API">HTML Editing API</h4>

<ul>
 <li>Cut, copy and paste commands handling has been revamped and now allow programmatic copying and cutting from JS for Web content:
  <ul>
   <li>With the <code>'paste'</code> command as argument, {{domxref("Document.queryCommandSupported()")}} now returns <code>false</code> if has insufficient privileges to actually perform the action ({{bug(1161721)}}).</li>
   <li>With the <code>'cut'</code> or <code>'copy'</code> command as argument, {{domxref("Document.queryCommandSupported()")}} now returns <code>true</code> if called within the context of a user-initiated or privileged code ({{bug(1162952)}}).</li>
   <li>With the <code>'cut'</code> or <code>'copy'</code> command as argument, {{domxref("Document.execCommand()")}} now works, but only within the context of user-initiated or privileged code ({{bug(1012662)}}).</li>
  </ul>
 </li>
</ul>

<h4 id="Events">Events</h4>

<ul>
 <li>The non-standard {{domxref("CloseEvent.initCloseEvent()")}} method and the ability to create a {{domxref("CloseEvent")}} using the {{domxref("Event.createEvent", "Event.createEvent('CloseEvent')")}} method has been removed; use the standard constructor, {{domxref("CloseEvent.CloseEvent", "CloseEvent()")}} instead ({{bug(1161950)}}).</li>
 <li>On Desktop, {{domxref("PointerEvent")}} is now activated by default in Nightly; it is not activated in Developer Edition, Beta or Release and won't be for at least some versions ({{bug(1166347)}}).</li>
 <li>The unprefixed version of {{domxref("MouseEvent.movementX")}} and {{domxref("MouseEvent.movementY")}}}} have been added; the prefixed versions are deprecated and will be removed at some point in the future ({{bug(1164981)}}).</li>
</ul>

<h4 id="Web_Crypto">Web Crypto</h4>

<ul>
 <li>{{domxref("SubtleCrypto.importKey()")}} and {{domxref("SubtleCrypto.exportKey()")}} now supports <code>ECDH</code> keys ({{bug(1050175)}}).</li>
</ul>

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

<ul>
 <li>{{domxref("HTMLCanvasElement.captureStream()")}} and {{domxref("CanvasCaptureMediaStream")}} have been added and allow to stream the display of a {{HTMLElement("canvas")}} in real-time ({{bug(1032848)}}).</li>
 <li>{{domxref("MediaStream.id")}} now returns the unique id of a stream ({{bug(1089798)}}).</li>
 <li>The initial value of {{domxref("CanvasRenderingContext2D.filter")}} is now correctly set to <code>none</code> ({{bug(1163124)}}).</li>
</ul>

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

<ul>
 <li>Improvement to our experimental <a href="/en-US/docs/Web/API/ServiceWorker_API">Service Worker</a> implementation:

  <ul>
   <li>{{domxref("ServiceWorkerGlobalScope.skipWaiting()")}} has been implemented ({{bug(1131352)}}).</li>
   <li>{{domxref("Clients.claim()")}} has been added ({{bug(1130684)}}).</li>
   <li>The other functional events of Service Workers have been made to inherit from {{domxref("ExtendableEvent")}}, giving them access to the {{domxref("ExtendableEvent.waitUntil","waitUntil()")}} method ({{bug("1160527")}}).</li>
  </ul>
 </li>
 <li>The {{domxref("CacheStorage")}} and {{domxref("Cache")}} interfaces are now supported ({{bug("1110144")}}).</li>
</ul>

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

<ul>
 <li>The <code>failIfMajorPerformanceCaveat</code> WebGL context attribute has been added and can be set when creating a WebGL context with {{domxref("HTMLCanvasElement.getContext()")}} to indicate if a context creation should fail if the system performance is low ({{bug(1164970)}}).</li>
</ul>

<h4 id="Miscellaneous">Miscellaneous</h4>

<ul>
 <li>On OS X and Windows, {{domxref("NavigatorOnLine.onLine", "Navigator.onLine")}} now changes regarding network connectivity (it always returned <code>true</code>, , unless "Work offline" mode was selected) before ({{bug(654579)}}).</li>
 <li>{{domxref("MessagePort")}} and {{domxref("MessageChannel")}} now available in <a href="/en-US/docs/Web/API/Web_Workers_API">Web workers</a>, and are enabled by default in all contexts ({{bug(952139)}}) and&nbsp;({{bug(911972)}}).</li>
 <li>The User Timing API is now available in <a href="/en-US/docs/Web/API/Web_Workers_API">Web workers</a> ({{bug(1155761)}}).</li>
 <li>The <a href="/en-US/docs/Web/API/Notifications_API">Notifications API</a> is now available in <a href="/en-US/docs/Web/API/Web_Workers_API">Web workers</a> ({{bug(916893)}}).</li>
 <li>{{domxref("DOMRequest")}} and {{domxref("DOMCursor")}} are now available in <a href="/en-US/docs/Web/API/Web_Workers_API">Web workers</a> ({{bug(1167650)}}).</li>
 <li>The <a href="/en-US/docs/Web/API/CSSFontLoading_API">CSS Font Loading API</a> is now enabled by default ({{bug(1149381)}}).</li>
 <li>Shared workers can no longer be shared between private (i.e. browsing in a private window) and non-private documents (see {{bug(1177621)}}).</li>
 <li>The {{domxref("URLUtilsSearchParams.searchParams")}} property is now read-only ({{bug(1174731)}}).</li>
 <li>
  <p>The {{domxref('URLUtils.hash')}} property no longer decodes URL fragment ({{bug(1093611)}}).</p>
 </li>
</ul>

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

<h4 id="New_default_and_fallback_font_handling">New default and fallback font handling</h4>

<p>Mathematical formulas require special fonts. So far, these fonts were hard-coded in the <code>mathml.css</code> user agent stylesheet (which sets the font-family on {{MathMLElement("math")}} tag) and in the preference option <code>font.mathfont-family</code> (which sets the fallback fonts to use for stretchy and large operators). Firefox 41 introduces, an internal <code>x-math</code> language that is automatically set on the <code>&lt;math&gt;</code> tag as well as corresponding preference options (e.g. <code>font.name.serif.x-math</code>). The user agent stylesheet now sets font-family to serif on the <code>&lt;math&gt;</code> tag and the preference option <code>font.mathfont-family</code> is replaced with <code>font.name.serif.x-math</code>.&nbsp; All platforms now essentially use the same list of fallback fonts, with "Latin Modern Math" as first one. The default/fallback fonts can be configured from the standard per-language font preference menu. For more details, see {{bug(947654)}} and {{bug(1160456)}}.</p>

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

<ul>
 <li>Site icons (favicons, shortcut icons) now support SVG ({{bug(366324)}}).</li>
</ul>

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

<ul>
 <li>The <code>media.autoplay.enabled</code> preference now also apply to untrusted {{domxref("HTMLMediaElement.play()")}} invocations too, that is calls from non-users activated scripts ({{bug(659285)}}).</li>
</ul>

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

<ul>
 <li>The <code>X-Content-Duration</code> header is no longer supported ({{Bug(1160695)}}).</li>
</ul>

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

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

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

<ul>
 <li>The <a href="https://developer.mozilla.org/en-US/docs/Web/Security/CSP">CSP</a> 1.1 <code>manifest-src</code> <a href="https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives">directive</a> is now supported ({{bug(1089255)}}).</li>
</ul>

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

<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>

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

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

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

<ul>
 <li>A new, internal, and chrome-context-only API to render the root widget of a window into a {{HTMLElement("canvas")}} has been added: {{domxref("CanvasRenderingContext2D.drawWidgetAsOnScreen()")}}. This API uses the operating system to snapshot the widget on-screen. For more details see {{bug(1167477)}}.</li>
</ul>

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

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

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

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