diff --git a/helpers/DATA/firefox/abouthome/aboutHome.css b/helpers/DATA/firefox/abouthome/aboutHome.css
new file mode 100644
index 0000000000000000000000000000000000000000..863523920686bc74d1055ead6f314c7eb3a41f17
--- /dev/null
+++ b/helpers/DATA/firefox/abouthome/aboutHome.css
@@ -0,0 +1,429 @@
+%if 0
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+%endif
+
+html {
+  font: message-box;
+  font-size: 100%;
+  background-color: hsl(0,0%,95%);
+  color: #000;
+  height: 100%;
+}
+
+body {
+  margin: 0;
+  display: -moz-box;
+  -moz-box-orient: vertical;
+  width: 100%;
+  height: 100%;
+}
+
+input,
+button {
+  font-size: inherit;
+  font-family: inherit;
+}
+
+a {
+  color: -moz-nativehyperlinktext;
+  text-decoration: none;
+}
+
+.spacer {
+  -moz-box-flex: 1;
+}
+
+#topSection {
+  text-align: center;
+}
+
+#brandLogo {
+  height: 420px;
+  width: 150px;
+  margin: 22px auto 31px;
+  background-image: url("chrome://branding/content/about-logo.png");
+  background-size: 420px 150px;
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+
+#searchForm,
+#snippets {
+  width: 470px;
+}
+
+#searchForm {
+  display: -moz-box;
+}
+
+#searchLogoContainer {
+  display: -moz-box;
+  -moz-box-align: center;
+  padding-top: 2px;
+  -moz-padding-end: 8px;
+}
+
+#searchLogoContainer[hidden] {
+  display: none;
+}
+
+#searchEngineLogo {
+  display: inline-block;
+  height: 28px;
+  width: 70px;
+  min-width: 70px;
+}
+
+#searchText {
+  -moz-box-flex: 1;
+  padding: 6px 8px;
+  background: hsla(0,0%,100%,.9) padding-box;
+  border: 1px solid;
+  border-color: hsla(210,54%,20%,.15) hsla(210,54%,20%,.17) hsla(210,54%,20%,.2);
+  box-shadow: 0 1px 0 hsla(210,65%,9%,.02) inset,
+              0 0 2px hsla(210,65%,9%,.1) inset,
+              0 1px 0 hsla(0,0%,100%,.2);
+  border-radius: 2.5px 0 0 2.5px;
+}
+
+#searchText:-moz-dir(rtl) {
+  border-radius: 0 2.5px 2.5px 0;
+}
+
+#searchText:focus,
+#searchText[autofocus] {
+  border-color: hsla(206,100%,60%,.6) hsla(206,76%,52%,.6) hsla(204,100%,40%,.6);
+}
+
+#searchSubmit {
+  -moz-margin-start: -1px;
+  background: linear-gradient(hsla(0,0%,100%,.8), hsla(0,0%,100%,.1)) padding-box;
+  padding: 0 9px;
+  border: 1px solid;
+  border-color: hsla(210,54%,20%,.15) hsla(210,54%,20%,.17) hsla(210,54%,20%,.2);
+  -moz-border-start: 1px solid transparent;
+  border-radius: 0 2.5px 2.5px 0;
+  box-shadow: 0 0 2px hsla(0,0%,100%,.5) inset,
+              0 1px 0 hsla(0,0%,100%,.2);
+  cursor: pointer;
+  transition-property: background-color, border-color, box-shadow;
+  transition-duration: 150ms;
+}
+
+#searchSubmit:-moz-dir(rtl) {
+  border-radius: 2.5px 0 0 2.5px;
+}
+
+#searchText:focus + #searchSubmit,
+#searchText + #searchSubmit:hover,
+#searchText[autofocus] + #searchSubmit {
+  border-color: #59b5fc #45a3e7 #3294d5;
+  color: white;
+}
+
+#searchText:focus + #searchSubmit,
+#searchText[autofocus] + #searchSubmit {
+  background-image: linear-gradient(#4cb1ff, #1793e5);
+  box-shadow: 0 1px 0 hsla(0,0%,100%,.2) inset,
+              0 0 0 1px hsla(0,0%,100%,.1) inset,
+              0 1px 0 hsla(210,54%,20%,.03);
+}
+
+#searchText + #searchSubmit:hover {
+  background-image: linear-gradient(#66bdff, #0d9eff);
+  box-shadow: 0 1px 0 hsla(0,0%,100%,.2) inset,
+              0 0 0 1px hsla(0,0%,100%,.1) inset,
+              0 1px 0 hsla(210,54%,20%,.03),
+              0 0 4px hsla(206,100%,20%,.2);
+}
+
+#searchText + #searchSubmit:hover:active {
+  box-shadow: 0 1px 1px hsla(211,79%,6%,.1) inset,
+              0 0 1px hsla(211,79%,6%,.2) inset;
+  transition-duration: 0ms;
+}
+
+#defaultSnippet1,
+#defaultSnippet2,
+#rightsSnippet {
+  display: block;
+  min-height: 38px;
+  background: 30px center no-repeat;
+  padding: 6px 0;
+  -moz-padding-start: 79px;
+}
+
+#rightsSnippet[hidden] {
+  display: none;
+}
+
+#defaultSnippet1:-moz-dir(rtl),
+#defaultSnippet2:-moz-dir(rtl),
+#rightsSnippet:-moz-dir(rtl) {
+  background-position: right 30px center;
+}
+
+#defaultSnippet1 {
+  background-image: url("chrome://browser/content/abouthome/snippet1.png");
+}
+
+#defaultSnippet2 {
+  background-image: url("chrome://browser/content/abouthome/snippet2.png");
+}
+
+#snippets {
+  display: inline-block;
+  text-align: start;
+  margin: 12px 0;
+  color: #3c3c3c;
+  font-size: 75%;
+  /* 12px is the computed font size, 15px the computed line height of the snippets
+     with Segoe UI on a default Windows 7 setup. The 15/12 multiplier approximately
+     converts em from units of font-size to units of line-height. The goal is to
+     preset the height of a three-line snippet to avoid visual moving/flickering as
+     the snippets load. */
+  min-height: calc(15/12 * 3em);
+}
+
+#launcher {
+  display: -moz-box;
+  -moz-box-align: center;
+  -moz-box-pack: center;
+  width: 100%;
+  background-color: hsla(0,0%,0%,.03);
+  border-top: 1px solid hsla(0,0%,0%,.03);
+  box-shadow: 0 1px 2px hsla(0,0%,0%,.02) inset,
+              0 -1px 0 hsla(0,0%,100%,.25);
+}
+
+#launcher:not([session]),
+body[narrow] #launcher[session] {
+  display: block; /* display separator and restore button on separate lines */
+  text-align: center;
+  white-space: nowrap; /* prevent navigational buttons from wrapping */
+}
+
+.launchButton {
+  display: -moz-box;
+  -moz-box-orient: vertical;
+  margin: 16px 1px;
+  padding: 14px 6px;
+  min-width: 88px;
+  max-width: 176px;
+  max-height: 85px;
+  vertical-align: top;
+  white-space: normal;
+  background: transparent padding-box;
+  border: 1px solid transparent;
+  border-radius: 2.5px;
+  color: #525c66;
+  font-size: 75%;
+  cursor: pointer;
+  transition-property: background-color, border-color, box-shadow;
+  transition-duration: 150ms;
+}
+
+body[narrow] #launcher[session] > .launchButton {
+  margin: 4px 1px;
+}
+
+.launchButton:hover {
+  background-color: hsla(211,79%,6%,.03);
+  border-color: hsla(210,54%,20%,.15) hsla(210,54%,20%,.17) hsla(210,54%,20%,.2);
+}
+
+.launchButton:hover:active {
+  background-image: linear-gradient(hsla(211,79%,6%,.02), hsla(211,79%,6%,.05));
+  border-color: hsla(210,54%,20%,.2) hsla(210,54%,20%,.23) hsla(210,54%,20%,.25);
+  box-shadow: 0 1px 1px hsla(211,79%,6%,.05) inset,
+              0 0 1px hsla(211,79%,6%,.1) inset;
+  transition-duration: 0ms;
+}
+
+.launchButton[hidden],
+#launcher:not([session]) > #restorePreviousSessionSeparator,
+#launcher:not([session]) > #restorePreviousSession {
+  display: none;
+}
+
+#restorePreviousSessionSeparator {
+  width: 3px;
+  height: 116px;
+  margin: 0 10px;
+  background-image: linear-gradient(hsla(0,0%,100%,0), hsla(0,0%,100%,.35), hsla(0,0%,100%,0)),
+                    linear-gradient(hsla(211,79%,6%,0), hsla(211,79%,6%,.2), hsla(211,79%,6%,0)),
+                    linear-gradient(hsla(0,0%,100%,0), hsla(0,0%,100%,.35), hsla(0,0%,100%,0));
+  background-position: left top, center, right bottom;
+  background-size: 1px auto;
+  background-repeat: no-repeat;
+}
+
+body[narrow] #restorePreviousSessionSeparator {
+  margin: 0 auto;
+  width: 512px;
+  height: 3px;
+  background-image: linear-gradient(to right, hsla(0,0%,100%,0), hsla(0,0%,100%,.35), hsla(0,0%,100%,0)),
+                    linear-gradient(to right, hsla(211,79%,6%,0), hsla(211,79%,6%,.2), hsla(211,79%,6%,0)),
+                    linear-gradient(to right, hsla(0,0%,100%,0), hsla(0,0%,100%,.35), hsla(0,0%,100%,0));
+  background-size: auto 1px;
+}
+
+#restorePreviousSession {
+  max-width: none;
+  font-size: 90%;
+}
+
+body[narrow] #restorePreviousSession {
+  font-size: 80%;
+}
+
+.launchButton::before {
+  display: block;
+  width: 32px;
+  height: 32px;
+  margin: 0 auto 6px;
+  line-height: 0; /* remove extra vertical space due to non-zero font-size */
+}
+
+#downloads::before {
+  content: url("chrome://browser/content/abouthome/downloads.png");
+}
+
+#bookmarks::before {
+  content: url("chrome://browser/content/abouthome/bookmarks.png");
+}
+
+#history::before {
+  content: url("chrome://browser/content/abouthome/history.png");
+}
+
+#apps::before {
+  content: url("chrome://browser/content/abouthome/apps.png");
+}
+
+#addons::before {
+  content: url("chrome://browser/content/abouthome/addons.png");
+}
+
+#sync::before {
+  content: url("chrome://browser/content/abouthome/sync.png");
+}
+
+#settings::before {
+  content: url("chrome://browser/content/abouthome/settings.png");
+}
+
+#restorePreviousSession::before {
+  content: url("chrome://browser/content/abouthome/restore-large.png");
+  height: 48px;
+  width: 48px;
+  display: inline-block; /* display on same line as text label */
+  vertical-align: middle;
+  margin-bottom: 0;
+  -moz-margin-end: 8px;
+}
+
+#restorePreviousSession:-moz-dir(rtl)::before {
+  transform: scaleX(-1);
+}
+
+body[narrow] #restorePreviousSession::before {
+  content: url("chrome://browser/content/abouthome/restore.png");
+  height: 32px;
+  width: 32px;
+}
+
+#aboutMozilla {
+  display: block;
+  position: relative; /* pin wordmark to edge of document, not of viewport */
+  -moz-box-ordinal-group: 0;
+  opacity: .5;
+  transition: opacity 150ms;
+}
+
+#aboutMozilla:hover {
+  opacity: 1;
+}
+
+#aboutMozilla::before {
+  content: url("chrome://browser/content/abouthome/mozilla.png");
+  display: block;
+  position: absolute;
+  top: 12px;
+  right: 12px;
+  width: 69px;
+  height: 19px;
+}
+
+/* [HiDPI]
+ * At resolutions above 1dppx, prefer downscaling the 2x Retina graphics
+ * rather than upscaling the original-size ones (bug 818940).
+ */
+@media not all and (max-resolution: 1dppx) {
+  #brandLogo {
+    background-image: url("chrome://branding/content/about-logo@2x.png");
+  }
+
+  #defaultSnippet1,
+  #defaultSnippet2,
+  #rightsSnippet {
+    background-size: 40px;
+  }
+
+  #defaultSnippet1 {
+    background-image: url("chrome://browser/content/abouthome/snippet1@2x.png");
+  }
+
+  #defaultSnippet2 {
+    background-image: url("chrome://browser/content/abouthome/snippet2@2x.png");
+  }
+
+  .launchButton::before,
+  #aboutMozilla::before {
+    transform: scale(.5);
+    transform-origin: 0 0;
+  }
+
+  #downloads::before {
+    content: url("chrome://browser/content/abouthome/downloads@2x.png");
+  }
+
+  #bookmarks::before {
+    content: url("chrome://browser/content/abouthome/bookmarks@2x.png");
+  }
+
+  #history::before {
+    content: url("chrome://browser/content/abouthome/history@2x.png");
+  }
+
+  #apps::before {
+    content: url("chrome://browser/content/abouthome/apps@2x.png");
+  }
+
+  #addons::before {
+    content: url("chrome://browser/content/abouthome/addons@2x.png");
+  }
+
+  #sync::before {
+    content: url("chrome://browser/content/abouthome/sync@2x.png");
+  }
+
+  #settings::before {
+    content: url("chrome://browser/content/abouthome/settings@2x.png");
+  }
+
+  #restorePreviousSession::before {
+    content: url("chrome://browser/content/abouthome/restore-large@2x.png");
+  }
+
+  body[narrow] #restorePreviousSession::before {
+    content: url("chrome://browser/content/abouthome/restore@2x.png");
+  }
+
+  #aboutMozilla::before {
+    content: url("chrome://browser/content/abouthome/mozilla@2x.png");
+  }
+}
+
diff --git a/helpers/DATA/firefox/abouthome/aboutHome.js b/helpers/DATA/firefox/abouthome/aboutHome.js
new file mode 100644
index 0000000000000000000000000000000000000000..d3b4aa955b9a6c4afaa9649ab0bbadc89d87e92c
--- /dev/null
+++ b/helpers/DATA/firefox/abouthome/aboutHome.js
@@ -0,0 +1,502 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const SEARCH_ENGINES = {
+  "Google": {
+    // This is the "2x" image designed for OS X retina resolution, Windows at 192dpi, etc.;
+    // it will be scaled down as necessary on lower-dpi displays.
+    image: "data:image/png;base64," +
+           "iVBORw0KGgoAAAANSUhEUgAAAIwAAAA4CAYAAAAvmxBdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ" +
+           "bWFnZVJlYWR5ccllPAAAGrFJREFUeNrtfHt4VdW172+utZOASLJ5+BaIFrUeXkFsa0Fl++gDnznV" +
+           "VlvFxt7aqvUUarXtse3Bau35ak/rZ9XT26NtfOvV6wFET+FYCQEKWqsQIT5RCAgSXnlnrzXneNw/" +
+           "1lphJSSQ8BB7bub3zW+LO3uN+fiNMcf4jTEX0N/6W3/rb/2tv30smtnXB3zmRi2FQakxQNKX3WkW" +
+           "9S/tgW3HLpmQM543A0BWVSHMYGIwOTDxzxrOf3/RQQfMZ2/SLAvKhTFVBGUqKFONH2QAzwOMF38a" +
+           "wHhYZAxWAqhe/iszp3+b970d/sInc57vz/J8L2eMB2MAEYkBQ6DQ3dRw4dq7AUjcP3rAfPZmLWXC" +
+           "LHKoIAcQAUxaB5EaEfc6AEBhjDEwmcx43/fO9HxT4vkReBIAAZgjgodW3NcPnn1sHgD/iHknn+0d" +
+           "6s8XEUhsXXac/34WAAGw8afuT8GZ3X055YeSJcIsG+pMZwFn0UihezRofPt3G54f/0E8cNMN+Myo" +
+           "8jVTCgYd823PLzrPeIBnABiUQ1F+UoWsVOYb33mkoKp/7/dKyT0AGc47X4s0sjBEoLxbBqAQAMfW" +
+           "Rfe38B4BM+VHUkYOs8mi1FrABbK4dcvK73zwp1M3xYPOxANKBqbpCdXNGb0UwPKRF74xpfDQ0t+K" +
+           "54+IvlKoahmAhaO/mv/ZmicG3tqPgT61ZM2dZMQJOYhIdByRM/F3dCCOox4Bc3oEliqyyNoQCPPu" +
+           "sXceKZqRsigu7pwaWBowiRb46+f9Q1V2wl1nDx09/R7jF30x9adNlN8yPx4DHwht+B/cBIBoRqeI" +
+           "E4hE/oshTcB0wNbT6/o/zrhFyohR5ZxmrVWE+fDxdx4puhGAH4OkPe5B6pykeJAc/7cDEMZ/095Y" +
+           "870P339m+BXs2v4kbCFsm9u2vnpJ3bzR7wAo2B/R2v+PjSnyXcRxtOLUSXFxwAFz5i2SZUIVO82S" +
+           "BWye/vLOIwNvjL8OYqCEfXCmJAZPHkC7sK1REbj2+lmbq86qTVmmfuuyN2cTiREWKCvACgml9kDL" +
+           "7HQksehsZmSdA6yVpsa6P38v3swg7m4vN1dGXrThKGP8yS5fP33j/LEvxKDbl2f2A0YFCtkZQDOa" +
+           "PjLAnP4jrmBGjh1AVhG2ttxfX33++vjY2eeNXf/siLUAzgEwMJZrY2vF/Vu/t4BRqCqgCmj07wMV" +
+           "HXUCzJQfUlZE72ICnANcqNj21h8eiK1AX46gXh29KT9H+rd9XxBjYGCgig7QHOgjPgMAKigXQZYp" +
+           "si4uCOc3v35zY2wF9ufGSgxA7fdd9g8ho9ol4P4ojiQWnSUMMANECrJNy1NWYH8eGfsEvJbLv1IK" +
+           "1XIAUwEtA0xplJMwjcaYlTDeShg8dOgjj6/cJxNYfWIWkHJoh5yyjkSZ8RbB89YBZq4/pXafGeuz" +
+           "b9WciXJxo2B2houqgAjABJCLOwFMqFv57+bBxMIAJm1det3avnl1OYCLAeSgWhofaY1QXQSRuYc+" +
+           "/OiD3QLmUzNdqTBKhRVMADsF5beuToXJB90KtFz+lVIVniXOVUAUqjpXVB4WwPjGTPB8/0zjeTnj" +
+           "ezl43szmKy6vNkDF4MeeXNc3oJyUhfAMkJsJkSxUVrLos6o6z/O8Ucb3phrPzyHKeVTwkpPXseg3" +
+           "Cqe+1SfG+swfaw6KGTAoJ5eyGF3IBeEIJB2AcXxb0FI/L45uFQBMGiu6Z3ai9eqrclBUClFWVatV" +
+           "5GERNT5wEVQnQLUcIuVNX75kFjn60rA5c1d0AoywlkcxfdwZ2LSgbOmBZAv70povu7RcyFUqcZYd" +
+           "Pbxix44fnLv8pbYUOWh+P3ZM9uJRo34xoLDgq8b3YTxvqhqsaPzyJTdmn36msjdyqPqkMhWqBFGZ" +
+           "MtV8uDX4zMjp2zemyEoPgGn4zyOvGzy48A54GcD3Sz1jFrqqE+4uOOvdmb0ASlYEs5mQE9afUdhy" +
+           "0yv3lHzwya/8ZcjgI0+5yssU3QKYkgQ4Ivp60LL1n8kBQfOWuvdnj6uLldgHQKoKxU7HV/eg2y1X" +
+           "XXmXEs1U0ZVb29o//4k5c5P5eQB+s+68aVeUFBTcCxUoS6kRWfjhueecc9SfX3ytA9QTr7eVACqY" +
+           "FDYEwnbB2qcHHg6gLY6ODhpomi77coUyVaojhKH9+ZHzF/wqXiztEg34APxNX/jCvQOLCi83fpy8" +
+           "UsCJXHLYnGdn785S0uKTyyBUBXJZcW5x4bSN56ciyLQcD4Bf/+ThVwwbUvRb+JkoswqAWX5b9Lm1" +
+           "M3uSM/UnUiaCKiZk2blvvnxX0ePxuBNAmpMur51wyLBPzjVeBBoVwIXBk6vuP+SG+LkcuwkWAA96" +
+           "/JjZKnKxkACkkFb5Nztz220xX9bJlWi+6opKFalQlpqlmzZNu6B6SaJ0knKJ/DW5qd8p8TO3x6AB" +
+           "qza1EE06cdmy9wDAY5LjmBTMkQnUnZ42H0ywNF52aU6FK4UY5NySI+cv+E3MCnMM5HyqtwFoO3rB" +
+           "gmuDMFjGjiCOIEQwzH9c+7lzju+JTaYlJ2ehUqXMWWFqeurFxqsAFMVf25Ss9kTOEZdvebClJbxT" +
+           "yUGZoEzwlL/b9tzRX+pOztSfSBZApSqyIrL45buKnkaUJEzLCN5+csxr+ab6fyILkI2OIZYBlx9/" +
+           "2bYvpLgw2+EqKLKdwoceVKJp+tfuEpYKZcaW1tZbLqheEsbj3GV+oxdV3x0GwQZrHUIiWKIST3Vm" +
+           "DG54zFrKrBBWiGgSyx9Uv6Xh0n/MKlGlOII4h80trQ+kuJt8HGklZHg6FZF/Y/uOb7O1YOvAzkGt" +
+           "Kxmoehe6SYNEpkErwZIFC4I2fuLKf2tLtDOPzumPhA6wAPJDLt1yuzjaAEcAMUCMApXfvPP7IcO6" +
+           "gkYFs4RRpgy49qanUsAPu/T8W48e/YwL6S/kYtBYwM8U/yu6KVlQUShr9CkKyK7b1vDVy0qVeaYy" +
+           "gaxbdeK85/8a/z7sYR3zgXM1gXUInEPoCEw8PR6z8YQxaidQPh6RrgrPEOZS4chKjFuydEEKFD1x" +
+           "QgrAnfO3V98Jw/B5dhFgmByU+MK/nnrq6K6gcQtPyqlIubJAibCxPv/fsVVNgCI9yGEAQdBq71NH" +
+           "UEdQIoBo5PBBeklazuQfSpYFM0UAFsDmd2yMf9+1XkUT3otc8AiRwpFChCBCI0detGbSLtYr5uw6" +
+           "tk26XctZwgxhRt65ZSmr1t389M1Jk85wzKcHRAiJkCfasDnI/0sMGN+jlLMrAigMhp0+f+TBBIw4" +
+           "milEYOcQBHZZAoZeEIgKgIIgeJbD2MqEFhxaDAFmdAWMisxQFigzlAUnX9e4rA9yeHuTna3koBQB" +
+           "RogxwOPvxNbQAAA7VHQEFKSQKEFIu4lA5d3HiiuFNB4XQZlhUHBK11QO0oRdD7ouROVCkeJZG7ak" +
+           "/KBOYHlz4sTy1WVlVY5oYego2+bs82+3tFw6YcVrp01dteqpxNfyhKQuGlxCMSsKBh570ABT/8XP" +
+           "5dhRVpyDWAd2Ns0O9yrhWdfcMpvCEByEoNCCwhBgvgBdM+PM5TH5FPW+1ZLo8de2viehe12dhVoH" +
+           "OAtDPO61O4o+kYCTnE5wVuGsxlzKHul7BUDKdomKgwpB2QHAyNiP2Dl+0Z2WRXZ9YP0F55WJczvX" +
+           "0jp09U3fLiurWD1+/NqQaHZIVNbu3O1vt7aM+fSqVRWXvPvu0pRldwAkQ5brjO+NMh0kgMIvGjYZ" +
+           "wIKETPxIrYt1U5M8iThKJil9yZGc++ab298dP36Jb8wZohqhQHRErKEeAA6fG5FT5yIlYYI6tzfO" +
+           "vtiQni3MYDw0ChqEgUMyejyAdwGwDeW4ZI9FAGQOmwzgv/cERmZbDXhnKBNUGMJkUhGVduSSJJ1P" +
+           "6rw8HIalJo7ilBkchgCgL48fVzLceDc4kZnWUdap1AQi10x+660n4jXyk1M7ZXEZgHhMUkMO4Njp" +
+           "hQGMf8h56Fx++ZE1a+1xZC2Szjs3sk9uUEhUbSMvP3LeyOGZ0tKJiearo1J1DHVRPYmS7JUcG2g1" +
+           "pxxUsooBnpmQWAOb10YbKGygcKFCZOC0XqxrRKokCBQG5euX77In2k1P+2hhWEZBAAoCuCCEcW7E" +
+           "2xMn/m6oYo0jyjnmuc3Off6UN96YMvmtt5LILSmQ61r3xAA0I+xqPBiIejAd1f7e2MPPfvm4LQs/" +
+           "89a+bP6nZuSzfsaU+T7g+UBixYQVRFGS01kFO22srRy0EgA4CEvFRHS3MANMY/fGbybmlQqAFSBV" +
+           "sCp8kWwCGA5dqefFShnnRV77ecHYU37iXuqLoB0tsuIo34v3NfJR1GlJsrnOuiXGy1y8k+rwxh57" +
+           "3srSD/6rbLdra7yMqgjUCGAULR8uWr0LJPYAGApCeCbKNygLPKIxJ65YOSU+YpLUUCYGiqBzQVy3" +
+           "Ft1zbevnJl60UARqACgcVDo9ZZr63Mqua68QxlpmrWJC1FmrmLSKCFVktcpZrbKhzg4D26E5Lgjg" +
+           "8vnoMwwh1hU/dvTRo/qcDyJqcESw5Dp6o3XNHVrqLDSubAdFjuXwwWZcX+Wc9APboKxQUoiLurXa" +
+           "IYfCpjlCDsoxZ6OCouLRt+xpbY3nA8aDMR6E2+9vffOWxl02cQ+Bbdjevt7l83D5ABRaKNHYO484" +
+           "YmgMkoJ4jElCOL8Lz9NN87YumrRDxc2DElQZKgIVhZcZcO1hZ74wtK/H0thvtuXGXdM2S0S/ziQ1" +
+           "FPJiG7pHwvbgDhtKnQ0VNhCEeUHQLmiuf2fymieGvJGY8DCfX+yCEC5xWIlwtO+P6+s4VESJGS4+" +
+           "liwxKjZ/2FGRZvPhYgktxEZdHWOAr2P34ihWIQWTgJ2CnWJbo9Ymz1g/5+h1QsF9wgKJ19Z4hV87" +
+           "4fKNE3cnx8v4V8H4UOjqhvce+zW6qdWVlOvSjQsDlw/WUT4A5QNQGIJDizMPHXR+CiRBb4GSzlYr" +
+           "26Z7vYKSC42nUOPBqA9VU1I0ZOJPEYWj1NvVW/3AoEUAFgO4IzZ1hYk2jf9WUw7IjCIXHUVhXrFp" +
+           "/sQtKZPIoXXr/PjoSkZeoHo6gP/bFyeciECqcHG3IrXp37a2SF3xQNPxRAXgq5nS1bHsDWCYALYA" +
+           "u+h0W/impI8Pad9ec/vAoWVTjV84Nsn5FAwcvmDMN5rOqf1jyatdHzjuGjvThloKYH3b5qVXt775" +
+           "44ZuN1QEKknF3a6ImfDee4tWjBrV6R5Qoeq1AP6Avaxx8gDolhdPXAh2qzQmZFQ4ZhALrj/mvLpT" +
+           "+qhxya0BP5VVZQBkA6jNR0AJ2xUUcjKGjsx4k3PVYUwaJU6rJ3reLiHlHppjBjF3fLYSzU/noEZ8" +
+           "3611VusoVJBVsFWAdezim/3jemSFe+SNIsvCpAhCXf7TBZI+PnTr4nO2t2xcME3ZroYKIouEEqDo" +
+           "xfHfav/GxOttFgBOucGWll0XVqrqXYDWNLz3aG7bsovWp4i2TvkhScLqNBezq/M/zxLBxV2Yx/75" +
+           "yCPP6usc04CJ+B3bcLMwQTiK+0UIwgz1ip8+4pyaYX0x0SnWMkjnYGygkm9nBO0MGzoI2TTDyQBw" +
+           "7ubNawPmeZYZNt5wZhrxX8OHX9yXSTJzGcVgIWasbs8/hc7XRzXM670cg0Vs5H+MHm6u74ucrb/K" +
+           "lAlFPoySoqFFn+rm+OCGV762df2cYWe4fP0M5qDWhoowRIm1/h+s1YZx3wrVOV1LDhXMaGzfXntF" +
+           "46vXtMQRS/clsqRRT9SNd0GMBo6edRStZbKeg4D//ciQIcP2CTDbqsdVKQePq1JMFkXxv4qO9AaM" +
+           "fPGoaeuG9kXp0LkU0wGgMFC1gYAdAeyg0m3IrE3W3mtTvodjRpHq9X3xL4h5Qsq63P/z9ra6LqSc" +
+           "vvmBPkwOTex2lnf4wNee/47fa99NGGVJ8Zl1qP3UPfwkdr15mDDV+Y3Pf+Kh9c9kz9pee89J7dve" +
+           "vaRt+7qLbVv47y5UUKggp3BB/okNz0/aHI8332OaIgELxWDpptQtt6X+Qcu03nVYGQYxjxzl+7/e" +
+           "GyvjdYrCtv31JiW7QTjy6qWj83jF4AeP/MLaodiHRtZBXAihEEIWkq4eSgGmvKGhqpX5d1YEVhiW" +
+           "BaI6Zf6QITN7s5ELhw4tZZavkwhIZMOC1rZfo5s64nPv4+1NzXot2/hYiqKckglH4/7eRojCOosp" +
+           "St6u2ijfS1Hv3I0SdVy5aam9ecumBeOqN8w7aRkxSlMVdRDmRHa4m5xWPKPEusUA6maIrcy/cCKw" +
+           "InASKaCoXrlo2LAH+xpMpAEjLauu2ObaNnxVmZqUHaI8SaR+KnIhTPHCo6ZtOn6vk4qUPNNGnV2P" +
+           "J0ptENweMq92zHBMcMwwIrfMLS6etKdJEnMlCYOZm9YE4dUPkWvsIUckJ/+SZwd5PCEOEBc5rh7j" +
+           "grqf+VfvSc7mO/xZSihVAra3YMY/PqqrUhZVe7C8yRHTBqAVQJuQN5idgJ2ASQAz4PJjptWevKc0" +
+           "RZQ0TQATRWDd/dmFDQ2VeaLH0z4dRVTK9EXZ7IqFJSXH7W6eLw0blntp2NAydGOSqPGVs/5mW9Zc" +
+           "JGKbRSxELIRDCFuIuAmiBa8eMW37rcdc1JDtM+3PYdSp43k9/ulPgmDrsnz+vFBktRWBZYEVKSlU" +
+           "feH5wYPP7u5Hfy4uzi4oLq50IjkSaXrf2vIfBPnV6PlKiwKg0XfyNe2BPkmJ8+oUGeh/bLjNu7En" +
+           "0Gy+w5sppLcyKRra9IZJ98hTvciop9MPSSFUwGTnEjHICsgpyKHYHzjquWMvrJ+wewUENPFjCIAx" +
+           "k3uStyIMbw5FVieWJvJpBE5kgqq+X1VcPGdRcfHMxSUluSUlJbmlUZ+1tKRkLRGVnrZ9Rw12rSLt" +
+           "sDpFg8vmfbpw0HH3wcuMMSaiao2XAbwMjPFhPL/ReN6DfsY8tHHekN0WXR929vqsCpWruFshPEqF" +
+           "o3IyADuWTxgea1rYTbRVeEMmc+SnCwp+OcB4l3kmLq0D4BnzkA/MMUBjvDMXC1DBqlkCFr9N9E//" +
+           "HIZpPyDsQVuTFwsMfP273k8GFeLbvo9izwe8DGA8VMPgIc/D2piALlPFDGWUMqNuazOun/RbeQU7" +
+           "L/zl0cfC+SPOXjG84NBRawCvJNoSE7PiBgr5Xx/MKf7jLnzIbUPKlHVF5C11KgJfD9+shY8Vxjd3" +
+           "0780rEvP8bFDDvnVQGO+lU5MeTDwzM5aTbOzNyrw/XNbWx9JFLknk+sjqjobUHJq9XS/cNj3jZcZ" +
+           "Ac9PwBIDyAeMD2O8RhhvpTFYqYpGqMQOM2UhlFOhsvjfgNJ6ofxyoZaXbHPt8mDNjDU9ACYBbyGA" +
+           "AT/KZEZ/MpO5qciYyRlgROeJGSh0nQCL21Ufmx4EL8dMpqScRt4DFVAAYMCtORx+0Rhz7aFF+GJB" +
+           "BmNM/JKklGo1KlBtHZ474U79P9hZOZcQYb0unD/mwu05qADCZwE4C8Y7I3kTk4kFx+mUuzfMKf5e" +
+           "+rn+rUMq4PR4hFII0gw0xpdvGAWGoDqHf9m8IuV8m2Qtf1pQMPok37+50JhpHlC8EzwRcAzwOqs+" +
+           "Vkv06I+da04nInd3RvuxgCIAhcUTF5zvFQ79oucP+Cy8zIjE6qQnt5Pviu5IqAogVKNCNSrBUte6" +
+           "blnrqi/Vo3O9rI3Pc7cbP6sgGQcAf7rvl3zK908uBKjAGK5jrrmNKKHj/RS3E6L3V2USLUzkZAB4" +
+           "i75pTivwwQMyoKYQ685+QOtScvzUHPbIlJ54ZVsuDPTrZDmnQqUQggo1qkoNRDyFeJ6XGQfjF0fW" +
+           "3O9YWxW6adNzw36Dzm/JKEJ0k7QgtfiSygd1vSrkdZ3jlb6fneT7Y+MN1xrmVX9gbkw9q1MdsemF" +
+           "U5wkpwqSRSw49gfZAcPPHOsVlIww/sBjjPEVnqfGZEQlWKVCjWK31TW/dv56pCruU126TGxPl+US" +
+           "IrAgNQ7TQ+pNukQqfalLNimApvMt6CZMTvsiu3VOJ17XnrNWZ9m85oK8Qmz4sFB+CeXrF29dfOqG" +
+           "1PwKs6fOKyvKjrnb8wrHGD8TWfCOEoX85zb96dgXY9leN2NM+y3SJZG4u7XsSldIykFPz09NHxbR" +
+           "T2U3M11AsKf8aRqtnBqQoG91oWkGOS0/XaQo2Pf3u5mUDK9LukD7Mv5Tv9teSQ4VzipsINUtW9Zc" +
+           "t/mFiRu7WbcOuQNP+MXQ4hGX3mEKBl1mjB9bbwAqSz6cf+TZ8Qaabta/u6hM92ItpZs5dvyor5R/" +
+           "dwvp9QAa6eFzfxRlpVMk2mXh93czeyPn1Bn5ShWtYAJsyEve+OPgC7Hzmgx3USDtejQedlbtDX7h" +
+           "0Ns6HChV5LcvP7rpb1+qx/690dHrtewL05c2c7ZLtrM91fOpDGjXyvT9+WYBPQAg3NPcey1n4vVt" +
+           "FUJSIfGNjJZNy2ekkqzpazIJOefSoTaA9q1VY+5Wbvs9NAoYVBkFh5Sesi9lJ/u6lt5+WETpoi2M" +
+           "PpZU/k9szmKGtVGRWBjQ6g3zP78pxfSGKb+tJ4LPAsi31S/+uXCUlVZmCIc+DlI15L4Cpr/1FA1d" +
+           "0VLqAilzgcCGChdQc5eoTXqpkNS66hv1YLsUElURiG1sOZj7lunf3v3fwlBKjRfX9EjEHKcscV98" +
+           "D40zRKIqgEpz4yvTVnfjU/VbmL/r4yhwTTbPCNsZNi8g50/OnvbCsXu5wQqVURCBuOb7seu98n7A" +
+           "/L23Tc8NX8mW6pL73UoOhYPH/GJv/I7Dzlqbg5pRUG1q++A//+Ng+4f9gDlATVzLHfErZiHioKrn" +
+           "H37uhgeG597sdYnIYeeszypQqQawre9dHNbd0Yj9/5KnfsB8DJpuXXj8Q+ryj3dUZglD1Uz3MsWv" +
+           "HX7uh1fv6QGHn7upAmrWQpEV2zSt+bVptamw+6C9VaP/hcoHrvkABgydUjPLywy6Oboh6HW6PgLj" +
+           "LYqStqYRQHKDMQflMhXOQrnata27tvGvufrEn8ZBfmdPP2AO7NpmAAw85B8qTyjKlt1svAHTjPGL" +
+           "k4w0jAcTAyllnBoh9Kxw/tEdS8cuT0WyH4vX1PYD5qMBzQDE2eFDxz09zsscWuwVHX6a8YwaFAiM" +
+           "NAkHr4vdUdf82rQN6JwnSl4N4vAxeKdxP2A+mjXuKTvcXcY9TdOnyxPk4zKZ/vbRAqe75C3QfZZY" +
+           "0P/y6/7299z+H4QrdGsoib8JAAAAAElFTkSuQmCC"
+  }
+};
+
+// The process of adding a new default snippet involves:
+//   * add a new entity to aboutHome.dtd
+//   * add a <span/> for it in aboutHome.xhtml
+//   * add an entry here in the proper ordering (based on spans)
+// The <a/> part of the snippet will be linked to the corresponding url.
+const DEFAULT_SNIPPETS_URLS = [ "" ];
+
+const SNIPPETS_UPDATE_INTERVAL_MS = 86400000; // 1 Day.
+
+// IndexedDB storage constants.
+const DATABASE_NAME = "abouthome";
+const DATABASE_VERSION = 1;
+const SNIPPETS_OBJECTSTORE_NAME = "snippets";
+
+// This global tracks if the page has been set up before, to prevent double inits
+let gInitialized = false;
+let gObserver = new MutationObserver(function (mutations) {
+  for (let mutation of mutations) {
+    if (mutation.attributeName == "searchEngineName") {
+      setupSearchEngine();
+      if (!gInitialized) {
+//        ensureSnippetsMapThen(loadSnippets);
+        gInitialized = true;
+      }
+      return;
+    }
+  }
+});
+
+window.addEventListener("pageshow", function () {
+  // Delay search engine setup, cause browser.js::BrowserOnAboutPageLoad runs
+  // later and may use asynchronous getters.
+  window.gObserver.observe(document.documentElement, { attributes: true });
+  fitToWidth();
+  window.addEventListener("resize", fitToWidth);
+
+  // Ask chrome to update snippets.
+  var event = new CustomEvent("AboutHomeLoad", {bubbles:true});
+  document.dispatchEvent(event);
+});
+
+window.addEventListener("pagehide", function() {
+  window.gObserver.disconnect();
+  window.removeEventListener("resize", fitToWidth);
+});
+
+// This object has the same interface as Map and is used to store and retrieve
+// the snippets data.  It is lazily initialized by ensureSnippetsMapThen(), so
+// be sure its callback returned before trying to use it.
+let gSnippetsMap;
+let gSnippetsMapCallbacks = [];
+
+/**
+ * Ensure the snippets map is properly initialized.
+ *
+ * @param aCallback
+ *        Invoked once the map has been initialized, gets the map as argument.
+ * @note Snippets should never directly manage the underlying storage, since
+ *       it may change inadvertently.
+ */
+function ensureSnippetsMapThen(aCallback)
+{
+return;
+  if (gSnippetsMap) {
+    aCallback(gSnippetsMap);
+    return;
+  }
+
+  // Handle multiple requests during the async initialization.
+  gSnippetsMapCallbacks.push(aCallback);
+  if (gSnippetsMapCallbacks.length > 1) {
+    // We are already updating, the callbacks will be invoked when done.
+    return;
+  }
+
+  let invokeCallbacks = function () {
+    if (!gSnippetsMap) {
+      gSnippetsMap = Object.freeze(new Map());
+    }
+
+    for (let callback of gSnippetsMapCallbacks) {
+      callback(gSnippetsMap);
+    }
+    gSnippetsMapCallbacks.length = 0;
+  }
+
+  let openRequest = indexedDB.open(DATABASE_NAME, DATABASE_VERSION);
+
+  openRequest.onerror = function (event) {
+    // Try to delete the old database so that we can start this process over
+    // next time.
+    indexedDB.deleteDatabase(DATABASE_NAME);
+    invokeCallbacks();
+  };
+
+  openRequest.onupgradeneeded = function (event) {
+    let db = event.target.result;
+    if (!db.objectStoreNames.contains(SNIPPETS_OBJECTSTORE_NAME)) {
+      db.createObjectStore(SNIPPETS_OBJECTSTORE_NAME);
+    }
+  }
+
+  openRequest.onsuccess = function (event) {
+    let db = event.target.result;
+
+    db.onerror = function (event) {
+      invokeCallbacks();
+    }
+
+    db.onversionchange = function (event) {
+      event.target.close();
+      invokeCallbacks();
+    }
+
+    let cache = new Map();
+    let cursorRequest = db.transaction(SNIPPETS_OBJECTSTORE_NAME)
+                          .objectStore(SNIPPETS_OBJECTSTORE_NAME).openCursor();
+    cursorRequest.onerror = function (event) {
+      invokeCallbacks();
+    }
+
+    cursorRequest.onsuccess = function(event) {
+      let cursor = event.target.result;
+
+      // Populate the cache from the persistent storage.
+      if (cursor) {
+        cache.set(cursor.key, cursor.value);
+        cursor.continue();
+        return;
+      }
+
+      // The cache has been filled up, create the snippets map.
+      gSnippetsMap = Object.freeze({
+        get: function (aKey) cache.get(aKey),
+        set: function (aKey, aValue) {
+          db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite")
+            .objectStore(SNIPPETS_OBJECTSTORE_NAME).put(aValue, aKey);
+          return cache.set(aKey, aValue);
+        },
+        has: function (aKey) cache.has(aKey),
+        delete: function (aKey) {
+          db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite")
+            .objectStore(SNIPPETS_OBJECTSTORE_NAME).delete(aKey);
+          return cache.delete(aKey);
+        },
+        clear: function () {
+          db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite")
+            .objectStore(SNIPPETS_OBJECTSTORE_NAME).clear();
+          return cache.clear();
+        },
+        get size() cache.size
+      });
+
+      setTimeout(invokeCallbacks, 0);
+    }
+  }
+}
+
+function onSearchSubmit(aEvent)
+{
+  let searchTerms = document.getElementById("searchText").value;
+  let engineName = document.documentElement.getAttribute("searchEngineName");
+
+  if (engineName && searchTerms.length > 0) {
+    // Send an event that will perform a search and Firefox Health Report will
+    // record that a search from about:home has occurred.
+    let eventData = JSON.stringify({
+      engineName: engineName,
+      searchTerms: searchTerms
+    });
+    let event = new CustomEvent("AboutHomeSearchEvent", {detail: eventData});
+    document.dispatchEvent(event);
+  }
+
+  aEvent.preventDefault();
+}
+
+
+function setupSearchEngine()
+{
+  // The "autofocus" attribute doesn't focus the form element
+  // immediately when the element is first drawn, so the
+  // attribute is also used for styling when the page first loads.
+  let searchText = document.getElementById("searchText");
+  searchText.addEventListener("blur", function searchText_onBlur() {
+    searchText.removeEventListener("blur", searchText_onBlur);
+    searchText.removeAttribute("autofocus");
+  });
+ 
+  let searchEngineName = document.documentElement.getAttribute("searchEngineName");
+  let searchEngineInfo = SEARCH_ENGINES[searchEngineName];
+  let logoElt = document.getElementById("searchEngineLogo");
+
+  // Add search engine logo.
+  if (searchEngineInfo && searchEngineInfo.image) {
+    logoElt.parentNode.hidden = false;
+    logoElt.src = searchEngineInfo.image;
+    logoElt.alt = searchEngineName;
+    searchText.placeholder = "";
+  }
+  else {
+    logoElt.parentNode.hidden = true;
+    searchText.placeholder = searchEngineName;
+  }
+
+}
+
+/**
+ * Inform the test harness that we're done loading the page.
+ */
+function loadSucceeded()
+{
+  var event = new CustomEvent("AboutHomeLoadSnippetsSucceeded", {bubbles:true});
+  document.dispatchEvent(event);
+}
+
+/**
+ * Update the local snippets from the remote storage, then show them through
+ * showSnippets.
+ */
+function loadSnippets()
+{
+return;
+  if (!gSnippetsMap)
+    throw new Error("Snippets map has not properly been initialized");
+
+  // Allow tests to modify the snippets map before using it.
+  var event = new CustomEvent("AboutHomeLoadSnippets", {bubbles:true});
+  document.dispatchEvent(event);
+
+  // Check cached snippets version.
+  let cachedVersion = gSnippetsMap.get("snippets-cached-version") || 0;
+  let currentVersion = document.documentElement.getAttribute("snippetsVersion");
+  if (cachedVersion < currentVersion) {
+    // The cached snippets are old and unsupported, restart from scratch.
+    gSnippetsMap.clear();
+  }
+
+  // Check last snippets update.
+  let lastUpdate = gSnippetsMap.get("snippets-last-update");
+  let updateURL = document.documentElement.getAttribute("snippetsURL");
+  let shouldUpdate = !lastUpdate ||
+                     Date.now() - lastUpdate > SNIPPETS_UPDATE_INTERVAL_MS;
+  if (updateURL && shouldUpdate) {
+    // Try to update from network.
+    let xhr = new XMLHttpRequest();
+    try {
+      xhr.open("GET", updateURL, true);
+    } catch (ex) {
+      showSnippets();
+      loadSucceeded();
+      return;
+    }
+    // Even if fetching should fail we don't want to spam the server, thus
+    // set the last update time regardless its results.  Will retry tomorrow.
+    gSnippetsMap.set("snippets-last-update", Date.now());
+    xhr.onerror = function (event) {
+      showSnippets();
+    };
+    xhr.onload = function (event)
+    {
+      if (xhr.status == 200) {
+        gSnippetsMap.set("snippets", xhr.responseText);
+        gSnippetsMap.set("snippets-cached-version", currentVersion);
+      }
+      showSnippets();
+      loadSucceeded();
+    };
+    xhr.send(null);
+  } else {
+    showSnippets();
+    loadSucceeded();
+  }
+}
+
+/**
+ * Shows locally cached remote snippets, or default ones when not available.
+ *
+ * @note: snippets should never invoke showSnippets(), or they may cause
+ *        a "too much recursion" exception.
+ */
+let _snippetsShown = false;
+function showSnippets()
+{
+return;
+  let snippetsElt = document.getElementById("snippets");
+
+  // Show about:rights notification, if needed.
+  let showRights = document.documentElement.getAttribute("showKnowYourRights");
+  if (showRights) {
+    let rightsElt = document.getElementById("rightsSnippet");
+    let anchor = rightsElt.getElementsByTagName("a")[0];
+    anchor.href = "about:rights";
+    snippetsElt.appendChild(rightsElt);
+    rightsElt.removeAttribute("hidden");
+    return;
+  }
+
+  if (!gSnippetsMap)
+    throw new Error("Snippets map has not properly been initialized");
+  if (_snippetsShown) {
+    // There's something wrong with the remote snippets, just in case fall back
+    // to the default snippets.
+    showDefaultSnippets();
+    throw new Error("showSnippets should never be invoked multiple times");
+  }
+  _snippetsShown = true;
+
+  let snippets = gSnippetsMap.get("snippets");
+  // If there are remotely fetched snippets, try to to show them.
+  if (snippets) {
+    // Injecting snippets can throw if they're invalid XML.
+    try {
+      snippetsElt.innerHTML = snippets;
+      // Scripts injected by innerHTML are inactive, so we have to relocate them
+      // through DOM manipulation to activate their contents.
+      Array.forEach(snippetsElt.getElementsByTagName("script"), function(elt) {
+        let relocatedScript = document.createElement("script");
+        relocatedScript.type = "text/javascript;version=1.8";
+        relocatedScript.text = elt.text;
+        elt.parentNode.replaceChild(relocatedScript, elt);
+      });
+      return;
+    } catch (ex) {
+      // Bad content, continue to show default snippets.
+    }
+  }
+
+  showDefaultSnippets();
+}
+
+/**
+ * Clear snippets element contents and show default snippets.
+ */
+function showDefaultSnippets()
+{
+return;
+  // Clear eventual contents...
+  let snippetsElt = document.getElementById("snippets");
+  snippetsElt.innerHTML = "";
+
+  // ...then show default snippets.
+  let defaultSnippetsElt = document.getElementById("defaultSnippets");
+  let entries = defaultSnippetsElt.querySelectorAll("span");
+  // Choose a random snippet.  Assume there is always at least one.
+  let randIndex = Math.floor(Math.random() * entries.length);
+  let entry = entries[randIndex];
+  // Inject url in the eventual link.
+  if (DEFAULT_SNIPPETS_URLS[randIndex]) {
+    let links = entry.getElementsByTagName("a");
+    // Default snippets can have only one link, otherwise something is messed
+    // up in the translation.
+    if (links.length == 1) {
+      links[0].href = DEFAULT_SNIPPETS_URLS[randIndex];
+    }
+  }
+  // Move the default snippet to the snippets element.
+  snippetsElt.appendChild(entry);
+}
+
+function fitToWidth() {
+  if (window.scrollMaxX) {
+    document.body.setAttribute("narrow", "true");
+  } else if (document.body.hasAttribute("narrow")) {
+    document.body.removeAttribute("narrow");
+    fitToWidth();
+  }
+}
diff --git a/helpers/DATA/firefox/abouthome/aboutHome.xhtml b/helpers/DATA/firefox/abouthome/aboutHome.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..3115a48d5caba3ce5a798d7707ebba12983f5945
--- /dev/null
+++ b/helpers/DATA/firefox/abouthome/aboutHome.xhtml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE html [
+  <!ENTITY % htmlDTD
+    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "DTD/xhtml1-strict.dtd">
+  %htmlDTD;
+  <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
+  %globalDTD;
+  <!ENTITY % aboutHomeDTD SYSTEM "chrome://browser/locale/aboutHome.dtd">
+  %aboutHomeDTD;
+  <!ENTITY % browserDTD SYSTEM "chrome://browser/locale/browser.dtd" >
+  %browserDTD;
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <title>&abouthome.pageTitle;</title>
+
+    <link rel="icon" type="image/png" id="favicon"
+          href="chrome://branding/content/icon32.png"/>
+    <link rel="stylesheet" type="text/css" media="all"
+          href="chrome://browser/content/abouthome/aboutHome.css"/>
+
+<style>
+ul li {
+list-style:none;
+background:#ddd;
+border-radius:3px;
+padding:3px 5px 3px 5px;
+margin:5px;
+box-shadow: 0px 2px 0 #ccc ;
+}
+ul li a{
+font-weight:bold;
+color:#666;
+text-shadow:0px 1px 0px #fff;
+}
+#trisquel a {
+font-weight:bold;
+color:#56728C;
+text-shadow:0px 1px 0px #fff;
+}
+</style>
+
+  </head>
+
+  <body dir="&locale.dir;">
+    <div class="spacer"/>
+    <div id="topSection">
+      <img src="chrome://branding/content/about-logo.png"/>
+
+      <div id="searchContainer">
+        <form name="searchForm" id="searchForm" action="https://duckduckgo.com/html">
+          <input type="text" name="q" value="" id="searchText" maxlength="256"
+                 autofocus="autofocus"/>
+          <input id="searchSubmit" type="submit" value="&abouthome.searchEngineButton.label;"/>
+        </form>
+      </div>
+
+    </div>
+
+    <div class="spacer"/>
+
+<div style="  display: -moz-box;   -moz-box-align: center;   -moz-box-pack: center;   width: 100%;   background-color: hsla(0,0%,0%,.03);   border-top: 1px solid hsla(0,0%,0%,.03);   box-shadow: 0 2px 5px hsla(0,0%,0%,.1) inset,              0 -1px 0 hsla(0,0%,100%,.25);">
+<p id="trisquel"><a href="https://trisquel.info">Trisquel GNU/Linux</a>:</p>
+<ul style="font-size:0.8em">
+<li><a href="https://trisquel.info/forum">Forum</a></li>
+<li><a href="https://trisquel.info/wiki">Wiki</a></li>
+<li><a href="http://store.trisquel.info/">Store</a></li>
+<li><a href="https://trisquel.info/donate">Donate</a></li>
+</ul>
+</div>
+
+  </body>
+</html>
diff --git a/helpers/DATA/firefox/abouthome/addons.png b/helpers/DATA/firefox/abouthome/addons.png
new file mode 100644
index 0000000000000000000000000000000000000000..41519ce4982a0385b7668eaad8c20e1d06070b7b
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/addons.png differ
diff --git a/helpers/DATA/firefox/abouthome/addons@2x.png b/helpers/DATA/firefox/abouthome/addons@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..d4d04ee8ca7c12b10cb0d601ef30b23c8df25a7e
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/addons@2x.png differ
diff --git a/helpers/DATA/firefox/abouthome/apps.png b/helpers/DATA/firefox/abouthome/apps.png
new file mode 100644
index 0000000000000000000000000000000000000000..79fc95d49ff1c848c71a2686885ecdf758a9a32d
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/apps.png differ
diff --git a/helpers/DATA/firefox/abouthome/apps@2x.png b/helpers/DATA/firefox/abouthome/apps@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..cbe7a6d5364a3bd173d1c680981777e30f84c16e
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/apps@2x.png differ
diff --git a/helpers/DATA/firefox/abouthome/bookmarks.png b/helpers/DATA/firefox/abouthome/bookmarks.png
new file mode 100644
index 0000000000000000000000000000000000000000..5c7e194a61c1e669b24c382603269a093989f517
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/bookmarks.png differ
diff --git a/helpers/DATA/firefox/abouthome/bookmarks@2x.png b/helpers/DATA/firefox/abouthome/bookmarks@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..7ede00744c82af647bacd94eac7ec7fc989882b0
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/bookmarks@2x.png differ
diff --git a/helpers/DATA/firefox/abouthome/downloads.png b/helpers/DATA/firefox/abouthome/downloads.png
new file mode 100644
index 0000000000000000000000000000000000000000..3d4d10e7abb472690b37dbd8cea26c79ec8205ea
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/downloads.png differ
diff --git a/helpers/DATA/firefox/abouthome/downloads@2x.png b/helpers/DATA/firefox/abouthome/downloads@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..d384a22c6d9b4ca3d866556b92781d481bc2879a
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/downloads@2x.png differ
diff --git a/helpers/DATA/firefox/abouthome/history.png b/helpers/DATA/firefox/abouthome/history.png
new file mode 100644
index 0000000000000000000000000000000000000000..ae742b1aa8acd6115533186c86f7ac37828681f7
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/history.png differ
diff --git a/helpers/DATA/firefox/abouthome/history@2x.png b/helpers/DATA/firefox/abouthome/history@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..696902e7caadc145fd9ecda362b7aba223789712
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/history@2x.png differ
diff --git a/helpers/DATA/firefox/abouthome/restore-large.png b/helpers/DATA/firefox/abouthome/restore-large.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef593e6e14c87b6774b39361f9ce31b1c908dbed
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/restore-large.png differ
diff --git a/helpers/DATA/firefox/abouthome/restore-large@2x.png b/helpers/DATA/firefox/abouthome/restore-large@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..d5c71d0b041f9d5a0235685faa52a0185e5cb69d
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/restore-large@2x.png differ
diff --git a/helpers/DATA/firefox/abouthome/restore.png b/helpers/DATA/firefox/abouthome/restore.png
new file mode 100644
index 0000000000000000000000000000000000000000..5c3d6f4376c24bfe320ccac1e2b09f896c83a2a9
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/restore.png differ
diff --git a/helpers/DATA/firefox/abouthome/restore@2x.png b/helpers/DATA/firefox/abouthome/restore@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..5acb63052262aafceafcea17c5b4036f76381b47
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/restore@2x.png differ
diff --git a/helpers/DATA/firefox/abouthome/settings.png b/helpers/DATA/firefox/abouthome/settings.png
new file mode 100644
index 0000000000000000000000000000000000000000..4b0c30990933f748f41f8424ff81bd0622c05b18
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/settings.png differ
diff --git a/helpers/DATA/firefox/abouthome/settings@2x.png b/helpers/DATA/firefox/abouthome/settings@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..c77cb9a92cc5e60ef228dffdefc99cfe3798c376
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/settings@2x.png differ
diff --git a/helpers/DATA/firefox/abouthome/snippet1.png b/helpers/DATA/firefox/abouthome/snippet1.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce2ec55c237eec52b55a557d0fdd334c3e7b16a1
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/snippet1.png differ
diff --git a/helpers/DATA/firefox/abouthome/snippet1@2x.png b/helpers/DATA/firefox/abouthome/snippet1@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..f57cd0a82700e8f535105f3f2a451d282e213e61
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/snippet1@2x.png differ
diff --git a/helpers/DATA/firefox/abouthome/snippet2.png b/helpers/DATA/firefox/abouthome/snippet2.png
new file mode 100644
index 0000000000000000000000000000000000000000..e0724fb6df5bbf0a601af72a82d60d942b99d939
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/snippet2.png differ
diff --git a/helpers/DATA/firefox/abouthome/snippet2@2x.png b/helpers/DATA/firefox/abouthome/snippet2@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..40577f52f618504bbd59ab1bcb540ac58a27f842
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/snippet2@2x.png differ
diff --git a/helpers/DATA/firefox/abouthome/sync.png b/helpers/DATA/firefox/abouthome/sync.png
new file mode 100644
index 0000000000000000000000000000000000000000..11e40cc93755ab65b0dcd4a51a58c87f6c096278
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/sync.png differ
diff --git a/helpers/DATA/firefox/abouthome/sync@2x.png b/helpers/DATA/firefox/abouthome/sync@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..6354f5bf9067e44e78f92cc1739f27b65535f626
Binary files /dev/null and b/helpers/DATA/firefox/abouthome/sync@2x.png differ
diff --git a/helpers/DATA/firefox/bookmarks.html.in b/helpers/DATA/firefox/bookmarks.html.in
index 98fff6fed5a35262d983c982e86dfba37564fbf5..9767e59c4597757a2810780d55b79abe92784f66 100644
--- a/helpers/DATA/firefox/bookmarks.html.in
+++ b/helpers/DATA/firefox/bookmarks.html.in
@@ -15,7 +15,6 @@
         <DT><A HREF="http://trisquel.info/wiki/" ADD_DATE="1245542718" LAST_MODIFIED="1245542736" ICON_URI="http://trisquel.info/sites/default/themes/trisquel3/favicon.ico" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACRklEQVQ4jY2SXU/SYRiHL9xwUzd7s80AzRmzmiKhgCKof0X4C4FHYZtOV2nMWZvTtFyNyQwrX1gwshTzDQQN8f0gD9w6ydo6aJ201Rfoc3Sgs+wg+Z3e9/Xcv117IOWUS1F7NJSNVYMrI3UOoGAgF/PCDg0LccyLK4jRPfTeouNLao+G+rkXWCLzCLNDXBssOJoJs0Po/Q5oy0LVW0jNq3s0LEaAtIMFY7AZMfEDMZLAshDFvvYT++p3TAEXALWhYQrdpwAJ5d5OFB1KbMmP5LrOA21ZWJf3qRipo/hRPjq/GfWgBnFlF/vqPuphDTp/FaZgD8ZAE9qRdozBZqyJHXBngrxVgTXynoJbp9E976ZitA7jxGO0z4w4Nj4gxt9x+aGM4p58Sr0l6HxV2FfjCNNPDurnt5zBEtumqEt+ZNcwOoDsdh7O9U2cW2s0rixhmRvFEglyfWMXcWkeefu5PwKNk/exRKeonrxBTagDw3gLeq8W59Yaju09HOtfsCW+IsY+0TDjO/RxLBLKPSoMAZFSbwkA9bMTODd/IYSfUuK+dCQxtbilNC5/RozGkblzqPT3YXjpQe/TpsZnu85iT37DFL6DKehGNVgIrgzqpsYo61Wm0iATcXkf4XUX1YG7qB5cAdKoCd1EmO5MrYX5rR9rLInMnYNmxEZxtxIh3I8p1HISKgHSyGuSYY0lMUdnqA25EML9iJEE8lYFB1/4v0IlQDoXrl7EONZL/ZsAleN9ZAtKIP0k+O9HpMhbFeh92sPL0n/h3yJfoqCu2Os+AAAAAElFTkSuQmCC">Wiki</A>
         <DT><A HREF="http://trisquel.info/donate" ADD_DATE="1245542718" LAST_MODIFIED="1245542736" ICON_URI="http://trisquel.info/sites/default/themes/trisquel3/favicon.ico" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACRklEQVQ4jY2SXU/SYRiHL9xwUzd7s80AzRmzmiKhgCKof0X4C4FHYZtOV2nMWZvTtFyNyQwrX1gwshTzDQQN8f0gD9w6ydo6aJ201Rfoc3Sgs+wg+Z3e9/Xcv117IOWUS1F7NJSNVYMrI3UOoGAgF/PCDg0LccyLK4jRPfTeouNLao+G+rkXWCLzCLNDXBssOJoJs0Po/Q5oy0LVW0jNq3s0LEaAtIMFY7AZMfEDMZLAshDFvvYT++p3TAEXALWhYQrdpwAJ5d5OFB1KbMmP5LrOA21ZWJf3qRipo/hRPjq/GfWgBnFlF/vqPuphDTp/FaZgD8ZAE9qRdozBZqyJHXBngrxVgTXynoJbp9E976ZitA7jxGO0z4w4Nj4gxt9x+aGM4p58Sr0l6HxV2FfjCNNPDurnt5zBEtumqEt+ZNcwOoDsdh7O9U2cW2s0rixhmRvFEglyfWMXcWkeefu5PwKNk/exRKeonrxBTagDw3gLeq8W59Yaju09HOtfsCW+IsY+0TDjO/RxLBLKPSoMAZFSbwkA9bMTODd/IYSfUuK+dCQxtbilNC5/RozGkblzqPT3YXjpQe/TpsZnu85iT37DFL6DKehGNVgIrgzqpsYo61Wm0iATcXkf4XUX1YG7qB5cAdKoCd1EmO5MrYX5rR9rLInMnYNmxEZxtxIh3I8p1HISKgHSyGuSYY0lMUdnqA25EML9iJEE8lYFB1/4v0IlQDoXrl7EONZL/ZsAleN9ZAtKIP0k+O9HpMhbFeh92sPL0n/h3yJfoqCu2Os+AAAAAElFTkSuQmCC">Donate</A>
         <DT><A HREF="http://store.trisquel.info/" ADD_DATE="1245542718" LAST_MODIFIED="1245542736" ICON_URI="http://store.trisquel.info/favicon.ico" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACRklEQVQ4jY2SXU/SYRiHL9xwUzd7s80AzRmzmiKhgCKof0X4C4FHYZtOV2nMWZvTtFyNyQwrX1gwshTzDQQN8f0gD9w6ydo6aJ201Rfoc3Sgs+wg+Z3e9/Xcv117IOWUS1F7NJSNVYMrI3UOoGAgF/PCDg0LccyLK4jRPfTeouNLao+G+rkXWCLzCLNDXBssOJoJs0Po/Q5oy0LVW0jNq3s0LEaAtIMFY7AZMfEDMZLAshDFvvYT++p3TAEXALWhYQrdpwAJ5d5OFB1KbMmP5LrOA21ZWJf3qRipo/hRPjq/GfWgBnFlF/vqPuphDTp/FaZgD8ZAE9qRdozBZqyJHXBngrxVgTXynoJbp9E976ZitA7jxGO0z4w4Nj4gxt9x+aGM4p58Sr0l6HxV2FfjCNNPDurnt5zBEtumqEt+ZNcwOoDsdh7O9U2cW2s0rixhmRvFEglyfWMXcWkeefu5PwKNk/exRKeonrxBTagDw3gLeq8W59Yaju09HOtfsCW+IsY+0TDjO/RxLBLKPSoMAZFSbwkA9bMTODd/IYSfUuK+dCQxtbilNC5/RozGkblzqPT3YXjpQe/TpsZnu85iT37DFL6DKehGNVgIrgzqpsYo61Wm0iATcXkf4XUX1YG7qB5cAdKoCd1EmO5MrYX5rR9rLInMnYNmxEZxtxIh3I8p1HISKgHSyGuSYY0lMUdnqA25EML9iJEE8lYFB1/4v0IlQDoXrl7EONZL/ZsAleN9ZAtKIP0k+O9HpMhbFeh92sPL0n/h3yJfoqCu2Os+AAAAAElFTkSuQmCC">Store</A>
