Rimozioni e ritiri in Chrome 60

Joe Medley
Joe Medley

In quasi tutte le versioni di Chrome, vediamo un numero significativo di aggiornamenti e miglioramenti al prodotto, al suo rendimento e anche alle funzionalità della piattaforma web. Questo articolo descrive le ritirazioni e le rimozioni in Chrome 60, che è in versione beta dall'8 giugno. Questo elenco è soggetto a modifiche in qualsiasi momento.

Sicurezza

Ora crypto.subtle richiede un'origine sicura

L'API Web Crypto, supportata da Chrome 37, ha sempre funzionato su origini non sicure. A causa del criterio di Chrome di preferire le origini sicure per funzionalità potenti,crypto.subtle non è visibile solo nelle origini sicure.

Intento di rimozione | Bug di Chromium

Rimuovi le navigazioni nel riquadro superiore avviate dai contenuti agli URL dei dati

Poiché non sono familiari agli utenti di browser non tecnici, stiamo notando sempre più spesso l'utilizzo dello schema data: negli attacchi di spoofing e phishing. Per evitare che ciò accada, stiamo bloccando il caricamento di URL data: nelle pagine web nel frame superiore. Questo vale per i tag <a>, window.open, window.location e meccanismi simili. Lo schema data: continuerà a funzionare per le risorse caricate da una pagina.

Questa funzionalità è stata ritirata in Chrome 58 e ora è stata rimossa.

Intento di rimozione | Tracker di Chromestatus | Bug di Chromium

Disattivare temporaneamente navigator.sendBeacon() per alcuni blob

La funzione navigator.sendBeacon() è disponibile da Chrome 39. Come implementato inizialmente, l'argomento data della funzione poteva contenere qualsiasi blob arbitrario il cui tipo non è nella lista consentita CORS. Riteniamo che si tratti di una potenziale minaccia alla sicurezza, anche se nessuno ha ancora provato a sfruttarla. Poiché NON abbiamo una correzione immediata ragionevole, sendBeacon() non può più essere invocato temporaneamente sui blob di tipo NON nella lista consentita CORS.

Sebbene questa modifica sia stata implementata per Chrome 60, da allora è stata riunita nuovamente in Chrome 59.

Bug di Chromium

CSS

Impostare il combinatore discendente che ignora le ombre in modo che si comporti come il combinatore discendente

Il combinatore di discendenti che ignora l'albero in ombra (>>>), che fa parte del modulo di ambito CSS di livello 1 , era progettato per trovare una corrispondenza con gli elementi secondari di un determinato elemento ancestrale anche quando apparivano all'interno di un albero in ombra. Questo aveva alcune limitazioni. Innanzitutto, secondo le specifiche, poteva essere utilizzato solo nelle chiamate JavaScript come querySelector() e non funzionava negli stili. Ancora più importante, i fornitori di browser non sono riusciti a farlo funzionare oltre un livello del DOM ombra.

Di conseguenza, il combinatore dei discendenti è stato rimosso dalle specifiche pertinenti, incluso Shadow DOM v1. Anziché interrompere le pagine web rimuovendo questo selettore da Chromium, abbiamo scelto di assegnare un alias al combinatore di discendenti che ignora l'ombra al combinatore di discendenti. Il comportamento originale è stato deprecato in Chrome 45. Il nuovo comportamento è implementato in Chrome 61.

Intento di rimozione | Tracker di Chromestatus | Bug di Chromium

JavaScript

Ritiro e rimozione di RTCPeerConnection.getStreamById()

Quasi due anni fa, getStreamById() è stato rimosso dalla specifica WebRTC. La maggior parte degli altri browser lo ha già rimosso dalle proprie implementazioni. Sebbene si ritenga che questa funzione sia poco utilizzata, si ritiene inoltre che esista un rischio minore di interoperabilità con Edge e i browser basati su WebKit diversi da Safari, dove getStreamById() è ancora supportato. Gli sviluppatori che hanno bisogno di un'implementazione alternativa possono trovare il codice di esempio nell'Intent to Remove (Intenzione di rimozione) di seguito.

La rimozione è in Chrome 62.

Intento di rimozione | Tracker di Chromestatus | Bug di Chromium

Ritiro di SVGPathElement.getPathSegAtLength

Più di due anni fa, getPathSegAtLength() è stato rimosso dalla specifica SVG. Poiché in httparchive ci sono solo pochi hit per questo metodo, verrà ritirato in Chrome 60. La rimozione dovrebbe avvenire in Chrome 62, che verrà rilasciato all'inizio o a metà ottobre.

