Společnost Mozilla oznámila začátek testování implementace třetí verze manifestu Chrome ve Firefoxu, která určuje možnosti a zdroje dostupné pro doplňky napsané pomocí API WebExtensions. Pro testování třetí verze manifestu je třeba v beta verzi Firefox 101 v nastavení about:config nastavit parametr „extensions.manifestV3.enabled“ na hodnotu true a parametr „xpinstall.signatures.required“ na hodnotu false. Pro instalaci doplňků lze použít rozhraní about:debugging. Předpokládá se, že aktivace třetí verze manifestu jako výchozí bude na konci roku.
Od verze 57 přešel Firefox zcela na používání API WebExtensions pro vývoj doplňků a přestal podporovat technologii XUL. Přechod na WebExtensions umožnil zjednodušení vývoje doplňků s platformami Chrome, Opera, Safari a Edge, usnadnil přenos doplňků mezi různými webovými prohlížeči a umožnil plné využití víceprocesního režimu (doplňky WebExtensions mohou běžet v samostatných procesech, izolovaných od ostatních částí prohlížeče). Pro zajištění náležitosti vývoje doplňků s ostatními prohlížeči poskytuje Firefox téměř úplnou kompatibilitu s druhou verzí manifestu Chrome.
V současné době probíhá v Chrome přechod na třetí verzi manifestu a podpora druhé verze bude ukončena v lednu 2023. Vzhledem k tomu, že třetí verze manifestu byla předmětem kritiky a povede k poruchám mnoha doplňků pro blokování nežádoucího obsahu a zajištění bezpečnosti, rozhodla se společnost Mozilla odstoupit od praxe zajišťování úplné kompatibility s manifestem ve Firefoxu a některé změny implementovat jinak.
Hlavní nespokojenost s třetí verzí manifestu souvisí s převedením API webRequest do režimu pouze pro čtení, což umožňovalo připojování vlastních handlerů s plným přístupem k síťovým požadavkům a schopných na místě modifikovat provoz. Toto API se používá v uBlock Origin a mnoha dalších doplňcích pro blokování nežádoucího obsahu a zajištění bezpečnosti. Místo API webRequest byla ve třetí verzi manifestu navržena omezenější API declarativeNetRequest, která poskytuje přístup k vestavěnému filtračnímu jádru, které vlastní pravidla blokování zpracovává samostatně, neumožňuje použití vlastních filtrovacích algoritmů a nepovoluje definici složitých pravidel, která se navzájem překrývají v závislosti na podmínkách.
V navržené implementaci třetí verze manifestu ve Firefoxu byl přidán nový deklarativní API pro filtrování obsahu, ale na rozdíl od Chrome nebyla ukončena podpora starého blokovacího režimu API webRequest. Mezi dalšími vlastnostmi nové verze manifestu ve Firefoxu jsou:
- V manifestu je určena výměna pozadí stránek za variantu Service Workers, fungující jako pozadí procesy (Background Service Workers). Pro zajištění kompatibility ve Firefoxu bude toto požadováno, ale navíc bude navržen nový mechanismus Event Pages, který je pro webové vývojáře přehlednější, nevyžaduje kompletní přepracování doplňků a odstraňuje omezení spojená s použitím Service Workers. Event Pages umožní přizpůsobit stávající doplňky s pozadím stránek požadavkům třetí verze manifestu, přičemž si zachovají přístup ke všem potřebným funkcím pro práci s DOM. V aktuální verzi manifestu, dostupné pro testování ve Firefoxu, jsou prozatím podporovány pouze Event Pages, a podpora řešení na bázi Service Workers bude přidána později. Návrh podpořila společnost Apple, která implementovala Event Pages ve vydání Safari Technology Preview 136.
- Nový granulární model žádosti o oprávnění — doplněk nebude moci být aktivován okamžitě pro všechny stránky (odstraněno oprávnění „all_urls“), ale bude fungovat pouze v kontextu aktivní karty, tj. uživatel bude muset potvrdit činnost doplňku pro každou webovou stránku. Ve Firefoxu budou všechny žádosti o přístup k datům webu považovány za nepovinné a konečné rozhodnutí o poskytnutí přístupu učiní uživatel, který si může vybrat, kterému doplňku udělit přístup k jeho datům na daném webu.
- Změna zpracování Cross-origin požadavků – v souladu s novým manifestem se na skripty zpracování obsahu vztahují stejné omezení oprávnění jako na hlavní stránku, do které jsou tyto skripty vloženy (například pokud stránka nemá přístup k API pro určování polohy, pak ani skript rozšíření tento přístup nezíská). Toto změna byla plně implementována v prohlížeči Firefox.
- API založené na Promise. Firefox již toto API podporuje a pro třetí verzi manifestu jej přesune do jmenného prostoru „chrome.*“.
- Zákaz provádění kódu načteného z externích servery (jde o situace, kdy doplněk načítá a vykonává externí kód). Ve Firefoxu je již používáno blokování externího kódu a vývojáři Mozilly přidali další techniky sledování načítání kódu, které jsou navrhovány ve třetí verzi manifestu. Pro skripty zpracování obsahu byla představena samostatná politika omezení přístupu k obsahu (CSP, Content Security Policy).
Zdroj: opennet.ru