-        <DT><A HREF="http://identi.ca/trisquel" ADD_DATE="1262084293" ICON_URI="http://identi.ca/favicon.ico" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABEElEQVQ4jZWTsW3EMAxF3wgeQSNkBI2QETyCR1BnII7BLl2gAVyovkrXpbur3B3gwgMYmYBpYkPS2QaOABtJ/4miPiEJB1UPTmAS0CQnAWnBcBSf8C6wFMIylx7qI/GZMMsM4qAqbx6s1dF7nWPUm4gO1j5Vsj3n/83b5o9zuheXui4hHoC0YYO1u+I1ikqWFbAtPkI4BdxEsipaMBlgjvEUMMeYATqwL1Uwep8BPuCN9AcudX0KuDZNBlh74NPF0ftDwCOEFBAAaMGURrk2zdaP1Qu/06Sqql9VtZ6Lm5lKLxzltzEpQB1UG0RAXrHzk6UBOrAC9wPBfWdKw+5ktmA6sD24Dmw6xi2YHhqBIKB/yV7X1RXblbAAAAAASUVORK5CYII=">@identi.ca</A>
 	<HR>
         <DT><A HREF="http://www.gnu.org/" ADD_DATE="1245542746" LAST_MODIFIED="1245542763" ICON_URI="http://www.gnu.org/graphics/gnu-head-mini.png" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAGFBMVEVFRUV+fn6mpqa/v7/Ozs7Y2Njg4OD8/Pwuhn+TAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9MBDhQ6Gd8s57cAAAEkSURBVHicXdFNc4JADAbgoP0Bi4d6dcGBMzp2z2rrnjulcsavnKuQ9+83K37vDAN5yIZsILws0uv3i7ugLTnAwpjBOsTLOE4VmmKQTFYBioGNKkI5drcCReRItmNAyinSCjianJo6A/aGRtRjtPadpB5CRkQRUaYPGbXW4UgKMfXQxDnJPIeJ0qyOrclrLXoqou8+5p7HM9EkT/JtyEsqB2QYnRv7sT2ArRPLf0kWOp1sA3hYPq3Oh/t0EAjjVIG703II9awr3l3BhxAf5foMLaaasPEZqm5A+0RzGCmuIKJbWi284csIJbzykBQ3aIADsL2CFtBWpovhA1Td7Q6NzqZ/B+38APG3HxU+sYO4B9Akt+AnqGbp/gmwTN6eAWt+gcv6B4rivVin0bWbAAAAAElFTkSuQmCC">GNU&#39;s not UNIX!</A>
         <DT><A FEEDURL="http://planet.gnu.org/atom.xml" HREF="http://planet.gnu.org/">GNU Planet</A>
