diff --git a/l10n_chrome.crx b/l10n_chrome.crx
index 1be2f6b3507dfe8432ba680e65e429f6b5cb0fce..8cdf52c443e7c873cedac17eceea0fec5931542f 100644
GIT binary patch
delta 4932
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

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

diff --git a/l10n_chrome/background.html b/l10n_chrome/background.html
deleted file mode 100644
index 52917599229220502834e58a4d39e41f57c942dd..0000000000000000000000000000000000000000
--- a/l10n_chrome/background.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<html>
-<head></head>
-<body>
-<script>
-  /**
-   * Checks the notifications behavior
-   */
-  if (window.webkitNotifications.checkPermission() != 0) {
-    window.webkitNotifications.requestPermission();
-  }
-
-  /**
-   * Updates terms and stores them in localStorage
-   */
-  function updateTerms(force) {
-    // Update glossary terms every hour
-    glossaryLast = localStorage["glossaryLast"];
-    if (force || !glossaryLast || !localStorage["glossaryTerms"] || glossaryLast < Date.now() - 1000 * 60 * 60) {
-      // Download glossary items
-      /*
-       var notification = window.webkitNotifications.createNotification(
-       'icon-48.png', // The image.
-       "Téléchargement des termes", // The title.
-       'Les termes du glossaire sont en cours de mise à jour.'      // The body.
-       );
-       notification.show();
-       */
-      var xhr = new XMLHttpRequest();
-
-      xhr.onreadystatechange = function(data) {
-        if (xhr.readyState == 4) {
-          if (xhr.status == 200) {
-            var data = JSON.parse(xhr.responseText);
-            var terms = processJsonTerms(data.terms);
-            localStorage["glossaryTerms"] = JSON.stringify(terms);
-            localStorage["glossaryLast"] = Date.now();
-            //notification.cancel();
-          }
-        }
-      }
-      // Note that any URL fetched here must be matched by a permission in
-      // the manifest.json file!
-      var url = 'http://traduction.drupalfr.org/glossaire.json';
-      xhr.open('GET', url, true);
-      xhr.send();
-    }
-  }
-  // Try to update every ten seconds
-  setInterval(updateTerms, 10000);
-
-  /**
-   * Sanitizing function
-   */
-  function sanitize(term) {
-    if (term.indexOf(' (to)') > -1) {
-      term = term.substr(0, term.indexOf(' (to)'));
-    }
-    return term.toLowerCase();
-  }
-
-  /**
-   * Performs an XMLHttpRequest to Twitter's API to get trending topics.
-   * @param callback Function If the response from fetching url has a
-   *    HTTP status of 200, this function is called with a JSON decoded
-   *    response.  Otherwise, this function is called with null.
-   */
-  function fetchTerms(callback) {
-    var terms = JSON.parse(localStorage["glossaryTerms"]);
-    callback(terms);
-  }
-
-  /**
-   * Handles data sent via chrome.extension.sendRequest().
-   *
-   * @param request Object Data sent in the request.
-   * @param sender Object Origin of the request.
-   * @param callback Function The method to call when the request completes.
-   */
-  function onRequest(request, sender, callback) {
-    if (request.action == 'fetchTerms') {
-      fetchTerms(callback);
-    }
-    if (request.action == 'insertScripts') {
-      insertScripts(request, sender);
-    }
-  }
-
-  /**
-   * Mise en forme des termes récupérés
-   *
-   * @param data array of terms
-   */
-  function processJsonTerms(data) {
-    var terms = {};
-    for (var t in data) {
-      // Check if the form is already in the array
-      if (terms[sanitize(data[t].term.title)]) {
-        var isVerb = data[t].term.title.indexOf(' (to)') > -1;
-        var verb = isVerb ? data[t].term.field_traduction : terms[sanitize(data[t].term.title)];
-        var other = !isVerb ? data[t].term.field_traduction : terms[sanitize(data[t].term.title)];
-        terms[sanitize(data[t].term.title)] = "<ul><li><strong>Verbe :</strong> " + verb +
-                "</li><li><strong>Autre :</strong> " + other + "</li></ul>";
-      }
-      else {
-        terms[sanitize(data[t].term.title)] = data[t].term.field_traduction;
-      }
-    }
-    return terms;
-  }
-
-  /**
-   * Insert the scripts in the current tab
-   */
-  function insertScripts(a, b) {
-    chrome.tabs.insertCSS(null, {file:"style.css"})
-    chrome.tabs.executeScript(null, {file:"jquery.js"});
-    chrome.tabs.executeScript(null, {file:"jquery.tipsy.js"});
-    chrome.tabs.executeScript(null, {file:"script.js"});
-  }
-
-  // Wire up the listener.
-  chrome.extension.onRequest.addListener(onRequest);
-</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/l10n_chrome/eventPage.js b/l10n_chrome/eventPage.js
new file mode 100644
index 0000000000000000000000000000000000000000..8938df94be4a4e28974e10975ecd77df1d12d588
--- /dev/null
+++ b/l10n_chrome/eventPage.js
@@ -0,0 +1,120 @@
+/**
+ * Checks the notifications behavior
+ *
+ * DEPRECATED: http://stackoverflow.com/questions/23873149/window-webkitnotifications-checkpermission-not-working
+ */
+/* if (window.webkitNotifications.checkPermission() != 0) {
+  window.webkitNotifications.requestPermission();
+} */
+
+/**
+ * Updates terms and stores them in localStorage
+ */
+function updateTerms(force) {
+  // Update glossary terms every hour
+  glossaryLast = localStorage["glossaryLast"];
+  if (force || !glossaryLast || !localStorage["glossaryTerms"] || glossaryLast < Date.now() - 1000 * 60 * 60) {
+    // Download glossary items
+    /*
+     var notification = window.webkitNotifications.createNotification(
+     'icon-48.png', // The image.
+     "Téléchargement des termes", // The title.
+     'Les termes du glossaire sont en cours de mise à jour.'      // The body.
+     );
+     notification.show();
+     */
+    var xhr = new XMLHttpRequest();
+
+    xhr.onreadystatechange = function(data) {
+      if (xhr.readyState == 4) {
+        if (xhr.status == 200) {
+          var data = JSON.parse(xhr.responseText);
+          var terms = processJsonTerms(data.terms);
+          localStorage["glossaryTerms"] = JSON.stringify(terms);
+          localStorage["glossaryLast"] = Date.now();
+          //notification.cancel();
+        }
+      }
+    }
+    // Note that any URL fetched here must be matched by a permission in
+    // the manifest.json file!
+    var url = 'http://traduction.drupalfr.org/glossaire.json';
+    xhr.open('GET', url, true);
+    xhr.send();
+  }
+}
+// Try to update every ten seconds
+setInterval(updateTerms, 10000);
+
+/**
+ * Sanitizing function
+ */
+function sanitize(term) {
+  if (term.indexOf(' (to)') > -1) {
+    term = term.substr(0, term.indexOf(' (to)'));
+  }
+  return term.toLowerCase();
+}
+
+/**
+ * Performs an XMLHttpRequest to Twitter's API to get trending topics.
+ * @param callback Function If the response from fetching url has a
+ *    HTTP status of 200, this function is called with a JSON decoded
+ *    response.  Otherwise, this function is called with null.
+ */
+function fetchTerms(callback) {
+  var terms = JSON.parse(localStorage["glossaryTerms"]);
+  callback(terms);
+}
+
+/**
+ * Handles data sent via chrome.extension.sendMessage().
+ *
+ * @param request Object Data sent in the request.
+ * @param sender Object Origin of the request.
+ * @param callback Function The method to call when the request completes.
+ */
+function onMessage(request, sender, callback) {
+  if (request.action == 'fetchTerms') {
+    fetchTerms(callback);
+  }
+  if (request.action == 'insertScripts') {
+    insertScripts(request, sender);
+  }
+}
+
+/**
+ * Mise en forme des termes récupérés
+ *
+ * @param data array of terms
+ */
+function processJsonTerms(data) {
+  var terms = {};
+  for (var t in data) {
+    // Check if the form is already in the array
+    if (terms[sanitize(data[t].term.title)]) {
+      var isVerb = data[t].term.title.indexOf(' (to)') > -1;
+      var verb = isVerb ? data[t].term.field_traduction : terms[sanitize(data[t].term.title)];
+      var other = !isVerb ? data[t].term.field_traduction : terms[sanitize(data[t].term.title)];
+      terms[sanitize(data[t].term.title)] = "<ul><li><strong>Verbe :</strong> " + verb +
+              "</li><li><strong>Autre :</strong> " + other + "</li></ul>";
+    }
+    else {
+      terms[sanitize(data[t].term.title)] = data[t].term.field_traduction;
+    }
+  }
+  return terms;
+}
+
+/**
+ * Insert the scripts in the current tab
+ */
+function insertScripts(a, b) {
+  chrome.tabs.insertCSS(null, {file:"style.css"})
+  chrome.tabs.executeScript(null, {file:"jquery.js"});
+  chrome.tabs.executeScript(null, {file:"jquery.tipsy.js"});
+  chrome.tabs.executeScript(null, {file:"script.js"});
+}
+
+// Wire up the listener.
+chrome.runtime.onMessage.addListener(onMessage);
diff --git a/l10n_chrome/l10n_detection.js b/l10n_chrome/l10n_detection.js
index 382c62db2f9661d64c37280a051e22f79c623f40..f0f3b725ab161f59b4c966afa5c385b08350ae5d 100644
--- a/l10n_chrome/l10n_detection.js
+++ b/l10n_chrome/l10n_detection.js
@@ -3,5 +3,5 @@
  */
 // On localize.drupal.org or l10n_client enabled pages
 if ((location.host == "localize.drupal.org" && location.pathname == "/translate/languages/fr/translate") || document.getElementById('l10n-client')) {
-  chrome.extension.sendRequest({'action' : 'insertScripts'});
+  chrome.runtime.sendMessage({'action' : 'insertScripts'});
 }
