21. listopadu katalog AMO (addons.mozilla.org) začne přijímat a ověřovat digitální podpisy doplňků, které používají třetí verzi manifestu Chrome. Uvedené doplňky bude možné testovat v nočních sestaveních Firefoxu. V stabilních verzích bude podpora třetí verze manifestu zahrnuta ve Firefoxu 109, který je naplánován na 17. ledna 2023. Podpora druhé verze manifestu bude v dohledné době zachována, ale na konci roku 2023, po posouzení dynamiky přechodu doplňků na třetí verzi manifestu, bude zvažováno převedení podpory druhé verze manifestu do kategorie zastaralých.
Manifest Chrome definuje možnosti a zdroje dostupné pro doplňky napsané pomocí API WebExtensions. Od verze 57 Firefox zcela přešel na používání API WebExtensions pro vývoj doplňků a ukončil podporu technologie XUL. Přechod na WebExtensions umožnil unifikovat vývoj doplňků s platformami Chrome, Opera, Safari a Edge, zjednodušil portaci doplňků mezi různými webovými prohlížeči a umožnil plné využívání víceprocesního režimu (doplňky WebExtensions mohou být vykonávány v samostatných procesech, izolovaných od ostatních částí prohlížeče). Pro unifikaci vývoje doplňků s ostatními prohlížeči v Firefoxu je zajištěna téměř plná kompatibilita se druhou verzí manifestu Chrome.
V současné době probíhá v Chrome přechod na třetí verzi manifestu, přičemž podpora druhé verze bude ukončena v lednu 2024. Hlavním cílem změn v nové verzi je zjednodušení vytváření bezpečných a výkonných doplňků a ztížit možnost vytváření nebezpečných a pomalých doplňků. Vzhledem k tomu, že třetí verze manifestu byla kritizována a povede k porušením funkčnosti mnoha doplňků pro blokování nežádoucího obsahu a zajištění bezpečnosti, se Mozilla rozhodla vzdát se zajištění plné kompatibility s manifestem ve Firefoxu a některé změny implementovat odlišně.
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.
Mezi rysy implementace nového manifestu ve Firefoxu patří:
- Bylo přidáno nové deklarativní API pro filtrování obsahu, ale na rozdíl od Chromu nebyla ukončena podpora starého blokovacího režimu API webRequest.
- V manifestu je definována náhrada za pozadí stránek variantou Service Workers, která funguje jako pozadí procesy (Background Service Workers). Pro zajištění kompatibility v budoucnu bude ve Firefoxu implementována podpora pro Service Workers, ale v současnosti je místo toho navržený nový mechanismus Event Pages, který je pro webové vývojáře více přehledný, nevyžaduje kompletní přepracování rozšíření a odstraňuje omezení spojená s používáním Service Workers. Event Pages umožní přizpůsobit existující rozšíření s pozadími stránkami požadavkům třetí verze manifestu, přičemž si zachová přístup ke všem funkcím potřebným pro práci s DOM.
- 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.
Pro správu oprávnění byla do rozhraní přidána nová tlačítko „Unified Extensions“, které je již k dispozici pro testování v nočních sestaveních Firefoxu. Toto tlačítko poskytuje prostředky pro přímou správu toho, k jakým webům má každé rozšíření přístup - uživatel může poskytnout a odvolat přístup rozšíření k jakémukoli webu. Správa oprávnění se vztahuje pouze na rozšíření založená na třetí verzi manifestu, pro rozšíření na druhé verzi manifestu se granularita řízení přístupu k webům neprovádí.

- 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 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 (řeč o situacích, kdy rozšíření načítá a provádí externí kód). Ve Firefoxu je blokován externí kód a vývojáři Mozilly přidali další techniky sledování načítání kódu, které jsou navržené ve třetí verzi manifestu. Pro skripty zpracování obsahu je představena samostatná politika omezování přístupu k obsahu (CSP, Content Security Policy).
Zdroj: opennet.ru