diff --git a/helpers/DATA/firefox/branding/LICENSE b/helpers/DATA/firefox/branding/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..32d55b9c7f23a9b870a8571d2244e6a1d1a92c89
--- /dev/null
+++ b/helpers/DATA/firefox/branding/LICENSE
@@ -0,0 +1,10 @@
+These files are under the MPL 2, as below. However, please note that you 
+are not granted any trademark rights or licenses to the trademarks of the
+Mozilla Foundation or any party, including without limitation the
+Firefox name or logo.
+
+For more information, see: http://www.mozilla.org/foundation/licensing.html 
+
+This Source Code Form is subject to the terms of the Mozilla Public
+License, v. 2.0. If a copy of the MPL was not distributed with this
+file, You can obtain one at http://mozilla.org/MPL/2.0/.
diff --git a/helpers/DATA/firefox/branding/Makefile.in b/helpers/DATA/firefox/branding/Makefile.in
index 25578dc4f228bed5ca85ebca16275aef6e5786c8..0d21270bbaa57af6ce516b720f408ddd2ee43785 100644
--- a/helpers/DATA/firefox/branding/Makefile.in
+++ b/helpers/DATA/firefox/branding/Makefile.in
@@ -2,12 +2,6 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-DEPTH = @DEPTH@
-topsrcdir = @top_srcdir@
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
 include $(topsrcdir)/config/config.mk
 
 PREF_JS_EXPORTS = $(srcdir)/pref/abrowser-branding.js
