Penghentian dan penghapusan di Chrome 60

Joe Medley
Joe Medley

Di hampir setiap versi Chrome, kami melihat sejumlah besar update dan peningkatan pada produk, performanya, dan juga kemampuan Platform Web. Artikel ini menjelaskan penghentian dan penghapusan di Chrome 60, yang masih dalam versi beta mulai 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 di origin yang tidak aman. Karena kebijakan lama Chrome yang memilih origin aman untuk fitur yang canggih, crypto.subtle tidak hanya terlihat di origin aman.

Intent to Remove | Bug Chromium

Menghapus navigasi frame atas yang dimulai konten ke URL data

Karena tidak dikenal oleh pengguna browser non-teknis, kami semakin sering melihat skema data: 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 sekarang dihapus.

Intent to Remove | Chromestatus Tracker | Chromium Bug

Menonaktifkan navigator.sendBeacon() untuk sementara untuk beberapa blob

Fungsi navigator.sendBeacon() telah tersedia sejak Chrome 39. Seperti yang diterapkan awalnya, argumen data fungsi dapat berisi blob arbitrer yang jenisnya tidak ada dalam daftar aman CORS. Kami yakin ini adalah potensi ancaman keamanan, meskipun belum ada yang mencoba mengeksploitasinya. Karena kami TIDAK memiliki perbaikan langsung yang wajar untuk masalah ini, untuk sementara, sendBeacon() tidak dapat lagi dipanggil pada blob yang jenisnya BUKAN diizinkan CORS.

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

Bug Chromium

CSS

Membuat pengombinator turunan yang menembus bayangan berperilaku seperti pengombinator turunan

Kombinator turunan yang menembus bayangan (>>>), bagian dari Modul Cakupan CSS Level 1, dimaksudkan untuk mencocokkan turunan elemen ancestor tertentu meskipun muncul di dalam hierarki bayangan. Hal ini memiliki beberapa batasan. Pertama, sesuai spesifikasi, properti ini hanya dapat digunakan dalam panggilan JavaScript seperti querySelector() dan tidak berfungsi di stylesheet. Yang lebih penting, vendor browser tidak dapat membuatnya berfungsi di luar satu tingkat Shadow DOM.

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

Intent to Remove | Chromestatus Tracker | Chromium Bug

JavaScript

Menghentikan penggunaan dan menghapus RTCPeerConnection.getStreamById()

Hampir dua tahun yang lalu, getStreamById() dihapus dari spesifikasi WebRTC. Sebagian besar browser lainnya telah menghapusnya dari implementasi mereka. Meskipun fungsi ini dipercaya jarang digunakan, ada juga dugaan bahwa ada beberapa risiko interoperabilitas kecil dengan browser berbasis Edge dan WebKit selain Safari tempat getStreamById() masih didukung. Developer yang memerlukan penerapan alternatif dapat menemukan contoh kode di Intent to Remove, di bawah.

Penghapusan dilakukan di Chrome 62.

Intent to Remove | Chromestatus Tracker | Chromium Bug

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 ini diperkirakan akan dilakukan di Chrome 62, yang akan dirilis pada awal atau pertengahan Oktober.

Intent to Deprecate | Chromestatus Tracker | Chromium Bug

Memindahkan getContextAttributes() di belakang tanda

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. Seharusnya diterapkan di belakang tanda command line --enable-experimental-canvas-features, tetapi tidak dilakukan. Di Chrome 60, kelalaian ini telah diperbaiki. Diyakini bahwa perubahan ini aman, karena tidak ada data yang menunjukkan bahwa ada orang yang menggunakan metode ini.

Bug Chromium

Menghapus Headers.prototype.getAll()

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

Intent to Remove | Chromestatus Tracker | Chromium Bug

Menghapus indexedDB.webkitGetDatabaseNames()

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

Sayangnya, desain ini memiliki kekurangan, karena hasilnya mungkin sudah tidak berlaku begitu ditampilkan, sehingga hanya dapat digunakan untuk logging, bukan logika aplikasi yang serius. Masalah GitHub melacak/menautkan ke diskusi sebelumnya tentang alternatif, yang akan memerlukan pendekatan yang berbeda. Meskipun ada minat yang terus-menerus dari developer, mengingat kurangnya kemajuan lintas browser, masalah ini telah diatasi oleh penulis library.

Developer yang memerlukan fungsi ini harus 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 sekarang dihapus.

Intent to Remove | Chromestatus Tracker | Chromium Bug

Menghapus WEBKIT_KEYFRAMES_RULE dan WEBKIT_KEYFRAME_RULE

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

Intent to Remove | Chromestatus Tracker | Chromium Bug

Antarmuka Pengguna

Mewajibkan 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). Untuk lebih jelasnya, ini bukan perubahan pada pengiriman peristiwa beforeunload. Ini hanyalah perubahan pada apakah dialog ditampilkan.

Dialog beforeunload adalah kotak dialog modal aplikasi. Dengan demikian, secara inheren tidak bersahabat dengan pengguna, yang berarti merespons navigasi pengguna dengan mempertanyakan keputusan pengguna. Ada penggunaan positif untuk fitur ini. Misalnya, ini sering digunakan untuk memperingatkan pengguna saat mereka akan kehilangan data dengan menavigasi.

Meskipun kemampuan halaman untuk memberikan teks untuk dialog beforeunload telah dihapus beberapa waktu lalu, dialog beforeunload tetap menjadi vektor penyalahgunaan. Secara khusus, dialog beforeunload adalah bahan dari situs scam, dengan audio putar otomatis dan teks ancaman yang memberikan konteks saat pesan "yakin ingin keluar dari halaman ini" yang disediakan Chromium menjadi mengkhawatirkan.

Kita ingin melakukan hal yang tepat, dan hanya mengizinkan penggunaan dialog beforeunload yang baik. Penggunaan dialog yang baik adalah saat pengguna memiliki status yang mungkin hilang. Jika pengguna tidak pernah berinteraksi dengan halaman, pengguna tidak dapat memiliki status yang mungkin hilang, sehingga kami tidak berisiko kehilangan data pengguna dengan menyembunyikan dialog dalam kasus tersebut.