{"id":8018,"date":"2017-01-25T12:10:24","date_gmt":"2017-01-25T20:10:24","guid":{"rendered":"http:\/\/blog.mozilla.org\/addons\/?p=8018"},"modified":"2017-01-25T13:37:28","modified_gmt":"2017-01-25T21:37:28","slug":"webextensions-in-firefox-53","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/","title":{"rendered":"WebExtensions in Firefox 53"},"content":{"rendered":"<p><a href=\"https:\/\/wiki.mozilla.org\/RapidRelease\/Calendar#Future_branch_dates\" target=\"_blank\">Firefox 53<\/a> landed in Developer Edition this week, so we have another update on<a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\" target=\"_blank\"> WebExtensions<\/a> for you. With the latest release, a slew of new APIs are now available to help legacy add-on developers transition and extension developers port from other browsers.<\/p>\n<h2>New APIs<\/h2>\n<p>The majority of <code>browser.browsingData<\/code> API was <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1321303\" target=\"_blank\">implemented<\/a>. This API allows you to delete data from Firefox that the user has accumulated while browsing. This includes data stored in the following places: plugin data, form data, history, cookies, downloads, passwords, service workers and the cache.<\/p>\n<p>Parts of the <code>browser.identity<\/code> API was <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1305421\" target=\"_blank\">implemented<\/a>. This makes it easier for extensions to integrate with OAuth providers. The <code>getRedirectURL<\/code> and <code>launchWebAuthFlow<\/code> methods have been implemented, but the areas related to Google Accounts have not been implemented.<\/p>\n<p>As <a href=\"https:\/\/blog.mozilla.org\/addons\/2016\/11\/18\/webextensions-in-firefox-52\/\" target=\"_blank\">previously mentioned<\/a>, the <code>browser.storage.sync<\/code> API had been in a testing phase. It\u2019s passed testing now, and is <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1319742\" target=\"_blank\">turned on by default<\/a>. As this feature rolls out to our users, we will continue to do more testing. It\u2019s worth noting that the storage service is not intended for large amounts of data and comes with no guarantees around stability or uptime.<\/p>\n<p>A new API, <code>browser.contextualIdentities<\/code>, landed in Firefox 53 to support the <a href=\"https:\/\/blog.mozilla.org\/tanvi\/2016\/06\/16\/contextual-identities-on-the-web\/\" target=\"_blank\">security container<\/a> feature. In <a href=\"https:\/\/blog.mozilla.org\/addons\/2016\/11\/18\/webextensions-in-firefox-52\/\" target=\"_blank\">Firefox 52<\/a>, support for <code>contextualIdentities<\/code> was added to tab and cookie stores. This API provides access to query existing identities, create, update and remove those identities.<\/p>\n<p>As an example:<\/p>\n<pre>browser.contextualIdentities.query({})\r\n  .then((result) =&gt; {\r\n    for (let identity of result) {\r\n       console.log(identity);\r\n    }\r\n});\r\n<\/pre>\n<p>Outputs the existing identities:<\/p>\n<pre>Object { name: \"Personal\", icon: \"fingerprint\", color: \"blue\", cookieStoreId: \"firefox-container-1\" }\r\nObject { name: \"Work\", icon: \"briefcase\", color: \"orange\", cookieStoreId: \"firefox-container-2\" }\r\n..[snip]\r\n<\/pre>\n<p>This API is behind the same browser preference, <code>privacy.userContext.enabled<\/code>, that the rest of the contextual identity code is. We expect the API to track that preference for the moment.<\/p>\n<p>Work has begun on the <code>browser.devtools<\/code> API and a <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1291737\" target=\"_blank\">major foundation of this landed in Firefox 54<\/a>. We are hoping to land the remained of devtools in Firefox 54, which will allow many developer focused add-ons to work.<\/p>\n<h2>API Changes<\/h2>\n<p>Context menus have had a big improvement. They can now be applied to <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/pageAction\" target=\"_blank\"><code>pageActions<\/code><\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/browserAction\" target=\"_blank\"><code>browserActions<\/code><\/a>, <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1312466\" target=\"_blank\">password inputs<\/a> and <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1316020\" target=\"_blank\">tabs<\/a>.<\/p>\n<p><a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-14.59.01.png\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-8019\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-14.59.01.png\" alt=\"Screenshot 2017-01-23 14.59.01\" width=\"476\" height=\"317\" srcset=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-14.59.01.png 476w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-14.59.01-252x168.png 252w\" sizes=\"(max-width: 476px) 100vw, 476px\" \/><\/a><br \/>\n<cite>A context menu item on a tab<\/cite><\/p>\n<p>A small change has been made to context menus so they now <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1324429\" target=\"_blank\">inherit the submenu contexts<\/a> from their parent by default.<\/p>\n<p>There was a previous issue where the <code>requestBody<\/code> on <code>webRequest<\/code> was not available on release versions of Firefox due to concerns about performance. Those issues have now been resolved and this <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1305162\" target=\"_blank\">functionality will be available<\/a> in release from Firefox 53 onwards.<\/p>\n<p>There was a significant <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1322869\" target=\"_blank\">increase in performance<\/a> for browser.tabs.query which will speed up queries when a large number of tabs exist. Also in tabs, the <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1320412\" target=\"_blank\"><code>onUpdated<\/code> event<\/a> will now fire when the title of a tab changes.<\/p>\n<p>To complete the <code>browser.sessions<\/code> API, the <code>browser.sessions.onChanged<\/code> <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1320306\" target=\"_blank\">event landed<\/a>. This allows extensions to tell when recently closed tabs or windows are changed.<\/p>\n<p>You can now insert CSS into Firefox as a <a href=\"https:\/\/www.w3.org\/TR\/CSS2\/cascade.html#cascade\" target=\"_blank\">user sheet<\/a>. As an example:<\/p>\n<pre>browser.tabs.insertCSS({..., cssOrigin: \"user'})\r\n<\/pre>\n<p>Finally, <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1322033\" target=\"_blank\">function keys now work<\/a> in <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/commands\" target=\"_blank\">commands<\/a>.<\/p>\n<h2>Permissions<\/h2>\n<p>With Firefox 53, required permissions have been enabled for WebExtensions add-ons. The permissions dialog is behind a preference while we complete QA on the feature. We hope that permissions will be turned on by default for Firefox 54. To activate permissions, please create the preference: <code>extensions.webextPermissionPrompts<\/code> as a <code>boolean<\/code> and set it to <code>true<\/code>.<\/p>\n<p>When installing an add-on, a user will get a prompt like this:<\/p>\n<p><a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-16.20.16.png\" target=\"_blank\"><img decoding=\"async\" class=\"alignnone size-full wp-image-8020\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-16.20.16.png\" alt=\"Screenshot 2017-01-23 16.20.16\" width=\"369\" srcset=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-16.20.16.png 369w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-16.20.16-252x148.png 252w\" sizes=\"(max-width: 369px) 100vw, 369px\" \/><\/a><br \/>\n<cite>Installing an add-on<\/cite><\/p>\n<p>Updates will proceed normally, <i>unless<\/i> you update the permissions of your add-on. In that case \u00a0the add-on update will be staged. Unlike Chrome, the existing add-on will continue to work and <i>will not be disabled<\/i>. Firefox users will get a notification in the hamburger menu:<\/p>\n<p><a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-17.23.12.png\" target=\"_blank\"><img decoding=\"async\" class=\"alignnone size-full wp-image-8021\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-17.23.12.png\" alt=\"Screenshot 2017-01-23 17.23.12\" height=\"400\" srcset=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-17.23.12.png 284w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-17.23.12-252x566.png 252w\" sizes=\"(max-width: 284px) 100vw, 284px\" \/><\/a><br \/>\n<cite>An update that includes permission changes to an add-on.<\/cite><\/p>\n<p>And when they click on it, they will see a new permissions dialog outlining the changes. In this example, it shows that I have added the permission <code>nativeMessaging<\/code> to the add-on:<\/p>\n<p><a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-17.23.02.png\" target=\"_blank\"><img decoding=\"async\" class=\"alignnone size-full wp-image-8022\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-17.23.02.png\" alt=\"Screenshot 2017-01-23 17.23.02\" width=\"400\" srcset=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-17.23.02.png 730w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-17.23.02-252x181.png 252w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-17.23.02-600x431.png 600w\" sizes=\"(max-width: 730px) 100vw, 730px\" \/><\/a><br \/>\n<cite>The permission prompt on an update<\/cite><\/p>\n<p>Finally, if your add-on is being sideloaded, the notification will also change to a new flow. An item in the hamburger menu is shown (similar to above), followed by a slightly different permission prompt:<\/p>\n<p><a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-17.39.55.png\" target=\"_blank\"><img decoding=\"async\" class=\"alignnone size-full wp-image-8023\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-17.39.55.png\" alt=\"Screenshot 2017-01-23 17.39.55\" width=\"400\" srcset=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-17.39.55.png 732w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-17.39.55-252x201.png 252w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-17.39.55-600x479.png 600w\" sizes=\"(max-width: 732px) 100vw, 732px\" \/><\/a><br \/>\n<cite>A sideloaded extension<\/cite><\/p>\n<p>This is a big feature and many details are currently being finalized. So <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons#Contact_us\" target=\"_blank\">feedback<\/a> or <a href=\"https:\/\/bugzilla.mozilla.org\/enter_bug.cgi?product=Toolkit&amp;component=WebExtensions:%20Untriaged\" target=\"_blank\">bugs<\/a> are encouraged so we can solve any problems before Firefox 54.<\/p>\n<h2>New contributors<\/h2>\n<p>A lot of contributors helped out on this release, so a big thank you to them! They are: <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=srivatsav1998%40gmail.com\" target=\"_blank\">Srivatsav Gunisetty<\/a>, <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=laurentconstantin%40free.fr\" target=\"_blank\">Laurent<\/a>, <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=andrebargull%40googlemail.com\" target=\"_blank\">Andr\u00e9 Bargull<\/a>, <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=rob%40robwu.nl\" target=\"_blank\">Rob Wu<\/a> and <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=tomica%40gmail.com\" target=\"_blank\">Tomislav Jovanovic<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Firefox 53 landed in Developer Edition this week, so we have another update on WebExtensions for you. With the latest release, a slew of new APIs are now available to &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/\">Read more<\/a><\/p>\n","protected":false},"author":271,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[388,44,227,278886],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>WebExtensions in Firefox 53 - 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\/2017\/01\/25\/webextensions-in-firefox-53\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andy McKay\" \/>\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\/2017\/01\/25\/webextensions-in-firefox-53\/\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/\",\"name\":\"WebExtensions in Firefox 53 - Mozilla Add-ons Community Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-14.59.01.png\",\"datePublished\":\"2017-01-25T20:10:24+00:00\",\"dateModified\":\"2017-01-25T21:37:28+00:00\",\"author\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/7e1881db0e8a23a4a06695f8a0efd6b8\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/#primaryimage\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-14.59.01.png\",\"contentUrl\":\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-14.59.01.png\",\"width\":476,\"height\":317},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/addons\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WebExtensions in Firefox 53\"}]},{\"@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\/7e1881db0e8a23a4a06695f8a0efd6b8\",\"name\":\"Andy McKay\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ad304e7a7d4f6fba05a81b10810fe6fd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ad304e7a7d4f6fba05a81b10810fe6fd?s=96&d=mm&r=g\",\"caption\":\"Andy McKay\"},\"description\":\"Andy is an Engineering Manager at Mozilla. As a Canadian he tweets and blogs about curling, skiing, politics, maple syrup, bears and all things from the great white north.\",\"sameAs\":[\"http:\/\/mckay.pub\",\"https:\/\/x.com\/andymckay\"],\"url\":\"https:\/\/blog.mozilla.org\/addons\/author\/amckaymozilla-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WebExtensions in Firefox 53 - 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\/2017\/01\/25\/webextensions-in-firefox-53\/","twitter_misc":{"Written by":"Andy McKay","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/","url":"https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/","name":"WebExtensions in Firefox 53 - Mozilla Add-ons Community Blog","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/addons\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/#primaryimage"},"image":{"@id":"https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-14.59.01.png","datePublished":"2017-01-25T20:10:24+00:00","dateModified":"2017-01-25T21:37:28+00:00","author":{"@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/7e1881db0e8a23a4a06695f8a0efd6b8"},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/#primaryimage","url":"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-14.59.01.png","contentUrl":"https:\/\/blog.mozilla.org\/addons\/files\/2017\/01\/Screenshot-2017-01-23-14.59.01.png","width":476,"height":317},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/addons\/2017\/01\/25\/webextensions-in-firefox-53\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/addons\/"},{"@type":"ListItem","position":2,"name":"WebExtensions in Firefox 53"}]},{"@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\/7e1881db0e8a23a4a06695f8a0efd6b8","name":"Andy McKay","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ad304e7a7d4f6fba05a81b10810fe6fd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ad304e7a7d4f6fba05a81b10810fe6fd?s=96&d=mm&r=g","caption":"Andy McKay"},"description":"Andy is an Engineering Manager at Mozilla. As a Canadian he tweets and blogs about curling, skiing, politics, maple syrup, bears and all things from the great white north.","sameAs":["http:\/\/mckay.pub","https:\/\/x.com\/andymckay"],"url":"https:\/\/blog.mozilla.org\/addons\/author\/amckaymozilla-com\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/8018"}],"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\/271"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/comments?post=8018"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/8018\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/media?parent=8018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/categories?post=8018"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/tags?post=8018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}