@@ -44,7 +38,7 @@ BRANDING_FILES := \
 	$(NULL)
 endif
 
-ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
+ifdef MOZ_WIDGET_GTK
 BRANDING_FILES := \
 	default16.png \
 	default32.png \
@@ -70,5 +64,3 @@ VISUALMANIFEST_FLAGS := -Fsubstitution -DMOZ_APP_DISPLAYNAME=${MOZ_APP_DISPLAYNA
 VISUALMANIFEST_PATH := $(DIST)/bin
 PP_TARGETS += VISUALMANIFEST
 endif
-
-include $(topsrcdir)/config/rules.mk
diff --git a/helpers/DATA/firefox/branding/VisualElementsManifest.xml b/helpers/DATA/firefox/branding/VisualElementsManifest.xml
index 5e97c80c75be6f2bfba01c80be641ce97b22190b..f76340978673684ef1fbc5fb86478af56e8de7d9 100644
--- a/helpers/DATA/firefox/branding/VisualElementsManifest.xml
+++ b/helpers/DATA/firefox/branding/VisualElementsManifest.xml
@@ -5,7 +5,7 @@
       Logo="tileresources\VisualElements_logo.png"
       SmallLogo="tileresources\VisualElements_smalllogo.png"
       ForegroundText="light"
-      BackgroundColor="#001226">
+      BackgroundColor="#0a1833">
     <DefaultTile
         ShortName="@MOZ_APP_DISPLAYNAME@"
         ShowName="allLogos"
diff --git a/helpers/DATA/firefox/branding/abrowser-os2.ico b/helpers/DATA/firefox/branding/abrowser-os2.ico
index 0518438a040d8fa9b5523893e9edbcf9faf9a38c..560d198b3265eb104dae65b1da46ae0e8dfb0aa1 100644
Binary files a/helpers/DATA/firefox/branding/abrowser-os2.ico and b/helpers/DATA/firefox/branding/abrowser-os2.ico differ
diff --git a/helpers/DATA/firefox/branding/abrowser.icns b/helpers/DATA/firefox/branding/abrowser.icns
index 000d24f91be2551abee7de5b2e1e1799a17647b9..0c6941acfd513d4e2752aa350f7deff73c30595a 100644
Binary files a/helpers/DATA/firefox/branding/abrowser.icns and b/helpers/DATA/firefox/branding/abrowser.icns differ
diff --git a/helpers/DATA/firefox/branding/abrowser.ico b/helpers/DATA/firefox/branding/abrowser.ico
index 0518438a040d8fa9b5523893e9edbcf9faf9a38c..5217a6c0b450da72f473d756e7b6624ef2edca6b 100644
Binary files a/helpers/DATA/firefox/branding/abrowser.ico and b/helpers/DATA/firefox/branding/abrowser.ico differ
diff --git a/helpers/DATA/firefox/branding/appname.bmp b/helpers/DATA/firefox/branding/appname.bmp
index 0ec19e17046330bfbbb3c27591cea7c36336d84a..cbad0d1d621daa60c18e530aa985aac74df38c74 100644
Binary files a/helpers/DATA/firefox/branding/appname.bmp and b/helpers/DATA/firefox/branding/appname.bmp differ
diff --git a/helpers/DATA/firefox/branding/bgplain.bmp b/helpers/DATA/firefox/branding/bgplain.bmp
index 5330aca6532ba1000dd87fc1d41a717aee721c0e..c82f89641e4d39e414465e1fa30a8dbc4b6c7bc3 100644
Binary files a/helpers/DATA/firefox/branding/bgplain.bmp and b/helpers/DATA/firefox/branding/bgplain.bmp differ
diff --git a/helpers/DATA/firefox/branding/branding.nsi b/helpers/DATA/firefox/branding/branding.nsi
index 8a725ca268d9b2560031547048c228da10f22c6e..5e19b984087af6227e9940856532ba7b4c12cce0 100644
--- a/helpers/DATA/firefox/branding/branding.nsi
+++ b/helpers/DATA/firefox/branding/branding.nsi
@@ -2,7 +2,9 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-# NSIS branding defines for unofficial builds.
+# NSIS branding defines for official release builds.
+# The nightly build branding.nsi is located in browser/installer/windows/nsis/
+# The unofficial build branding.nsi is located in browser/branding/unofficial/
 
 # BrandFullNameInternal is used for some registry and file system values
 # instead of BrandFullName and typically should not be modified.
@@ -13,31 +15,36 @@
 
 !define URLStubDownload "http://trisquel.info/browser"
 !define URLManualDownload "http://trisquel.info/browser"
-!define Channel "unofficial"
+
+; The OFFICIAL define is a workaround to support different urls for Release and
+; Beta since they share the same branding when building with other branches that
+; set the update channel to beta.
+!define OFFICIAL
+!define Channel "release"
 
 # The installer's certificate name and issuer expected by the stub installer
 !define CertNameDownload   "Mozilla Corporation"
-!define CertIssuerDownload "Thawte Code Signing CA - G2"
+!define CertIssuerDownload "DigiCert Assured ID Code Signing CA-1"
 
 # Dialog units are used so the UI displays correctly with the system's DPI
 # settings.
 # The dialog units for the bitmap's dimensions should match exactly with the
 # bitmap's width and height in pixels.
-!define APPNAME_BMP_WIDTH_DU 159u
-!define APPNAME_BMP_HEIGHT_DU 26u
-!define INTRO_BLURB_WIDTH_DU "230u"
-!define INTRO_BLURB_EDGE_DU "198u"
-!define INTRO_BLURB_LTR_TOP_DU "16u"
-!define INTRO_BLURB_RTL_TOP_DU "11u"
+!define APPNAME_BMP_WIDTH_DU "134u"
+!define APPNAME_BMP_HEIGHT_DU "36u"
+!define INTRO_BLURB_WIDTH_DU "258u"
+!define INTRO_BLURB_EDGE_DU "170u"
+!define INTRO_BLURB_LTR_TOP_DU "20u"
+!define INTRO_BLURB_RTL_TOP_DU "12u"
 
 # UI Colors that can be customized for each channel
 !define FOOTER_CONTROL_TEXT_COLOR_NORMAL 0x000000
-!define FOOTER_CONTROL_TEXT_COLOR_FADED 0x999999
+!define FOOTER_CONTROL_TEXT_COLOR_FADED 0x666666
 !define FOOTER_BKGRD_COLOR 0xFFFFFF
-!define INTRO_BLURB_TEXT_COLOR 0xFFFFFF
-!define OPTIONS_TEXT_COLOR_NORMAL 0xFFFFFF
-!define OPTIONS_TEXT_COLOR_FADED 0xA1AAB3
-!define OPTIONS_BKGRD_COLOR 0x0F1B26
-!define INSTALL_BLURB_TEXT_COLOR 0xFFFFFF
-!define INSTALL_PROGRESS_TEXT_COLOR_NORMAL 0xFFFFFF
-!define INSTALL_PROGRESS_TEXT_COLOR_FADED 0xA1AAB3
+!define INTRO_BLURB_TEXT_COLOR 0x666666
+!define OPTIONS_TEXT_COLOR_NORMAL 0x000000
+!define OPTIONS_TEXT_COLOR_FADED 0x666666
+!define OPTIONS_BKGRD_COLOR 0xF0F0F0
+!define INSTALL_BLURB_TEXT_COLOR 0x666666
+!define INSTALL_PROGRESS_TEXT_COLOR_NORMAL 0x666666
+!define INSTALL_PROGRESS_TEXT_COLOR_FADED 0x999999
diff --git a/helpers/DATA/firefox/branding/clock.bmp b/helpers/DATA/firefox/branding/clock.bmp
index 7e12754e383c12f0c577a182f4aba3ef4304569d..c74398edbccbc68bfdf1a4c9578f90713ab36008 100644
Binary files a/helpers/DATA/firefox/branding/clock.bmp and b/helpers/DATA/firefox/branding/clock.bmp differ
diff --git a/helpers/DATA/firefox/branding/configure.sh b/helpers/DATA/firefox/branding/configure.sh
index 5cb25e4367820a21464684815ff926331e44ca3a..fc87159686fa7fa1564ab79b1370e958f6409d76 100644
--- a/helpers/DATA/firefox/branding/configure.sh
+++ b/helpers/DATA/firefox/branding/configure.sh
@@ -2,4 +2,4 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-MOZ_APP_DISPLAYNAME=MozillaDeveloperPreview
+MOZ_APP_DISPLAYNAME=Abrowser
diff --git a/helpers/DATA/firefox/branding/content/Makefile.in b/helpers/DATA/firefox/branding/content/Makefile.in
index 2a0a285826c4e715809dc241d5a92bb62e24368e..2d17f36dae63a072bbe5716f6ea0a7144d55e4a9 100644
--- a/helpers/DATA/firefox/branding/content/Makefile.in
+++ b/helpers/DATA/firefox/branding/content/Makefile.in
@@ -5,18 +5,9 @@
 # Branding Makefile
 #  - jars chrome artwork
 
-DEPTH = @DEPTH@
-topsrcdir = @top_srcdir@
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
 # resources needed for the metro tile interface
 ifeq ($(MOZ_WIDGET_TOOLKIT) $(DIST_SUBDIR),windows metro)
 TILE_FILES := $(wildcard $(srcdir)/VisualElements*)
 TILE_DEST := $(DIST)/bin/tileresources
 INSTALL_TARGETS += TILE
 endif
-
-include $(topsrcdir)/config/rules.mk
diff --git a/helpers/DATA/firefox/branding/content/VisualElements_logo.png b/helpers/DATA/firefox/branding/content/VisualElements_logo.png
index 2209c889a5ac31e347ab54fa5542be82574a0b54..7f8f5b9d69e2378a5933d376ff5b09ec54a5945d 100644
Binary files a/helpers/DATA/firefox/branding/content/VisualElements_logo.png and b/helpers/DATA/firefox/branding/content/VisualElements_logo.png differ
diff --git a/helpers/DATA/firefox/branding/content/VisualElements_smalllogo.png b/helpers/DATA/firefox/branding/content/VisualElements_smalllogo.png
index 0ec011009ac91f6b1f419126b391e0cc1d4c20a4..8f60ca02a1e3c385170bed3243a922433ddc4841 100644
Binary files a/helpers/DATA/firefox/branding/content/VisualElements_smalllogo.png and b/helpers/DATA/firefox/branding/content/VisualElements_smalllogo.png differ
diff --git a/helpers/DATA/firefox/branding/content/VisualElements_splashscreen.png b/helpers/DATA/firefox/branding/content/VisualElements_splashscreen.png
index a5c99928dc14ed0bbe476a260eb5d153d46bd05e..50cf4b7f637a99ec66c07b5c646d4a3ecaaa278f 100644
Binary files a/helpers/DATA/firefox/branding/content/VisualElements_splashscreen.png and b/helpers/DATA/firefox/branding/content/VisualElements_splashscreen.png differ
diff --git a/helpers/DATA/firefox/branding/content/about-background.png b/helpers/DATA/firefox/branding/content/about-background.png
index fc101ba731ad8dbdddda8fef548d05604b4f5175..70eb8dafdc8ecd10fd8e72df102f07f0d1736dd0 100644
Binary files a/helpers/DATA/firefox/branding/content/about-background.png and b/helpers/DATA/firefox/branding/content/about-background.png differ
diff --git a/helpers/DATA/firefox/branding/content/about-logo.png b/helpers/DATA/firefox/branding/content/about-logo.png
index 623b7b32de75284cb711578354ad1ad13652877b..de2af008a99e2b8f063a30a1a4a852efb7e1d6f4 100644
Binary files a/helpers/DATA/firefox/branding/content/about-logo.png and b/helpers/DATA/firefox/branding/content/about-logo.png differ
diff --git a/helpers/DATA/firefox/branding/content/about-logo@2x.png b/helpers/DATA/firefox/branding/content/about-logo@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..3526eda54d49ace60ec38c6329bf0c0dfc0b4b86
Binary files /dev/null and b/helpers/DATA/firefox/branding/content/about-logo@2x.png differ
diff --git a/helpers/DATA/firefox/branding/content/about-wordmark.png b/helpers/DATA/firefox/branding/content/about-wordmark.png
deleted file mode 100644
index 4a8bcdc85a6a9c3509964bbc5293ca96ebf89128..0000000000000000000000000000000000000000
Binary files a/helpers/DATA/firefox/branding/content/about-wordmark.png and /dev/null differ
diff --git a/helpers/DATA/firefox/branding/content/about-wordmark.svg b/helpers/DATA/firefox/branding/content/about-wordmark.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b3ccd70cf0febd8064408673bc99052b805583be
--- /dev/null
+++ b/helpers/DATA/firefox/branding/content/about-wordmark.svg
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="aboutWordmark"
+   x="0px"
+   y="0px"
+   width="130px"
+   height="38px"
+   viewBox="0 0 130 38"
+   xml:space="preserve"
+   inkscape:version="0.48.3.1 r9886"
+   sodipodi:docname="about-wordmark.svg"><metadata
+   id="metadata9"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+   id="defs7" /><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1364"
+   inkscape:window-height="698"
+   id="namedview5"
+   showgrid="false"
+   inkscape:zoom="15.487971"
+   inkscape:cx="85.460639"
+   inkscape:cy="13.895176"
+   inkscape:window-x="0"
+   inkscape:window-y="0"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="aboutWordmark" />
+
+  
+	
+<text
+   xml:space="preserve"
+   style="font-size:28.27791785999999874px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
+   x="0.4501974"
+   y="37.289883"
+   id="text2986"
+   sodipodi:linespacing="125%"><tspan
+     sodipodi:role="line"
+     id="tspan2988"
+     x="0.4501974"
+     y="37.289883"
+     style="font-weight:bold;-inkscape-font-specification:Sans Bold;fill:#ffffff;fill-opacity:1">Abrowser</tspan></text>
+
+</svg>
\ No newline at end of file
diff --git a/helpers/DATA/firefox/branding/content/aboutDialog.css b/helpers/DATA/firefox/branding/content/aboutDialog.css
index 1113fd1f2967ee298579113deb5d6998748617a9..4c2a7b603e2f8b3cf911d65105db9aeefd01753e 100644
--- a/helpers/DATA/firefox/branding/content/aboutDialog.css
+++ b/helpers/DATA/firefox/branding/content/aboutDialog.css
@@ -11,6 +11,7 @@
 
 .text-link {
   color: #fff !important;
+  text-decoration: underline;
 }
 
 #rightBox {
diff --git a/helpers/DATA/firefox/branding/content/icon48.png b/helpers/DATA/firefox/branding/content/icon48.png
index c648f7299ddb65485444c8e5da7ab61331f2358d..5fc7861e531ebbde0174266d9b001059667ddd39 100644
Binary files a/helpers/DATA/firefox/branding/content/icon48.png and b/helpers/DATA/firefox/branding/content/icon48.png differ
diff --git a/helpers/DATA/firefox/branding/content/icon64.png b/helpers/DATA/firefox/branding/content/icon64.png
index ad1dd7f2fedcde9e21f2904c9f2835c28826c112..83f7016bcb756ff8e26f96c4c10a5653fa28538c 100644
Binary files a/helpers/DATA/firefox/branding/content/icon64.png and b/helpers/DATA/firefox/branding/content/icon64.png differ
diff --git a/helpers/DATA/firefox/branding/content/identity-icons-brand.png b/helpers/DATA/firefox/branding/content/identity-icons-brand.png
new file mode 100644
index 0000000000000000000000000000000000000000..feba1607a9bb7fa8a5be6f335cdeb32fc3e70636
Binary files /dev/null and b/helpers/DATA/firefox/branding/content/identity-icons-brand.png differ
diff --git a/helpers/DATA/firefox/branding/content/identity-icons-brand@2x.png b/helpers/DATA/firefox/branding/content/identity-icons-brand@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b2d6bc66f21ff97506d6f09497049c5af18e4ab
Binary files /dev/null and b/helpers/DATA/firefox/branding/content/identity-icons-brand@2x.png differ
diff --git a/helpers/DATA/firefox/branding/content/jar.mn b/helpers/DATA/firefox/branding/content/jar.mn
index abe651b98c80fef493aff4fc4b221bc61993657c..dc07b3d8f6a44e8cd1937fdec85154ad0f369128 100644
--- a/helpers/DATA/firefox/branding/content/jar.mn
+++ b/helpers/DATA/firefox/branding/content/jar.mn
@@ -7,9 +7,21 @@ browser.jar:
   content/branding/about.png                     (about.png)
   content/branding/about-background.png          (about-background.png)
   content/branding/about-logo.png                (about-logo.png)
-  content/branding/about-wordmark.png            (about-wordmark.png)
+  content/branding/about-logo@2x.png             (about-logo@2x.png)
+  content/branding/about-wordmark.svg            (about-wordmark.svg)
   content/branding/icon48.png                    (icon48.png)
   content/branding/icon64.png                    (icon64.png)
   content/branding/icon16.png                    (../default16.png)
   content/branding/icon32.png                    (../default32.png)
+  content/branding/icon128.png                   (../mozicon128.png)
+  content/branding/identity-icons-brand.png      (identity-icons-brand.png)
+  content/branding/identity-icons-brand@2x.png   (identity-icons-brand@2x.png)
   content/branding/aboutDialog.css               (aboutDialog.css)
+#ifdef MOZ_METRO
+  content/branding/metro-about.css               (metro-about.css)
+  content/branding/metro-about-footer.png        (metro-about-footer.png)
+  content/branding/metro-about-wordmark.png      (metro-about-wordmark.png)
+  content/branding/metro_firstrun_logo.png       (metro_firstrun_logo.png)
+  content/branding/metro_firstrun_logo@1.4x.png  (metro_firstrun_logo@1.4x.png)
+  content/branding/metro_firstrun_logo@1.8x.png  (metro_firstrun_logo@1.8x.png)
+#endif
diff --git a/helpers/DATA/firefox/branding/content/metro-about-footer.png b/helpers/DATA/firefox/branding/content/metro-about-footer.png
new file mode 100644
index 0000000000000000000000000000000000000000..8e507f174085347b918c8ac422374613713593be
Binary files /dev/null and b/helpers/DATA/firefox/branding/content/metro-about-footer.png differ
diff --git a/helpers/DATA/firefox/branding/content/metro-about-wordmark.png b/helpers/DATA/firefox/branding/content/metro-about-wordmark.png
new file mode 100644
index 0000000000000000000000000000000000000000..8b518960a4aab83dd57ab998eed2f5f89370ed69
Binary files /dev/null and b/helpers/DATA/firefox/branding/content/metro-about-wordmark.png differ
diff --git a/helpers/DATA/firefox/branding/content/metro-about.css b/helpers/DATA/firefox/branding/content/metro-about.css
new file mode 100644
index 0000000000000000000000000000000000000000..ae59ca779e3c1564132bf1ac3bce9b86559fb2df
--- /dev/null
+++ b/helpers/DATA/firefox/branding/content/metro-about.css
@@ -0,0 +1,14 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#about-flyoutpanel {
+  background-color: #002147;
+  color: white;
+}
+
+#about-policy-label:hover,
+#about-policy-label:active {
+  background: #0a111c;
+}
+
diff --git a/helpers/DATA/firefox/branding/content/metro_firstrun_logo.png b/helpers/DATA/firefox/branding/content/metro_firstrun_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..d54fb00af8b3ce510acb0af9e4339a28cbbfb8b8
Binary files /dev/null and b/helpers/DATA/firefox/branding/content/metro_firstrun_logo.png differ
diff --git a/helpers/DATA/firefox/branding/content/metro_firstrun_logo@1.4x.png b/helpers/DATA/firefox/branding/content/metro_firstrun_logo@1.4x.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2a2fffc7d4192bb4ea7dc668ab5d0a2a0eb1c75
Binary files /dev/null and b/helpers/DATA/firefox/branding/content/metro_firstrun_logo@1.4x.png differ
diff --git a/helpers/DATA/firefox/branding/content/metro_firstrun_logo@1.8x.png b/helpers/DATA/firefox/branding/content/metro_firstrun_logo@1.8x.png
new file mode 100644
index 0000000000000000000000000000000000000000..2d5297f4c0bd942bbd6aa7ef1c330ae285df22de
Binary files /dev/null and b/helpers/DATA/firefox/branding/content/metro_firstrun_logo@1.8x.png differ
diff --git a/helpers/DATA/firefox/branding/content/moz.build b/helpers/DATA/firefox/branding/content/moz.build
index 58ce5e273390f0fb4bbf5a0a64e29e8bf571e490..c97072bba2df34657450df22bbac2d8812f92571 100644
--- a/helpers/DATA/firefox/branding/content/moz.build
+++ b/helpers/DATA/firefox/branding/content/moz.build
@@ -1,5 +1,7 @@
+# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+JAR_MANIFESTS += ['jar.mn']
\ No newline at end of file
diff --git a/helpers/DATA/firefox/branding/default128.png b/helpers/DATA/firefox/branding/default128.png
deleted file mode 100644
index 09547088a1a92670f45c4ae7b145a9ca2ebc4051..0000000000000000000000000000000000000000
Binary files a/helpers/DATA/firefox/branding/default128.png and /dev/null differ
diff --git a/helpers/DATA/firefox/branding/default22.png b/helpers/DATA/firefox/branding/default22.png
deleted file mode 100644
index b1ee5e362d9cc9048ce16e0dbbeb4b4b62fcaa88..0000000000000000000000000000000000000000
Binary files a/helpers/DATA/firefox/branding/default22.png and /dev/null differ
diff --git a/helpers/DATA/firefox/branding/default24.png b/helpers/DATA/firefox/branding/default24.png
deleted file mode 100644
index 6082f179aeb0e5f50aa892c11d979537470698bb..0000000000000000000000000000000000000000
Binary files a/helpers/DATA/firefox/branding/default24.png and /dev/null differ
diff --git a/helpers/DATA/firefox/branding/default256.png b/helpers/DATA/firefox/branding/default256.png
deleted file mode 100644
index 4dbec8c32fec0e216b9ca06b261e6f634079190d..0000000000000000000000000000000000000000
Binary files a/helpers/DATA/firefox/branding/default256.png and /dev/null differ
diff --git a/helpers/DATA/firefox/branding/disk.icns b/helpers/DATA/firefox/branding/disk.icns
index e97e490585226e69da9cfff20b3b4db2384d963e..718f1a3d3c6a8784d5ac7f7eea07b614a2e6365d 100644
Binary files a/helpers/DATA/firefox/branding/disk.icns and b/helpers/DATA/firefox/branding/disk.icns differ
diff --git a/helpers/DATA/firefox/branding/document.icns b/helpers/DATA/firefox/branding/document.icns
index f5af7a70fc77eec683544b9b1d7c18c05656e499..ff419f2f7b073e56bb27afece00dc908ed847a14 100644
Binary files a/helpers/DATA/firefox/branding/document.icns and b/helpers/DATA/firefox/branding/document.icns differ
diff --git a/helpers/DATA/firefox/branding/document.ico b/helpers/DATA/firefox/branding/document.ico
index 31111632477422dd3c21256364fdcaf6385b20e8..584a0a1bf0acb2828d6676a319174cb198328b2c 100644
Binary files a/helpers/DATA/firefox/branding/document.ico and b/helpers/DATA/firefox/branding/document.ico differ
diff --git a/helpers/DATA/firefox/branding/document.png b/helpers/DATA/firefox/branding/document.png
deleted file mode 100644
index be4a022e668b597a653d4a0024ac1bc2391fab0b..0000000000000000000000000000000000000000
Binary files a/helpers/DATA/firefox/branding/document.png and /dev/null differ
diff --git a/helpers/DATA/firefox/branding/dsstore b/helpers/DATA/firefox/branding/dsstore
index bbba9ecce0d455ff3d5450fc965c8bd9571b4270..2d11482a750465312e1fa0f6957ba15992be0643 100644
Binary files a/helpers/DATA/firefox/branding/dsstore and b/helpers/DATA/firefox/branding/dsstore differ
diff --git a/helpers/DATA/firefox/branding/locales/Makefile.in b/helpers/DATA/firefox/branding/locales/Makefile.in
index d199ba23528ebca579a00318a0e911a7a1a34e45..82f614ecea2921246603e37f88571ef425e37473 100644
--- a/helpers/DATA/firefox/branding/locales/Makefile.in
+++ b/helpers/DATA/firefox/branding/locales/Makefile.in
@@ -2,14 +2,4 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-DEPTH          = @DEPTH@
-topsrcdir      = @top_srcdir@
-srcdir         = @srcdir@
-VPATH          = @srcdir@
-relativesrcdir = @relativesrcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-DEFINES += -DAB_CD=$(AB_CD) -DMOZ_DISTRIBUTION_ID_UNQUOTED=$(MOZ_DISTRIBUTION_ID)
-
-include $(topsrcdir)/config/rules.mk
+DEFINES += -DAB_CD=$(AB_CD)
diff --git a/helpers/DATA/firefox/branding/locales/browserconfig.properties b/helpers/DATA/firefox/branding/locales/browserconfig.properties
index 2cfd1eae374554ec8a3096a4fd2a4886487cde3b..06cefece3b1e1fa17a3e7f3d187f751998f21178 100644
--- a/helpers/DATA/firefox/branding/locales/browserconfig.properties
+++ b/helpers/DATA/firefox/branding/locales/browserconfig.properties
@@ -3,4 +3,4 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # Do NOT localize or otherwise change these values
-browser.startup.homepage=http://trisquel.info
+browser.startup.homepage=about:home
diff --git a/helpers/DATA/firefox/branding/locales/en-US/brand.dtd b/helpers/DATA/firefox/branding/locales/en-US/brand.dtd
index c2e72f467bf72a1e78a84e7a8ea15bded4a99866..b1b0eb70ad3e312708c6ca060c366d19bb013d32 100644
--- a/helpers/DATA/firefox/branding/locales/en-US/brand.dtd
+++ b/helpers/DATA/firefox/branding/locales/en-US/brand.dtd
@@ -5,4 +5,4 @@
 <!ENTITY  brandShortName        "Abrowser">
 <!ENTITY  brandFullName         "Abrowser">
 <!ENTITY  vendorShortName       "Trisquel">
