Upgrade to Pro — share decks privately, control downloads, hide ads and more …

La face cachee des web extensions

La face cachee des web extensions

Présentation effectuée au RMLL 2018 sur "La face cachée des WebExtensions" par Christophe Villeneuve .
Vous verrez les différentes avancées depuis la version de firefox 'Quantum' 57

hellosct1

July 09, 2018
Tweet

More Decks by hellosct1

Other Decks in Technology

Transcript

  1. 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
  2. .RMLL 2018 - Aujourd'hui... • La situation • APIs •

    Les possibilités • Outils • ...
  3. .RMLL 2018 - Extension → WebExtension (1/ • Développement /

    Debug Firebug > DevTools • Synchronisation FoxMarks > Bookmark Sync
  4. .RMLL 2018 - Extension → WebExtension (2/ • Crash –

    Session Manager > Session Restore – Tab session manager
  5. .RMLL 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 – ...
  6. .RMLL 2018 - Croissance des extensions • Firefox 57 –

    6 589 WebExtensions • Firefox 61 – 11 324 WebExtensions https://addons.mozilla.org/en-US/firefox/tag/firefox57 14 novembre 2017 9 juillet 2018
  7. .RMLL 2018 - Firefox 60 • Support ESR • WebExtensions

    • Support standard WebAuthn – Clef USB physique authentification sur le web
  8. .RMLL 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
  9. .RMLL 2018 - Les WebExtensions • Créer une API robuste

    • Parité avec extensions chrome api • Documentation • Prise en charge de Firefox pour Android • Technologie standard
  10. .RMLL 2018 - Compatibilité • Edge / Opera / Chrome

    / Firefox • Compatible Qtwebkit
  11. .RMLL 2018 - Interface utilisateur (1/ L'utilisation d'une extension s'effectue

    par... Page action (bouton barre d'adresse) Browser action (bouton barre d'outils)
  12. .RMLL 2018 - Interface utilisateur (3/ Address bar suggestions (Suggestions

    de la barre d'adresse) Notifications (Notifications) Bundled web pages (Page web incluses)
  13. .RMLL 2018 - Interface utilisateur (4/ Developer tools panels (Panneaux

    d'outils de développement) Options page (Page d'options)
  14. .RMLL 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
  15. .RMLL 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"] } ] }
  16. .RMLL 2018 - Message Natif (2/ • kde_connect • keePassXC-browser

    • Midi-input-provider • withexeditor • web2mp3 https://addons.mozilla.org
  17. .RMLL 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
  18. .RMLL 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'
  19. .RMLL 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
  20. .RMLL 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" } }
  21. .RMLL 2018 - Illustrations (1/ • Accentcolor – Couleur d’arrière

    plan "theme": { "colors": { "accentcolor": "red", "textcolor": "white" } }
  22. .RMLL 2018 - Illustrations (2/ • Accentcolor – Couleur d’arrière

    plan • Popup • textcolor "theme": { "colors": { "accentcolor": "black", "textcolor": "white", "popup": "red" } }
  23. .RMLL 2018 - Exemple : Effet jour : nuit •

    API WebExtensions utilisées – Windows – Alarms Quantum Lights Extension : Quantum Lights
  24. .RMLL 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
  25. .RMLL 2018 - Exemple : Container visible • API WebExtensions

    utilisées – contextualIdentities – Windows – Tabs Extension : Containers Theme
  26. .RMLL 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"] }, });
  27. .RMLL 2018 - Thèmes dynamiques animé • API WebExtensions utilisées

    – Thèmes • RequestAnimationFrame() • AVG au format Animations https://github.com/hellosct1/theme-animation
  28. .RMLL 2018 - Exemple : Thème associé • API fetch

    • Extension : Open Weather Map
  29. .RMLL 2018 - Sécurité en visuelle • Thème HTTP /

    HTTPS https://github.com/nt1m/theming-rules
  30. .RMLL 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
  31. .RMLL 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
  32. .RMLL 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
  33. .RMLL 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