Differences between desktop and Android extensions

Certaines de ces différences sont dues à la nature de l'environnement Android et donc aux fonctionnalités que Firefox peut implémenter, d'autres sont là où Firefox pour Android n'offre pas encore toutes les fonctionnalités de bureau. Cet article décrit et explique ces différences et examine l'impact qu'elles peuvent avoir sur votre développement d'extensions.

Ce résumé est basé sur les fonctionnalités prévues pour Firefox version 54.

Une liste détaillée des APIs WebExtensions prises en cahrge dans Friefox pour Android est fournie sur la page de support du navigateur pour les API Javascript et les détails des clés manifest.json prises en charge sont fournis sur la page de la section manifest.json.

Interface utilisateur

Firefox pour Android offre une version simplifiée de l'interface utilisateur trouvée sur le bureau de Firefox, ce qui permet à Firefox de proposer une expérience agréable et attrayante sur mobile. Certaines des différences concernent la façon dont l'interface utilisateur d'Android diffère des interfaces utilisateur de bureau trouvées dans Linux, Mac OS et Windows. Par exemple, Android ne prend pas en charge un environnement de fenêtrage et les périphériques n'incluent généralement pas de clavier physique à partir duquel des raccourcis clavier peuvent être émis.D'autres différences concernent l'optimisation de la convivialité sur les écrans d'appareils mobiles plus petits.

En raison des différences d'interface utilisateur, les extensions pour Firefox pour Android ne prennent pas en charge les API suivantes et les clés manifest.json: 

  • commands et les commandes associées à la clé du manifest.json, car les tablettes Android et les smartphones n'ont généralement pas de clavier physique à partir duquel des "commandes" peuvent être émises.
  • sidebarAction et la clé sidebar_action manifest.json associée, en raison de l'espace limité de l'écran sur les barres latérales des périphériques Android, telles que l'historique du navigateur, sont présentées dans les onglets du navigateur. Dans la mesure du possible, vous devez également déplacer tout contenu de barre latérale vers des onglets.
  • windows comme il n'y a pas une seule 'fenêtre' de Firefox sur Android, il n'a donc aucune possibilité d'ouvrir ou de manipuler des fenêtres de navigateur supplémentaires.

La prise en charge de browserAction et la clé  browser_action du manifest.json est en cours de développement. Firefox 55 prendra en charge default_title et default_popup de la clé manifest.json browser_action, en utilisant default_title pour  ajouter un élément au menu Firefox pour Android, et l'élément  browserAction.onClicked() sera disponible pour écouter pour l'élément du menu tapé. De plus, dans Firefox 57, le support des méthodes browserAction.setTitle et  browserAction.getTitle sera ajouté.

Effet de votre interface utilisateur d'extension