-<!ENTITY  trademarkInfo.part1   " ">
+<!ENTITY  trademarkInfo.part1   "">
diff --git a/helpers/DATA/firefox/branding/locales/en-US/brand.properties b/helpers/DATA/firefox/branding/locales/en-US/brand.properties
index 7f82b88a5c3241cf67d7dcbb6b90cc64f4c9b353..a24cc636d7f6bd5c9da02e925231991bf08cc358 100644
--- a/helpers/DATA/firefox/branding/locales/en-US/brand.properties
+++ b/helpers/DATA/firefox/branding/locales/en-US/brand.properties
@@ -6,4 +6,10 @@ brandShortName=Abrowser
 brandFullName=Abrowser
 vendorShortName=Trisquel
 
+homePageSingleStartMain=Abrowser Start, a fast home page with built-in search
+homePageImport=Import your home page from %S
+
+homePageMigrationPageTitle=Home Page Selection
+homePageMigrationDescription=Please select the home page you wish to use:
+
 syncBrandShortName=Sync
diff --git a/helpers/DATA/firefox/branding/locales/moz.build b/helpers/DATA/firefox/branding/locales/moz.build
index 58ce5e273390f0fb4bbf5a0a64e29e8bf571e490..3a54c0cd24e988ca7085ebad048a5e5ace5900dd 100644
--- a/helpers/DATA/firefox/branding/locales/moz.build
+++ b/helpers/DATA/firefox/branding/locales/moz.build
@@ -1,5 +1,9 @@
+# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+DEFINES['MOZ_DISTRIBUTION_ID_UNQUOTED'] = CONFIG['MOZ_DISTRIBUTION_ID']
+
+JAR_MANIFESTS += ['jar.mn']
\ No newline at end of file
diff --git a/helpers/DATA/firefox/branding/moz.build b/helpers/DATA/firefox/branding/moz.build
index f179404cbd35421896f9d6aaf5ebc4911ff5b56e..3e2f88f1e364e6cb3108886aae55251694cea452 100644
--- a/helpers/DATA/firefox/branding/moz.build
+++ b/helpers/DATA/firefox/branding/moz.build
@@ -1,3 +1,4 @@
+# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -5,3 +6,5 @@
 
 DIRS += ['content', 'locales']
 
