{"id":6708,"date":"2013-09-03T11:48:15","date_gmt":"2013-09-03T18:48:15","guid":{"rendered":"http:\/\/blog.mozilla.org\/addons\/?p=6708"},"modified":"2013-10-10T07:25:04","modified_gmt":"2013-10-10T14:25:04","slug":"compatibility-for-firefox-24","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/addons\/2013\/09\/03\/compatibility-for-firefox-24\/","title":{"rendered":"Add-on Compatibility for Firefox 24"},"content":{"rendered":"<p>Firefox 24 will be <a href=\"https:\/\/wiki.mozilla.org\/RapidRelease\/Calendar\">released<\/a> on September 17th. 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\/docs\/Mozilla\/Firefox\/Releases\/24\">Firefox 24 for Developers<\/a>, so you should read that too.<\/p>\n<h3>General<\/h3>\n<ul>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=587757\"><strong>Implement the Browser Console<\/strong><\/a>. The last step to implement this was to <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=602006\">change the menu items<\/a>, which is now done. The Browser Console replaces the Error Console and should everything the Error Console did and more. The old Error Console menu item is still present in the DOM, but hidden. So, if your overlay relies on it, you&#8217;ll want to change it soon, since it is bound to be removed in a future update.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=880735\">Reimplement the plugin doorhanger to deal with the new CtP spec<\/a>. This changes many things about the plugin Click-to-Play experience. If your add-on has anything to do with this, you need to retest that everything is working correctly.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=862143\">Stop loading Sherlock files from disk<\/a>. The Sherlock (.src) format for search plugins has been deprecated for a long time, in favor of <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Creating_OpenSearch_plugins_for_Firefox\">OpenSearch<\/a>. This is one of the first steps to <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=862137\">get rid of the Sherlock format<\/a> entirely.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=874003\">Remove support for prefixed &#8220;-moz-initial&#8221; CSS keyword<\/a>. The now standard <code>initial<\/code> should be used instead.<\/li>\n<li><del datetime=\"2013-10-10T14:23:09+00:00\"><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=870540\">Enable us to use the second number in the Firefox version<\/a>. This opens up the possibility of having a Firefox 24.1 instead of only 24.0.x, for example. Make sure that, if you do version checking, this case is contemplated.<\/del> Update: It looks like this second version number will only be used internally, and won&#8217;t be exposed through the UA string.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=662247\">log4moz: replace sync file I\/O appenders with async ones<\/a>. If you use the log4moz code that ships with Firefox and use the regular file appender, you&#8217;ll need to make some changes.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=861265\">Bug in SQLite breaks some queries from extensions<\/a>. A <a href=\"http:\/\/www.sqlite.org\/src\/info\/2500cdb9be\">bug in SQLite 3.7.15<\/a> was causing at least one add-on query to break. This was fixed by updating to version 3.7.17.<\/li>\n<\/ul>\n<h3>DOM<\/h3>\n<ul>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=874003\">Remove preventBubble and preventCapture<\/a>. The standard alternative in this case is <code>stopPropagation()<\/code>.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=673919\">Remove routeEvent, enableExternalCapture and disableExternalCapture<\/a>.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=726933\">Warn about getPreventDefault being deprecated<\/a>. While it won&#8217;t be removed yet, it will be soon. You should use <code>defaultPrevented<\/code> instead.<\/li>\n<\/ul>\n<h3>XPCOM<\/h3>\n<ul>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=872981\"><strong>Print a warning whenever something attempts to store more than 4Kb of preferences<\/strong><\/a>. We haven&#8217;t been explicit enough about this, but the preferences system is not meant for general data storage. The <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=836263\">crashes<\/a> caused by certain extensions pushed us to enforce a limit of 1Mb per preference, and we will <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=872980\">lower it to 4Kb<\/a> soon. For now, this only introduces a warning if you pass that limit.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=493051\">nsIBrowserSearchService addEngine changes browser.search.selectedEngine<\/a>. The main change here is that if your add-on calls <code>addEngine<\/code> and the engine already exists, instead of failing silently Firefox will now show an alert with an error message. I also <a href=\"https:\/\/blog.mozilla.org\/addons\/2013\/08\/27\/nsibrowsersearchengine-interface-change-in-latest-firefox-24-beta\/\">posted earlier<\/a> about us not updating the interface ID on time and having to do it on a late beta version. Make sure to also read that post if you use this interface from a binary component.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=879118\">nsIFormHistory2 is deprecated and will be removed<\/a>. This only introduces a deprecation warning, but the interface will be <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=876002\">eventually removed<\/a>. The asynchronous FormHistory.jsm should be used instead.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=882079\">Remove nsIDocShellHistory<\/a>. This interface was merged into <code>nsIDocShell<\/code>.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=867432\">Remove nsIX509Cert.verifyForUsage<\/a>.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=855613\">Stop exposing nsIDOMMimeType objects in nsIDOMPluginTag<\/a>.\u00a0<code>getMimeTypes()<\/code> now returns a <code>string<\/code> array.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=877135\">Remove nsIDOMHTMLMediaElement.mozLoadFrom<\/a>.<\/li>\n<\/ul>\n<h3>New!<\/h3>\n<ul>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=834539\">Implement getPlacesInfo, async successor for getPageTitle<\/a>. This is a new asynchronous function you should migrate to if you rely on <code>getPageTitle()<\/code>, since it will be <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=885247\">removed eventually<\/a>.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=872421\">Provide a module loader for chrome workers<\/a>. You can now load modules from Chrome Workers, in a similar way that it is done in SDK add-on code.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=875119\">[Android] Create a Prompts.jsm to wrap prompt messages<\/a>. This is for Android only, but it introduces a <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Extensions\/Mobile\/API\/Prompt.jsm\">useful module<\/a> to show prompts.<\/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 24, I&#8217;d like to know.<\/p>\n<p>The automatic compatibility validation and upgrade for add-ons on AMO will happen in the coming week or so, so check your email if you have an add-on listed on our site with its compatibility set to Firefox 23.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Firefox 24 will be released on September 17th. 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\/2013\/09\/03\/compatibility-for-firefox-24\/\">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,28095],"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 24 - 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\/2013\/09\/03\/compatibility-for-firefox-24\/\" \/>\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=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2013\/09\/03\/compatibility-for-firefox-24\/\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/2013\/09\/03\/compatibility-for-firefox-24\/\",\"name\":\"Add-on Compatibility for Firefox 24 - Mozilla Add-ons Community Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#website\"},\"datePublished\":\"2013-09-03T18:48:15+00:00\",\"dateModified\":\"2013-10-10T14:25:04+00:00\",\"author\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/a098261b4b5510d408ff31f492606925\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2013\/09\/03\/compatibility-for-firefox-24\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/addons\/2013\/09\/03\/compatibility-for-firefox-24\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2013\/09\/03\/compatibility-for-firefox-24\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/addons\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Add-on Compatibility for Firefox 24\"}]},{\"@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 24 - 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\/2013\/09\/03\/compatibility-for-firefox-24\/","twitter_misc":{"Written by":"Jorge Villalobos","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/addons\/2013\/09\/03\/compatibility-for-firefox-24\/","url":"https:\/\/blog.mozilla.org\/addons\/2013\/09\/03\/compatibility-for-firefox-24\/","name":"Add-on Compatibility for Firefox 24 - Mozilla Add-ons Community Blog","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/addons\/#website"},"datePublished":"2013-09-03T18:48:15+00:00","dateModified":"2013-10-10T14:25:04+00:00","author":{"@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/a098261b4b5510d408ff31f492606925"},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/addons\/2013\/09\/03\/compatibility-for-firefox-24\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/addons\/2013\/09\/03\/compatibility-for-firefox-24\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/addons\/2013\/09\/03\/compatibility-for-firefox-24\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/addons\/"},{"@type":"ListItem","position":2,"name":"Add-on Compatibility for Firefox 24"}]},{"@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\/6708"}],"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=6708"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/6708\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/media?parent=6708"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/categories?post=6708"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/tags?post=6708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}