diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 21:46:22 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 21:46:22 -0500 |
commit | a065e04d529da1d847b5062a12c46d916408bf32 (patch) | |
tree | fe0f8bcec1ff39a3c499a2708222dcf15224ff70 /files/fr/mozilla/firefox | |
parent | 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (diff) | |
download | translated-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/firefox')
14 files changed, 0 insertions, 1146 deletions
diff --git a/files/fr/mozilla/firefox/compiler_firefox_avec_rust/index.html b/files/fr/mozilla/firefox/compiler_firefox_avec_rust/index.html deleted file mode 100644 index b44152a57f..0000000000 --- a/files/fr/mozilla/firefox/compiler_firefox_avec_rust/index.html +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Compiler Firefox avec Rust -slug: Mozilla/Firefox/Compiler_Firefox_avec_Rust -tags: - - Compilation - - Gecko - - rust -translation_of: Archive/Mozilla/Firefox/Building_Firefox_with_Rust_code ---- -<div>{{FirefoxSidebar}}</div><p>En mai 2015 le <a href="http://www.rust-lang.org/">langage de programmation Rust</a> a atteint sa version stable 1.0 et diverses expérimentations comme la rédaction de parties de Gecko en Rust ont commencé. Cette page est un guide sommaire destiné aux personnes travaillant sur ce projet.</p> - -<h2 id="Ajouter_le_code_Rust">Ajouter le code Rust</h2> - -<p>Le support de base pour la compilation avec le code Rust est disponible sur la page du <a class="bz_bug_link - bz_status_RESOLVED bz_closed" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1161339" title="RESOLVED FIXED - Support rust files in moz.build SOURCES">bogue 1161339</a>. Si vous disposez de rustc dans votre variable path vous pouvez ajouter les fichiers .rs à la variable SOURCES dans moz.build, puis ajouter :</p> - -<pre>ac_add_options --enable-rust</pre> - -<p>à votre <a href="/en-US/docs/Configuring_Build_Options">mozconfig</a> et ça devrait fonctionner.</p> - -<p>La bibliothèque standard de rust utilise un thread local de stockage qui n'est pas supporté sur MacOS X 10.6. Ainsi, si vous compilez le projet depuis un Mac vous devez aussi ajouter :</p> - -<pre>ac_add_options --enable-macos-target=10.7</pre> - -<p>Vous pouvez aussi compiler une toolchain personnalisée de Rust sans la partie relative à std::thread. Pour plus de détails, regardez le <a class="bz_bug_link - bz_status_NEW " href="https://bugzilla.mozilla.org/show_bug.cgi?id=1164109" title="NEW - rust code fails to link on macosx because of thread-local storage">bogue 1164109</a>.</p> - -<p>Because of limitations of cargo and the Firefox build system, currently we build a stand-alone static lib from each rust file listed in SOURCES. You must therefore list just the top-level rust file. Everything must be a single crate, like a manual unified build. The rust compiler will search for interior modules by source file name, but <code>extern crate</code> references won't be resolved.</p> - -<p>Allez voir le <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1135640">bogue 1135640</a> ('oxidation') pour un suivi global.</p> - -<h2 id="Tester_le_code_Rust">Tester le code Rust</h2> - -<p>Il existe un test unitaire simple de disponible dans le répertoire du projet. Vous pouvez l'utiliser pour savoir si Rust est activé et fonctionne avec votre configuration.</p> - -<pre>./mach gtest rust.*</pre> - -<p>Regardez si le test <strong>rust.CallFromCpp</strong> réussi ainsi que tous les autres.</p> diff --git a/files/fr/mozilla/firefox/deploiement_entreprise/index.html b/files/fr/mozilla/firefox/deploiement_entreprise/index.html deleted file mode 100644 index 13913c8e06..0000000000 --- a/files/fr/mozilla/firefox/deploiement_entreprise/index.html +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: Déploiement de Firefox dans un environnement d'entreprise -slug: Mozilla/Firefox/deploiement_Entreprise -tags: - - Déploiement - - Entreprise - - Firefox -translation_of: Mozilla/Firefox/Enterprise_deployment_before_60 ---- -<div>{{FirefoxSidebar}}</div> - -<p>Cette page documente de pied en cap le processus de gestion de Mozilla Firefox sur des ordinateurs fonctionnant sur Windows ou macOS dans le cadre d'une entreprise. Vous pouvez envoyer vos questions par courrier électronique à la liste de diffusion du groupe de travail pour les entreprises (<em>Enterprise Working Group</em>) via <a href="https://mail.mozilla.org/listinfo/enterprise">enterprise@mozilla.org</a> (en anglais). Mieux encore, vous pouvez rejoindre les discussions en cours en vous <a href="https://mail.mozilla.org/listinfo/enterprise">inscrivant à la liste en anglais</a> ou <a href="https://mail.mozilla.org/listinfo/enterprise-fr" lang="fr">en français</a>.</p> - -<div class="note"> -<p><strong>Note :</strong> cet article couvre des versions de Firefox antérieures à Firefox 60 ESR. Pour un déploiement dans des environements d’enterprises dans Firefox 60 ou plus récent, consultez l’article <a href="https://developer.mozilla.org/docs/Mozilla/Firefox/Enterprise_deployment">Deploying Firefox in an enterprise environment</a>.</p> -</div> - -<h2 id="Choisissez_une_variante_de_Firefox">Choisissez une variante de Firefox</h2> - -<h3 id="RR_(Version_Rapide)">RR (Version Rapide)</h3> - -<p>Mozilla publie une nouvelle version majeure avec de nouvelles fonctionnalités et des corrections de bugs toutes les six semaines (et, si besoin, des mises à jour de sécurité durant cette période). Le jour où une version majeure est lancée, dans la plupart des cas (voir plus bas pour les exceptions), Mozilla arrête de fournir des correctifs de bugs pour les versions précédentes.</p> - -<p>Pour vous renseigner sur les dates de sortie des prochaines versions, vous pouvez regarder ce <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates">tableau</a> sur le wiki Mozilla.</p> - -<h3 id="ESR_(version_de_support_étendu)">ESR (version de support étendu)</h3> - -<p>Chaque septième version majeure de Firefox est déclarée version de support étendu. C<span id="result_box" lang="fr"><span class="hps">es</span> <span class="hps">versions</span> <span class="hps">reçoivent</span> <span class="hps">les </span></span> <span id="result_box" lang="fr"><span class="hps">corrections des gros bugs</span> </span><span lang="fr"><span class="hps">issus des versions mineures pendant 54</span> <span class="atn hps">semaines (</span><span>neuf</span> <span class="hps">cycles</span> <span class="hps">de six semaines</span><span>)</span><span>.</span> De plus, <span class="hps">un chevauchement</span> <span class="hps">de 12</span> <span class="atn hps">semaines (</span><span>deux</span> <span class="hps">cycles de</span> six semaines<span>)</span> <span class="hps">entre</span> <span class="hps">deux</span> <span class="hps">versions successives</span> <span class="hps">de type ESR</span><span> est effectué,</span> <span class="hps">au cours de laquelle</span> <span class="hps">les deux</span> <span class="hps">versions</span> <span class="hps">ESR</span> <span class="hps">obtiennent</span> <span class="hps">des corrections de bugs</span><span>.</span></span></p> - -<p>Les versions ESR sont les versions 10, 17, 24, 31 et 38.</p> - -<p>De nombreuses entreprises et organisations avec des environnements informatiques généralisés préfèrent utiliser des versions ESR que des versions RR car elles peuvent tester leur comptabilité sur une période de 42 semaines au lieu de la période de 6 semaines (entre chaque RR). De plus si elles ont un problème, elles disposent de 12 semaines de plus (chevauchement entre 2 versions ESR) pour trouver une solution (en plus des 6 semaines obtenues en testant la version beta).</p> - -<p>Notez que des effets indésirables peuvent se faire ressentir si vous passez d'une version RR à une version ESR antérieure. En effet, les versions RR voient parfois de nouvelles fonctionnalités non finies intégrées à leur code pour pouvoir les tester, mais désactivées par les préférences. Lors d'un retour à une version précédente, les utilisateurs gardent leurs derniers paramètres dans leur répertoire de profil. Une option peut alors être activée sans qu'elle ne soit totalement fonctionnelle sur la version ESR. Si vous souhaitez passer d'une version RR à une version ESR, vous devriez le faire lorsqu'une nouvelle version ESR voit le jour.</p> - -<h2 id="Installation">Installation</h2> - -<ol> - <li>Téléchargez la dernière version de Firefox depuis <a href="https://www.mozilla.org/en-US/firefox/all/">https://www.mozilla.org/en-US/firefox/all/</a> (RR) ou <a href="https://www.mozilla.org/en-US/firefox/organizations/all/">https://www.mozilla.org/en-US/firefox/organizations/all/</a> (ESR).</li> - <li>Installez la version sur le système d'exploitation de votre choix (L'option pour une installation silencieuse est -ms).</li> - <li>Vous pouvez aussi créer un fichier d'initialisation. Pour plus d'informations, vous pouvez visiter <a href="https://wiki.mozilla.org/Installer:Command_Line_Arguments">cette page</a> (en).</li> -</ol> - -<h2 id="Configuration">Configuration</h2> - -<ol> - <li>Trouvez le répertoire où l'exécutable est présent. Par exemple, sur Windows 7 (64 bits), le répertoire est souvent <code>C:\Program Files (x86)\Mozilla Firefox</code>; dans Mac OSX 10.8 il s'agit de <code>/Applications/Firefox.app/Contents/MacOS</code>. Les sous-répertoires mentionnés par la suite sont relatifs à ce dossier.</li> - <li>Créez un fichier javascript dans<code> defaults/pref</code> (généralement, <code>autoconfig.js</code> - d'autres noms fonctionnent, mais pour de meilleurs résultats, il faut que le nom commence par un 'a'). Le contenu de ce fichier indique à Firefox où trouver le fichier de configuration. (Pour plus d'informations : <a href="http://mike.kaply.com/2012/03/15/customizing-firefox-default-preference-files/">Customizing Firefox default preference files</a> (en)).Les trois lignes dont vous avez besoin sont : - <pre class="brush: js">// Vous devez démarrer ce fichier avec un commentaire ! -pref("general.config.filename", "mozilla.cfg"); -pref("general.config.obscure_value", 0);</pre> - </li> - <li>Créez un fichier .cfg (généralement <code>mozilla.cfg</code> — le nom peut être différent, mais il faut que ça corresponde au nom entré dans les 2 lignes précédentes) dans le répertoire du programme. <span id="result_box" lang="fr"><strong><span class="hps">Passez</span> <span class="hps">ou</span> <span class="hps">commentez la</span> </strong><span class="hps"><strong>première ligne</strong>, puis</span> <span class="hps">commencer à mettre</span> <span class="hps">vos préférences</span><span>.</span></span> Pour savoir quelles préférences mettre, rendez-vous sur la page about:config sur une copie de Firefox correctement configurée et regardez les préférences ayant pour statut "<strong>user set"</strong>, ou regardez les exemples suivants. Toute préférence peut être réglée via une des fonctions suivantes : - <dl> - <dt><strong>pref </strong></dt> - <dd>Un utilisateur peut changer une valeur, mais elle sera effacée au prochain redémarrage. Si vous mettez une préférence de cette manière, elle sera montrée comme "<strong>user set"</strong> dans about:config</dd> - <dt><strong>defaultPref</strong></dt> - <dd>pour modifier la valeur par défaut. Si un utilisateur change cette valeur, il pourra la garder entre plusieurs sessions. Les préférences peuvent être réinitialisées via la GUI ou autre méthode. Elle sera montrée avec un statut "<strong>default"</strong> dans about:config</dd> - <dt><strong>lockPref</strong></dt> - <dd>pour bloquer les préférences. Elles ne pourront pas être changées par la GUI ou via about:config. Dans la majeure partie des cas, la GUI va enlever l'option ou la griser.<span id="result_box" lang="fr"><span class="hps"> Certains éléments</span> <span class="hps">de la configuration</span> <span class="hps">nécessitent</span> un réglage via <strong><span class="hps">lockPref</span></strong><span class="hps">,</span> <span class="hps">tels que</span> <strong><span class="hps">app.update.enabled</span></strong><span> (<strong>pref</strong> ne fonctionnera pas).</span></span></dd> - <dt><span class="author-g-fer323ku83ypu55t">clearPref</span></dt> - <dd>pour rendre vierge certaines préférences. Peut s'avérer utile pour désactiver des fonctions se basant sur un numéro de version.</dd> - </dl> - </li> -</ol> - -<p>Vous pouvez visiter <a href="http://mike.kaply.com/2012/03/16/customizing-firefox-autoconfig-files/">Customizing Firefox autoconfig files</a> (en) ou <a href="http://mike.kaply.com/2012/03/20/customizing-firefox-autoconfig-files-continued/">Customizing Firefox autoconfig files continued</a> (en) pour plus d'informations. Pour désactiver des éléments de l'interface utilisateur, vous pouvez utiliser l'extension <a href="http://mike.kaply.com/cck2/">CCK2</a>.</p> - -<h3 id="Exemple_de_fichier_de_configuration">Exemple de fichier de configuration</h3> - -<p>Dans l'exemple qui suit, vous pouvez voir des exemples de références nécessitant l'utilisation de <strong>lockPref</strong>.</p> - -<pre class="brush: js"><span class="brush: js">// Désactive la mise à jour automatique -lockPref("app.update.enabled", false); -// pour être sûr que la mise à jour automatique soit désactivée -lockPref("app.update.auto", false); -lockPref("app.update.mode", 0); -lockPref("app.update.service.enabled", false); - -// Désactive la vérification de la comptabilité des extensions -clearPref("extensions.lastAppVersion"); - -// Désactive l'affichage de 'Connaître vos droits' au premier lancement -pref("browser.rights.3.shown", true); - -// Ne montre pas les nouvelles fonctionnalités à chaque mise à jour -pref("browser.startup.homepage_override.mstone","ignore"); - -// Modifie la page d'accueil -defaultPref("browser.startup.homepage", "http://home.example.com"); - -// Désactive le lecteur de pdf interne -pref("pdfjs.disabled", true); - -// Désactive le convertisseur flash vers javascript -pref("shumway.disabled", true); - -// Ne demande pas d'installer le plugin flash -pref("plugins.notifyMissingFlash", false); - -// Désactive la vérification des plugins -lockPref("plugins.hide_infobar_for_outdated_plugin", true); -clearPref("plugins.update.url"); - -// Désactive le rapport de santé -lockPref("datareporting.healthreport.service.enabled", false); - -</span>// Disable all data upload (Telemetry and FHR) -lockPref("datareporting.policy.dataSubmissionEnabled", false); -<span class="brush: js"> -// Désactive le rapport de crashs -lockPref("toolkit.crashreporter.enabled", false); -Components.classes["@mozilla.org/toolkit/crash-reporter;1"].getService(Components.interfaces.nsICrashReporter).submitReports = false;</span><em> </em> -</pre> - -<h2 id="Packaging_d'extensions">Packaging d'extensions</h2> - -<ol> - <li>Installez l'extension sur une machine de test. Regardez la page about:support sous Extensions pour trouver le GUID</li> - <li>Regardez dans le répertoire des <a href="https://support.mozilla.org/fr/kb/profils-ou-firefox-conserve-donnees-utilisateur">profils</a> (ex: <code>%APPDATA%\Mozilla\Firefox\Profiles</code> pour Win7; pour le trouver, regardez Profile Directory sur la page about:support), puis sous "Extensions" pour l'extension souhaitée. Il s'agit soit d'un fichier .xpi (correspondant à un .zip) ou un dossier avec de multiples fichiers.</li> - <li>Décidez de la façon dont vous voulez la déployer. La méthode la plus simple est de copier le .xpi ou le dossier dans le dossier <code>/distribution/extensions mais cette méthode ne fonctionne que pour les profils créés après l'ajout de l'extension.</code> De plus, si vous réinstallez firefox, le dossier sera supprimé, assurez-vous de réinstaller les extensions par la suite. Vous pouvez vous rendre sur cette page <a href="http://mike.kaply.com/2012/02/09/integrating-add-ons-into-firefox/">Integrating add-ons into Firefox</a> (en) pour trouver d'autres méthodes.</li> -</ol> - -<h2 id="Changements_au_fil_du_temps">Changements au fil du temps</h2> - -<h3 id="Changement_dans_la_structure_des_répertoires">Changement dans la structure des répertoires</h3> - -<p>La structure des répertoires intégrée au programme a changé 2 fois. Si vous lisez des descriptions sorties avant la version 21, il faut probablement prendre en compte les points suivants :</p> - -<ul> - <li>Dans la version 14, certains paramètres ont arrêté de fonctionner lorsqu'ils étaient dans un fichier du répertoire <code>defaults/pref</code>. La solution pour régler le problème était de créer un répertoire directory <code>defaults/preferences</code> et de les mettrent ici.</li> - <li>Dans la version 21, le nouveau dossier appelé <code>browser</code> fut créé. Le fichier <code>override.ini</code> et les dossiers <code>defaults/preferences</code>, <code>defaults/profile</code>, <code>extensions</code>, <code>plugins</code>, and <code>searchplugins</code> furent déplacés ici. Les plugins du répertoire <code>plugins</code> peuvent être réactivés en modifiant la préférence <code>plugins.load_appdir_plugins</code> à <strong>true</strong>.</li> -</ul> - -<p>La configuration des préférences <code>general.config.filename</code> et <code>general.config.obscure_value</code> pour AutoConfiguration peut être réalisée dans le dossier <code>defaults/pref</code>, mais le fichier de configuration doit commencer par la lettre 'a', comme par exemple <code>autoconfig.js</code>.</p> - -<p>Si l'opération venait à échouer depuis <code>defaults/pref</code> dans une des versions suivantes de Firefox, essayez avec <code>browser/defaults/preferences</code>.</p> - -<h3 id="Changement_de_répertoire_sur_Mac">Changement de répertoire sur Mac</h3> - -<p>En raison de l'approche d'Apple plus stricte en matière de signature de logiciel, depuis environ la version 35 les fichiers de configuration doivent être placés sous <code>/Applications/Firefox.app/Contents/Resources </code>(c'est là que doit aller <code>mozilla.cfg</code> et <code>autoconfig.js </code>sous <code>/Applications/Firefox.app/Contents/Resources/defaults/pref</code>).</p> - -<h3 id="Changements_dans_ESR_24.x_avec_les_fichiers_PDF_Adobe">Changements dans ESR 24.x avec les fichiers PDF Adobe</h3> - -<p>Firefox RR 19.x modifie l'outil de visionnage d'Adobe pour les fichiers .pdf afin d'utiliser l'outil interne. Ce changement est présent dans la version ESR 24.x et la préférence se modifie automatiquement lors de la mise à jour depuis ESR 17.x même si un outil de visionnage externe a été configuré. Le nom du type de fichier a aussi été modifié passant de <strong>Adobe Acrobat Document</strong> à <strong>Portable Document Format (PDF)</strong>, le rendant difficile à localier via les outils ou options. Pour désactiver cette fonctionnalité, modifiez <code>pdfjs.disabled</code> à true, comme dans le fichier d'exemple plus haut.</p> diff --git a/files/fr/mozilla/firefox/developer_edition/index.html b/files/fr/mozilla/firefox/developer_edition/index.html deleted file mode 100644 index 23cf232d3b..0000000000 --- a/files/fr/mozilla/firefox/developer_edition/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Édition pour les développeurs -slug: Mozilla/Firefox/Developer_Edition -tags: - - Developer Edition -translation_of: Mozilla/Firefox/Developer_Edition ---- -<div>{{FirefoxSidebar}}</div><p><img alt="" src="https://mdn.mozillademos.org/files/9069/firefox-dev-ed_logo-only_1024.png" style="display: block; height: 256px; margin-left: auto; margin-right: auto; width: 256px;"></p> - -<p style="text-align: center;">Une version de Firefox adaptée sur mesure pour les développpeurs web.</p> - -<p><a href="https://www.mozilla.org/fr/firefox/developer/" style="width: 375px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Télécharger Firefox Developer Edition</a></p> - -<hr> -<div class="column-container"> -<div class="column-half"> -<h3 id="Les_dernières_fonctionnalités_de_Firefox"><strong>Les dernières fonctionnalités de Firefox</strong></h3> - -<p>L'édition de Firefox pour les développeurs remplace le canal de distribution Aurora dans le <a href="https://wiki.mozilla.org/Release_Management/Release_Process">système de release de Firefox</a>. De la même manière que pour Aurora, les nouvelles fonctionnalités seront intégrées à cette édition toutes les six semaines, une fois qu'elles auront été suffisamment stabilisées avec les versions Nightly.</p> - -<p>En utilisant l'édition développeur, vous pourrez avoir accès aux outils et aux fonctionnalités 12 semaines avant que ceux-ci ne soient disponibles sur le canal de release.</p> - -<p><a href="/en-US/Firefox/Releases/35">Découvrez les nouveautés de l'édition de Firefox pour les développeurs</a>.</p> -</div> - -<div class="column-half"> -<h3 id="Des_outils_de_développement_expérimentaux"><strong>Des outils de développement expérimentaux</strong></h3> - -<p>Certains outils expérimentaux seront intégrés pour maturer avant d'atteindre le canal de distribution release.</p> - -<p>Ainsi, l'édition développeur intègre <a href="/fr/docs/Outils/Firefox_Tools_Adapter">l'extension Valence</a>, qui permet de connecter les <a href="/fr/docs/Outils">outils de développement Firefox</a> à d'autres navigateurs tels que Chrome pour Android ou Safari pour iOS.</p> -</div> -</div> - -<div class="column-container"> -<div class="column-half"> -<h3 id="Un_profil_à_part_entière"><strong>Un profil à part entière</strong></h3> - -<p>L'édition de Firefox pour les développeurs utilise un profil séparé de celui des autres versions de Firefox installées sur le même ordinateur. Cela signifie que vous pouvez facilement utiliser une version développeur en même temps qu'une version beta.</p> -</div> - -<div class="column-half"> -<h3 id="Une_version_paramétrée_pour_les_développeurs_web"><strong>Une version paramétrée pour les développeurs web</strong></h3> - -<p>Les préférences utiles au développement web sont activées et paramétrées. Le débogage du chrome et le débogage à distance sont par exemple activés par défaut.</p> -</div> -</div> - -<div class="column-container"> -<div class="column-half"> -<h3 id="Un_thème_distinct"><strong>Un thème distinct</strong></h3> - -<p>Ce thème permet d'accéder plus rapidement aux outils de développement.</p> -</div> -</div> - -<p> </p> diff --git a/files/fr/mozilla/firefox/developer_edition/reverting/index.html b/files/fr/mozilla/firefox/developer_edition/reverting/index.html deleted file mode 100644 index 231da0448a..0000000000 --- a/files/fr/mozilla/firefox/developer_edition/reverting/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Supprimer les fonctionnalités spéciales -slug: Mozilla/Firefox/Developer_Edition/Reverting -translation_of: Mozilla/Firefox/Developer_Edition/Reverting ---- -<div>{{FirefoxSidebar}}</div><h2 id="Changer_le_thème_de_la_Developer_Edition">Changer le thème de la <em>Developer Edition</em></h2> - -<p>Si vous souhaitez utiliser la Developer Edition, mais que vous préférez utiliser le thème <em>Australis</em> utilisé dans Firefox et Firefox Beta, vous pouvez utiliser le thème normal de Firefox. Ouvrez le panneau « Personnaliser » et cliquez sur le bouton « Utiliser le thème Firefox Developer Edition ».</p> - -<p>{{EmbedYouTube("oiHt8T1Liyk")}}</p> - -<p>Vous pouvez également tapper “about:addons” dans la barre d'URL, sélectionner « Apparence » et changer le thème depuis cet endroit.</p> - -<h2 id="Revenir_à_Firefox_Aurora">Revenir à Firefox Aurora</h2> - -<p>Si vous souhaitez toutes les fonctionnalités pre-Beta dans Firefox Developer Edition, mais que vous ne souhaitez aucun autre changement, vous pouvez revenir à l'ancien Firefox Aurora. Cette opération restaurera votre profil et vos données de session d'avant la mise à jour. C'est un processus en deux étapes, qu'il faut suivre dans cet ordre :</p> - -<ol> - <li>Ouvrez la page Préférences de la Developer Edition, et décochez la case "Autoriser Firefox Developer Edition et Firefox à s'exécuter en parallèle". Il vous sera demandé de redémarrer le navigateur.</li> - <li>Après avoir redémarré, vous pouvez restaurer le thème de la <em>Developer Edition</em> en suivant les instructions de la section « Changer le thème de la <em>Developper Edition</em> » ci-dessus.</li> -</ol> - -<p>{{EmbedYouTube("8rEJn_hATE8")}}</p> diff --git a/files/fr/mozilla/firefox/firefox_esr/index.html b/files/fr/mozilla/firefox/firefox_esr/index.html deleted file mode 100644 index 594d9bbaa4..0000000000 --- a/files/fr/mozilla/firefox/firefox_esr/index.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Firefox ESR -slug: Mozilla/Firefox/Firefox_ESR -tags: - - ESR - - Firefox pour Bureau - - LTS - - Stratégie de Groupe - - Version au Support Allongé - - gpo -translation_of: Mozilla/Firefox/Firefox_ESR ---- -<div>{{FirefoxSidebar}}</div><p>Firefox Extended Support Release (ESR) est basé sur une version officielle de Firefox pour ordinateur, le public visé étant les entreprises qui ont besoin d'un support étendu dans le cadre de déploiements d'envergure. Contrairement aux autres canaux de distribution, les versions ESR ne sont pas mises à jour toutes les six semaines avec de nouvelles fonctionnalités ; par contre, elles sont supportées pendant environ un an et reçoivent des correctifs en cas de problème de stabilité ou de risque de sécurité majeur. La version ESR actuelle se base sur Firefox 60 paru le 9 mai 2018.</p> - -<p>Nous encourageons fortement les utilisateurs de Firefox ESR à s'inscrire sur la <a href="https://www.mozilla.org/en-US/firefox/organizations/">liste de diffusion Enterprise Working Group (EWG)</a>.</p> diff --git a/files/fr/mozilla/firefox/headless_mode/index.html b/files/fr/mozilla/firefox/headless_mode/index.html deleted file mode 100644 index e852a2c775..0000000000 --- a/files/fr/mozilla/firefox/headless_mode/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Le mode headless -slug: Mozilla/Firefox/Headless_mode -tags: - - Automatisation - - Firefox - - Mode Headless - - QA - - node.js - - test -translation_of: Mozilla/Firefox/Headless_mode ---- -<div>{{FirefoxSidebar}}</div><p class="summary">Le mode « <em>headless</em> » permet d'utiliser Firefox mais sans afficher les éléments d'interface. Ça ne présente pas d'intérêt pour surfer sur le Web, mais cela permet de réaliser des tests automatisés. Cet article fournit les informations pertinentes pour pouvoir utiliser le mode <em>headless</em> de Firefox.</p> - -<h2 id="Utiliser_le_mode_headless">Utiliser le mode <em>headless</em></h2> - -<p>Vous pouvez démarrer Firefox dans son mode <em>headless</em> grâce à une ligne de commande incluant le drapeau (<em>flaTg</em>) <code>-headless</code>. Par exemple :</p> - -<pre class="brush: bash">/chemin/vers/firefox -headless</pre> - -<p>Pour le moment, nous n'avons pas inclus davantage d'options, mais plus seront ajoutées plus tard.</p> - -<p>Par exemple, nous travaillons à implémenter une option <code>--screenshot</code>, qui permettra de faire des captures d'écran depuis le mode <em>headless</em> de Firefox. Voir {{bug(1378010)}} pour suivre l'avancée.</p> - -<h3 id="Prise_en_charge">Prise en charge</h3> - -<p>Le mode <em>headless</em> de Firefox fonctionne à partir de la version 55 sur Linux et à partir de la version 56+ sur Windows et Mac.</p> - -<h2 id="Tests_industrialisés_à_l'aide_du_mode_headless">Tests industrialisés à l'aide du mode <em>headless</em></h2> - -<p>La façon la plus utile d'utiliser ce mode <em>headless</em> est de faire tourner des tests industrialisés dans Firefox. Cela signifie que vous pouvez rendre votre processus de test bien plus efficace grâce à ce mode.</p> - -<h3 id="Selenium">Selenium</h3> - -<p>Pour fournir un exemple d'utilisation du mode headless pour test industrialisés, nous allons créer un test recourant à <a href="http://www.seleniumhq.org/">Selenium</a> via <a href="https://nodejs.org/">Node.js</a> et <a>selenium-webdriver</a>. Pour cela, nous supposons que vous êtes déjà à l'aise avec les bases de Selenium, Webdriver et Node, puis que vous avez préparé un environnement de test. Si vous ne l'avez pas fait, rendez-vous sur le guide développant la <a href="https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment#Setting_up_Selenium_in_Node">mise en place d'un environnement de test</a>, puis revenez lire cette documentation.</p> - -<p>Tout d'abord, soyez sûr d'avoir installé Node ainsi que <code>selenium-webdriver</code> sur votre machine. Ensuite, créez un nouveau fichier nommé <code>selenium-test.js</code>.</p> - -<div class="note"> -<p><strong>Note :</strong> Vous pouvez également cloner ce dépôt : <a href="https://github.com/mdn/headless-examples">headless-examples</a> qui contient un fichier de <em>package</em>. Il suffit donc de lancer <code>npm install</code> afin d'installer les dépendances nécessaires.</p> -</div> - -<ol> - <li> - <p>Ajouter quelques lignes de code. À l'intérieur de ce fichier, commencez en important le module principal selenium-webdriver, ainsi que le sous-module firefox :</p> - - <pre class="brush: js">var webdriver = require('selenium-webdriver'), - By = webdriver.By, - until = webdriver.until; - -var firefox = require('selenium-webdriver/firefox');</pre> - </li> - <li> - <p>Puis, créez un objet <code>binary</code> qui représente Firefox Nightly et ajouter l'argument <code>-headless</code> afin qu'il puisse être lancé avec ce mode :</p> - - <pre class="brush: js">var binary = new firefox.Binary(firefox.Channel.NIGHTLY); -binary.addArguments("-headless");</pre> - </li> - <li> - <p>Maintenant, créez une nouvelle instance de driver utilisant Firefox et utilisez <code>setFirefoxOptions()</code> afin d'inclure une option qui spécifiera que le test devra tourner sur le Nightly channel de Firefox (cette étape n'est pas nécessaire sur Linux, mais reste utile pour utiliser les fonctions avancées de la version Nightly de Firefox sur Windows/Mac tant que celle-ci n'est pas disponible en <em>release</em>) :</p> - - <pre class="brush: js">var driver = new webdriver.Builder() - .forBrowser('firefox') - .setFirefoxOptions(new firefox.Options().setBinary(binary)) - .build();</pre> - </li> - <li> - <p>Il faut maintenant ajouter la ligne de code qui initiera la navigation sur la page de recherche Google :</p> - - <pre class="brush: js">driver.get('https://www.google.com'); -driver.findElement(By.name('q')).sendKeys('webdriver'); - -driver.sleep(1000).then(function() { - driver.findElement(By.name('q')).sendKeys(webdriver.Key.TAB); -}); - -driver.findElement(By.name('btnK')).click(); - -driver.sleep(2000).then(function() { - driver.getTitle().then(function(title) { - if(title === 'webdriver - Google Search') { - console.log('Test passed'); - } else { - console.log('Test failed'); - } - }); -}); - -driver.quit();</pre> - </li> - <li> - <p>Enfin, démarrez le test en utilisant la commande suivante :</p> - - <pre class="brush: bash">node selenium-test</pre> - </li> -</ol> - -<p>Et c'est tout ! Après quelques secondes, vous devriez voir apparaître le message "Test passed" sur la console</p> - -<p>L'article <em><a href="https://mykzilla.org/2017/08/30/headless-firefox-in-node-js-with-selenium-webdriver/">Headless Firefox in Node.js with selenium-webdriver</a></em> de Myk Melez continent d'autres conseils utiles pour créer un test industrialisé via Node.js et Selenium dans le mode <em>headless</em>.</p> - -<h3 id="D'autres_solutions_de_test">D'autres solutions de test</h3> - -<p>Slimerjs supporte Firefox sur Linux et bientôt sur Mac et Windows. Voir l'article <em><a href="https://adriftwith.me/coding/2017/04/21/headless-slimerjs-with-firefox/">Headless SlimerJS with Firefox</a></em> de Brendan Dahl pour plus détails.</p> - -<p>De plus, vous pourrez utiliser le mode headless de Firefox pour faire tourner des tests industrialisés développés dans la plupart des autres applications de tests, pour autant qu'elles permettent de définir une variable d'environnement.</p> - -<h2 id="Dépannage_et_aide_supplémentaire">Dépannage et aide supplémentaire</h2> - -<p>Si vous avez le moindre problème en utilisant le mode <em>headless</em>, ne vous inquiétez pas, nous sommes ici pour vous aider. Cette section a pour but de référencer toutes vos questions et les réponses que nous leur apportons.</p> - -<ul> - <li>Sur Linux, certaines bibliothèques sont nécessaires pour faire tourner le mode <em>headless</em> de Firefox, même si ce dernier ne les utilise pas directement. Voir le {{bug(1372998)}} pour suivre la résolution du problème.</li> -</ul> - -<p>Si vous souhaitez poser une question à nos ingénieurs, le meilleur moyen est de se rendre sur le <a href="https://wiki.mozilla.org/IRC">canal IRC</a> <code>#headless</code> de Mozilla. Si vous êtes certain d'avoir trouvé un bug, documentez le sur la plateforme <a href="https://bugzilla.mozilla.org/">Mozilla Bugzilla</a>.</p> - -<h2 id="Voir_aussi">Voir aussi</h2> - -<ul> - <li><a href="https://intoli.com/blog/running-selenium-with-headless-firefox/"><em>Using Selenium with Headless Firefox (on Windows)</em> (en anglais)</a> par Andre Perunicic (utilise Python)</li> - <li><em><a href="https://mykzilla.org/2017/08/30/headless-firefox-in-node-js-with-selenium-webdriver/">Headless Firefox in Node.js with selenium-webdriver </a></em><a href="https://mykzilla.org/2017/08/30/headless-firefox-in-node-js-with-selenium-webdriver/">(en anglais)</a> par Myk Melez</li> - <li><a href="https://adriftwith.me/coding/2017/04/21/headless-slimerjs-with-firefox/"><em>Headless SlimerJS with Firefox</em> (en anglais)</a> par Brendan Dahl</li> -</ul> diff --git a/files/fr/mozilla/firefox/le_protocole_about/index.html b/files/fr/mozilla/firefox/le_protocole_about/index.html deleted file mode 100644 index 0e6912b8a7..0000000000 --- a/files/fr/mozilla/firefox/le_protocole_about/index.html +++ /dev/null @@ -1,174 +0,0 @@ ---- -title: Firefox et le protocole "about" -slug: Mozilla/Firefox/Le_protocole_about -tags: - - Firefox - - Guide - - Mozilla - - Protocoles -translation_of: Mozilla/Firefox/The_about_protocol ---- -<div>{{FirefoxSidebar}}</div> - -<p>Il existe un grand nombre d'informations utiles à propos de Firefox cachées derrière le protocole d'URL <code>about:</code>. La plus utile est l'URL <code>about:config</code> qui affiche les préférences et les paramètres qui peuvent être consultés et modifiés. Voici la liste complète des URL du pseudo-protocole <code>about:</code> :</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Page <code>about:</code></th> - <th scope="col">Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>about:about</code></td> - <td>Fournit un aperçu de toutes les pages about:</td> - </tr> - <tr> - <td><code>about:addons</code></td> - <td>Gestionnaire de modules complémentaires</td> - </tr> - <tr> - <td><code>about:buildconfig</code></td> - <td>Affiche la plate-forme et la configuration utilisées pour construire Firefox</td> - </tr> - <tr> - <td><code>about:cache</code></td> - <td>Affiche les informations sur les caches mémoire, disque et appcache</td> - </tr> - <tr> - <td><code>about:checkerboard</code></td> - <td>Permet de diagnostiquer les apparitions de damiers à l'affichage</td> - </tr> - <tr> - <td><code>about:config</code></td> - <td>Fournit un moyen d'inspecter et modifier les préférences et paramètres de Firefox</td> - </tr> - <tr> - <td><code>about:crashes</code></td> - <td>Liste tous les plantages qui se sont produits pendant le fonctionnement de Firefox (dans le cas où l'utilisateur a activé les rapports de plantage)</td> - </tr> - <tr> - <td><code>about:credits</code></td> - <td>Liste tous les contributeurs du projet Firefox</td> - </tr> - <tr> - <td><code>about:debugging</code></td> - <td>Affiche la page de déboguage des modules complémentaires</td> - </tr> - <tr> - <td><code>about:devtools</code></td> - <td>Introduction aux outils de développement</td> - </tr> - <tr> - <td><code>about:downloads</code></td> - <td>Affiche tous les téléchargements faits dans Firefox</td> - </tr> - <tr> - <td><code>about:home</code></td> - <td>Page de démarrage de Firefox lors de l'ouverture d'une nouvelle fenêtre</td> - </tr> - <tr> - <td><code>about:license</code></td> - <td>Affiche les informations de licence</td> - </tr> - <tr> - <td><code>about:logo</code></td> - <td>Logo de Firefox</td> - </tr> - <tr> - <td><a href="/fr/docs/Performance/about%3Amemory">about:memory</a></td> - <td>Fournit un moyen d'afficher l'utilisation de la mémoire, de l'enregistrer dans un rapport et de lancer les GC et CC</td> - </tr> - <tr> - <td><code>about:mozilla</code></td> - <td>Page spéciale affichant un message extrait de l'ouvrage "Le Livre de Mozilla"</td> - </tr> - <tr> - <td><code>about:networking</code></td> - <td>Affiche des informations sur le réseau</td> - </tr> - <tr> - <td><code>about:newtab</code></td> - <td>Page de démarrage à l'ouverture d'un nouvel onglet</td> - </tr> - <tr> - <td><code>about:performance</code></td> - <td>Affiche une indication de l'utilisation du processeur et de la mémoire des onglets/modules/processus</td> - </tr> - <tr> - <td><code>about:plugins</code></td> - <td>Affiche les informations sur les plugins installés</td> - </tr> - <tr> - <td><code>about:policies</code></td> - <td>Liste les <a href="https://support.mozilla.org/fr/products/firefox-enterprise/policies-enterprise">stratégies d'entreprise</a></td> - </tr> - <tr> - <td><code>about:preferences</code></td> - <td>Paramètres de Firefox (également accessibles à partir du menu Firefox > <em>Préférences</em>)</td> - </tr> - <tr> - <td><code>about:privatebrowsing</code></td> - <td>Page de démarrage lors de l'ouverture d'une fenêtre de navigation privée</td> - </tr> - <tr> - <td><code>about:profiles</code></td> - <td>Affichages et gestion des profils</td> - </tr> - <tr> - <td><code>about:restartrequired</code></td> - <td>Page informant l'utilisateur de la nécessité d'un redémarage après une mise à jour</td> - </tr> - <tr> - <td><code>about:reader</code></td> - <td>Indique qu'une page utilise le mode lecture</td> - </tr> - <tr> - <td><code>about:rights</code></td> - <td>Affiche des informations sur les droits</td> - </tr> - <tr> - <td><code>about:robots</code></td> - <td>Page spéciale affichant des remarques concernant les robots</td> - </tr> - <tr> - <td><code>about:serviceworkers</code></td> - <td>Affiche les ServiceWorkers inscrits</td> - </tr> - <tr> - <td><code>about:sessionrestore</code></td> - <td>Restauration de session (affichée après un plantage de Firefox)</td> - </tr> - <tr> - <td><code>about:support</code></td> - <td>Informations de dépannage (également accessible à partir du menu Firefox > <em>? (point d'interrogation)</em> > <em>Informations de dépannage</em>)</td> - </tr> - <tr> - <td><code>about:sync-log</code></td> - <td>Affiche un protocole de synchronisation relatif à la fonctionnalité <a href="https://www.mozilla.org/fr/firefox/sync/">Sync</a></td> - </tr> - <tr> - <td><code>about:telemetry</code></td> - <td>Affiche les données de télémétrie collectées et envoyées à Mozilla lorsque Firefox est en cours d'exécution (dans le cas où l'utilisateur a activé la télémétrie)</td> - </tr> - <tr> - <td><code>about:url-classifier</code></td> - <td>Affiche le statut de la classification d'URL (utilisée pour <a href="https://support.mozilla.org/fr/kb/comment-fonctionne-protection-contre-hame%C3%A7onnage-et-logiciels-malveillants">les protections contre l'hameçonnage et les logiciels malveillants</a>)</td> - </tr> - <tr> - <td><code>about:webrtc</code></td> - <td>Informations sur l'utilisation de WebRTC</td> - </tr> - <tr> - <td><code>about:welcome</code></td> - <td>Page affiché après l'installation de Firefox</td> - </tr> - <tr> - <td><code>about:welcomeback</code></td> - <td>Page d'information affichée après la réinitialisation de Firefox</td> - </tr> - </tbody> -</table> - -<p>Ces URL sont définies dans {{source("docshell/base/nsAboutRedirector.cpp")}}, à l'intérieur du tableau <code>kRedirMap</code>. Celui-ci couvre la plupart des URL, de <code>config</code> jusqu'aux URL du pseudo-protocole <code>chrome:</code>, comme <code>chrome://global/content/config.xul</code>. Les informations sur les emplacements about sont dupliquées dans {{source("docshell/build/nsDocShellModule.cpp")}}.</p> diff --git a/files/fr/mozilla/firefox/multiprocessus_firefox/index.html b/files/fr/mozilla/firefox/multiprocessus_firefox/index.html deleted file mode 100644 index 9a09652da6..0000000000 --- a/files/fr/mozilla/firefox/multiprocessus_firefox/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Firefox multiprocessus -slug: Mozilla/Firefox/Multiprocessus_Firefox -tags: - - multiprocessus -translation_of: Mozilla/Firefox/Multiprocess_Firefox ---- -<div>{{FirefoxSidebar}}</div><p>Dans les anciennes versions de Firefox pour bureau, le navigateur ne s'exécutait que dans un seul processus du système d'exploitation. En particulier, le JavaScript qui exécutait l'interface du navigateur (également connu sous le nom « code chrome ») s'exécutait habituellement dans le même processus que celui présent dans les pages web (<span class="spellmodupdated" title="">appelé</span> aussi « contenu » ou « contenu web »).</p> - -<p>Les dernières versions de Firefox e<span class="spellmod" title="">xécutent</span> l'interface du navigateur dans un processus différent de celui des pages w<span class="spellmod" title="">eb.</span> Dans la première itération de cette architecture, tous les onglets tournent dans le même processus et l'interface du navigateur dans un processus différent. Dans les itérations suivantes, nous espérons avoir plus d'un processus pour le contenu. Le projet qui consiste à apporter le <span class="spellmod" title="">multi</span>processus dans Firefox est <span class="spellmod" title="">appelé</span> <em>Electrolysis</em>, qui correspond à l'abréviation e10s.</p> - -<p>Les pages web classiques ne sont pas affectées par l'apparition du multiprocessus dans Firefox. Les développeurs travaillant sur Firefox lui-même ou les extensions du navigateur seront affectés si leur code <span id="result_box" lang="fr"><span class="hps">repose sur la possibilité</span> <span class="hps">d'accéder directement à</span> du contenu web.</span></p> - -<p><span lang="fr"><span class="hps">Au lieu d'accéder au contenu directement, le JavaScript présent dans le code chrome devra utiliser </span></span>le <a href="/Firefox/Multiprocess_Firefox/Message_manager">gestionnaire de messages</a> pour accéder au contenu. Pour faciliter la transition, nous avons mis en place des objets (les <a href="/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">Cross Process Object Wrappers</a>) et vous pouvez vous référer à cette <a href="https://developer.mozilla.org/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts#Compatibility_shims">page</a> pour découvrir les limitations des scripts chrome. Si vous développez des extensions, vous pouvez lire le <a href="https://developer.mozilla.org/Mozilla/Add-ons/Working_with_multiprocess_Firefox">guide pour travailler avec Firefox multiprocessus</a>.</p> - -<hr> -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/Firefox/Multiprocess_Firefox/Technical_overview">Présentation technique</a></dt> - <dd>Une vision très haut niveau de comment le multiprocessus pour Firefox est mis en œuvre.</dd> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Web_content_compatibility">Guide de compatibilité du contenu web</a></dt> - <dd>Conseils et détails sur de potentiels problèmes de compatibilité des sites web qui peuvent arriver à cause de la transition. Remarque : il n'y en a pas beaucoup !</dd> - <dt><a href="/Firefox/Multiprocess_Firefox/Glossary">Glossaire</a></dt> - <dd>La définition du jargon utilisé dans le projet <em>Electrolysis</em>.</dd> - <dt><a href="/Firefox/Multiprocess_Firefox/Message_Manager">Gestionnaire de messages</a></dt> - <dd><span id="result_box" lang="fr"><span class="hps">Guide complet sur</span> <span class="hps">les</span> <span class="hps">objets utilisés</span> <span class="hps">pour communiquer entre</span> <span class="hps">le code chrome</span> <span class="hps">et le contenu.</span></span></dd> - <dt><a href="/Add-ons/SDK/Guides/Multiprocess_Firefox_and_the_SDK">Extensions basées sur le SDK</a></dt> - <dd>Comment migrer vos extensions en utilisant le SDK d'extensions.</dd> - <dt><a href="/Firefox/Multiprocess_Firefox/Which_URIs_load_where">Quelle URI se charge où</a></dt> - <dd>Un guide rapide sur quelles URI - chrome:, about:, file:, resource: - sont chargés dans chaque processus.</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/Firefox/Multiprocess_Firefox/Motivation">Motivation</a></dt> - <dd>Pourquoi nous implémentons le multiprocessus dans Firefox : performance, sécurité et stabilité.</dd> - <dt><a href="/Add-ons/Working_with_multiprocess_Firefox">Guide de migration des extensions</a></dt> - <dd>Si vous êtes un développeur d'extension, apprenez si votre extension est affectée et comment mettre à jour votre code.</dd> - <dt><a href="/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">Objets CPOW</a></dt> - <dd>Les objets appelés <em>Cross Process Object Wrappers</em> sont une aide à la migration, permettant au code chrome d'accéder de manière synchrone au contenu.</dd> - <dt><a href="/Firefox/Multiprocess_Firefox/Debugging_frame_scripts">Deboggage des processus du contenu</a></dt> - <dd>Comment déboguer du code fonctionnant dans le processus contenu.</dd> - <dt><a href="/docs/Mozilla/Firefox/Multiprocess_Firefox/Tab_selection_in_multiprocess_Firefox">Sélection d'onglet dans Firefox multiprocessus</a></dt> - <dd>Comment le passage entre les onglets marche dans Firefox multiprocessus.</dd> -</dl> -</div> -</div> - -<hr> -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts">Limitations des scripts chrome</a></dt> - <dd>Les pratiques ne fonctionnant plus dans le code chrome et comment y remédier.</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/Firefox/Multiprocess_Firefox/Limitations_of_frame_scripts">Limitations des scripts avec privilèges</a></dt> - <dd>Les pratiques ne fonctionnant plus dans le code des scripts de cadre et comment y remédier.</dd> -</dl> -</div> -</div> - -<hr> -<h2 id="Contactez-nous">Contactez-nous</h2> - -<p>Pour plus d'informations sur le projet, vous impliquer ou poser des questions :</p> - -<ul> - <li><strong>Page du projet Electrolysis</strong>: <a href="https://wiki.mozilla.org/Electrolysis">https://wiki.mozilla.org/Electrolysis</a></li> - <li><strong>IRC</strong>: #e10s sur <a href="https://wiki.mozilla.org/IRC">irc.mozilla.org</a></li> - <li><strong>Mailing list</strong>: <a href="https://groups.google.com/forum/#!forum/mozilla.dev.tech.electrolysis">dev.tech.electrolysis</a></li> -</ul> diff --git a/files/fr/mozilla/firefox/multiprocessus_firefox/motivation/index.html b/files/fr/mozilla/firefox/multiprocessus_firefox/motivation/index.html deleted file mode 100644 index ed2b4828b4..0000000000 --- a/files/fr/mozilla/firefox/multiprocessus_firefox/motivation/index.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Motivation -slug: Mozilla/Firefox/Multiprocessus_Firefox/Motivation -translation_of: Mozilla/Firefox/Multiprocess_Firefox/Motivation ---- -<div>{{FirefoxSidebar}}</div><p>Il y a trois raisons qui nous poussent à faire tourner le contenu de Firefox dans un processus séparé : performance, sécurité, stabilité.</p> - -<h2 id="Performance">Performance</h2> - -<p>La plupart des travaux de Mozilla ces deux dernières années ont mis l'accent sur la réactivité du navigateur. Le but est de réduire les lenteurs de l'interface (<a href="/en-US/docs/Glossary/Jank">jank</a>) - c'est-à-dire quand le navigateur a l'air de se figer lors du chargement d'une grosse page, au remplissage d'un formulaire ou lors du défilement de la page. La réactivité devient plus importante que le débit sur le web aujourd'hui. Un gros du travail a été réalisé comme une partie du projet <a href="https://wiki.mozilla.org/Performance/Snappy">Snappy</a>. En voici les principaux axes :</p> - -<ul> - <li>Mettre les actions longues à réaliser dans un thread séparé pour que le thread principal puisse continuer à répondre.</li> - <li>Rendre les Entrées/Sorties asynchrones ou dans des threads séparés pour que le thread principal ne soit pas bloqué par le disque dur.</li> - <li>Réduire les gros codes en plusieurs petits morceaux et en exécutant la boucle d'évènement entre ces morceaux.</li> -</ul> - -<p>Une grande partie de ces travaux a déjà été réalisée. Les points restants sont difficiles à résoudre. Par exemple, l'exécution de JavaScript se déroule dans le thread principal ce qui bloque la boucle d'évènements. Exécuter ces composants dans un thread séparé est difficile parce qu'ils accèdent à des données comme le DOM qui ne sont pas sécurisées dans le cas d'accès par différents threads. Comme alternative, nous avons envisagé de pouvoir exécuter la boucle d'évènements au milieu de l'exécution de JavaScript, mais cela briserait beaucoup d'hypothèses de différentes parties de Firefox (comme les extensions).</p> - -<p>Exécuter le contenu web dans un processus séparé est une alternative viable. Comme l'approche avec différents threads, Firefox est capable d'exécuter la boucle d'évènements pendant que le JavaScript et l'agencement s'exécutent dans un processus contenu. Mais, le code d'Interface Utilisateur n'a pas accès au contenu du DOM ou d'autres structures de données du contenu, il y a donc un besoin de verrouillage et de protection d'accès sur cette partie. L'inconvénient est que tout code présent dans le processus interface utilisateur de Firefox qui a besoin d'accéder au contenu doit le faire explicitement via un passage de messages.</p> - -<p>Nous pensons que ce compromis est logique pour plusieurs raisons :</p> - -<ul> - <li>L'accès au DOM par le code de Firefox n'est pas commun.</li> - <li>Le code partagé avec Firefox OS utilise déjà le passage de messages.</li> - <li>Dans le modèle multi-processus, <span id="result_box" lang="fr"><span>le code</span> <span class="hps">de Firefox qui</span> <span class="hps">ne parvient pas à</span> <span class="hps">utiliser</span> <span class="hps">le passage de messages</span> afin d'accéder <span class="hps">au contenu</span> <span class="hps">va échouer</span> <span class="hps">de</span> <span class="hps">manière </span><span class="hps">évidente. Dans un modèle</span> multi-threads, le <span class="hps">code qui accède à</span> <span class="hps">du contenu sans</span> <span class="hps">blocage</span> <span class="hps">correct</span> <span class="hps">échouera</span> <span class="hps">de façon subtile</span>, et sera bien plus difficile <span class="hps">à déboguer.</span></span></li> -</ul> - -<h2 id="Sécurité">Sécurité</h2> - -<p>Aujourd'hui, si quelqu'un découvre un bug exploitable dans Firefox, il est capable de prendre le contrôle des ordinateurs des utilisateurs. Il existe des solutions pour parer ce problème, la plus connue est la technique du <a href="http://fr.wikipedia.org/wiki/Sandbox_%28s%C3%A9curit%C3%A9_informatique%29">bac à sable</a>. Cette méthode ne nécessite pas une architecture multi-processus. Cependant, un bac à sable fonctionnant avec Firefox en processus unique ne serait pas très efficace. Les bacs à sable permettent seulement d'empêcher à un processus d'effectuer des actions qu'il ne devrait pas réaliser. Malheureusement, Firefox nécessite l'accès à bien plus de choses que le réseau et le système de fichiers (surtout lorsque des extensions sont installées). Ainsi, un bac à sable pour Firefox en processus unique ne pourrait pas bloquer grand-chose.</p> - -<p>Avec Firefox multi-processus, les processus contenus seront mis dans un bac à sable. Ainsi, un processus ne pourra pas accéder directement au système de fichiers, mais devra demander au processus principal. À ce moment, le processus principal pourra vérifier que la requête est sécurisée et logique. Par conséquent, le bac à sable peut être très restrictif. On espère que cette méthode rende plus difficile l'exploitation de trous de sécurité dans Firefox.</p> - -<h2 id="Stabilité">Stabilité</h2> - -<p>Actuellement, un plantage dans un code s'exécutant dans une page va faire tomber le navigateur en entier. Avec Firefox multi-processus, seul le processus du contenu qui s'est planté sera détruit.</p> - -<div class="note"> -<p>Cette page contient pas mal de contenu provenant de l'article de blog de Bill McCloskey's sur Firefox multi-processus : <a href="http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/">http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/</a> (en)</p> -</div> - -<p> </p> diff --git a/files/fr/mozilla/firefox/multiprocessus_firefox/technical_overview/index.html b/files/fr/mozilla/firefox/multiprocessus_firefox/technical_overview/index.html deleted file mode 100644 index 92839d64e2..0000000000 --- a/files/fr/mozilla/firefox/multiprocessus_firefox/technical_overview/index.html +++ /dev/null @@ -1,164 +0,0 @@ ---- -title: Vue d'ensemble technique -slug: Mozilla/Firefox/Multiprocessus_Firefox/Technical_overview -translation_of: Mozilla/Firefox/Multiprocess_Firefox/Technical_overview ---- -<div>{{FirefoxSidebar}}</div><div class="note"> -<p>Cette page est une traduction d'un extrait de l'article du blog Bill McCloskey sur Firefox et le multiprocessus: <a class="external external-icon" href="http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/">http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/</a></p> -</div> - -<p>À un haut niveau, le Firefox en multiprocessus fonctionne comme il suit. Le processus qui est démarré quand Firefox est lancé est appelé le processus parent. Initialement, ce processus fonctionne de la même manière que Firefox lorsqu'il fonctionne avec un seul processus: une fenêtre est ouverte affichant <a href="http://mxr.mozilla.org/mozilla-central/source/browser/base/content/browser.xul"><code>browser.xul</code></a>, qui contient les éléments principaux de l'UI pour Firefox. Firefox a un toolkit pour les GUI appelé XUL qui permet aux éléments de l'interface d'être déclaré et posés de façon déclarative, de la même manière que pour du contenu web. Tout comme le contenu web, il y a un objet <code>window</code>, qui a une propriété <code>document</code>, et celui-ci contient tout les éléments XML déclarés dans <code>browser.xul</code>. Tous les menus, barres d'outils, sidebars, et onglets dans Firefox sont des éléments XML dans ce document. Chaque onglet contient un élément <code><browser></code> pour afficher le contenu web.</p> - -<p>Le premier endroit où Firefox multiprocessus diverge de sa version en monoprocessus est que chaque élément <code><browser></code> a un attribut <code>remote="true"</code>. Quand un tel élément est ajouté au document, un nouveau processus, appelé <em>child process</em>, pour le contenu est lancé. Un canal IPC est créé qui relie processus parent et enfant. Initialement l'enfant affiche <code>about:blank</code>, mais le parent peut envoyer des commandes à l'enfant pour naviguer autre part.</p> - -<h2 id="Rendu"><strong id="drawing">Rendu</strong></h2> - -<p>D'une certaine manière, le contenu Web affiché doit passer du processus enfant au parent, puis à l'écran. Le multiprocessus de Firefox dépend d'une nouvelle fonctionnalité appelée <a href="http://benoitgirard.wordpress.com/2012/05/15/off-main-thread-compositing-omtc-and-why-it-matters/"><em>off main thread compositing</em></a> (OMTC). En bref chaque fenêtre de Firefox est divisée en séries de couches, en quelque sorte similaire au calque de Photoshop. Chaque fois que Firefox effectue un rendue de la page Web, ces couches sont soumises à un thread de composition qui traduit les couches et les associent en semble pour former la page qui est ensuite dessinée.</p> - -<p>Les calques sont structurés comme un arbre. La couche racine de l'arbre est responsable de l'ensemble de la fenêtre de Firefox. Cette couche contient d'autres couches, dont certaines sont responsables de l'élaboration des menus et des onglets. Une sous-couche affiche tout le contenu Web. Le contenu Web lui-même peut être divisé en plusieurs couches, mais ils sont tous enracinés dans une seule couche "content".</p> - -<p>Dans le multiprocessus de Firefox, la sous-couche de la couche de contenu est en fait une cale. La plupart du temps, il contient un noeud de substitution qui conserve simplement une référence à la liaison IPC avec le processus enfant. Le processus de contenu conserve l'arborescence de couches réelle pour le contenu Web. Il construit et dessine dans cet arbre de couche. Lorsqu'il a terminé, il envoie la structure de son arbre de couche au processus parent via IPC. Les tampons de sauvegarde sont partagés avec le parent soit par la mémoire partagée, soit par la mémoire GPU. Les références à cette mémoire sont envoyées dans une parti de l'arborescence de l'arbre. Lorsque le parent reçoit l'arborescence de la couche, il supprime son nœud de substitution et le remplace par l'arbre réel du contenu. Ensuite, il compose et dessine comme d'habitude. Lorsqu'il a terminé, il remet sont nœud de substitution.</p> - -<p>L'architecture de base de la façon dont OMTC fonctionne avec plusieurs processus existe depuis un certain temps, car il est nécessaire pour Firefox OS. Cependant, Matt Woodrow et David Anderson travail beaucoup pour que tout fonctionne correctement sur Windows, Mac et Linux. L'un des grands défis pour le multiprocessus de Firefox serait d'utiliser OMTC sur toutes les plates-formes. À l'heure actuelle, seuls la plate-forme Mac l'utilisent par défaut.</p> - -<h2 id="User_input"><strong id="input">User input</strong></h2> - -<p>Events in Firefox work the same way as they do on the web. Namely, there is a DOM tree for the entire window, and events are threaded through this tree in capture and bubbling phases. Imagine that the user clicks on a button on a web page. In single-process Firefox, the root DOM node of the Firefox window gets the first chance to process the event. Then, nodes lower down in the DOM tree get a chance. The event handling proceeds down through to the XUL <code><browser></code> element. At this point, nodes in the web page’s DOM tree are given a chance to handle the event, all the way down to the button. The bubble phase follows, running in the opposite order, all the way back up to the root node of the Firefox window.</p> - -<p>With multiple processes, event handling works the same way until the <code><browser></code> element is hit. At that point, if the event hasn’t been handled yet, it gets sent to the child process by IPC, where handling starts at the root of the content DOM tree. The parent process then waits to run its bubbling phase until the content process has finished handling the event.</p> - -<h2 id="Inter-process_communication"><strong id="ipc">Inter-process communication</strong></h2> - -<p>All IPC happens using the Chromium IPC libraries. Each child process has its own separate IPC link with the parent. Children cannot communicate directly with each other. To prevent deadlocks and to ensure responsiveness, the parent process is not allowed to sit around waiting for messages from the child. However, the child is allowed to block on messages from the parent.</p> - -<p>Rather than directly sending packets of data over IPC as one might expect, we use code generation to make the process much nicer. The IPC protocol is defined in <a href="https://wiki.mozilla.org/IPDL">IPDL</a>, which sort of stands for “inter-* protocol definition language”. A typical IPDL file is <code><a href="http://mxr.mozilla.org/mozilla-central/source/netwerk/ipc/PNecko.ipdl">PNecko.ipdl</a></code>. It defines a set messages and their parameters. Parameters are serialized and included in the message. To send a message <code>M</code>, C++ code just needs to call the method <code>SendM</code>. To receive the message, it implements the method <code>RecvM</code>.</p> - -<p>IPDL is used in all the low-level C++ parts of Gecko where IPC is required. In many cases, IPC is just used to forward actions from the child to the parent. This is a common pattern in Gecko:</p> - -<pre class="brush: cpp">void AddHistoryEntry(param) { - if (XRE_GetProcessType() == GeckoProcessType_Content) { - // If we're in the child, ask the parent to do this for us. - SendAddHistoryEntry(param); - return; - } - - // Actually add the history entry... -} - -bool RecvAddHistoryEntry(param) { - // Got a message from the child. Do the work for it. - AddHistoryEntry(param); - return true; -} -</pre> - -<p>When <code>AddHistoryEntry</code> is called in the child, we detect that we’re inside the child process and send an IPC message to the parent. When the parent receives that message, it calls <code>AddHistoryEntry</code> on its side.</p> - -<p>For a more realistic illustration, consider the Places database, which stores visited URLs for populating the awesome bar. Whenever the user visits a URL in the content process, we call <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/components/places/History.cpp?rev=8b9687f6c602#2326">this code</a>. Notice the content process check followed by the <code>SendVisitURI</code> call and an immediate return. The message is received <a href="http://mxr.mozilla.org/mozilla-central/source/dom/ipc/ContentParent.cpp?rev=fecda5f4a0df#2666">here</a>; this code just calls <code>VisitURI</code> in the parent.</p> - -<p>The code for IndexedDB, the places database, and HTTP connections all runs in the parent process, and they all use roughly the same proxying mechanism in the child.</p> - -<h2 id="Frame_scripts"><strong id="contentscripts">Frame scripts</strong></h2> - -<p>IPDL takes care of passing messages in C++, but much of Firefox is actually written in JavaScript. Instead of using IPDL directly, JavaScript code relies on <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">the message manager</a> to communicate between processes. To use the message manager in JS, you need to get hold of a message manager object. There is a global message manager, message managers for each Firefox window, and message managers for each <code><browser></code> element. A message manager can be used to load JS code into the child process and to exchange messages with it.</p> - -<p>As a simple example, imagine that we want to be informed every time a <code>load</code> event triggers in web content. We’re not interested in any particular browser or window, so we use the global message manager. The basic process is as follows:</p> - -<pre class="brush: js">// Get the global message manager. -let mm = Cc["@<span class="skimlinks-unlinked">mozilla.org/globalmessagemanager;1</span>"]. - getService(Ci.nsIMessageListenerManager); - -// Wait for load event. -mm.addMessageListener("GotLoadEvent", function (msg) { - dump("Received load event: " + <span class="skimlinks-unlinked">msg.data.url</span> + "\n"); -}); - -// Load code into the child process to listen for the event. -mm.loadFrameScript("chrome://content/<span class="skimlinks-unlinked">content-script.js</span>", true); -</pre> - -<p>For this to work, we also need to have a file <code>content-script.js</code>:</p> - -<pre class="brush: js">// Listen for the load event. -addEventListener("load", function (e) { - // Inform the parent process. - let docURL = content.document.documentURI; - sendAsyncMessage("GotLoadEvent", {url: docURL}); -}, false); -</pre> - -<p>This file is called a <em>frame script</em>. When the <code>loadFrameScript</code> function call runs, the code for the script is run once for each <code><browser></code> element. This includes both remote browsers and regular ones. If we had used a per-window message manager, the code would only be run for the browser elements in that window. Any time a new browser element is added, the script is run automatically (this is the purpose of the <code>true</code> parameter to <code>loadFrameScript</code>). Since the script is run once per browser, it can access the browser’s window object and docshell via the <code>content</code> and <code>docShell</code> globals.</p> - -<p>The great thing about frame scripts is that they work in both single-process and multiprocess Firefox. To learn more about the message manager, see the <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">message manager guide</a>.</p> - -<h2 id="Cross-process_APIs"><strong id="shims">Cross-process APIs</strong></h2> - -<p>There are a lot of APIs in Firefox that cross between the parent and child processes. An example is the <code>webNavigation</code> property of XUL <code><browser></code> elements. The <code>webNavigation</code> property is an object that provides methods like <code>loadURI</code>, <code>goBack</code>, and <code>goForward</code>. These methods are called in the parent process, but the actions need to happen in the child. First I’ll cover how these methods work in single-process Firefox, and then I’ll describe how we adapted them for multiple processes.</p> - -<p>The <code>webNavigation</code> property is defined using the XML Binding Language (XBL). XBL is a declarative language for customizing how XML elements work. Its syntax is a combination of XML and JavaScript. Firefox uses XBL extensively to customize XUL elements like <code><browser></code> and <code><tabbrowser></code>. The <code><browser></code> customizations reside in <code><a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/browser.xml?rev=754cf7fc84cd">browser.xml</a></code>. <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/browser.xml?rev=754cf7fc84cd#262">Here</a> is how <code>browser.webNavigation</code> is defined:</p> - -<pre class="brush: xml"><field name="_webNavigation">null</field> - -<property name="webNavigation" readonly="true"> - <getter> - <![CDATA[ - if (!this._webNavigation) - this._webNavigation = this.docShell.QueryInterface(Components.interfaces.nsIWebNavigation); - return this._webNavigation; - ]]> - </getter> -</property> -</pre> - -<p>This code is invoked whenever JavaScript code in Firefox accesses <code>browser.webNavigation</code>, where <code>browser</code> is some <code><browser></code> element. It checks if the result has already been cached in the <code>browser._webNavigation</code> field. If it hasn’t been cached, then it fetches the navigation object based off the browser’s <em>docshell</em>. The docshell is a Firefox-specific object that encapsulates a lot of functionality for loading new pages, navigating back and forth, and saving page history. In multiprocess Firefox, the docshell lives in the child process. Since the <code>webNavigation</code> accessor runs in the parent process, <code>this.docShell</code> above will just return null. As a consequence, this code will fail completely.</p> - -<p>One way to fix this problem would be to create a fake docshell in C++ that could be returned. It would operate by sending IPDL messages to the real docshell in the child to get work done. We may eventually take this route in the future. We decided to do the message passing in JavaScript instead, since it’s easier and faster to prototype things there. Rather than change every docshell-using accessor to test if we’re using multiprocess browsing, we decided to create a new XBL binding that applies only to remote <code><browser></code> elements. It is called <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/remote-browser.xml?rev=9583bd3099ae"><code>remote-browser.xml</code></a>, and it extends the existing <code>browser.xml</code> binding.</p> - -<p>The <code>remote-browser.xml</code> binding returns a JavaScript <em>shim object</em> whenever anyone uses <code>browser.webNavigation</code> or other similar objects. The shim object is implemented <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/modules/RemoteWebNavigation.jsm">in its own JavaScript module</a>. It uses the message manager to send messages like <code>"WebNavigation:LoadURI"</code> to <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/browser-child.js?rev=9583bd3099ae#107">a content script loaded by <code>remote-browser.xml</code></a>. The content script performs the actual action.</p> - -<p>The shims we provide emulate their real counterparts imperfectly. They offer enough functionality to make Firefox work, but add-ons that use them may find them insufficient. I’ll discuss strategies for making add-ons work in more detail later.</p> - -<h2 id="Cross-process_object_wrappers"><strong id="cpows">Cross-process object wrappers</strong></h2> - -<p>The message manager API does not allow the parent process to call <code>sendSyncMessage</code>; that is, the parent is not allowed to wait for a response from the child. It’s detrimental for the parent to wait on the child, since we don’t want the browser UI to be unresponsive because of slow content. However, converting Firefox code to be asynchronous (i.e., to use <code>sendAsyncMessage</code> instead) can sometimes be onerous. As an expedient, we’ve introduced a new primitive that allows code in the parent process to access objects in the child process synchronously.</p> - -<p>These objects are called cross-process object wrappers, frequently abbreviated to CPOWs. They’re created using the message manager. Consider this example content script:</p> - -<pre class="brush: js">addEventListener("load", function (e) { - let doc = content.document; - sendAsyncMessage("GotLoadEvent", <strong>{}, {document: doc}</strong>); -}, false); -</pre> - -<p>In this code, we want to be able to send a reference to the document to the parent process. We can’t use the second parameter to <code>sendAsyncMessage</code> to do this: that argument is converted to JSON before it is sent up. The optional third parameter allows us to send object references. Each property of this argument becomes accessible in the parent process as a CPOW. Here’s what the parent code might look like:</p> - -<pre class="brush: js">let mm = Cc["@<span class="skimlinks-unlinked">mozilla.org/globalmessagemanager;1</span>"]. - getService(Ci.nsIMessageListenerManager); - -mm.addMessageListener("GotLoadEvent", function (msg) { - let uri = <strong>msg.objects.document.documentURI</strong>; - dump("Received load event: " + uri + "\n"); -}); -mm.loadFrameScript("chrome://content/<span class="skimlinks-unlinked">content-script.js</span>", true); -</pre> - -<p>It’s important to realize that we’re send object <em>references</em>. The <code>msg.objects.document</code> object is only a wrapper. The access to its <code>documentURI</code> property sends a synchronous message down to the child asking for the value. The dump statement only happens after a reply has come back from the child.</p> - -<p>Because every property access sends a message, CPOWs can be slow to use. There is no caching, so 1,000 accesses to the same property will send 1,000 messages.</p> - -<p>Another problem with CPOWs is that they violate some assumptions people might have about message ordering. Consider this code:</p> - -<pre class="brush: js">mm.addMessageListener("GotLoadEvent", function (msg) { - mm.sendAsyncMessage("ChangeDocumentURI", {newURI: "<span class="skimlinks-unlinked">hello.com</span>"}); - let uri = <strong>msg.objects.document.documentURI</strong>; - dump("Received load event: " + uri + "\n"); -}); -</pre> - -<p>This code sends a message asking the child to change the current document URI. Then it accesses the current document URI via a CPOW. You might expect the value of <code>uri</code> to come back as <code>"hello.com"</code>. But it might not. In order to avoid deadlocks, CPOW messages can bypass normal messages and be processed first. It’s possible that the request for the <code>documentURI</code> property will be processed before the <code>"ChangeDocumentURI"</code> message, in which case <code>uri</code> will have some other value.</p> - -<p>For this reason, it’s best not to mix CPOWs with normal message manager messages. It’s also a bad idea to use CPOWs for anything security-related, since you may not get results that are consistent with surrounding code that might use the message manager.</p> - -<p>Despite these problems, we’ve found CPOWs to be useful for converting certain parts of Firefox to be multiprocess-compatible. It’s best to use them in cases where users are less likely to notice poor responsiveness. As an example, we use CPOWs to implement the context menu that pops up when users right-click on content elements. Whether this code is asynchronous or synchronous, the menu cannot be displayed until content has responded with data about the element that has been clicked. The user is unlikely to notice if, for example, tab animations don’t run while waiting for the menu to pop up. Their only concern is for the menu to come up as quickly as possible, which is entirely gated on the response time of the content process. For this reason, we chose to use CPOWs, since they’re easier than converting the code to be asynchronous.</p> - -<p>It’s possible that CPOWs will be phased out in the future. Asynchronous messaging using the message manager gives a user experience that is at least as good as, and often strictly better than, CPOWs. We strongly recommend that people use the message manager over CPOWs when possible. Nevertheless, CPOWs are sometimes useful.</p> diff --git a/files/fr/mozilla/firefox/privacy/index.html b/files/fr/mozilla/firefox/privacy/index.html deleted file mode 100644 index 3b51c404fe..0000000000 --- a/files/fr/mozilla/firefox/privacy/index.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Privacy -slug: Mozilla/Firefox/Privacy -tags: - - Privacy - - Security -translation_of: Mozilla/Firefox/Privacy ---- -<div>{{FirefoxSidebar}}</div> - -<div>Ce document liste la documentation relative à la confidentialité.</div> - -<div> </div> - -<p>{{ ListSubpages () }}</p> diff --git a/files/fr/mozilla/firefox/privacy/protection_contre_le_pistage/index.html b/files/fr/mozilla/firefox/privacy/protection_contre_le_pistage/index.html deleted file mode 100644 index f466aef11f..0000000000 --- a/files/fr/mozilla/firefox/privacy/protection_contre_le_pistage/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Protection contre le pistage -slug: Mozilla/Firefox/Privacy/protection_contre_le_pistage -tags: - - Bloquage - - Pistage - - Privé - - Vie privée -translation_of: Mozilla/Firefox/Privacy/Tracking_Protection ---- -<div>{{FirefoxSidebar}}</div><h2 id="Qu'est-ce_que_la_protection_contre_le_pistage">Qu'est-ce que la protection contre le pistage ?</h2> - -<p>Depuis la version 42, Firefox pour bureau et Firefox pour Android incluent une protection contre le pistage. En navigation privée, Firefox bloque le contenu chargé depuis des domaines qui pistent les utilisateurs à travers les sites.</p> - -<p>Certains contenus bloqués font partie de la mise en page, et les utilisateurs pourraient constater des problèmes de mise en page lorsque Firefox bloque ces chargements. Parfois, lorsque la page fonctionne de telle manière que d'autres éléments remplissent les espaces laissés par les éléments bloqués, les utilisateurs ne remarqueront rien.</p> - -<p>Quand Firefox bloque un contenu, il écrit un message dans la console web comme ceci :</p> - -<pre>The resource at "http://some/url" was blocked because tracking protection is enabled.</pre> - -<p>Notez qu'avec Firefox pour Android, vous pouvez accéder à la sortie de la console en utilisant le debogueur distant.</p> - -<p>L'interface utilisateur de Firefox indiquera aux utilisateurs quand un contenu a été bloqué et leur permet de le débloquer pour la session en cours s'ils le souhaitent. Les utilisateurs pourront aussi désactiver complêtement les protections contre le pistage s'ils le souhaitent.</p> - -<h2 id="Comment_Firefox_choisit_quoi_bloquer">Comment Firefox choisit quoi bloquer ?</h2> - -<p>Le contenu est bloqué selon le domaine à partir duquel il est chargé.</p> - -<p>Firefox contient une liste de sites qui ont été identifiés comme étant engagés dans une politique de suivi des utilisateurs au travers des différents sites visités. Quand la protection anti-tracking est activée, Firefox bloque le contenu provenant des sites de cette listes.</p> - -<p>Les sites surveillant les utilisateurs sont, le plus souvent, des sites tiers de publicité et d'analyse.</p> - -<h2 id="Ce_que_cela_signifie_pour_votre_site">Ce que cela signifie pour votre site</h2> - -<p>Bien évidemment, cela signifie que quand la protection anti-pistage est activée:</p> - -<ul> - <li>le contenu fourni par les pisteurs tiers ne sera pas visible par les utilisateurs</li> - <li>votre site ne pourra pas utiliser les services de publicité et d'analyse de sites tiers qui pratiquent le pistage.</li> -</ul> - -<p>Plus subtilement, si d'autres parties de votre site dependent de pisteurs pour être chargés, alors ces parties ne seront pas fonctionnelles quand la protection anti-pistage est activées. Par exemple, si votre site inclus un rappel qui se lance quand le contenu d'un site de pistage est chargé, alors le rappel ne sera pas utilisé.</p> - -<p>Par exemple, vous ne devez pas utiliser Google Analytics de cette façon :</p> - -<pre class="brush:html example-bad"><a href="http://www.example.com" onclick="trackLink('http://www.example.com', event);">Visit example.com</a> -<script> -function trackLink(url,event) { - event.preventDefault(); - ga('send', 'event', 'outbound', 'click', url, { - 'transport': 'beacon', - 'hitCallback': function() { - document.location = url; - } - }); -} -</script></pre> - -<p>A la place, vous devez prendre en compte le cas où Google Analytics est manquant vérifiant si l'objet `ga` est initialisé :</p> - -<pre class="brush:html example-good"><a href="http://www.example.com" onclick="trackLink('http://www.example.com', event);">Visit example.com</a> -<script> -function trackLink(url,event) { - event.preventDefault(); - if (window.ga && <span class="pl-smi">ga</span>.loaded) { - ga('send', 'event', 'outbound', 'click', url, { - 'transport': 'beacon', - 'hitCallback': function() { document.location = url; } - }); - } else { - document.location = url; - } -} -</script> -</pre> - -<p>Pour plus d'information sur cette technique : <a href="https://hacks.mozilla.org/2016/01/google-analytics-privacy-and-event-tracking/">Google Analytics, Privacy, and Event Tracking</a>.</p> - -<p>A noter qu'être dependant de l'utilisation de l'outil tiers de cette manière n'est pas une bonne pratique, car cela veut dire que votre site peut être cassé si l'outil tiers est lent ou inaccessible, ou si le tracker est bloqué par un add-on.</p> diff --git a/files/fr/mozilla/firefox/privacy/protection_du_pistage_par_rebond/index.html b/files/fr/mozilla/firefox/privacy/protection_du_pistage_par_rebond/index.html deleted file mode 100644 index 1e93b3b26b..0000000000 --- a/files/fr/mozilla/firefox/privacy/protection_du_pistage_par_rebond/index.html +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Protection contre le pistage par redirection -slug: Mozilla/Firefox/Privacy/protection_du_pistage_par_rebond -tags: - - Firefox - - Mozilla - - Vie privée - - bounce tracking - - protection contre le pistage par redirection - - redirect tracking -translation_of: Mozilla/Firefox/Privacy/Redirect_tracking_protection ---- -<div>{{FirefoxSidebar}}</div> - -<p>Firefox 79 inclut une protection contre le pistage par redirection. Ce document décrit le fonctionnement de ces protections.</p> - -<h2 id="Définition_du_pistage_par_redirection">Définition du pistage par redirection</h2> - -<p>Le <strong>pistage par redirection</strong> est un abus de la navigation intersite dans lequel un traqueur redirige momentanément un utilisateur ou une utilisatrice vers son site web dans le but d’utiliser le stockage de première partie (<em>first-party</em>) pour suivre cet utilisateur ou cette utilisatrice à travers les sites web.</p> - -<p>Les navigations intersites sont une caractéristique essentielle du web. Une personne peut rechercher les « meilleures chaussures de course » sur un moteur de recherche, cliquer sur un résultat de recherche pour lire des critiques et enfin cliquer sur un lien pour acheter une paire de chaussures dans un magasin en ligne. Dans le passé, chacun de ces sites web pouvait intégrer des ressources provenant du même traqueur, et le traqueur pouvait utiliser ses cookies pour relier toutes ces visites de page à la même personne. Afin de protéger la vie privée des utilisateurs et utilisatrices de Firefox, la <a href="https://support.mozilla.org/kb/enhanced-tracking-protection-firefox-desktop">Protection renforcée contre le pistage</a> (ETP pour <em>Enhanced Tracking Protection</em>) empêche déjà les traqueurs d’utiliser des cookies lorsqu’ils sont intégrés dans un contexte tiers, mais leur permet toujours d’utiliser des cookies en tant que première partie, car le blocage des cookies de première partie provoque le dysfonctionnement de sites web. Le pistage par redirection en profite pour contourner le blocage des cookies de tiers.</p> - -<p>Les traqueurs de redirection fonctionnent en vous obligeant à faire une escale imperceptible et momentanée sur leur site web dans le cadre de ce voyage. Ainsi, au lieu de naviguer directement du site web de comparaison au détaillant, vous finirez par naviguer d’abord vers le traqueur de redirection plutôt que vers le commerçant. Cela signifie que le traqueur est chargé en tant que première partie. Le traqueur de redirection associe les données de pistage aux identifiants qu’il a stockés dans ses cookies de première partie et vous achemine ensuite vers le commerçant.</p> - -<h2 id="La_protection_contre_le_pistage_par_redirection_expliquée">La protection contre le pistage par redirection expliquée</h2> - -<p>Pour protéger contre le pistage par redirection, Firefox supprime périodiquement les cookies et données de site provenant des traqueurs. Nous effaçons uniquement ces données du stockage si l’utilisateur ou l’utilisatrice <a href="/docs/Mozilla/Firefox/Privacy/Storage_access_policy">bloque les cookies traqueurs</a> (c.-à-d. que la préférence <code>network.cookie.cookieBehavior</code> est réglée sur <code>4</code>). La prise en charge d’autres politiques de cookies est suivie dans le <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1643045">bug 1643045</a>.</p> - -<h3 id="Quelles_origines_sont_supprimées">Quelles origines sont supprimées ?</h3> - -<p>Une origine sera supprimée si elle remplit les conditions suivantes :</p> - -<ol> - <li>Elle a stocké des cookies ou a accédé à un autre stockage de site (comme <a href="/en-US/docs/Web/API/Web_Storage_API">localStorage</a>, <a href="/en-US/docs/Web/API/IndexedDB_API">IndexedDB</a> ou <a href="/en-US/docs/Web/API/CacheStorage">Cache API</a>) dans les dernières 72 heures. Comme les cookies sont assignés par hôte, nous supprimerons les variantes d’origine <code>http</code> et <code>https</code> d’un hôte de cookies.</li> - <li>L’origine est <a href="/en-US/docs/Mozilla/Firefox/Privacy/Storage_access_policy#Tracking_protection_explained">répertoriée en tant que traqueur</a> dans la liste de notre protection contre le pistage.</li> - <li>Aucune origine disposant du même domaine de base (eTLD+1) n’a de permission d’interaction avec l’utilisateur ou l’utilisatrice. - <ul> - <li>Cette permission est accordée à une origine pour 45 jours dès qu’un utilisateur ou une utilisatrice interagit avec un document de premier niveau de cette origine. Une « interaction » peut être un défilement.</li> - <li>Bien que cette autorisation soit stockée à un niveau par origine, nous vérifierons si une origine ayant le même domaine de base l’a, pour éviter de casser les sites avec des sous-domaines et une configuration de cookies correspondante.</li> - </ul> - </li> -</ol> - -<h3 id="Quelles_données_sont_supprimées">Quelles données sont supprimées ?</h3> - -<p>Firefox supprimera les <a href="https://searchfox.org/mozilla-central/rev/622dbd3409610ad3f71b56c9a6a92da905dab0aa/toolkit/components/antitracking/PurgeTrackerService.jsm#209-225">données suivantes</a> :</p> - -<ul> - <li>les caches réseau et image</li> - <li>les cookies</li> - <li><em>AppCache</em></li> - <li><em>DOM Quota Storage</em> (<em>localStorage</em>, <em>IndexedDB</em>, <em>ServiceWorkers</em>, <em>DOM Cache</em>, etc.)</li> - <li>les notifications <em>Push</em> du DOM</li> - <li>les rapports de l’API <em>Reporting</em></li> - <li>les paramètres de sécurité (comme HSTS)</li> - <li>les données des plugins de média EME (<em>Encrypted Media Extensions</em>)</li> - <li>les données des plugins (comme Flash)</li> - <li>les appareils média</li> - <li>les permissions de <em>Storage Access</em> accordées à l’origine</li> - <li>les tokens d’authentification HTTP</li> - <li>le cache d’authentification HTTP</li> -</ul> - -<div class="blockIndicator note"> -<p><strong>Note</strong> : même si nous effaçons toutes ces données, nous ne marquons actuellement les origines pour suppression que lorsqu’elles utilisent des cookies ou d’autres moyens de stockage du site.</p> -</div> - -<p>La suppression du stockage ignore les attributs d’origine. Cela signifie que le stockage sera supprimé dans les <a href="https://wiki.mozilla.org/Security/Contextual_Identity_Project/Containers">containers</a> et le stockage isolé (comme celui de <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/cookies#Isolement_de_la_première_partie">l</a>’<a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/cookies#Isolement_de_la_première_partie">isolement de la première partie (<em>First-Party</em>)</a>).</p> - -<h3 id="À_quelle_fréquence_les_données_sont-elles_supprimées">À quelle fréquence les données sont-elles supprimées ?</h3> - -<p>Firefox efface le stockage en fonction du déclenchement d’un événement interne appelé <code>idle-daily</code>, qui est défini par les conditions suivantes :</p> - -<ul> - <li>Il sera, au plus tôt, déclenché 24 heures après le dernier événement <code>idle-daily</code> déclenché.</li> - <li>Il sera seulement déclenché si l’utilisateur ou l’utilisatrice a été inatif·ve pour au moins 3 min (pour 24-48 h après le dernier <code>idle-daily</code>) ou 1 min (pour > 48 h après le dernier <code>idle-daily</code>).</li> -</ul> - -<p>Cela signifie qu’il y a au moins 24 heures entre chaque effacement de stockage et que le stockage sera uniquement effacé quand le navigateur est inactif. Lorsque nous supprimons des cookies, nous classons les cookies par date de création et nous les regroupons par lots de 100 (contrôlés par la préférence <code>privacy.purge_trackers.max_purge_count</code>) pour des raisons de performance.</p> - -<h2 id="Débogage">Débogage</h2> - -<p>Le pistage par redirection peut être activé et désactivé en inversant la préférence <code>privacy.purge_trackers.enabled</code> dans <code>about:config</code>. En outre, il ne fonctionnera que si la préférence <code>network.cookie.cookieBehavior</code> est réglée sur <code>4</code> ou <code>5</code> dans Firefox 79+ (<code>1</code>, <code>3</code>, <code>4</code>, ou <code>5</code> à partir de Firefox 80).</p> - -<p>Différents niveaux de journalisation peuvent être déterminés grâce à la préférence<code> privacy.purge_trackers.logging.level</code>.</p> - -<p>Pour le débogage, il est plus facile de déclencher l’effacement du stockage en déclenchant le service directement par la <a href="/en-US/docs/Tools/Browser_Console#Browser_Console_command_line">ligne de commande de la console du navigateur</a>. Remarquez que c’est différent de la <a href="/en-US/docs/Tools/Web_Console">console web</a> que vous pouvez utiliser pour déboguer un site web et cela nécessite que la préférence <code>devtools.chrome.enabled</code> soit réglée sur <code>true</code> pour l’utiliser interactivement. Une que vous avez activé la console du navigateur, vous pouvez déclencher la suppression du stockage en exécutant la commande suivante :</p> - -<pre class="brush: js notranslate">await Components.classes["@mozilla.org/purge-tracker-service;1"].getService(Components.interfaces.nsIPurgeTrackerService).purgeTrackingCookieJars()</pre> - -<p>L’intervalle de temps jusqu’à ce que les permissions d’interaction avec l’utilisateur ou l’utilisatrice expirent peut être réglé à un niveau inférieur grâce à la préférence <code>privacy.userInteraction.expiration</code>. Notez que vous aurez à régler cette préférence avant de consulter les sites que vous désirez tester – elle ne s’appliquera pas rétroactivement.</p> - -<h2 id="Autres_mises_en_œuvre">Autres mises en œuvre</h2> - -<p>WebKit a livré en premier la protection contre le pistage par redirection dans <a href="https://webkit.org/blog/8311/intelligent-tracking-prevention-2-0/">ITP 2.0</a> (ils se réfèrent à la même attaque en l’appelant pistage par rebond (<em>bounce tracking</em>)). À compter de juillet 2020, il y a plusieurs différences importantes entre la mise en œuvre dans WebKit et dans Firefox :</p> - -<ul> - <li>La liste des origines à effacer dans Firefox est basée notre <a href="/en-US/docs/Mozilla/Firefox/Privacy/Storage_access_policy#Tracking_protection_explained">liste de la protection contre le pistage</a>, alors que WebKit s’appuie sur la classification d’ITP.</li> - <li>La définition d’« interaction » de Firefox comprend le défilement contrôlé par l’utilisateur ou l’utilisatrice lors de la visite de l’origine comme première partie, alors que WebKit non.</li> - <li>Firefox ne supprimera de données pour une origine s’il a reçu une interaction comme première partie dans les 45 derniers jours calendaires. La fenêtre d’interaction de WebKit est de 30 jours d’utilisation du navigateur (p. ex. les jours au cours desquels l’utilisateur ou l’utilisatrice a eu au moins une interaction avec Safari).</li> -</ul> diff --git a/files/fr/mozilla/firefox/versions/14/index.html b/files/fr/mozilla/firefox/versions/14/index.html deleted file mode 100644 index 95e45a7a02..0000000000 --- a/files/fr/mozilla/firefox/versions/14/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Firefox 14 pour les développeurs -slug: Mozilla/Firefox/Versions/14 -tags: - - Firefox - - Firefox 14 -translation_of: Mozilla/Firefox/Releases/14 ---- -<div>{{FirefoxSidebar}}</div><p>Firefox 14, basé sur Gecko 14.0, est sorti le 17 juillet 2012. Cette page résume les principaux changements dans Firefox 14 qui sont utiles aux développeurs.</p> - -<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> - -<h3 id="HTML">HTML</h3> - -<ul> - <li>L'élément {{HTMLElement("progress")}} n'est plus classé à tort comme un élément de formulaire, et n'a donc plus l'attribut <code>form</code>.</li> - <li>Les touches de modification par défaut pour l'<code><a class="internal" href="https://developer.mozilla.org/fr/docs/HTML/Global_attributes" title="Attributs globaux">accesskey</a></code> du contenu HTML sur Mac sont modifiées en Control + Option. C'est la même chose que sur les navigateur basés sur WebKit sur Mac.</li> -</ul> - -<h3 id="DOM">DOM</h3> - -<ul> - <li>Les évènements <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/DOM_event_reference/input" title="input">input</a> sont aussi déclenchés sur l'édition d'un élément hôte de l'éditeur <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Element.contentEditable" title="Element.contentEditable">contenteditable</a> et de l'élément racine de l'éditeur <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/document.designMode" title="document.designMode">designMode</a>.</li> - <li>{{domxref("DOMException", "DOMException.code")}} est à présent obsolète par la dernière spécification DOM 4.</li> - <li>La méthode {{domxref("Range.insertNode()")}} fonctionne désormais correctement lorsqu'elle est utilisée sur des gammes effondrées.</li> - <li>L'interface {{domxref("BlobBuilder", "MozBlobBuilder")}} a été abandonnée au profit du constructeur {{domxref("Blob")}}. Si vous utilisez <code>MozBlobBuilder</code> vous verrez un message d'avertissement dans la console Web.</li> - <li>Le support pour les <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/DOM_Mutation_Observers" title="DOM Mutation Observers">observateurs de mutation</a> a été lancé. Il est conçu pour remplacer les événements de mutation dans DOM3, ayant de nombreuses questions concernant la performance.</li> - <li>Les propriétés <code>x</code> et <code>y</code> de l'interface {{domxref("HTMLImageElement")}} ont été retirées dans Gecko 7.0 {{geckoRelease("7.0")}} mais restaurées dans cette version pour des raisons de compatibilité.</li> - <li>Les méthodes <code>execCommandShowHelp()</code> et <code>queryCommandText()</code> de {{ domxref("Document") }}, qui n'ont jamais rien fait, ont été retirées.</li> - <li>L'interface <code>GeoPositionAddress</code>, un élément obsolète de l'API <a class="internal" href="https://developer.mozilla.org/fr/docs/Utilisation_de_la_géolocalisation" title="Utilisation de la géolocalisation">Geolocation</a>, a été supprimée.</li> - <li>{{domxref("Storage", "localStorage/sessionStorage")}} retourne désormais correctement <code>undefined</code> au lieu de <code>null</code> pour les clés non déclarées grâce à la propriété d'accès.</li> -</ul> - -<h3 id="CSS">CSS</h3> - -<ul> - <li>Les propriétés CSS {{cssxref("text-transform")}} et {{cssxref("font-variant")}} ont été corrigées pour gérer correctement les <code>i</code> → <code>İ</code> et <code>ı</code> → <code>I</code> des langues <a class="external" href="http://fr.wikipedia.org/wiki/Langues_turques" title="http://fr.wikipedia.org/wiki/Langues_turques">Turc</a>.</li> - <li>Le digramme Hollandais IJ est à présent correctement géré par <code>text-transform: capitalization</code>. De même que la lettre grecque <code>Σ</code>, qui a deux formes minuscules, <code>σ</code> et <code>ς</code>, est à présent correctement géré par <code>text-transform: lowercase</code>.</li> - <li>Le support de la fonction <code>skew()</code> a été retiré de la propriété {{cssxref("transform")}}, comme elle a été supprimée du standard.</li> - <li>La syntaxe pour {{cssxref("border-image")}} a été mise à jour pour correspondre à la dernière version de la spécification ; elle n'accepte plus de slash ("/").</li> -</ul> - -<h3 id="MathML">MathML</h3> - -<ul> - <li>La syntaxe de l'action <code>statusline</code> sur les éléments {{MathMLElement("maction")}} a été ajustée pour correspondre à la spécification MathML.</li> -</ul> - -<h3 id="HTTP">HTTP</h3> - -<ul> - <li>Gecko supporte à présent le nouveau code d'état <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTTP" title="HTTP">HTTP</a> <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTTP/HTTP_response_codes#308" title="en/HTTP/HTTP_response_codes#308"><code>308 Permanent Redirect</code></a>. Comme Gecko ne fait pas la différence entre les redirection permanentes et temporaires, elle se comporte comme le code d'état <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTTP/HTTP_response_codes#307" title="en/HTTP/HTTP_response_codes#307"><code>307 Temporary Redirect</code></a>, car elle interdit l'agent utilisateur de modifier la méthode HTTP utilisée entre les deux demandes (<code>POST</code> restera <code>POST</code>, <code>GET</code> restera <code>GET</code>).</li> -</ul> - -<h2 id="Changements_pour_les_développeurs_de_Mozilla_et_de_modules_complémentaires">Changements pour les développeurs de Mozilla et de modules complémentaires</h2> - -<h3 id="Modules_de_code_JavaScript">Modules de code JavaScript</h3> - -<h4 id="source-editor.jsm">source-editor.jsm</h4> - -<ul> - <li>Ajout d'un raccourci clavier pour basculer en commentaire la sélection actuelle (Ctrl-/ ou Cmd-/ sur Mac OS X).</li> - <li>Ajout de raccourcis clavier (Ctrl-[ et Ctrl-]) pour déplacer la position du curseur de texte au début et à la fin du bloc actuel.</li> - <li>Ajout de nouvelles méthodes <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/source-editor.jsm#getLineStart%28%29" title="en/JavaScript_code_modules/source-editor.jsm#getLineStart()"><code>getLineStart()</code></a> et <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/source-editor.jsm#getLineEnd%28%29" title="en/JavaScript_code_modules/source-editor.jsm#getLineEnd()"><code>getLineEnd()</code></a>.</li> -</ul> - -<h3 id="XUL">XUL</h3> - -<ul> - <li>Ajout du nouvel attribut {{XULAttr("fullscreenbutton")}} à l'élément {{XULElem("window")}} ; la valeur <code>true</code> ajoute un bouton à la fenêtre de chrome pour activer le mode plein écran.</li> -</ul> - -<h3 id="Interfaces">Interfaces</h3> - -<ul> - <li>L'interface {{interface("nsILocalFile")}} a été intégrée dans {{interface("nsIFile")}} {{bug(682360)}}.</li> - <li>Les méthodes dans {{interface("nsIPlacesImportExportService")}} pour importer des marques-pages ont toutes été retirées en faveur du module de code JavaScript <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/BookmarkHTMLUtils.jsm" title="en/JavaScript_code_modules/BookmarkHTMLUtils.jsm"><code>BookmarkHTMLUtils.jsm</code></a>.</li> - <li>L'interface {{interface("nsIDOMGeoPositionAddress")}} a été supprimée.</li> - <li>Les méthodes <code>getItemGUID</code>, <code>setItemGUID</code> et <code>getItemIdForGUID</code> ont été retirées de l'interface {{interface("nsINavBookmarksService")}} ({{bug(715355)}}).</li> -</ul> - -<h3 id="Vérification_orthographique">Vérification orthographique</h3> - -<ul> - <li>Les noms du dictionnaire sont désormais analysés comme des étiquettes de langues <a class="external" href="http://tools.ietf.org/html/bcp47" title="http://tools.ietf.org/html/bcp47">BCP 47</a> ({{bug(730209)}}, {{bug(741842)}}). Les développeurs sont encouragés à ne pas coder le nom de leur langue en dur dans leur dictionnaire de noms.</li> -</ul> - -<h2 id="Voir_également">Voir également</h2> - -<p>{{Firefox_for_developers('13')}}</p> |