+DIST_SUBDIR = 'browser'
+export('DIST_SUBDIR')
diff --git a/helpers/DATA/firefox/branding/particles.bmp b/helpers/DATA/firefox/branding/particles.bmp
index 12578c671305c80273a02aa639804f844a84e8e5..ab74ce04716e6f5d02e80c9eed297c4c939d83d6 100644
Binary files a/helpers/DATA/firefox/branding/particles.bmp and b/helpers/DATA/firefox/branding/particles.bmp differ
diff --git a/helpers/DATA/firefox/branding/pencil-rtl.bmp b/helpers/DATA/firefox/branding/pencil-rtl.bmp
index 29205113a98d3921827ff06b66ea1626f28cca59..e50d92db7c91275bbb90e07e263970ce9a6e1479 100644
Binary files a/helpers/DATA/firefox/branding/pencil-rtl.bmp and b/helpers/DATA/firefox/branding/pencil-rtl.bmp differ
diff --git a/helpers/DATA/firefox/branding/pencil.bmp b/helpers/DATA/firefox/branding/pencil.bmp
index ef65392b7e9beb9c1864886c447c7fc1ae89c110..252c10f417c79fcb674e6b8cbccb70da82536b3a 100644
Binary files a/helpers/DATA/firefox/branding/pencil.bmp and b/helpers/DATA/firefox/branding/pencil.bmp differ
diff --git a/helpers/DATA/firefox/branding/splash.bmp b/helpers/DATA/firefox/branding/splash.bmp
deleted file mode 100644
index d2afefdf82ea339497d69adeeae4ae9d3f25e467..0000000000000000000000000000000000000000
Binary files a/helpers/DATA/firefox/branding/splash.bmp and /dev/null differ
diff --git a/helpers/DATA/firefox/branding/wizHeader.bmp b/helpers/DATA/firefox/branding/wizHeader.bmp
index 0800023fe07c289a054ec3a4953df3efe02d5ac5..f67b452391102bda8c04680fa086b5fae0978ab7 100644
Binary files a/helpers/DATA/firefox/branding/wizHeader.bmp and b/helpers/DATA/firefox/branding/wizHeader.bmp differ
diff --git a/helpers/DATA/firefox/branding/wizHeaderRTL.bmp b/helpers/DATA/firefox/branding/wizHeaderRTL.bmp
index 03d984f4a493c61a3e1b920f98122279377e567d..7c57e461ba20da1298a96ab071b7ddbaeee87e60 100644
Binary files a/helpers/DATA/firefox/branding/wizHeaderRTL.bmp and b/helpers/DATA/firefox/branding/wizHeaderRTL.bmp differ
diff --git a/helpers/DATA/firefox/branding/wizWatermark.bmp b/helpers/DATA/firefox/branding/wizWatermark.bmp
index c54ee6a15e946a5e4c07b0323df7c78ff026b9ad..05f0e7f9b23113135be4568508f07279f1a6e721 100644
Binary files a/helpers/DATA/firefox/branding/wizWatermark.bmp and b/helpers/DATA/firefox/branding/wizWatermark.bmp differ
diff --git a/helpers/DATA/firefox/enable-js-options.patch b/helpers/DATA/firefox/enable-js-options.patch
new file mode 100644
index 0000000000000000000000000000000000000000..9cca7a9c9e0e3132959892207c8e9e5eddd7b190
--- /dev/null
+++ b/helpers/DATA/firefox/enable-js-options.patch
@@ -0,0 +1,310 @@
+# HG changeset patch
+# User Gijs Kruitbosch <gijskruitbosch@gmail.com>
+# Date 1365155574 -7200
+# Node ID 444b9baa31d6065d37edbd61a2dcb892c989e0e2
+# Parent  99121d529b47ec285d61f64988335e60ac120cf7
+Bug 851702 - Remove JS load and advanced preferences from the UI
+
+diff --git a/browser/components/preferences/advanced-scripts.xul b/browser/components/preferences/advanced-scripts.xul
+deleted file mode 100644
+--- a/browser/components/preferences/advanced-scripts.xul
++++ /dev/null
+@@ -1,46 +0,0 @@
+-<?xml version="1.0"?>
+-
+-<!-- -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -->
+-<!-- This Source Code Form is subject to the terms of the Mozilla Public
+-   - License, v. 2.0. If a copy of the MPL was not distributed with this
+-   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+-
+-<!DOCTYPE prefwindow SYSTEM "chrome://browser/locale/preferences/advanced-scripts.dtd">
+-
+-<?xml-stylesheet href="chrome://global/skin/"?>
+-
+-<prefwindow id="AdvancedJSDialog" type="child"
+-            xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+-            title="&advancedJSDialog.title;"
+-            dlgbuttons="accept,cancel,help"
+-            ondialoghelp="openPrefsHelp()">
+-
+-  <script type="application/javascript" src="chrome://browser/content/utilityOverlay.js"/>
+-
+-  <prefpane id="AdvancedJSDialogPane"
+-            helpTopic="prefs-advanced-javascript">
+-
+-    <preferences>
+-     <preference id="dom.event.contextmenu.enabled"  name="dom.event.contextmenu.enabled"  type="bool"/>
+-     <preference id="dom.disable_window_move_resize" name="dom.disable_window_move_resize" type="bool" inverted="true"/>
+-     <preference id="dom.disable_window_flip"        name="dom.disable_window_flip"        type="bool" inverted="true"/>
+-    </preferences>
+-    
+-    <script type="application/javascript" src="chrome://browser/content/preferences/advanced-scripts.js"/>
+-
+-    <stringbundle id="preferencesBundle" src="chrome://browser/locale/preferences/preferences.properties"/>
+-
+-    <description value="&allowScripts.label;"/>
+-
+-    <checkbox id="moveResizePopupWindows" label="&moveResizePopupWindows.label;"
+-              accesskey="&moveResizePopupWindows.accesskey;"
+-              preference="dom.disable_window_move_resize"/>
+-    <checkbox id="raiseLowerWindows" label="&raiseLowerWindows.label;" 
+-              accesskey="&raiseLowerWindows.accesskey;"
+-              preference="dom.disable_window_flip"/>
+-    <checkbox id="disableContextMenus" label="&disableContextMenus.label;" 
+-              accesskey="&disableContextMenus.accesskey;"
+-              preference="dom.event.contextmenu.enabled"/>
+-
+-  </prefpane>
+-</prefwindow>
+diff --git a/browser/components/preferences/content.xul b/browser/components/preferences/content.xul
+--- a/browser/components/preferences/content.xul
++++ b/browser/components/preferences/content.xul
+@@ -17,23 +17,18 @@
+ 
+   <prefpane id="paneContent" 
+             onpaneload="gContentPane.init();"
+             helpTopic="prefs-content">
+ 
+     <preferences id="contentPreferences">
+       <!--XXX buttons prefs -->
+ 
+-      <!-- POPUPS, JAVASCRIPT -->
++      <!-- POPUPS -->
+       <preference id="dom.disable_open_during_load"   name="dom.disable_open_during_load"   type="bool"/>
+-      <preference id="javascript.enabled"             name="javascript.enabled"             type="bool"/>
+-
+-      <preference id="pref.advanced.javascript.disable_button.advanced"
+-                  name="pref.advanced.javascript.disable_button.advanced"
+-                  type="bool"/>
+ 
+       <!-- FONTS -->
+       <preference id="font.language.group"
+                   name="font.language.group"
+                   type="wstring"
+                   onchange="gContentPane._rebuildFonts();"/>
+     </preferences>
+     
+@@ -56,30 +51,16 @@
+                         label="&blockPopups.label;" accesskey="&blockPopups.accesskey;"
+                         onsyncfrompreference="return gContentPane.updateButtons('popupPolicyButton', 
+                                                                             'dom.disable_open_during_load');"/>
+             </vbox>
+             <button id="popupPolicyButton" label="&popupExceptions.label;"
+                     oncommand="gContentPane.showPopupExceptions();"
+                     accesskey="&popupExceptions.accesskey;"/>
+           </row>
+-          <row id="enableJavaScriptRow">
+-            <vbox align="start">
+-              <checkbox id="enableJavaScript" preference="javascript.enabled"
+-                        label="&enableJavaScript.label;" accesskey="&enableJavaScript.accesskey;"
+-                        onsyncfrompreference="return gContentPane.updateButtons('advancedJSButton', 
+-                                                                            'javascript.enabled');"/>
+-            </vbox>
+-            <vbox>
+-              <button id="advancedJSButton" label="&advancedJS.label;"
+-                      accesskey="&advancedJS.accesskey;"
+-                      oncommand="gContentPane.showAdvancedJS();"
+-                      preference="pref.advanced.javascript.disable_button.advanced"/>
+-            </vbox>
+-          </row>
+         </rows>
+       </grid>
+     </groupbox>
+ 
+     <!-- Fonts and Colors -->
+     <groupbox id="fontsGroup">
+       <caption label="&fontsAndColors.label;"/>
+ 
+diff --git a/browser/components/preferences/in-content/content.xul b/browser/components/preferences/in-content/content.xul
+--- a/browser/components/preferences/in-content/content.xul
++++ b/browser/components/preferences/in-content/content.xul
+@@ -1,24 +1,18 @@
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this file,
+    - You can obtain one at http://mozilla.org/MPL/2.0/.  -->
+ 
+ <preferences id="contentPreferences">
+ 
+-  <!-- Popups and JavaScript -->
++  <!-- Popups -->
+   <preference id="dom.disable_open_during_load"
+               name="dom.disable_open_during_load"
+               type="bool"/>
+-  <preference id="javascript.enabled"
+-              name="javascript.enabled"
+-              type="bool"/>
+-  <preference id="pref.advanced.javascript.disable_button.advanced"
+-              name="pref.advanced.javascript.disable_button.advanced"
+-              type="bool"/>
+ 
+   <!-- Fonts -->
+   <preference id="font.language.group"
+               name="font.language.group"
+               type="wstring"
+               onchange="gContentPane._rebuildFonts();"/>
+ </preferences>
+ 
+@@ -45,30 +39,16 @@
+                     label="&blockPopups.label;" accesskey="&blockPopups.accesskey;"
+                     onsyncfrompreference="return gContentPane.updateButtons('popupPolicyButton',
+                                                                         'dom.disable_open_during_load');"/>
+         </vbox>
+         <button id="popupPolicyButton" label="&popupExceptions.label;"
+                 oncommand="gContentPane.showPopupExceptions();"
+                 accesskey="&popupExceptions.accesskey;"/>
+       </row>
+-      <row id="enableJavaScriptRow">
+-        <vbox align="start">
+-          <checkbox id="enableJavaScript" preference="javascript.enabled"
+-                    label="&enableJavaScript.label;" accesskey="&enableJavaScript.accesskey;"
+-                    onsyncfrompreference="return gContentPane.updateButtons('advancedJSButton',
+-                                                                        'javascript.enabled');"/>
+-        </vbox>
+-        <vbox>
+-          <button id="advancedJSButton" label="&advancedJS.label;"
+-                  accesskey="&advancedJS.accesskey;"
+-                  oncommand="gContentPane.showAdvancedJS();"
+-                  preference="pref.advanced.javascript.disable_button.advanced"/>
+-        </vbox>
+-      </row>
+     </rows>
+   </grid>
+ </groupbox>
+ 
+ <!-- Fonts and Colors -->
+ <groupbox id="fontsGroup" data-category="paneContent" hidden="true">
+   <caption label="&fontsAndColors.label;"/>
+ 
+diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn
+--- a/browser/components/preferences/jar.mn
++++ b/browser/components/preferences/jar.mn
+@@ -4,17 +4,16 @@
+ 
+ browser.jar:
+     content/browser/preferences/aboutPermissions.xul
+     content/browser/preferences/aboutPermissions.js
+     content/browser/preferences/aboutPermissions.css
+     content/browser/preferences/aboutPermissions.xml
+ *   content/browser/preferences/advanced.xul
+ *   content/browser/preferences/advanced.js
+-    content/browser/preferences/advanced-scripts.xul
+     content/browser/preferences/applications.xul
+ *   content/browser/preferences/applications.js
+     content/browser/preferences/applicationManager.xul
+ *   content/browser/preferences/applicationManager.js
+ *   content/browser/preferences/colors.xul
+ *   content/browser/preferences/cookies.xul
+     content/browser/preferences/cookies.js
+     content/browser/preferences/content.xul
+diff --git a/browser/locales/en-US/chrome/browser/preferences/advanced-scripts.dtd b/browser/locales/en-US/chrome/browser/preferences/advanced-scripts.dtd
+deleted file mode 100644
+--- a/browser/locales/en-US/chrome/browser/preferences/advanced-scripts.dtd
++++ /dev/null
+@@ -1,15 +0,0 @@
+-<!-- This Source Code Form is subject to the terms of the Mozilla Public
+-   - License, v. 2.0. If a copy of the MPL was not distributed with this
+-   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+-
+-<!ENTITY advancedJSDialog.title         "Advanced JavaScript Settings">
+-<!ENTITY window.width                   "37em">
+-
+-<!ENTITY allowScripts.label             "Allow scripts to:">
+-
+-<!ENTITY moveResizePopupWindows.label     "Move or resize popup windows">
+-<!ENTITY moveResizePopupWindows.accesskey "M">
+-<!ENTITY raiseLowerWindows.label        "Raise or lower windows">
+-<!ENTITY raiseLowerWindows.accesskey    "R">
+-<!ENTITY disableContextMenus.label      "Disable or replace context menus">
+-<!ENTITY disableContextMenus.accesskey  "D">
+diff --git a/browser/locales/en-US/chrome/browser/preferences/content.dtd b/browser/locales/en-US/chrome/browser/preferences/content.dtd
+--- a/browser/locales/en-US/chrome/browser/preferences/content.dtd
++++ b/browser/locales/en-US/chrome/browser/preferences/content.dtd
+@@ -2,25 +2,16 @@
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <!ENTITY  blockPopups.label           "Block pop-up windows">
+ <!ENTITY  blockPopups.accesskey       "B">
+ <!ENTITY  popupExceptions.label       "Exceptions…">
+ <!ENTITY  popupExceptions.accesskey   "E">
+ 
+-<!ENTITY  enableJavaScript.label      "Enable JavaScript">
+-<!ENTITY  enableJavaScript.accesskey  "J">
+-<!ENTITY  advancedJS.label            "Advanced…">
+-<!ENTITY  advancedJS.accesskey        "v">
+-
+-<!ENTITY  enableJava.label            "Enable Java">
+-<!ENTITY  enableJava.accesskey        "n">
+-
+-
+ <!ENTITY  fontsAndColors.label        "Fonts &amp; Colors">
+ 
+ <!ENTITY  defaultFont.label           "Default font:">
+ <!ENTITY  defaultFont.accesskey       "D">
+ <!ENTITY  defaultSize.label           "Size:">
+ <!ENTITY  defaultSize.accesskey       "S">
+ 
+ <!ENTITY  advancedFonts.label         "Advanced…">
+diff --git a/browser/locales/jar.mn b/browser/locales/jar.mn
+--- a/browser/locales/jar.mn
++++ b/browser/locales/jar.mn
+@@ -81,17 +81,16 @@
+ #endif
+     locale/browser/feeds/subscribe.dtd              (%chrome/browser/feeds/subscribe.dtd)
+     locale/browser/feeds/subscribe.properties       (%chrome/browser/feeds/subscribe.properties)
+     locale/browser/migration/migration.dtd         (%chrome/browser/migration/migration.dtd)
+     locale/browser/migration/migration.properties  (%chrome/browser/migration/migration.properties)
+     locale/browser/preferences/aboutPermissions.dtd          (%chrome/browser/preferences/aboutPermissions.dtd)
+     locale/browser/preferences/aboutPermissions.properties   (%chrome/browser/preferences/aboutPermissions.properties)
+     locale/browser/preferences/advanced.dtd           (%chrome/browser/preferences/advanced.dtd)
+-    locale/browser/preferences/advanced-scripts.dtd   (%chrome/browser/preferences/advanced-scripts.dtd)
+     locale/browser/preferences/applicationManager.dtd        (%chrome/browser/preferences/applicationManager.dtd)
+     locale/browser/preferences/applicationManager.properties (%chrome/browser/preferences/applicationManager.properties)
+     locale/browser/preferences/colors.dtd             (%chrome/browser/preferences/colors.dtd)
+     locale/browser/preferences/cookies.dtd            (%chrome/browser/preferences/cookies.dtd)
+     locale/browser/preferences/content.dtd            (%chrome/browser/preferences/content.dtd)
+     locale/browser/preferences/connection.dtd         (%chrome/browser/preferences/connection.dtd)
+     locale/browser/preferences/applications.dtd       (%chrome/browser/preferences/applications.dtd)
+     locale/browser/preferences/fonts.dtd              (%chrome/browser/preferences/fonts.dtd)
+--- a/browser/components/preferences/content.js  2014-04-28 01:52:01.000000000 +0200
++++ b/browser/components/preferences/content.js       2014-05-07 17:02:34.000000000 +0200
+@@ -57,18 +57,7 @@
+                                         "chrome://browser/content/preferences/permissions.xul",
+                                         "", params);
+   },
+-  
+-  // JAVASCRIPT
+ 
+-  /**
+-   * Displays the advanced JavaScript preferences for enabling or disabling
+-   * various annoying behaviors.
+-   */
+-  showAdvancedJS: function ()
+-  {
+-    openDialog("chrome://browser/content/preferences/advanced-scripts.xul", 
+-               "Browser:AdvancedScripts", null); 
+-  },
+ 
+   // FONTS
+ 
+--- a/browser/components/preferences/in-content/content.js    2014-05-07 17:01:48.000000000 +0200
++++ b/browser/components/preferences/in-content/content.js       2014-04-28 01:52:01.000000000 +0200
+@@ -58,18 +58,6 @@
+                "Browser:Permissions", "resizable=yes", params);
+   },
+ 
+-  // JAVASCRIPT
+-
+-  /**
+-   * Displays the advanced JavaScript preferences for enabling or disabling
+-   * various annoying behaviors.
+-   */
+-  showAdvancedJS: function ()
+-  {
+-    openDialog("chrome://browser/content/preferences/advanced-scripts.xul", 
+-               "Browser:AdvancedScripts", null);  
+-  },
+-
+   // FONTS
+ 
+   /**
diff --git a/helpers/DATA/firefox/settings.js b/helpers/DATA/firefox/settings.js
index c74b12c0e517e382024129e4124abe5c90d0c892..fed5df10633eccf180892ba4675111d30f5e60f2 100644
--- a/helpers/DATA/firefox/settings.js
+++ b/helpers/DATA/firefox/settings.js
@@ -49,8 +49,8 @@ pref("general.useragent.compatMode.abrowser",true);
 
 // Startup pages
 pref ("browser.startup.page" , 3);
-//pref ("browser.startup.homepage" , "http://trisquel.info");
-//pref ("startup.homepage_welcome_url", "http://trisquel.info/welcome");
+pref ("browser.startup.homepage" , "http://trisquel.info");
+pref ("startup.homepage_welcome_url", "http://trisquel.info/welcome");
 //pref ("startup.homepage_override_url" , "http://trisquel.info/newbrowser");
 
 // Preferences for the Get Add-ons panel
@@ -59,6 +59,9 @@ pref ("extensions.getAddons.search.url", "http://trisquel.info");
 
 // Help URL
 pref ("app.support.baseURL", "http://trisquel.info/wiki/");
+pref ("browser.uitour.url", "http://trisquel.info/browser");
+pref ("plugins.update.url", "http://trisquel.info/browser");
+pref ("browser.customizemode.tip0.learnMoreUrl", "http://trisquel.info/browser");
 
 // Dictionary download preference
 pref("browser.dictionaries.download.url", "http://dictionaries.mozdev.org/");
diff --git a/helpers/make-firefox b/helpers/make-firefox
index c5d40303ced80e5ec5de313f43d03e5cd1f5e4ed..0aff29929bb4a808b9bd3f092342b362fb2f9022 100644
--- a/helpers/make-firefox
+++ b/helpers/make-firefox
@@ -17,12 +17,15 @@
 #    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 #
 
-VERSION=1
+VERSION=19
 
 . ./config
 
 rm debian/control
 
+# revert https://bug851702.bugzilla.mozilla.org/attachment.cgi?id=733785
+patch -p1 -R < $DATA/enable-js-options.patch
+
 # js settings
 cat $DATA/settings.js >> debian/vendor-firefox.js
 
@@ -30,23 +33,35 @@ cat $DATA/settings.js >> debian/vendor-firefox.js
 #sed 's/Depends: lsb-release,/Depends: lsb-release, xul-ext-ubufox,/' -i debian/control.in
 #sed 's/iceweasel,/iceweasel, firefox, icecat,/' -i debian/control.in
 
+
+sed '/mozilla.org\/legal/d' -i services/healthreport/healthreport-prefs.js
+cat << EOF >>services/healthreport/healthreport-prefs.js
+pref("datareporting.healthreport.infoURL", "https://trisquel.info/legal");
+EOF
+
+sed 's%https://www.mozilla.org/legal/privacy/%https://trisquel.info/legal%' -i ./modules/libpref/src/init/all.js ./browser/app/profile/firefox.js ./browser/base/content/aboutDialog.xul ./toolkit/content/aboutRights.xhtml
+
+#sed 's%https://www.mozilla.org/firefox/central/%https://trisquel.info/browser%' -i browser/base/content/browser-appmenu.inc
+
 # Enable gst support
 apt-get install -y --force-yes libgstreamermm-0.10-dev
 echo "ac_add_options --enable-gstreamer" >> debian/config/mozconfig.in
 
+sed 's/com.ubuntu/org.trisquel/' -i debian/config/mozconfig.in
+
 # Locale packages should provide firefox-locale-$LANG
 sed "s/Provides.*/Provides: firefox-locale-@LANGCODE@/" -i debian/control.langpacks
 
