aboutsummaryrefslogtreecommitdiff
path: root/files/fr/mozilla/add-ons/webextensions
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 21:46:22 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 21:46:22 -0500
commita065e04d529da1d847b5062a12c46d916408bf32 (patch)
treefe0f8bcec1ff39a3c499a2708222dcf15224ff70 /files/fr/mozilla/add-ons/webextensions
parent218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (diff)
downloadtranslated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.gz
translated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.bz2
translated-content-a065e04d529da1d847b5062a12c46d916408bf32.zip
update based on https://github.com/mdn/yari/issues/2028
Diffstat (limited to 'files/fr/mozilla/add-ons/webextensions')
-rw-r--r--files/fr/mozilla/add-ons/webextensions/embedded_webextensions/index.html219
1 files changed, 0 insertions, 219 deletions
diff --git a/files/fr/mozilla/add-ons/webextensions/embedded_webextensions/index.html b/files/fr/mozilla/add-ons/webextensions/embedded_webextensions/index.html
deleted file mode 100644
index 7a80ac75e7..0000000000
--- a/files/fr/mozilla/add-ons/webextensions/embedded_webextensions/index.html
+++ /dev/null
@@ -1,219 +0,0 @@
----
-title: WebExtensions intégrées
-slug: Mozilla/Add-ons/WebExtensions/Embedded_WebExtensions
-translation_of: Archive/Add-ons/Embedded_WebExtensions
----
-<div>{{AddonSidebar}}</div>
-
-<div class="warning">
-<p>À partir de Firefox 57 (sorti en novembre 2017), la prise en charge des types d'extensions héritées a été supprimée, y compris les extensions héritées qui intègrent les WebExtensions.</p>
-
-<p>A partir de Firefox 64 (sortie en décembre 2018), la prise en charge des extensions bootstrapped sera supprimée, y compris la prise en charge des extensions bootstrapped qui intègrent des WebExtensions.</p>
-</div>
-
-<p>A partir de Firefox 51, vous pouvez intégrer une WebExtension dans une <a href="/fr/docs/Mozilla/Add-ons/Bootstrapped_extensions">extension bootstrapped</a> classique ou dans une extension dans le <a href="/fr/docs/Mozilla/Add-ons/SDK">SDK des extensions</a>.</p>
-
-<p>Les fichiers de WebExtension intégrés sont packagés dans les modules complémentaires existant. La WebExtension intégrée ne partage pas directement son champ d'application avec l'ajout d'un complément hérité, mais ils peuvent échanger des messages à l'aide des fonctions de messagerie définies dans l'API {{WebExtAPIRef("runtime")}}.</p>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/13895/embedded-we.png" style="display: block; height: 522px; margin-left: auto; margin-right: auto; width: 429px;"></p>
-
-<p>Cela signifie que vous pouvez migrer un add-on existant vers WebExtensions une pièce à la fois, et disposer d'un add-on entièrement fonctionnel à chaque étape. En particulier,  il vous permet de <a href="/en-US/Add-ons/WebExtensions/Embedded_WebExtensions#Migrating_data_from_legacy_add-ons">migrer des données stockées</a> à partir d'un add-on existant vers une WebExtension, en écrivant un add-on hybride intermédiaire qui lit les données à l'aide des API existantes (par exemple, <a href="/en-US/docs/Mozilla/Add-ons/SDK/High-Level_APIs/simple-prefs">simple-prefs</a> ou le <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm">service</a> de préférence) et les écrit en utilisant les APIs WebExtension (par exemple, {{WebExtAPIRef("storage")}}).</p>
-
-<p>Avec ce guide, nous avons écrit deux exemples montrant comment utiliser les WebExtensions embarquées pour faciliter la migration à partir d'un type d'add-on existant. L'un montre <a href="https://github.com/mdn/webextensions-examples/tree/master/embedded-webextension-bootstrapped">comment porter à partir d'un add-on amorcé</a>, et l'autre montre <a href="https://github.com/mdn/webextensions-examples/tree/master/embedded-webextension-sdk">comment porter à partir d'un add-on sdk</a>.</p>
-
-<p>Pour intégrer une WebExtension, vous aurez besoin de Firefox 51 ou ultérieur. Pour intégrer une WebExtension dans un add-on SDK, vous aurez également besoin de <a href="https://www.npmjs.com/package/jpm">jpm 1.2.0</a>.</p>
-
-<div class="note">
-<p>Firefox 57 laisse tomber la prise en charge des types d'add-on hérités. Si vous maintenez actuellement un add-on au format de l'ancien add-on et que vous souhaitez migrer des données, publiez une mise à jour contenant une WebExtension intégrée le plus tôt possible. Si la mise à jour est publiée près de la <a href="https://wiki.mozilla.org/RapidRelease/Calendar">date de sortie de Firefox 57</a>, les données stockées dans votre add-on seront perdues si l'utilisateur met à jour Firefox avant de recevoir votre mise à jour du add-on.</p>
-</div>
-
-<h2 id="Incorporation_d'une_WebExtension">Incorporation d'une WebExtension</h2>
-
-<p>Si l'extension héritée est une extension bootstrap avec un <a href="/fr/Add-ons/Install_Manifests">install.rdf</a>, incluez la propriété  "hasEmbeddedWebExtension" dans le RDF, contenant la valeur "true":</p>
-
-<pre>&lt;<span class="pl-ent">em</span><span class="pl-ent">:</span><span class="pl-ent">hasEmbeddedWebExtension</span>&gt;true&lt;/<span class="pl-ent">em</span><span class="pl-ent">:</span><span class="pl-ent">hasEmbeddedWebExtension</span>&gt;</pre>
-
-<div>Si le complément hérité est une SDK add-on, incluez la clé "hasEmbeddedWebExtension" dans le package.json, définissez sur true:</div>
-
-<div> </div>
-
-<pre class="brush: json"><span class="pl-s"><span class="pl-pds">"</span>hasEmbeddedWebExtension<span class="pl-pds">"</span></span>: <span class="pl-c1">true</span>
-</pre>
-
-<div>La WebExtension elle-même vit dans un dossier de niveau supérieur appelé "webextension" dans l'add-on. Par exemple:</div>
-
-<div> </div>
-
-<pre>my-boostrapped-addon/
- chrome/
- webextension/
- manifest.json
- background.js
- ...
- bootstrap.js
- chrome.manifest
- install.rdf</pre>
-
-<div> </div>
-
-<div>
-<pre>my-sdk-addon/
- index.js
- package.json
- webextension/
- manifest.json
- background.js
- ...</pre>
-</div>
-
-<p>Notez que la WebExtension intégrée doit se trouver directement dans le répertoire <code>webextension/</code>.  Il ne peut pas être dans un sous-répertoire. Cela signifie également que vous ne pouvez pas intégrer plus d'une WebExtension.</p>
-
-<p>Firefox ne traite pas les WebExtensions intégrées comme une extension indépendante. Pour cette raison, vous ne devez pas spécifier une <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID">identification d'extension</a> pour elle. Si vous le faites, il sera simplement ignoré.</p>
-
-<p>Toutefois, lorsque vous avez terminé la migration de l'add-on et supprimé le code d'intégration existant, vous devez inclure une clé d'<a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/applications">application</a> pour l'identifiant soit identique à un ID d'extension original. De cette façon, <a href="https://addons.mozilla.org/fr/firefox/">addons.mozilla.org</a> reconnaîtra que WebExtension est une mise à jour de l'extension existante.</p>
-
-<h2 id="Démarré_la_WebExtension">Démarré la WebExtension</h2>
-
-<p>La WebExtension intégrée doit être explicitement démarré par l'extension d'intégration.</p>
-
-<p>Si l'extension d'intégration est un add-on bootstrap, l'argument de données passé à la fonction de <code><a href="/fr/Add-ons/Bootstrapped_extensions#startup">startup()</a></code> obtiendra une propriété supplémentaire à la <code>webExtension</code> :</p>
-
-<pre class="brush: js">// bootstrapped add-on
-
-<span class="pl-k">function</span> <span class="pl-en">startup</span>({webExtension}) {
-
-...</pre>
-
-<p>Si l'add-on d'intégration est une extension SDK, il pourra accéder à un objet WebExtension à l'aide du module <code>sdk/webextension</code> :</p>
-
-<pre class="brush: js"><span class="pl-k">// SDK add-on
-
-const</span> <span class="pl-c1">webExtension</span> <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">"</span>sdk/webextension<span class="pl-pds">"</span></span>);</pre>
-
-<p>Quoi qu'il en soit, cet objet a une seule fonction, <code>startup()</code>, qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>. La promesse résolue à un objet avec un seul navigateur de propriétés :  il contient les API {{WebExtAPIRef("runtime")}} que le complément d'intégration peut utiliser pour échanger des messages avec le WebExtension intégré :</p>
-
-<ul>
- <li>{{WebExtAPIRef("runtime.onConnect")}}</li>
- <li>{{WebExtAPIRef("runtime.onMessage")}}</li>
-</ul>
-
-<p>Pour exemple:</p>
-
-<pre class="brush: js">// bootstrapped add-on
-
-function startup({webExtension}) {
- webExtension.startup().then(api =&gt; {
- const {browser} = api;
- browser.runtime.onMessage.addListener(handleMessage);
- });
-}</pre>
-
-<pre class="brush: js"><span class="pl-k">// SDK add-on</span>
-
-const webExtension = require("sdk/webextension");
-
-webExtension.startup().then(api =&gt; {
- const {browser} = api;
- browser.runtime.onMessage.addListener(handleMessage);
-});
-</pre>
-
-<p>Notez que l'ajout d'un module d'extension intégré ne peut pas démarrer les communications: il peut recevoir (et éventuellement à répondre) des messages ponctuels, en utilisant <code>onMessage</code>, et peut accepter des requêtes de connexion en utilisant <code>onConnect</code>.</p>
-
-<p>La promesse est rejetée si le WebExtension intégré manque un manifeste ou si le manifeste est invalide. Dans ce cas, vous verrez plus de détails dans la <a href="/fr/Add-ons/WebExtensions/Debugging_(before_Firefox_50)#Viewing_log_output">boite à outils de la console du navigateur</a>.</p>
-
-<h2 id="Echange_des_messages">Echange des messages</h2>
-
-<p>Une fois que la WebExtension intégré est en cours d'exécution, elle peut échanger des messages avec l'add-on hérité en utilisant le sous-ensemble des APIs {{WebExtAPIRef("runtime")}} :</p>
-
-<ul>
- <li>Il peut envoyer des messages uniques en utilisant {{WebExtAPIRef("runtime.sendMessage()")}}.</li>
- <li>Il peut configurer une connexion en utilisant  {{WebExtAPIRef("runtime.connect()")}}.</li>
-</ul>
-
-<h3 id="Messagerie_sans_connexion">Messagerie sans connexion</h3>
-
-<p>Pour envoyer un message unique, la WebExtension peut utiliser {{WebExtAPIRef("runtime.sendMessage()")}}. Vous pouvez omettre l'argument extensionId, car le navigateur considère la WebExtension intégrée comme faisant partie intégrante de l'add-on :</p>
-
-<pre class="brush: js">browser.runtime.sendMessage("message-from-webextension").then(reply =&gt; {
- if (reply) {
- console.log("response from legacy add-on: " + reply.content);
- }
-});</pre>
-
-<p>L'add-on d'intégration peut recevoir (et répondre facultativement) ce message en utilisant l'objet {{WebExtAPIRef("runtime.onMessage")}} :</p>
-
-<pre class="brush: js">// bootstrapped add-on
-
-function startup({webExtension}) {
- // Start the embedded webextension.
- webExtension.startup().then(api =&gt; {
- const {browser} = api;
- browser.runtime.onMessage.addListener((msg, sender, sendReply) =&gt; {
- if (msg == "message-from-webextension") {
- sendReply({
- content: "reply from legacy add-on"
- });
- }
- });
- });
-}</pre>
-
-<h3 id="Messagerie_orientée_connexion">Messagerie orientée connexion</h3>
-
-<p>Pour configurer une connexion plus longue entre la WebExtension et l'extension héritée, la WebExtension peut utiliser {{WebExtAPIRef("runtime.connect()")}}.</p>
-
-<pre class="brush: js">var port = browser.runtime.connect({name: "connection-to-legacy"});
-
-port.onMessage.addListener(function(message) {
- console.log("Message from legacy add-on: " + message.content);
-});
-</pre>
-
-<p>L'extension héritée peut écouter les tentatives de connexion à l'aide de {{WebExtAPIRef("runtime.onConnect")}}, et les deux côtés peuvent alors utiliser {{webExtAPIRef("runtime.Port")}} pour échanger des messages :</p>
-
-<pre class="brush: js">function startup({webExtension}) {
- // Start the embedded webextension.
- webExtension.startup().then(api =&gt; {
- const {browser} = api;
- browser.runtime.onConnect.addListener((port) =&gt; {
- port.postMessage({
- content: "content from legacy add-on"
- });
- });
- });
-}</pre>
-
-<h2 id="Migration_de_données_à_partir_d'extensions_existantes">Migration de données à partir d'extensions existantes</h2>
-
-<p>Une utilisation majeure pour les WebExtensions intégrées sont de migrer les données stockées d'une extension.</p>
-
-<p>Les données stockées sont un problème pour les personnes qui essaient de migrer à partir de types d'extension existants, car les extensions existantes ne peuvent pas utiliser les API de stockage WebExtension, alors que les  WebExtensions ne peuvent pas utiliser les API de stockage existantes. Par exemple, si une extension du SDK utilise l'API <a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/simple-prefs">simple-prefs</a>  pour stocker les préférences, la version WebExtension ne pourra pas accéder à ces données.</p>
-
-<p>Avec les WebExtensions intégrées, vous pouvez migrer des données en créant une version intermédiaire de l'extension qui intègre une WebExtension. Cette version intermédiaire lit les données stockées à l'aide des API existantes et écrit les données à l'aide des API des WebExtensions.</p>
-
-<ul>
- <li>Dans la version initiale, un add-on basé sur le SDK lit et écrit les préférences de l'add-on utilisé par l'API <a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/simple-prefs">simple-prefs</a>.</li>
- <li>Dans la version intermédiaire, le complément SDK démarre la WebExtension intégrée. La WebExtension demande ensuite le complément SDK pour récupérer les données stockées à partir de  simples prefs. La WebExtension stocke ensuite les données à l'aide de l'API {{WebExtAPIRef("storage")}}.</li>
- <li>Dans la version finale, l'extension est juste une WebExtension et utilise seulement  que l'API de stockage.</li>
-</ul>
-
-<p>Nous avons fourni deux exemples illustrant ce modèle : <a href="https://github.com/mdn/webextensions-examples/tree/master/embedded-webextension-bootstrapped">"embedded-webextension-bootstrapped"</a> montre la migration à partir d'un add-on bootstrap, tandis que <a href="https://github.com/mdn/webextensions-examples/tree/master/embedded-webextension-sdk">"embedded-webextension-sdk"</a> montre la migration à partir du SDK de l'extension.</p>
-
-<h3 id="Préférences">Préférences</h3>
-
-<p>Une extension qui contient une WebExtension intégré peut définir des préférences dans l'extension d'héritage (en utilisant, par exemple, <a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/simple-prefs">simple-prefs</a> ou le <a href="/fr/docs/Mozilla/JavaScript_code_modules/Services.jsm">service</a> des préférences) ou dans la WebExtension intégrée (en utilisant <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a>).</p>
-
-<p>Si les deux parties définissent les préférences, que les préférences de la WebExtension intégrée annuleront les anciennes.</p>
-
-<p>Si la diffusion de la WebExtension intégrée définit les préférences, elles ne seront initialisées qu'après la WebExtension intégré a <a href="/fr/Add-ons/WebExtensions/Embedded_WebExtensions#Starting_the_WebExtension">commencée</a>. Jusque-là, le bouton "Préférences" dans "about:addons" ne sera pas affiché pour l'add-on, et le navigateur enregistrera une erreur dans la <a href="/fr/docs/Tools/Browser_Console">console du navigateur</a> lorsque "about:addons" is ouvert.</p>
-
-<p>Pour cette raison, c'est important que l'extension d'intégration démarre immédiatement le démarrage WebExtension intégré lors du démarrage. Pour une extension bootstrap, cela signifie que vous devez appeler <code>webExtension.startup()</code> dans le <a href="/fr/Add-ons/Bootstrapped_extensions#startup">bootstrap de démarrage</a>. Pour une extension SDK supplémentaire, cela signifie que vous devez appeler  <code>webExtension.startup()</code> dans le point d'entrée de l'add-on (par défaut, index.js).</p>
-
-<p>Si la page "about:addons" est déjà ouverte dans un onglet lorsque le WebExtension intégré est démarré, le bouton Préférences ne sera visible qu'après la prochaine recharge de la page "about:addons".</p>
-
-<h2 id="Limitations">Limitations</h2>
-
-<h3 id="Debogage">Debogage</h3>
-
-<p>Si vous avez un add-on hérité qui intègre une WebExtension, vous ne pouvez pas utiliser le nouveau débogueur add-on pour le déboguer. Vous devrez utiliser l'<a href="/fr/Add-ons/WebExtensions/Debugging_(before_Firefox_50)">ancien flux de travail de débogage</a>, basé sur la boite d'outils du navigateur.</p>