Sur Chrome, chaque extension possède un fichier Manifest au format JSON, nommé manifest.json, qui fournit des informations importantes. Le code suivant montre les champs Manifest pris en charge pour les extensions, avec des liens vers la page décrivant chaque champ.
Code JavaScript : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | { // Required "manifest_version": 2, "name": "My Extension", "version": "versionString", // Recommended "default_locale": "en", "description": "A plain text description", "icons": {...}, // Pick one (or none) "browser_action": {...}, "page_action": {...}, // Optional "action": ..., "author": ..., "automation": ..., "background": { // Recommended "persistent": false, // Optional "service_worker": }, "chrome_settings_overrides": {...}, "chrome_ui_overrides": { "bookmarks_ui": { "remove_bookmark_shortcut": true, "remove_button": true } }, "chrome_url_overrides": {...}, "commands": {...}, "content_capabilities": ..., "content_scripts": [{...}], "content_security_policy": "policyString", "converted_from_user_script": ..., "current_locale": ..., "declarative_net_request": ..., "devtools_page": "devtools.html", "event_rules": [{...}], "externally_connectable": { "matches": ["*://*.example.com/*"] }, "file_browser_handlers": [...], "file_system_provider_capabilities": { "configurable": true, "multiple_mounts": true, "source": "network" }, "homepage_url": "http://path/to/homepage", "import": [{"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}], "incognito": "spanning, split, or not_allowed", "input_components": ..., "key": "publicKey", "minimum_chrome_version": "versionString", "nacl_modules": [...], "oauth2": ..., "offline_enabled": true, "omnibox": { "keyword": "aString" }, "optional_permissions": ["tabs"], "options_page": "options.html", "options_ui": { "chrome_style": true, "page": "options.html" }, "permissions": ["tabs"], "platforms": ..., "replacement_web_app": ..., "requirements": {...}, "sandbox": [...], "short_name": "Short Name", "signature": ..., "spellcheck": ..., "storage": { "managed_schema": "schema.json" }, "system_indicator": ..., "tts_engine": {...}, "update_url": "http://path/to/updateInfo.xml", "version_name": "aString", "web_accessible_resources": [...] } |
Dans une publication dans le groupe Google Chromium Extensions, Simeon Vincent, Google Developer Advocate for Chrome Extensions, a déclaré qu'au 31 octobre, une préversion développeur de la version 3 de Manifest était désormais disponible dans la version Chrome 80 Canary.
Voyez cela comme un début d’alpha. Le « dev preview » est la première occasion pour les développeurs d’extensions de commencer à expérimenter une version en cours de développement de la plateforme MV3.
Les travaux de mise en œuvre sur la plateforme MV3 sont loin d'être terminés. Attendez-vous donc avant tout à des changements.
En ce qui concerne ce qui change, les plus notables dans MV3 sont les suivants:
L'API declarativeNetRequest était déjà disponible pour une expérimentation dans Chrome Canary et nous continuons à itérer sur ses fonctionnalités.
Les travaux de mise en œuvre sur la plateforme MV3 sont loin d'être terminés. Attendez-vous donc avant tout à des changements.
En ce qui concerne ce qui change, les plus notables dans MV3 sont les suivants:
- Modifications des autorisations de l'hôte
- Blocage de webRequest -> declarativeNetRequest
- Background page -> service workers
- Restrictions de code hébergées à distance
L'API declarativeNetRequest était déjà disponible pour une expérimentation dans Chrome Canary et nous continuons à itérer sur ses fonctionnalités.
L'aspect le plus controversé de Manifest V3 concerne les modifications à venir de l'API webRequest. Dans la V3, Google a modifié l'API afin que les extensions puissent uniquement surveiller les connexions du navigateur, mais ne modifient aucun contenu avant son affichage.
Au lieu de cela, Google souhaite que les développeurs utilisent l’API declarativeNetRequest, qui fait que le navigateur, et non l’extension, puisse capter du contenu ou des ressources d’un site Web visité. Cette API, cependant, a une limite de 30 000 règles pouvant être créées.
Malheureusement, cette modification supprimera les bloqueurs de publicités populaires tels que uBlock Origin, qui reposent sur les fonctionnalités d'origine de l'API webRequest et nécessitent davantage de règles que celles disponibles dans l'API declarativeNetRequest.
Test des modifications dans Manifest V3
Si vous utilisez la version actuelle de Chrome Canary, vous pouvez tester les nouvelles modifications en créant votre propre extension et en définissant sa version de Manifest sur 3. Certains développeurs ont déjà partagé les résultats de leur expérience avec Manifest 3. Par exemple, dans le fichier d'extension manifest.json ci-dessous, la version a été définie sur 3 et utilise un appel à background.scripts.
Comme background.scripts n'est plus pris en charge, toute tentative de chargement de l'extension génère une erreur, comme indiqué ci-dessous, indiquant que vous devez utiliser la clé background.service_worker à la place.
Si vous vous tournez plutôt vers l'utilisation d'un service_worker, l'extension se charge correctement dans Google Chrome.
Tous les développeurs d’extensions doivent consulter le guide de migration pour s’assurer que leurs extensions fonctionneront correctement avec les prochaines modifications qui seront implémentées dans Manifest V3.
Bien qu'actuellement en préversion, Google s'attend à ce que Manifest V3 puisse être utilisé en production en 2020 et que la fin de vie de la v2 soit déterminée à l'avenir.
Guide de migration
Source : Google
Et vous ?
Utilisez-vous des extensions sur votre navigateur ? Dans quel but ?
Avez-vous déjà développé des extensions ? Pour quel navigateur ?
Que pensez-vous de Manifest V3 ?
Voir aussi :
Le DNS-over-HTTPS finira probablement par être déployé sur tous les navigateurs, malgré l'opposition des FAI, le support du DoH est déjà effectif sur Edge, Firefox, Opera, Vivaldi, Chrome et Brave
Kaspersky a découvert une faille zero-day utilisée pour lancer des attaques via Google Chrome, les internautes sont invités à effectuer une mise à jour de leur navigateur
Google déploie Chrome 78 qui s'accompagne de l'API Native File System et améliore le mode sombre dans ses déclinaisons mobiles
Google Chrome : vers la fin de uBlock Origin ? Les utilisateurs pointent un processus de revue qui semble viser les extensions dans la filière blocage de pubs