-# Remove extra firefox metapackages
-sed '/Package: firefox/,/It can be safely removed/d' -i debian/control.in
-
 # Remove Ubuntu bookmarks
 sed -i /ubuntu-bookmarks/d debian/patches/series
 rm debian/patches/ubuntu-bookmarks*
 
 #Unbrand url codes for google and amazon
-#rm debian/patches/ubuntu-codes*
-#sed /ubuntu-codes/d debian/patches/series.in -i
+find debian/searchplugins |grep google| xargs -i /bin/sed '/ubuntu/d; /channel/d' -i {}
+find debian/searchplugins |grep duck| xargs -i /bin/sed 's/canonical/trisquel/' -i {}
+find debian/searchplugins |grep amazon| xargs -i /bin/sed '/canoniccom/d;' -i {}
+
+replace "mozilla.com/plugincheck" "trisquel.info/browser" .
 
 # contact link
 sed 's_https://input.mozilla.org/feedback_https://trisquel.info/contact_' -i browser/base/content/utilityOverlay.js
@@ -63,37 +78,22 @@ app.distributor.channel = "trisquel"
 app.partner.ubuntu = "trisquel"
 EOF
 
-# speed up build process
-#sed 's/\(^MOZ_WANT_UNIT_TESTS.*\)1/\1 0/' -i debian/rules
-#sed 's/\(^MOZ_ENABLE_BREAKPAD.*\)1/\1 0/' -i debian/rules
-
-# Set release to unofficial
-sed '/MOZ_BUILD_OFFICIAL/d' debian/config/branch.mk -i
-echo 'MOZ_BUILD_OFFICIAL    = 0' >> debian/config/branch.mk
-#sed "s/release$/$CODENAME/" -i debian/rules
-
-#TARBALL=$(ls *.tar.bz2)
-#tar -jxf $TARBALL
-#rm $TARBALL
-#sed '1s/^/\nMOZ_APP_NAME\t\t:= abrowser/' -i debian/build/mozbuild.mk
 sed  "s/^MOZ_APP_NAME\t.*/MOZ_APP_NAME\t\t:= abrowser/;" debian/build/config.mk -i
 sed  "s/^MOZ_PKG_NAME\t.*/MOZ_PKG_NAME\t\t:= abrowser/;" debian/build/config.mk -i
 