Ces différences ont une incidence sur la façon dont vous présentez votre extension dans l'interface utilisateur de Firefox. L'option la plus courante, en ajoutant un bouton pour votre extension à la barre d'outils Firefox avec  browserAction, n'est pas disponible (au moins jusqu'à la version firefox 55). Vous ne pouvez pas non plus exposer votre extension vie une barre latérale ou un menu contextuel.  Vous utiliserez donc un bouton de barre d'adresse (via la clé page_action du manifest.json et l'API pageAction ) en vous rappelant que ce bouton est masqué par défaut et doit être affiché par programmation.

Les fonctionnalités de pageAction sont également réduites dans Firefox pour Android. La clé du manifest.json page_action vous permet de définir l'icône du bouton et un popup. Vous avez alors l'utilisation de pageAction.show() et  pageAction.hide(), cependant une fois ‘affiché’, notez que le bouton de la barre d'adresse est visible dans tous les onglets (contrairement au comportement du bureau, où le bouton est affiché uniquement pour un onglet spécifié.) Et vous pouvez définir  un écouteur à pageAction.onClicked(). pageAction.setPopup() et pageAction.getPopup() sont également disponibles, vous pouvez donc mettre à jour la fenêtre contextuelle ou créer une fenêtre contextuelle une fois que le module complémentaire est en cours d'exécution.

En  outre, dans pageAction et  browserAction le contenu contextuel est ouvert dans un nouvel onglet et persiste  jusqu'à ce que l'utilisateur ferme manuellement l'onglet.

Vous pouvez également manipuler des onglets sur Firefox pour Android. L'API tabs vous permet d'effectuer la plupart des actions possibles sur le bureau, les principales exceptions sont les suivantes :

  • fonctions de zoom, Firefox pour Android a un seul niveau de zoom, que l'utilisateur peut remplacer avec un geste de pincement sur la page.
  • caractéristiques liées à la sélection et le déplacement des onglets, encore une fois que ces fonctionnalités ne sont pas pris en charge sur Android.
  • la capacité de détecter la langue d'un onglet ou son statut muet.

Différences aux autres API liée à l'interface utilisateur et au clé du manifest.json

Il existe d'autres fonctionnalités de l'interface utilisateur non prises en charge, à savoir :

  • bookmarks, ce qui signifie que vous ne pouvez pas manipuler les signets de l'utilisateur, bien que l'utilisateur puisse le faire lui-même via l'interface utilisateur
  • browsingData, ce qui signifie que vous ne pouvez pas proposer aux utilisateurs des fonctionnalités permettant d'effacer les données du navigateur telles que l'historique, les téléchargements, les mots de passe, etc.
  • Les clés chrome_url_overrides et chrome_settings_overrides du manifest.json, ce qui signifie que vous ne pouvez pas ajouter de page personnalisée et de nouvelles pages à onglet.
  • contextMenus, ce qui signifie que vous ne pouvez pas ajouter d'options aux menus contextuels.
  • history, ce qui signifie que vous ne pouvez pas rechercher ou manipuler l'historique des pages parcourues.
  • omnibox et la clé omnibox du manifest.json associée, ce qui signifie que vous ne pouvez pas fournir de suggestions personnalisées pour la barre d'adresse.
  • sessions, ce qui signifie que vous ne pouvez pas lister et restaurer les onglets qui ont été fermés pendant l'exécution du navigateur.
  • La clé options_ui du manifest.json, ce qui signifie que vous ne pouvez pas fournir de paramètres d'options à about:addons. (Et, par conséquent, runtime.openOptionsPage() n'est pas disponible non plus). Vous pouvez toutefois proposer aux utilisateurs  une page permettant de définir des options supplémentaires à l'aide d'une page web groupée à l'aide de tabs, il vous suffit d'ajouter un bouton ou un autre mécanisme dans votre module pour accéder à la page.
  • Au moment de la rédaction , la clé options_ui était implémentée sous le bug 1302504.

Outils de développement

Les outils de développement pour Firefox pour Android sont fournis via des mécanismes de débogage à distance via USB ou Wi-Fi qui se connectent à WebIDE sur un bureau. Par conséquent, Firefox pour Android ne fournit aucun outil de développement intégré et ses extensions ne prennent pas en charge les API pour étendre les outils de développement :

Interaction de l'application native

Vous n'avez pas la possibilité d'intérargir avec des applications natives car  runtime.connectNative() et runtime.sendNativeMessage() ne sont disponibles.

Permissions

Les permissions d'utilisation de certaines API WebExtension doivent être demandées dans le fichier manifest.json. On the desktop version of Firefox users are warned when an extension requests a permission and are given the option to deny the add-on that permission. Sur la version de bureau de Firefox, les utilisateurs sont avertis lorsqu'une extension demande une autorisation et ont la possibilité de refuser l'extension. Cependant, sur Firefox pour Android, les autorisations sont accordées automatiquement et l'utilisateur n'a pas la possibilité de les refuser. Il est actuellement prévu de résoudre ce problème dans Firefox 57.

Autres notes

  • Au moment de la rédaction, il y a un problème avec  storage.sync() et les données ne sont pas synchronisées avec le compte Firefox de l'utilisateur à partir de Firefox pour Android. Plus de détails peuvent être trouvés dans le bug 1316442.

Étiquettes et contributeurs liés au document

Étiquettes : 
Contributeurs à cette page : hellosct1
Dernière mise à jour par : hellosct1,