SlideShare a Scribd company logo
1 of 55
Download to read offline
The hidden side of WebExtensions
@hellosct1
@hellosct1@mamot.fr
Pas Sage En Seine – 29 juin 2018
Christophe Villeneuve
Tag : mozilla reps - firefox - B2GOS - ausy - afup – lemug.fr – mysql –
mariadb – drupal – demoscene – addons - WebExtensions – drupagora –
phptour – forumphp – linux magazine - Libre@toi – eyrolles – editions eni
– programmez – linux pratique – webriver – phptv – elephpant - owasp -
security
Qui ???
Christophe
Villeneuve
Contributeur / Réalisation
Contributor / Realization
.Pas Sage En Seine 2018
Aujourd'hui...
●
La situation
●
APIs
●
Les possibilités
●
Outils
●
...
.Pas Sage En Seine 2018
Firefox ‘Quantum’ 57
.Pas Sage En Seine 2018
Extension → WebExtension (1/
●
Développement / Debug
Firebug > DevTools
●
Synchronisation
FoxMarks > Bookmark Sync
.Pas Sage En Seine 2018
Extension → WebExtension (2/
●
Crash
– Session Manager > Session Restore
– Tab session manager
.Pas Sage En Seine 2018
Depuis le lancement
●
1ère étape : compatibilité avec Chrome
– Atteint le niveau de compatibilité pertinante
●
99% des 100 meilleurs API
●
91% des 250 meilleurs API
●
2ème étape : Au delà de Chrome
– API les onglets contextuels
●
Ex : Facebook container
– API afficher / cacher les onglets
●
Ex : session MGMT, groupes d'onglets...
– API thème
– ...
.Pas Sage En Seine 2018
Croissance des extensions
●
Firefox 57
– 6 589 WebExtensions
●
Firefox 61
– 11 226 WebExtensions
https://addons.mozilla.org/en-US/firefox/tag/firefox57
14 novembre 2017
29 juin 2017
.Pas Sage En Seine 2018
Firefox 60 (ESR)
Firefox 61 +
.Pas Sage En Seine 2018
Firefox 60
●
Support ESR
●
WebExtensions
●
Support standard WebAuthn
– Clef USB physique authentification sur le web
Le développement
.Pas Sage En Seine 2018
Avant : XUL / XPCOM
●
XUL est une technologie XML
– Utilisée pour l'interface Firefox
●
XPPCOM 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 au attente
– Mises à jour / révisions… trop long
.Pas Sage En Seine 2018
Les WebExtensions
●
Créer une API robuste
●
Parité avec extensions chrome api
●
Documentation
●
Prise en charge de Firefox pour Android
●
Technologie standard 
.Pas Sage En Seine 2018
Compatibilité
●
Edge / Opera / Chrome / Firefox
●
Compatible Qtwebkit
.Pas Sage En Seine 2018
Interface utilisateur (1/
L'utilisation d'une extension s'effectue par...
Page action (bouton barre d'adresse)
Browser action (bouton barre d'outils)
.Pas Sage En Seine 2018
Interface utilisateur (2/
Sidebar (barre latérale)
Context menu items (Elément du
menu contextuel)
.Pas Sage En Seine 2018
Interface utilisateur (3/
Address bar suggestions (Suggestions
de la barre d'adresse)
Notifications (Notifications)
Bundled web pages (Page web
incluses)
.Pas Sage En Seine 2018
Interface utilisateur (4/
Developer tools panels (Panneaux
d'outils de développement)
Options page (Page d'options)
.Pas Sage En Seine 2018
Anatomie
Intéragir avec les pages Web
Contexte page
Bouton dans la barre d'outils
Bouton à la barre d'adresse
Définir une interface utilisateur
Contenu packagé accessible
.Pas Sage En Seine 2018
Manifest.json
{
"description": "description",
"manifest_version": 2,
"name": "Borderify",
"version": "1.0",
"homepage_url": "https://url_extension",
"icons": { [ … ] },
"content_scripts": [
{
"matches": ["*://*.mozilla.org/*"],
"js": ["borderify.js"]
}
]
}
.Pas Sage En Seine 2018
APIs Javascript
.Pas Sage En Seine 2018
PageAction API
https://addons.mozilla.org/fr/firefox/addon/share-backported
.Pas Sage En Seine 2018
Communiquer entre les extensions (1/
.Pas Sage En Seine 2018
Communiquer entre les extensions (2/
●
Devtools panels
.Pas Sage En Seine 2018
OAUTH (1/
.Pas Sage En Seine 2018
OAUTH (2/
.Pas Sage En Seine 2018
Message Natif (1/
https://developer.mozilla.org/fr/Add-ons/WebExtensions/Native_messaging
Ping Pong
.Pas Sage En Seine 2018
Message Natif (2/
●
kde_connect
●
keePassXC-browser
●
Midi-input-provider
●
withexeditor
●
web2mp3
https://addons.mozilla.org
.Pas Sage En Seine 2018
Aperçu / Impression
●
Print
– Tabs.print()
– Tabs.printPreview()
– Tabs.saveAsPDF()
●
Mode Lecture
– Tabs.toogleReaderMode()
https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/print
https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/printPreview
https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/saveAsPDF
https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/toggleReaderMode
.Pas Sage En Seine 2018
API Tabs
https://addons.mozilla.org/fr/firefox/addon/tab-invaders
.Pas Sage En Seine 2018
Voir / Cacher
●
Menus
– onHidden() / onShown() / Refresh()
●
Onglets (tabs)
– Tabs.show()
●
Afficher un ID d’onglet
– Tabs.hide()
●
Masquer un ID d’onglet
– Tab.hidden()
●
savoir quel onglet est masqué
Permission
'tabIde'
.Pas Sage En Seine 2018
Thème
.Pas Sage En Seine 2018
Thème dynamiques
●
Les permissions d'hôte = URL
*://developer.mozilla.org/*
●
Les permissions API
– Associés à une autre API (Alarms, background...)
●
La permission activeTab
– Onglet actif
.Pas Sage En Seine 2018
Exemple par le code
{
"colors": {
"accentcolor": "tomato",
"textcolor": "white",
"toolbar": "#444",
"toolbar_text": "lightgray",
"toolbar_field": "black",
"toolbar_field_text": "white"
}
"images": {
"headerURL": "img/header.jpg"
}
}
.Pas Sage En Seine 2018
Illustrations (1/
●
Accentcolor
– Couleur d’arrière plan
"theme": {
"colors": {
"accentcolor": "red",
"textcolor": "white"
}
}
.Pas Sage En Seine 2018
Illustrations (2/
●
Accentcolor
– Couleur d’arrière plan
●
Popup
●
textcolor
"theme": {
"colors": {
"accentcolor": "black",
"textcolor": "white",
"popup": "red"
}
}
.Pas Sage En Seine 2018
Illustrations (3/
.Pas Sage En Seine 2018
Exemple : Effet jour : nuit
●
API WebExtensions utilisées
– Windows
– Alarms
Quantum Lights
Extension : Quantum Lights
.Pas Sage En Seine 2018
Containers
●
= onglets contextuels
●
Ceux sont :
– Onglets normaux
– Accès à une portion limitée de stockage
●
Vos sessions enregistrées
– pas de pistages des données
●
Aucun contenu externe ne sera importé
– Ex : Facebook container
.Pas Sage En Seine 2018
Exemple : Container visible
●
API WebExtensions utilisées
– contextualIdentities
– Windows
– Tabs
Extension : Containers Theme
.Pas Sage En Seine 2018
Thèmes dynamiques animé
browser.theme.update(window.id,
{
images:
{
headerURL: "resources/background.png",
additional_backgrounds: ["resources/anim.svg"]
},
properties:
{
additional_backgrounds_alignment: ["right top"],
additional_backgrounds_tiling: ["repeat"]
},
});
.Pas Sage En Seine 2018
Thèmes dynamiques animé
●
API WebExtensions utilisées
– Thèmes
●
RequestAnimationFrame()
●
AVG au format Animations
https://github.com/hellosct1/theme-animation
.Pas Sage En Seine 2018
Exemple : Thème associé
●
API fetch
●
Extension : Open Weather Map
.Pas Sage En Seine 2018
Environnement travail
●
API WebExtensions utilisées
– Thèmes
Extension : Envify
.Pas Sage En Seine 2018
Sécurité en visuelle
●
Thème HTTP / HTTPS
https://github.com/nt1m/theming-rules
.Pas Sage En Seine 2018
Confiance ?
.Pas Sage En Seine 2018
Confiance aux WebExtensions (1/
●
Demandes aux accès spéciaux de l’extension
●
Déclaration dans manifest.json
●
La clé peut contenir plusieurs types d'autorisations
"permissions": [
"*://developer.mozilla.org/*",
"webRequest"
]
https://developer.mozilla.org/fr/Add-ons/WebExtensions/manifest.json/permissions
.Pas Sage En Seine 2018
Confiance aux WebExtensions (2/
●
La permission d’hôte
●
Les permissions API
"*://developer.mozilla.org/*"
activeTab
alarms
bookmarks
browsingData
contextMenus
contextualIdent
ities
Cookies
downloads
downloads.open
history
identity
idle
management
nativeMessaging
notifications
proxy
sessions
storage
tabs
topSites
webNavigation
webRequest
webRequestBlocking
.Pas Sage En Seine 2018
Confiance aux WebExtensions (3/
●
La permission activeTab
– Spécifique aux onglets
– Utilisation interaction utilisateur
●
Background, Browser Action, Page Action…
●
Accès aux presse-papiers
– Interagir avec le presse papiers
"permissions": ["tabs"]
"permissions": [
"*://developer.mozilla.org/*",
"tabs"]
ou
outils
.Pas Sage En Seine 2018
Debugging
.Pas Sage En Seine 2018
Portage d'une extension Google Chrome
https://developer.mozilla.org/fr/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension
.Pas Sage En Seine 2018
Portage d'une ancienne extension
https://developer.mozilla.org/fr/Add-ons/WebExtensions/Portage_d_une_extension_Firefox_heritee
.Pas Sage En Seine 2018
Ressources
●
Plus de 40 API en exemple
https://github.com/mdn/webextensions-examples
●
Documentation (MDN) en Anglais
– https://developer.mozilla.org/en-US/Add-ons/WebExtensions
●
Documentation (MDN) en Français
– https://developer.mozilla.org/fr/Add-ons/WebExtensions
●
Actualité Add-ons
– https://blog.mozilla.org/addons/
●
Actualité communauté
– https://blog.mozfr.org
Merci
@hellosct1
@hellosct1@mamot.fr

More Related Content

Similar to The hidden side of webExtensions

TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummiesMicrosoft
 
Firefox OS dans le web - Journée du libre 2015 Lille
Firefox OS dans le web - Journée du libre 2015  LilleFirefox OS dans le web - Journée du libre 2015  Lille
Firefox OS dans le web - Journée du libre 2015 LilleChristophe Villeneuve
 
Introduction aux web components
Introduction aux web componentsIntroduction aux web components
Introduction aux web componentsFrancois ANDRE
 
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...Mohammed JAITI
 
Cours projet web collaboratif - partie 1 : Introduction, version 2019
Cours projet web collaboratif - partie 1 : Introduction, version 2019Cours projet web collaboratif - partie 1 : Introduction, version 2019
Cours projet web collaboratif - partie 1 : Introduction, version 2019Eric Giraudin
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !vincent aniort
 
Industrialisez le développement et la maintenance de vos sites avec Drupal
Industrialisez le développement et la maintenance de vos sites avec DrupalIndustrialisez le développement et la maintenance de vos sites avec Drupal
Industrialisez le développement et la maintenance de vos sites avec DrupalLINAGORA
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?ekino
 
presentation Ganttproject (TIC et orga)
presentation Ganttproject (TIC et orga)presentation Ganttproject (TIC et orga)
presentation Ganttproject (TIC et orga)Romand
 
Paul valery et les Web components
Paul valery et les Web componentsPaul valery et les Web components
Paul valery et les Web componentsFrancois ANDRE
 
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...Mohammed JAITI
 
Meetup Trello Elegantt
Meetup Trello EleganttMeetup Trello Elegantt
Meetup Trello EleganttFastory
 
Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdfimenhamada17
 

Similar to The hidden side of webExtensions (20)

Paris Web
Paris WebParis Web
Paris Web
 
Firefox et les WebExtensions
Firefox et les WebExtensionsFirefox et les WebExtensions
Firefox et les WebExtensions
 
Le portage des WebExtensions
Le portage des WebExtensionsLe portage des WebExtensions
Le portage des WebExtensions
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummies
 
Firefox OS dans le web - Journée du libre 2015 Lille
Firefox OS dans le web - Journée du libre 2015  LilleFirefox OS dans le web - Journée du libre 2015  Lille
Firefox OS dans le web - Journée du libre 2015 Lille
 
Introduction aux web components
Introduction aux web componentsIntroduction aux web components
Introduction aux web components
 
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...
 
Gdd07 Gwt Dig
Gdd07 Gwt DigGdd07 Gwt Dig
Gdd07 Gwt Dig
 
Cours projet web collaboratif - partie 1 : Introduction, version 2019
Cours projet web collaboratif - partie 1 : Introduction, version 2019Cours projet web collaboratif - partie 1 : Introduction, version 2019
Cours projet web collaboratif - partie 1 : Introduction, version 2019
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
 
Industrialisez le développement et la maintenance de vos sites avec Drupal
Industrialisez le développement et la maintenance de vos sites avec DrupalIndustrialisez le développement et la maintenance de vos sites avec Drupal
Industrialisez le développement et la maintenance de vos sites avec Drupal
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
 
presentation Ganttproject (TIC et orga)
presentation Ganttproject (TIC et orga)presentation Ganttproject (TIC et orga)
presentation Ganttproject (TIC et orga)
 
iGraal et les webextensions
iGraal et les webextensionsiGraal et les webextensions
iGraal et les webextensions
 
Paul valery et les Web components
Paul valery et les Web componentsPaul valery et les Web components
Paul valery et les Web components
 
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...
 
Meetup Trello Elegantt
Meetup Trello EleganttMeetup Trello Elegantt
Meetup Trello Elegantt
 
Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdf
 

More from Christophe Villeneuve

controler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webcontroler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webChristophe Villeneuve
 
Open Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteOpen Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteChristophe Villeneuve
 
Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Christophe Villeneuve
 
La sécurité applicative par le design
La sécurité applicative par le designLa sécurité applicative par le design
La sécurité applicative par le designChristophe Villeneuve
 
Mozilla french speaking community activites
Mozilla french speaking community activitesMozilla french speaking community activites
Mozilla french speaking community activitesChristophe Villeneuve
 
Monitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftMonitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftChristophe Villeneuve
 
Le futur de l'authentification webAuthn
Le futur de l'authentification webAuthnLe futur de l'authentification webAuthn
Le futur de l'authentification webAuthnChristophe Villeneuve
 
Tests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueTests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueChristophe Villeneuve
 
La réalité mélangée dans vos applications
La réalité mélangée dans vos applicationsLa réalité mélangée dans vos applications
La réalité mélangée dans vos applicationsChristophe Villeneuve
 

More from Christophe Villeneuve (20)

MariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQLMariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQL
 
pister les pisteurs
pister les pisteurspister les pisteurs
pister les pisteurs
 
controler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webcontroler vos donnees éthiques dans le web
controler vos donnees éthiques dans le web
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Mariadb une base de données NewSQL
Mariadb une base de données NewSQLMariadb une base de données NewSQL
Mariadb une base de données NewSQL
 
Open Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteOpen Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnante
 
Pentest bus pirate
Pentest bus piratePentest bus pirate
Pentest bus pirate
 
Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?
 
La sécurité applicative par le design
La sécurité applicative par le designLa sécurité applicative par le design
La sécurité applicative par le design
 
Foxfooding semaine 3
Foxfooding semaine 3Foxfooding semaine 3
Foxfooding semaine 3
 
Foxfooding
FoxfoodingFoxfooding
Foxfooding
 
Accessibilite web wcag rgaa
Accessibilite web wcag rgaaAccessibilite web wcag rgaa
Accessibilite web wcag rgaa
 
Mozilla french speaking community activites
Mozilla french speaking community activitesMozilla french speaking community activites
Mozilla french speaking community activites
 
Monitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftMonitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et Microsoft
 
Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?
 
Le futur de l'authentification webAuthn
Le futur de l'authentification webAuthnLe futur de l'authentification webAuthn
Le futur de l'authentification webAuthn
 
Send large files with addons
Send large files with addonsSend large files with addons
Send large files with addons
 
Tests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueTests d'accessibilite par la pratique
Tests d'accessibilite par la pratique
 
Donnez la voix aux machines
Donnez la voix aux machinesDonnez la voix aux machines
Donnez la voix aux machines
 
La réalité mélangée dans vos applications
La réalité mélangée dans vos applicationsLa réalité mélangée dans vos applications
La réalité mélangée dans vos applications
 

The hidden side of webExtensions

  • 1. The hidden side of WebExtensions @hellosct1 @hellosct1@mamot.fr Pas Sage En Seine – 29 juin 2018 Christophe Villeneuve
  • 2. Tag : mozilla reps - firefox - B2GOS - ausy - afup – lemug.fr – mysql – mariadb – drupal – demoscene – addons - WebExtensions – drupagora – phptour – forumphp – linux magazine - Libre@toi – eyrolles – editions eni – programmez – linux pratique – webriver – phptv – elephpant - owasp - security Qui ??? Christophe Villeneuve Contributeur / Réalisation Contributor / Realization
  • 3. .Pas Sage En Seine 2018 Aujourd'hui... ● La situation ● APIs ● Les possibilités ● Outils ● ...
  • 4. .Pas Sage En Seine 2018 Firefox ‘Quantum’ 57
  • 5. .Pas Sage En Seine 2018 Extension → WebExtension (1/ ● Développement / Debug Firebug > DevTools ● Synchronisation FoxMarks > Bookmark Sync
  • 6. .Pas Sage En Seine 2018 Extension → WebExtension (2/ ● Crash – Session Manager > Session Restore – Tab session manager
  • 7. .Pas Sage En Seine 2018 Depuis le lancement ● 1ère étape : compatibilité avec Chrome – Atteint le niveau de compatibilité pertinante ● 99% des 100 meilleurs API ● 91% des 250 meilleurs API ● 2ème étape : Au delà de Chrome – API les onglets contextuels ● Ex : Facebook container – API afficher / cacher les onglets ● Ex : session MGMT, groupes d'onglets... – API thème – ...
  • 8. .Pas Sage En Seine 2018 Croissance des extensions ● Firefox 57 – 6 589 WebExtensions ● Firefox 61 – 11 226 WebExtensions https://addons.mozilla.org/en-US/firefox/tag/firefox57 14 novembre 2017 29 juin 2017
  • 9. .Pas Sage En Seine 2018 Firefox 60 (ESR) Firefox 61 +
  • 10. .Pas Sage En Seine 2018 Firefox 60 ● Support ESR ● WebExtensions ● Support standard WebAuthn – Clef USB physique authentification sur le web
  • 12. .Pas Sage En Seine 2018 Avant : XUL / XPCOM ● XUL est une technologie XML – Utilisée pour l'interface Firefox ● XPPCOM 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 au attente – Mises à jour / révisions… trop long
  • 13. .Pas Sage En Seine 2018 Les WebExtensions ● Créer une API robuste ● Parité avec extensions chrome api ● Documentation ● Prise en charge de Firefox pour Android ● Technologie standard 
  • 14. .Pas Sage En Seine 2018 Compatibilité ● Edge / Opera / Chrome / Firefox ● Compatible Qtwebkit
  • 15. .Pas Sage En Seine 2018 Interface utilisateur (1/ L'utilisation d'une extension s'effectue par... Page action (bouton barre d'adresse) Browser action (bouton barre d'outils)
  • 16. .Pas Sage En Seine 2018 Interface utilisateur (2/ Sidebar (barre latérale) Context menu items (Elément du menu contextuel)
  • 17. .Pas Sage En Seine 2018 Interface utilisateur (3/ Address bar suggestions (Suggestions de la barre d'adresse) Notifications (Notifications) Bundled web pages (Page web incluses)
  • 18. .Pas Sage En Seine 2018 Interface utilisateur (4/ Developer tools panels (Panneaux d'outils de développement) Options page (Page d'options)
  • 19. .Pas Sage En Seine 2018 Anatomie Intéragir avec les pages Web Contexte page Bouton dans la barre d'outils Bouton à la barre d'adresse Définir une interface utilisateur Contenu packagé accessible
  • 20. .Pas Sage En Seine 2018 Manifest.json { "description": "description", "manifest_version": 2, "name": "Borderify", "version": "1.0", "homepage_url": "https://url_extension", "icons": { [ … ] }, "content_scripts": [ { "matches": ["*://*.mozilla.org/*"], "js": ["borderify.js"] } ] }
  • 21. .Pas Sage En Seine 2018 APIs Javascript
  • 22. .Pas Sage En Seine 2018 PageAction API https://addons.mozilla.org/fr/firefox/addon/share-backported
  • 23. .Pas Sage En Seine 2018 Communiquer entre les extensions (1/
  • 24. .Pas Sage En Seine 2018 Communiquer entre les extensions (2/ ● Devtools panels
  • 25. .Pas Sage En Seine 2018 OAUTH (1/
  • 26. .Pas Sage En Seine 2018 OAUTH (2/
  • 27. .Pas Sage En Seine 2018 Message Natif (1/ https://developer.mozilla.org/fr/Add-ons/WebExtensions/Native_messaging Ping Pong
  • 28. .Pas Sage En Seine 2018 Message Natif (2/ ● kde_connect ● keePassXC-browser ● Midi-input-provider ● withexeditor ● web2mp3 https://addons.mozilla.org
  • 29. .Pas Sage En Seine 2018 Aperçu / Impression ● Print – Tabs.print() – Tabs.printPreview() – Tabs.saveAsPDF() ● Mode Lecture – Tabs.toogleReaderMode() https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/print https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/printPreview https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/saveAsPDF https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/toggleReaderMode
  • 30. .Pas Sage En Seine 2018 API Tabs https://addons.mozilla.org/fr/firefox/addon/tab-invaders
  • 31. .Pas Sage En Seine 2018 Voir / Cacher ● Menus – onHidden() / onShown() / Refresh() ● Onglets (tabs) – Tabs.show() ● Afficher un ID d’onglet – Tabs.hide() ● Masquer un ID d’onglet – Tab.hidden() ● savoir quel onglet est masqué Permission 'tabIde'
  • 32. .Pas Sage En Seine 2018 Thème
  • 33. .Pas Sage En Seine 2018 Thème dynamiques ● Les permissions d'hôte = URL *://developer.mozilla.org/* ● Les permissions API – Associés à une autre API (Alarms, background...) ● La permission activeTab – Onglet actif
  • 34. .Pas Sage En Seine 2018 Exemple par le code { "colors": { "accentcolor": "tomato", "textcolor": "white", "toolbar": "#444", "toolbar_text": "lightgray", "toolbar_field": "black", "toolbar_field_text": "white" } "images": { "headerURL": "img/header.jpg" } }
  • 35. .Pas Sage En Seine 2018 Illustrations (1/ ● Accentcolor – Couleur d’arrière plan "theme": { "colors": { "accentcolor": "red", "textcolor": "white" } }
  • 36. .Pas Sage En Seine 2018 Illustrations (2/ ● Accentcolor – Couleur d’arrière plan ● Popup ● textcolor "theme": { "colors": { "accentcolor": "black", "textcolor": "white", "popup": "red" } }
  • 37. .Pas Sage En Seine 2018 Illustrations (3/
  • 38. .Pas Sage En Seine 2018 Exemple : Effet jour : nuit ● API WebExtensions utilisées – Windows – Alarms Quantum Lights Extension : Quantum Lights
  • 39. .Pas Sage En Seine 2018 Containers ● = onglets contextuels ● Ceux sont : – Onglets normaux – Accès à une portion limitée de stockage ● Vos sessions enregistrées – pas de pistages des données ● Aucun contenu externe ne sera importé – Ex : Facebook container
  • 40. .Pas Sage En Seine 2018 Exemple : Container visible ● API WebExtensions utilisées – contextualIdentities – Windows – Tabs Extension : Containers Theme
  • 41. .Pas Sage En Seine 2018 Thèmes dynamiques animé browser.theme.update(window.id, { images: { headerURL: "resources/background.png", additional_backgrounds: ["resources/anim.svg"] }, properties: { additional_backgrounds_alignment: ["right top"], additional_backgrounds_tiling: ["repeat"] }, });
  • 42. .Pas Sage En Seine 2018 Thèmes dynamiques animé ● API WebExtensions utilisées – Thèmes ● RequestAnimationFrame() ● AVG au format Animations https://github.com/hellosct1/theme-animation
  • 43. .Pas Sage En Seine 2018 Exemple : Thème associé ● API fetch ● Extension : Open Weather Map
  • 44. .Pas Sage En Seine 2018 Environnement travail ● API WebExtensions utilisées – Thèmes Extension : Envify
  • 45. .Pas Sage En Seine 2018 Sécurité en visuelle ● Thème HTTP / HTTPS https://github.com/nt1m/theming-rules
  • 46. .Pas Sage En Seine 2018 Confiance ?
  • 47. .Pas Sage En Seine 2018 Confiance aux WebExtensions (1/ ● Demandes aux accès spéciaux de l’extension ● Déclaration dans manifest.json ● La clé peut contenir plusieurs types d'autorisations "permissions": [ "*://developer.mozilla.org/*", "webRequest" ] https://developer.mozilla.org/fr/Add-ons/WebExtensions/manifest.json/permissions
  • 48. .Pas Sage En Seine 2018 Confiance aux WebExtensions (2/ ● La permission d’hôte ● Les permissions API "*://developer.mozilla.org/*" activeTab alarms bookmarks browsingData contextMenus contextualIdent ities Cookies downloads downloads.open history identity idle management nativeMessaging notifications proxy sessions storage tabs topSites webNavigation webRequest webRequestBlocking
  • 49. .Pas Sage En Seine 2018 Confiance aux WebExtensions (3/ ● La permission activeTab – Spécifique aux onglets – Utilisation interaction utilisateur ● Background, Browser Action, Page Action… ● Accès aux presse-papiers – Interagir avec le presse papiers "permissions": ["tabs"] "permissions": [ "*://developer.mozilla.org/*", "tabs"] ou
  • 51. .Pas Sage En Seine 2018 Debugging
  • 52. .Pas Sage En Seine 2018 Portage d'une extension Google Chrome https://developer.mozilla.org/fr/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension
  • 53. .Pas Sage En Seine 2018 Portage d'une ancienne extension https://developer.mozilla.org/fr/Add-ons/WebExtensions/Portage_d_une_extension_Firefox_heritee
  • 54. .Pas Sage En Seine 2018 Ressources ● Plus de 40 API en exemple https://github.com/mdn/webextensions-examples ● Documentation (MDN) en Anglais – https://developer.mozilla.org/en-US/Add-ons/WebExtensions ● Documentation (MDN) en Français – https://developer.mozilla.org/fr/Add-ons/WebExtensions ● Actualité Add-ons – https://blog.mozilla.org/addons/ ● Actualité communauté – https://blog.mozfr.org