Présentation effectuée à la Ubuntu Party 17.04 de Paris par Christophe Villeneuve sur "Firefox et les WebExtensions".
La conférence a pour but de montrer réaliser une web Extensions pour tous les navigateurs comme Firefox
5. Ubuntu Party 17.04 : Le 21 mai 2017
La situation des Add-ons
● Modules complémentaires
● Partie de Firefox depuis l'origine
● Amélioration du navigateur
● Les projets montrent comment les addons sont
importants dans Firefox
● Important de montrer que les API sont puissantes
– 40% des utilisateurs ont des add-ons
– 32000 modules complémentaires
– 19000 développeurs d'extensions
– 15 millions d'utilisateurs mensuels sur Mozilla Add-on (AMO)
6. Ubuntu Party 17.04 : Le 21 mai 2017
Avant : XUL / XPCOM
● XUL est une technologie XML
– Utilisée pour l'interface firefox
● XPCOM est une structure Javascript
– Interagir avec XUL
– Avec une API différente de la classique HTML5
● Le développeur web doit respecter ces technologies
→ HTML classique, CSS, Javascript
● Aujourd'hui
– Ne répond plus aux attentes d'aujourd'hui
– Mises à jours / révisions… trop long
16. Ubuntu Party 17.04 : Le 21 mai 2017
Roadmap
● Firefox 48 : Release stable
– SDK avec extension WebExtensions déjà disponible
● Firefox 53 : Conteneurs sécurisés
– Seulement WebExtensions acceptées sur addons.mozilla.org
● Firefox 57 – 14 novembre
– Uniquement WebExtension pour Firefox
– API du système de fichier
– Barre latérale et autres API d'élément d'interface utilisateur
– Expériences WebExtension pour créer de nouvelles API
22. Ubuntu Party 17.04 : Le 21 mai 2017
Manifest : Anatomie (1/6)
● Script d'arrière plan
● Indépendant
– Des pages web
– Fenêtres du navigateur
● Exécuter dès que
l'extension est chargée
● Permissions nécessaires
Background page
24. Ubuntu Party 17.04 : Le 21 mai 2017
Manifest : Anatomie (2/6)
● Scripts de contenu
● Accéder et manipuler les
pages Web
● Fonctionnement :
– Charger dans les pages Web
– Exécuter dans le contexte
de page particulière
● Possible
– Manipuler le DOM de la
page
Background page
Content scripts
25. Ubuntu Party 17.04 : Le 21 mai 2017
Content scripts : Exemple (1/2)
// manifest.json
"content_scripts": [{
"matches": [
"*://mozilla.com/*",
"*://ubucon.org/*",
"*://localhost/*"
],
"js": [
"js/injection-demo.js"
]
}],
26. Ubuntu Party 17.04 : Le 21 mai 2017
Content scripts : Exemple (2/2)
// manifest.json
"content_scripts": [{
"matches": [
"<all_urls>"
],
"exclude_matches": [
"*://www.mozilla.org/*",
"*://ubucon.org/*"
],
"js": [
"background/all-sites.js"
]
}],
27. Ubuntu Party 17.04 : Le 21 mai 2017
Manifest : Anatomie (3/6)
● Action du navigateur
<> des navigateurs
● Accès par un icône
– Barre d'outils navigateur
● Possible de définir
– Fenêtre contextuelle
● Langage :
– HTML / CSS / JS
Background page
Content scripts
Browser action
28. Ubuntu Party 17.04 : Le 21 mai 2017
Browser action : Exemple
// manifest.json
"browser_action": {
"default_icon": {
"19": "button/geo-19.png",
"38": "button/geo-38.png"
},
"default_title": "Whereami?",
"default_popup": "popup/popup.html"
}
29. Ubuntu Party 17.04 : Le 21 mai 2017
Manifest : Anatomie (4/6)
● Action dans la barre de
navigation
● Affiche sur un onglet
activé
● Action pas toujours
nécessaire
Background page
Content scripts
Browser action
Page action
30. Ubuntu Party 17.04 : Le 21 mai 2017
Page action : Exemple
// manifest.json
"page_action": {
"browser_style": true,
"default_icon": {
"19": "button/geo-19.png",
"38": "button/geo-38.png"
},
"default_title": "Whereami?",
"default_popup": "popup/popup.html"
}
31. Ubuntu Party 17.04 : Le 21 mai 2017
Manifest : Anatomie (5/6)
● Définir des préférences
en plus
● Accès par les add-ons du
navigateur
● Configuration des
WebExtensions
Background page
Content scripts
Browser action
Page action
Option page
44. Ubuntu Party 17.04 : Le 21 mai 2017
Aller plus loin : Web-ext
● Outil de ligne de commande
– Construire
– Exécuter
– Surveiller
– Tester Les extensions Web
● https://github.com/mozilla/web-ext
Exécuter une extension de cli, de linting, de validation et d'emballage
web-ext run -s /path/extension/ --firefox-binary=/path/firefox
web-ext build -s /path/extension