diff --git a/l10n_chrome/manifest.json b/l10n_chrome/manifest.json
index 46a5649f558066634ca1903b93c1d873b17af141..195c6be3cf66ab44ea6d25a1562a29a3451e015b 100644
--- a/l10n_chrome/manifest.json
+++ b/l10n_chrome/manifest.json
@@ -1,6 +1,8 @@
 {
+  "manifest_version": 2,
+
   "name": "Localization for Chrome",
-  "version": "1.5.1",
+  "version": "1.5.2",
   "description": "Les termes du glossaire directement sur localize et dans l10n_client",
   "icons": {
     "48": "icon-48.png",
@@ -23,5 +25,8 @@
     "notifications",
     "tabs"
   ],
-  "background_page" : "background.html"
-}
\ No newline at end of file
+  "background" : {
+    "scripts": ["eventPage.js"],
+    "persistent": false
+  }
+}
diff --git a/l10n_chrome/script.js b/l10n_chrome/script.js
index 52017bef96356bcba65c37ef6a6abb2cbc00ab68..9d6b8769a1582ad4615d6ab7ec508fc17d6339a6 100644
--- a/l10n_chrome/script.js
+++ b/l10n_chrome/script.js
@@ -1,6 +1,6 @@
 // Send a request to fetch terms from localStorage.
 // Specify that parsing function should be called with the result.
-chrome.extension.sendRequest({'action' : 'fetchTerms'}, parseEnglishStrings);
+chrome.runtime.sendMessage({'action' : 'fetchTerms'}, parseEnglishStrings);
 
 /**
  * Callback function