Intento di ritiro | Tracker di Chromestatus | Bug di Chromium

Sposta getContextAttributes() dietro un flag

La funzione getContextAttributes() è supportata su CanvasRenderingContext2D since 2013. Tuttavia, la funzionalità non faceva parte di alcuno standard e non ne è mai stata parte da allora. Avrebbe dovuto essere implementato dietro il --enable-experimental-canvas-features flag della riga di comando, ma per errore non è stato. In Chrome 60 questo errore è stato corretto. Si ritiene che questa variazione sia sicura, poiché non ci sono dati che dimostrino che qualcuno utilizzi il metodo.

Bug di Chromium

Rimuovi Headers.prototype.getAll()

La funzione Headers.prototype.getAll() verrà rimossa in base alla versione più recente della specifica Fetch.

Intento di rimozione | Tracker di Chromestatus | Bug di Chromium

Rimuovi indexedDB.webkitGetDatabaseNames()

Abbiamo aggiunto questa funzionalità quando l'indice DB era relativamente nuovo in Chrome e l'uso di prefisso era di gran moda. L'API restituisce in modo asincrono un elenco dei nomi dei database esistenti in un'origine, il che sembrava abbastanza sensato.

Purtroppo, il design è imperfetto, in quanto i risultati potrebbero essere obsoleti non appena vengono restituiti, quindi può essere utilizzato solo per il logging, non per la logica di applicazione seria. Il problema GitHub contiene link/riferimento a discussioni precedenti sulle alternative, che richiederebbero un approccio diverso. Sebbene l'interesse degli sviluppatori sia stato discontinuo, data la mancanza di progressi su più browser, il problema è stato risolto dagli autori delle librerie.

Gli sviluppatori che hanno bisogno di questa funzionalità devono sviluppare la propria soluzione. Librerie come Dexie.js, ad esempio, utilizzano una tabella globale che è essa stessa un altro database per monitorare i nomi dei database.

Questa funzionalità è stata ritirata in Chrome 58 e ora è stata rimossa.

Intento di rimozione | Tracker di Chromestatus | Bug di Chromium

Rimuovi WEBKIT_KEYFRAMES_RULE e WEBKIT_KEYFRAME_RULE

Le costanti non standard WEBKIT_KEYFRAMES_RULE e WEBKIT_KEYFRAME_RULE vengono rimosse dalla regola CSS. Gli sviluppatori dovrebbero utilizzare invece KEYFRAMES_RULE e KEYFRAME_RULE.

Intento di rimozione | Tracker di Chromestatus | Bug di Chromium

Interfaccia utente

Richiedere un gesto dell'utente per le finestre di dialogo beforeunload

A partire da Chrome 60, la finestra di dialogo beforeunload viene visualizzata solo se il frame che tenta di mostrarla ha ricevuto un gesto o un'interazione dell'utente (o se un frame incorporato ha ricevuto un gesto di questo tipo). Per essere chiari, non si tratta di una modifica all'invio dell'evento beforeunload. Si tratta solo di una modifica relativa alla visualizzazione della finestra di dialogo.

La finestra di dialogo beforeunload è una finestra di dialogo modale dell'app. Di conseguenza, è intrinsecamente ostile agli utenti, nel senso che risponde alla navigazione dell'utente mettendo in discussione la sua decisione. Esistono utilizzi positivi di questa funzionalità. Ad esempio, viene spesso utilizzato per avvisare gli utenti quando stanno per perdere dati durante la navigazione.

Anche se la possibilità per una pagina di fornire il testo per la finestra di dialogo beforeunload è stata rimossa un po' di tempo fa, le finestre di dialogo beforeunload rimangono un vettore di abusi. In particolare, le finestre di dialogo beforeunload sono un ingrediente dei siti web fraudolenti, in cui la riproduzione automatica dell'audio e il testo minaccioso forniscono un contesto in cui il messaggio "Sei sicuro di voler uscire da questa pagina?" fornito da Chromium diventa preoccupante.

Vogliamo trovare la soluzione migliore e consentire solo gli utilizzi corretti della beforeunload dialog. Sono buoni utilizzi della finestra di dialogo quelli in cui l'utente ha uno stato che potrebbe essere perso. Se l'utente non ha mai interagito con la pagina, non può avere alcun stato che potrebbe andare perso e, di conseguenza, non rischiamo di perdere i dati utente se eliminiamo la finestra di dialogo.