Dezvoltatorii de la Mozilla au actualizat informațiile despre planurile legate de suportul pentru versiunea a doua și a treia a manifestului Chrome în Firefox. Compania Google are de gând să oprească suportul pentru extensiile care utilizează versiunea a doua a manifestului în versiunile beta ale Chrome 127 (Dev, Canary și Beta) în iunie anul acesta. În ramura stabilă, suportul pentru versiunea a doua a manifestului va fi întrerupt cel mai devreme în luna iulie.
La rândul său, compania Mozilla nu va întrerupe suportul pentru versiunea a doua a manifestului în viitorul apropiat și va păstra posibilitatea de a rula extensii care utilizează caracteristici care nu sunt disponibile în versiunea a treia a manifestului. Decizia de a nu asigura în Firefox o compatibilitate totală cu versiunea a treia a manifestului Chrome rămâne valabilă. În Firefox va fi păstrat un API webRequest complet, care în Chrome va fi trecut în modul doar pentru citire.
În Firefox, prin intermediul mecanismului Event Pages, va fi păstrat suportul pentru executarea scripturilor de fundal bazate pe DOM, în locul cărora versiunea a treia a manifestului prevede utilizarea Service Workers. Scripturile de fundal bazate pe Service Workers nu sunt încă acceptate în Firefox, dar dezvoltatorii vor avea posibilitatea de a defini în extensie atât un handler bazat pe Event Pages, cât și scripturi bazate pe Service Workers, permițând astfel crearea de extensii care respectă versiunea a treia a manifestului și funcționează atât în Chrome, cât și în Firefox.
Manifestul Chrome definește capabilitățile și resursele disponibile pentru extensiile scrise folosind API WebExtensions. Începând cu versiunea 57, Firefox a trecut complet la utilizarea API WebExtensions pentru dezvoltarea extensiilor și a oprit suportul pentru tehnologia XUL. Trecerea la WebExtensions a permis unificarea dezvoltării extensiilor cu platformele Chrome, Opera, Safari și Edge, a simplificat portarea extensiilor între diferite browsere web și a permis utilizarea completă a modului multiproces (extensiile WebExtensions pot fi executate în procese separate, izolate de celelalte părți ale browserului). Pentru a unifica dezvoltarea extensiilor cu celelalte browsere, Firefox asigură o compatibilitate aproape completă cu versiunea a doua a manifestului Chrome.
În cadrul inițiativei de simplificare a creării de extensii sigure și performante, pe de altă parte, de a complica procesul de crearea de extensii nesigure și lente, compania Google a dezvoltat a treia versiune a manifestului. Principala nemulțumire față de a treia versiune a manifestului este provocată de trecerea în modul doar pentru citire a API-ului webRequest, care permitea conexiuni cu propriile handler-e, având acces complet la cererile de rețea și capabile să modifice traficul în timp real. În locul API-ului webRequest, a treia versiune a manifestului a adăugat un API declarativ de rețea, cu capacități limitate, care oferă acces la motorul de filtrare încorporat, care se ocupă singur de regulile de blocare, interzicând utilizarea propriilor algoritmi de filtrare.
Printre caracteristicile implementării celei de-a treia versiuni a manifestului în Firefox:
- A fost adăugat un nou API declarativ de filtrare a conținutului, dar, spre deosebire de Chrome, nu a fost încheiat suportul pentru vechiul mod de funcționare a API-ului webRequest.
- A fost implementat mecanismul Event Pages, care este mai obișnuit pentru dezvoltatorii web, nu necesită o rescriere completă a extensiilor și elimină limitările legate de utilizarea Service Workers. Event Pages va permite adaptarea extensiilor existente cu pagini de fundal la cerințele celei de-a treia versiuni a manifestului, menținând în același timp accesul la toate funcționalitățile necesare pentru interacțiunea cu DOM.
- Noua modelare granulară a solicitărilor de permisiune — extensia nu va putea fi activată imediat pentru toate paginile (privilegiul „all_urls” a fost eliminat), ci va funcționa doar în contextul filialei active, adică utilizatorul va trebui să confirme utilizarea extensiei pentru fiecare site. În Firefox, toate solicitările de acces la datele site-ului vor fi considerate opționale, iar decizia finală de a oferi acces va fi luată de utilizator, care va putea decide selectiv cui extensie să acorde acces la datele sale pe acel sau acel site.
Pentru gestionarea permisiunilor, în interfață a fost adăugată butonul „Unified Extensions” pentru a gestiona direct la ce site-uri are acces fiecare extensie - utilizatorul poate oferi și revoca accesul extensiei la orice site. Gestionarea permisiunilor se aplică doar extensiilor bazate pe versiunea 3 a manifestului, pentru extensiile pe versiunea 2 a manifestului nu se face o gestionare detaliată a accesului la site-uri.

- Modificarea gestionării cererilor Cross-origin - conform noului manifest, scripturile de procesare a conținutului vor avea aceleași restricții de permisiune ca pagina principală în care aceste scripturi sunt injectate (de exemplu, dacă pagina nu are acces la API-ul de determinare a locației, atunci nici scriptul extensiei nu va obține acest acces). Această modificare este complet implementată în Firefox.
- API bazat pe Promise. Firefox suportă acest API și pentru versiunea 3 a manifestului.
- Interzicerea executării codului încărcat din surse externe servere (vorbim despre situații când extensia încarcă și execută cod extern). În Firefox, se aplică blocarea codului extern, iar dezvoltatorii Mozilla au adăugat tehnici suplimentare pentru monitorizarea descărcărilor de cod. Pentru scripturile de procesare a conținutului, a fost introdusă o politică separată de restricționare a accesului la conținut (CSP, Content Security Policy).
Sursa: opennet.ro

