Penghentian dan penghapusan di Chrome 60

Joe Medley
Joe Medley

Di hampir setiap versi Chrome, kami melihat sejumlah update dan peningkatan yang signifikan pada produk, performanya, dan juga kemampuan Platform Web. Artikel ini menjelaskan penghentian penggunaan dan penghapusan di Chrome 60, yang masih dalam versi beta per 8 Juni. Daftar ini dapat berubah sewaktu-waktu.

Keamanan

crypto.subtle kini memerlukan origin yang aman

Web Crypto API yang telah didukung sejak Chrome 37 selalu berfungsi pada origin yang tidak aman. Karena kebijakan Chrome yang sudah lama ada, lebih memilih origin yang aman untuk fitur canggih, crypto.subtle tidak hanya terlihat di origin yang aman.

Rencana Penghapusan | Bug Chromium

Menghapus navigasi bingkai atas yang dimulai konten ke URL data

Karena mereka tidak terbiasa dengan pengguna browser nonteknis, sekarang kami semakin melihat skema data: yang digunakan dalam serangan spoofing dan phishing. Untuk mencegah hal ini, kami memblokir halaman web agar tidak memuat URL data: di frame atas. Hal ini berlaku untuk tag <a>, window.open, window.location, dan mekanisme serupa. Skema data: akan tetap berfungsi untuk resource yang dimuat oleh halaman.

Fitur ini tidak digunakan lagi di Chrome 58 dan kini telah dihapus.

Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium

Menonaktifkan navigator.sendBeacon() untuk beberapa blob untuk sementara

Fungsi navigator.sendBeacon() telah tersedia sejak Chrome 39. Seperti yang pertama kali diimplementasikan, argumen data fungsi dapat berisi blob apa pun yang jenisnya tidak dimasukkan ke dalam daftar aman CORS. Kami yakin hal ini adalah potensi ancaman keamanan, meskipun belum ada yang mencoba mengeksploitasinya. Karena kami TIDAK memiliki perbaikan langsung yang wajar untuk masalah tersebut, untuk sementara, sendBeacon() tidak dapat lagi dipanggil pada blob yang jenisnya TIDAK dimasukkan ke dalam daftar aman CORS.

Meskipun perubahan ini diterapkan untuk Chrome 60, perubahan ini telah digabungkan kembali ke Chrome 59.

Bug Chromium

CSS

Membuat kombinator turunan yang menembus bayangan berperilaku seperti kombinator turunan

Kombinator turunan shadow-piercing (>>>), bagian dari Modul Cakupan CSS Level 1 , dimaksudkan untuk mencocokkan turunan dari elemen ancestor tertentu meskipun elemen tersebut muncul di dalam pohon bayangan. Cara ini memiliki beberapa keterbatasan. Pertama, per spesifikasi, elemen hanya dapat digunakan dalam panggilan JavaScript seperti querySelector() dan tidak berfungsi di stylesheet. Lebih penting lagi, vendor browser tidak dapat membuatnya berfungsi di luar satu level Shadow DOM.

Akibatnya, kombinator turunan telah dihapus dari spesifikasi yang relevan termasuk Shadow DOM v1. Daripada merusak halaman web dengan menghapus pemilih ini dari Chromium, kami memilih untuk memberi alias pada kombinator turunan yang menembus bayangan ke kombinator turunan. Perilaku asli tidak digunakan lagi di Chrome 45. Perilaku baru ini diterapkan di Chrome 61.

Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium

JavaScript

Menghentikan penggunaan dan menghapus RTCPeerConnection.getStreamById()

Hampir dua tahun yang lalu, getStreamById() dihapus dari spesifikasi WebRTC. Sebagian besar browser lain telah menghapusnya dari implementasinya. Meskipun diyakini sedikit digunakan, fungsi ini juga diyakini ada beberapa risiko interoperabilitas kecil dengan browser berbasis Edge dan WebKit selain Safari yang masih mendukung getStreamById(). Developer yang membutuhkan implementasi alternatif dapat menemukan kode contoh di Intent to Remove, di bawah ini.

Penghapusan dilakukan di Chrome 62.

Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium

Menghentikan penggunaan SVGPathElement.getPathSegAtLength

Lebih dari dua tahun yang lalu, getPathSegAtLength() dihapus dari spesifikasi SVG. Karena hanya ada sedikit hit untuk metode ini di httparchive, metode ini tidak digunakan lagi di Chrome 60. Penghapusan diperkirakan akan dilakukan di Chrome 62, yang akan dirilis pada awal atau pertengahan Oktober.