-# Hack to avoid compilation to fail on 3.0x kernel
-#cp mozilla/security/coreconf/Linux2.6.mk mozilla/security/coreconf/Linux3.0.mk
-
 ############################################################################3
 ############################################################################3
 ############################################################################3
-sed -i s/abrowser/abrowser-old/ debian/control.in
 sed "s_^Maintainer.*_Maintainer: $DEBFULLNAME <$DEBEMAIL>_g" -i debian/control.in
 
 # Replace Firefox branding
 find -type d | grep firefox | xargs rename s/firefox/abrowser/
 find -type f | grep firefox | xargs rename s/firefox/abrowser/
+find -type f | grep Firefox | xargs rename s/Firefox/Abrowser/
 replace(){
 find $3 -type f |grep -v changelog |grep -v copyright | xargs -i sed -i s^"$1"^"$2"^g "{}"
 }
+replace "Mozilla Firefox" "Abrowser" .
 replace firefox abrowser .
 replace Firefox Abrowser .
 replace FIREFOX ABROWSER .
@@ -105,76 +105,36 @@ sed s/Trisquel/Mozilla/ python/compare-locales/setup.py -i
 replace "iceweasel, abrowser" "iceweasel, firefox" .
 replace "Replaces: abrowser" "Replaces: firefox" .
 #sed s/Ubuntu/Trisquel/g debian/rules -i
-sed s/ubuntu/trisquel/g debian/distribution.ini debian/config/mozconfig.in -i
+sed s/ubuntu/trisquel/g debian/distribution.ini -i
 sed 's/ubuntu_version/trisquel_version/; s/Ubuntu 10.10/Trisquel 4.0/; s/1010/40/' -i debian/abrowser.postinst.in
 
 # abrowser-dev should provide firefox-dev
 sed '/Package: @MOZ_PKG_NAME@-dev/,/Description:/ s/Provides:/Provides:firefox-dev, /' debian/control.in -i
 
-# Redirect feedback menu
-#sed s:input.mozilla.com/feedback:trisquel.info/contact: b2g/app/b2g.js -i
-
-# Make abrowser-locale-$lang provide firefox-locale-$lang
-#sed 's/Package:\(.*\)/Package:\1\nProvides: firefox-locale-@LANGCODE@/g' debian/control.langpacks* -i
-
 # Branding files
 rm browser/branding/* -rf
-cp -a $DATA/branding/ browser/branding/$CODENAME
+cp -a $DATA/branding/ browser/branding/official
 cat << EOF > debian/config/branch.mk
-CHANNEL                 = $CODENAME
+CHANNEL                 = release
 MOZ_WANT_UNIT_TESTS     = 0
-MOZ_BUILD_UNOFFICIAL    = 1
+# MOZ_BUILD_OFFICIAL    = 1
 MOZ_ENABLE_BREAKPAD     = 0
 
 MOZILLA_REPO = http://hg.mozilla.org/releases/mozilla-release
 L10N_REPO = http://hg.mozilla.org/releases/l10n/mozilla-release
 EOF
 
-#set default layout
-cat << EOF |patch -p1 -N -r /dev/null
---- mozilla/browser/base/content/browser.xul.old	2011-07-18 02:35:10.000000000 +0000
-+++ mozilla/browser/base/content/browser.xul	2011-07-18 02:40:51.000000000 +0000
-@@ -477,6 +477,7 @@
-              defaultset="menubar-items"
-              mode="icons" iconsize="small" defaulticonsize="small"
-              lockiconsize="true"
-+             autohide="true"
- #ifdef MENUBAR_CAN_AUTOHIDE
-              toolbarname="&menubarCmd.label;"
-              accesskey="&menubarCmd.accesskey;"
-@@ -493,7 +493,7 @@
-              toolbarname="&navbarCmd.label;" accesskey="&navbarCmd.accesskey;"
-              fullscreentoolbar="true" mode="icons" customizable="true"
-              iconsize="large"
--             defaultset="unified-back-forward-button,urlbar-container,reload-button,stop-button,search-container,webrtc-status-button,bookmarks-menu-button,downloads-button,home-button,window-controls"
-+             defaultset="unified-back-forward-button,reload-button,stop-button,home-button,urlbar-container,search-container,fullscreenflex,window-controls"
-              context="toolbar-context-menu">
- 
-       <toolbaritem id="unified-back-forward-button" class="chromeclass-toolbar-additional"
-@@ -724,7 +725,7 @@
-              context="toolbar-context-menu"
-              defaultset="personal-bookmarks"
-              toolbarname="&personalbarCmd.label;" accesskey="&personalbarCmd.accesskey;"
--             collapsed="true"
-+             collapsed="false"
-              customizable="true">
-       <toolbaritem flex="1" id="personal-bookmarks" title="&bookmarksItem.title;"
-                    removable="true">
-@@ -801,7 +802,7 @@
-              aria-label="&tabsToolbar.label;"
-              context="toolbar-context-menu"
- #ifdef APPMENU_ON_TABBAR
--             defaultset="appmenu-toolbar-button,tabbrowser-tabs,new-tab-button,alltabs-button,tabs-closebutton"
-+             defaultset="appmenu-toolbar-button,tabbrowser-tabs,new-tab-button,flvideoreplacer-toolbar-button,downloads-button,feed-button,alltabs-button,tabs-closebutton"
- #else
-              defaultset="tabbrowser-tabs,new-tab-button,alltabs-button,tabs-closebutton"
- #endif
-EOF
+# Replace about:home
+rm browser/base/content/abouthome -rf
+cp $DATA/abouthome -a browser/base/content
+sed '/mozilla.*png/d' -i ./browser/base/jar.mn
+
+# Delete stuff we don't use and that may contain trademaked logos
+rm -rf ./browser/metro ./mobile ./addon-sdk/source/doc/static-files/media ./browser/themes/windows ./browser/themes/osx ./b2b
 
 #Trisquel custom bookmarks
 cp $DATA/bookmarks.html.in browser/locales/generic/profile/bookmarks.html.in
 
-
 mkdir debian/search
 # Add DDG to search plugins
 cat << EOF > debian/search/duckduckgo.xml
@@ -232,7 +192,7 @@ cat << EOF >> toolkit/mozapps/extensions/content/extensions.css
 }
 EOF
 
-find -wholename '*branding/brand.dtd' |xargs sed 's/trademarkInfo.part1.*/trademarkInfo.part1 "">/' -i
+find -wholename '*/brand.dtd' |xargs /bin/sed 's/trademarkInfo.part1.*/trademarkInfo.part1 "">/' -i
 
 for STRING in community.end3 community.exp.end community.start2 community.mozillaLink community.middle2 community.creditsLink community.end2 contribute.start contribute.getInvolvedLink contribute.end channel.description.start channel.description.end
 do
@@ -260,12 +220,7 @@ sed '/Provides/s/abrowser-locale/firefox-locale/' -i debian/control.langpacks
 sed '/MOZILLA_UAVERSION/ s:Abrowser/:Firefox/:' -i netwerk/protocol/http/nsHttpHandler.cpp
 
 # Set migrator scripts
-cp browser/components/migration/src/FirefoxProfileMigrator.js browser/components/migration/src/AbrowserProfileMigrator.js
-sed 's/Abrowser/Firefox/g; s/abrowser/firefox/g' -i browser/components/migration/src/FirefoxProfileMigrator.js
-
-#tar -cjf $TARBALL mozilla
-#rm mozilla -rf
-#cp $DATA/control debian/control
+sed 's/Abrowser/Firefox/g; s/abrowser/firefox/g' -i browser/components/migration/src/AbrowserProfileMigrator.js
 
 # Postinst script to manage profile migration and system links
 echo '