{"id":7360,"date":"2015-01-13T13:30:04","date_gmt":"2015-01-13T21:30:04","guid":{"rendered":"http:\/\/blog.mozilla.org\/addons\/?p=7360"},"modified":"2015-01-22T13:04:56","modified_gmt":"2015-01-22T21:04:56","slug":"compatibility-for-firefox-36","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/addons\/2015\/01\/13\/compatibility-for-firefox-36\/","title":{"rendered":"Add-on Compatibility for Firefox 36"},"content":{"rendered":"<p>Firefox 36 will be <a href=\"https:\/\/wiki.mozilla.org\/RapidRelease\/Calendar\">released<\/a> on February 24th. Here&#8217;s the list of changes that went into this version that can affect add-on compatibility. There is more information available in <a href=\"https:\/\/developer.mozilla.org\/en-US\/Firefox\/Releases\/36\">Firefox 36 for Developers<\/a>, so you should also give it a look.<\/p>\n<h3>General<\/h3>\n<ul>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=918828\">Use @@iterator symbol instead of placeholder string<\/a>. If you used to do <code>str[\"@@iterator\"]<\/code>, you now need to do <code>str[Symbol.iterator]<\/code>. <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/@@iterator\">More info in the docs<\/a>.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1095439\">Assigning to a const variable is a syntax error<\/a>, and\u00a0<a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=611388\">const should be block-scoped<\/a>. This syntax error used to show up only in strict mode, but now it applies in non-strict mode as well. <code>const<\/code> variables should only be assigned on declaration and now are block-scoped. <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Statements\/const\">More info in the docs<\/a>.<\/li>\n<li>\u00a0<a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1075438\">[OS.File] Get rid of method `readTo`<\/a>. This is only relevant to you if you use the <code>readTo<\/code> function in the <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/JavaScript_OS.File\">OS.File JS Module<\/a>.<\/li>\n<\/ul>\n<h3>XPCOM<\/h3>\n<ul>\n<li><strong>Update:<\/strong>\u00a0<a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1068671\">\u00a0folderReadonly doesn&#8217;t pertain to bookmarks or results<\/a>. This removes <code>setFolderReadonly<\/code> and <code>getFolderReadonly<\/code> from <code>nsINavBookmarksService<\/code>.<\/li>\n<li><strong><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=979835\">Port BoxObject to WebIDL<\/a><\/strong>. This removes various internal interfaces that extend <code>nsIBoxObject<\/code>, like <code>nsIPopupBoxObject<\/code>,\u00a0<code>nsITreeBoxObject<\/code>, and <code>nsIEditorBoxObject<\/code>. If you&#8217;re using <code>QueryInterface<\/code> with these interfaces in your code, you can probably just remove the call.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1089811\">nsIDOMGlobalObjectConstructor is dead code<\/a>.<\/li>\n<\/ul>\n<h3>\u00a0Wrappers<\/h3>\n<p>There are a <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Mozilla\/Tech\/XPCOM\/Language_bindings\/XPConnect\/XPConnect_wrappers\">number of wrappers<\/a> that are applied whenever chrome JS objects interact with content JS objects. They are meant to protect privileged code from malicious or otherwise misbehaving content code. The following bugs removed some features in wrappers that could lead to unexpected problems in your chrome\/content code. However, you should keep in mind that <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/Working_with_multiprocess_Firefox\"><strong>Multiprocess Firefox is coming<\/strong><\/a>, and that means you should be changing your code anyway (some wrappers are still involved, but they should be rare).<\/p>\n<ul>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1065186\">Turn off COWs for Arrays<\/a>.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1081985\">Stop Remapping COWed standard prototypes<\/a>.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1082450\">Disallow exposing privileged functions via COWs<\/a>.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1081990\">Turn off COWs for Functions<\/a>.<\/li>\n<\/ul>\n<p>Please let me know in the comments if there&#8217;s anything missing or incorrect on these lists. If your add-on breaks on Firefox 36, I&#8217;d like to know.<\/p>\n<p>The automatic compatibility validation and upgrade for add-ons on AMO will happen within a week or two, so keep an eye on your email if you have an add-on listed on our site with its compatibility set to Firefox 35.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Firefox 36 will be released on February 24th. Here&#8217;s the list of changes that went into this version that can affect add-on compatibility. There is more information available in Firefox &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/addons\/2015\/01\/13\/compatibility-for-firefox-36\/\">Read more<\/a><\/p>\n","protected":false},"author":173,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[388,44,295],"tags":[278877,278873,278876,50059],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Add-on Compatibility for Firefox 36 - Mozilla Add-ons Community Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.mozilla.org\/addons\/2015\/01\/13\/compatibility-for-firefox-36\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jorge Villalobos\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2015\/01\/13\/compatibility-for-firefox-36\/\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/2015\/01\/13\/compatibility-for-firefox-36\/\",\"name\":\"Add-on Compatibility for Firefox 36 - Mozilla Add-ons Community Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#website\"},\"datePublished\":\"2015-01-13T21:30:04+00:00\",\"dateModified\":\"2015-01-22T21:04:56+00:00\",\"author\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/a098261b4b5510d408ff31f492606925\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2015\/01\/13\/compatibility-for-firefox-36\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/addons\/2015\/01\/13\/compatibility-for-firefox-36\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2015\/01\/13\/compatibility-for-firefox-36\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/addons\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Add-on Compatibility for Firefox 36\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#website\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/\",\"name\":\"Mozilla Add-ons Community Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.mozilla.org\/addons\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/a098261b4b5510d408ff31f492606925\",\"name\":\"Jorge Villalobos\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6d1966118f16e4b99a6e3ad07883be33?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6d1966118f16e4b99a6e3ad07883be33?s=96&d=mm&r=g\",\"caption\":\"Jorge Villalobos\"},\"description\":\"Jorge is the Product Manager for addons.mozilla.org\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/author\/jvillalobosmozilla-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Add-on Compatibility for Firefox 36 - Mozilla Add-ons Community Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.mozilla.org\/addons\/2015\/01\/13\/compatibility-for-firefox-36\/","twitter_misc":{"Written by":"Jorge Villalobos","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/addons\/2015\/01\/13\/compatibility-for-firefox-36\/","url":"https:\/\/blog.mozilla.org\/addons\/2015\/01\/13\/compatibility-for-firefox-36\/","name":"Add-on Compatibility for Firefox 36 - Mozilla Add-ons Community Blog","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/addons\/#website"},"datePublished":"2015-01-13T21:30:04+00:00","dateModified":"2015-01-22T21:04:56+00:00","author":{"@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/a098261b4b5510d408ff31f492606925"},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/addons\/2015\/01\/13\/compatibility-for-firefox-36\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/addons\/2015\/01\/13\/compatibility-for-firefox-36\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/addons\/2015\/01\/13\/compatibility-for-firefox-36\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/addons\/"},{"@type":"ListItem","position":2,"name":"Add-on Compatibility for Firefox 36"}]},{"@type":"WebSite","@id":"https:\/\/blog.mozilla.org\/addons\/#website","url":"https:\/\/blog.mozilla.org\/addons\/","name":"Mozilla Add-ons Community Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.mozilla.org\/addons\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/a098261b4b5510d408ff31f492606925","name":"Jorge Villalobos","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6d1966118f16e4b99a6e3ad07883be33?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6d1966118f16e4b99a6e3ad07883be33?s=96&d=mm&r=g","caption":"Jorge Villalobos"},"description":"Jorge is the Product Manager for addons.mozilla.org","url":"https:\/\/blog.mozilla.org\/addons\/author\/jvillalobosmozilla-com\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/7360"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/users\/173"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/comments?post=7360"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/7360\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/media?parent=7360"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/categories?post=7360"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/tags?post=7360"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}