Rencana Penghentian Penggunaan | Pelacak Chromestatus | Bug Chromium

Memindahkan getContextAttributes() di belakang flag

Fungsi getContextAttributes() telah didukung di CanvasRenderingContext2D sejak 2013. Namun, fitur ini bukan bagian dari standar apa pun dan belum menjadi bagian dari standar sejak saat itu. Ini seharusnya sudah diterapkan di belakang tanda command line --enable-experimental-canvas-features, tetapi secara keliru tidak diterapkan. Pada Chrome 60, kesalahan ini telah diperbaiki. Perubahan ini diyakini aman, karena tidak ada data yang menunjukkan bahwa ada orang yang menggunakan metode tersebut.

Bug Chromium

Menghapus Headers.prototype.getAll()

Fungsi Headers.prototype.getAll() dihapus sesuai dengan versi spesifikasi Fetch terbaru.

Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium

Menghapus indexedDB.webkitGetDatabaseNames()

Kami menambahkan fitur ini saat Indexed DB relatif baru di Chrome dan penggunaan awalan adalah hal yang populer. API secara asinkron menampilkan daftar nama database yang ada di origin, yang tampaknya cukup logis.

Sayangnya, desain ini memiliki kekurangan, sehingga hasilnya mungkin sudah tidak berlaku segera setelah ditampilkan, sehingga benar-benar hanya dapat digunakan untuk logging, bukan logika aplikasi yang serius. Masalah github melacak/menautkan ke diskusi sebelumnya tentang alternatif, yang akan memerlukan pendekatan berbeda. Meskipun ada minat yang tidak diinginkan oleh developer, mengingat kurangnya progres lintas browser, masalah tersebut telah diatasi oleh penulis library.

Developer yang membutuhkan fungsi ini perlu mengembangkan solusi mereka sendiri. Library seperti Dexie.js misalnya menggunakan tabel global yang merupakan database lain untuk melacak nama database.

Fitur ini tidak digunakan lagi di Chrome 58 dan kini telah dihapus.

Rencana Penghapusan | Pelacak Chromestatus | Bug Chromium

Hapus WEBKIT_KEYFRAMES_Rules dan WEBKIT_KEYFRAME_Rules

Konstanta WEBKIT_KEYFRAMES_RULE dan WEBKIT_KEYFRAME_RULE non-standar dihapus dari Aturan CSS. Sebagai gantinya, developer sebaiknya menggunakan KEYFRAMES_RULE dan KEYFRAME_RULE.

Rencana Penghapusan | Pelacak Chromestatus | Bug Chromium

Antarmuka Pengguna

Memerlukan gestur pengguna untuk dialog beforeunload

Mulai Chrome 60 dan seterusnya, dialog beforeunload hanya akan muncul jika frame yang mencoba menampilkannya telah menerima gestur pengguna atau interaksi pengguna (atau jika frame tersemat telah menerima gestur tersebut). Agar lebih jelas, ini bukan perubahan pada pengiriman peristiwa beforeunload. Ini hanyalah perubahan pada apakah dialog ditampilkan.

Dialog beforeunload adalah kotak dialog modal aplikasi. Dengan demikian, pada dasarnya bertentangan dengan pengguna, yang berarti merespons navigasi pengguna dengan mempertanyakan keputusan pengguna. Ada penggunaan yang positif untuk fitur ini. Misalnya, atribut ini sering digunakan untuk memperingatkan pengguna ketika mereka akan kehilangan data dengan menavigasi.

Meskipun kemampuan halaman untuk menyediakan teks bagi dialog beforeunload telah dihapus beberapa waktu lalu, dialog beforeunload tetap menjadi vektor penyalahgunaan. Secara khusus, dialog beforeunload merupakan bagian dari situs scam, dengan audio putar otomatis dan teks ancaman memberikan konteks saat pesan "apakah Anda yakin ingin meninggalkan halaman ini" yang diberikan Chromium menjadi mengkhawatirkan.

Kita ingin memasukkan jarum, dan hanya mengizinkan penggunaan dialog beforeunload yang baik. Penggunaan dialog yang baik adalah dialog ketika pengguna memiliki status yang mungkin hilang. Jika pengguna tidak pernah berinteraksi dengan halaman, pengguna tidak dapat memiliki status apa pun yang mungkin hilang, dan oleh karena itu, kita tidak berisiko kehilangan data pengguna dengan menyembunyikan dialog dalam kasus tersebut.