Penghentian dan Penghapusan API di Chrome 50

Di hampir setiap versi Chrome, kami mendapatkan sejumlah update dan peningkatan yang signifikan pada produk, performanya, dan juga kemampuan platform web.

Di Chrome 50 (Estimasi tanggal beta: 10 sampai 17 Maret) ada sejumlah perubahan pada Chrome. Daftar ini dapat berubah sewaktu-waktu.

AppCache tidak digunakan lagi dalam konteks yang tidak aman

TL;DR: Untuk menghambat pembuatan skrip lintas situs, kami menghentikan AppCache di origin yang tidak aman. Kami berharap di Chrome 52, fitur ini hanya akan berfungsi di origin yang menayangkan konten melalui HTTPS.

Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium

AppCache adalah fitur yang memungkinkan akses offline dan persisten ke origin, yang merupakan eskalasi akses yang kuat untuk serangan pembuatan skrip lintas situs. Sebagai bagian dari upaya yang lebih besar untuk menghapus fitur canggih pada origin yang tidak aman.

Chrome menghapus vektor serangan ini dengan hanya mengizinkannya melalui HTTPS. Kami menghentikan dukungan HTTP di Chrome 50 dan berencana untuk menghapusnya sepenuhnya di Chrome 52.

Document.defaultCharset dihapus

TL;DR: document.defaultCharset telah dihapus untuk meningkatkan kepatuhan spesifikasi.

Intent untuk Menghapus | Pelacak Chromestatus | Masalah CRBug

document.defaultCharset, yang tidak digunakan lagi di Chrome 49, adalah properti hanya baca yang menampilkan encoding karakter default sistem pengguna berdasarkan setelan regionalnya. Tidak ada gunanya mempertahankan nilai ini karena cara browser menggunakan informasi encoding karakter dalam Respons HTTP atau dalam tag meta yang disematkan pada halaman.

Sebagai gantinya, gunakan document.characterSet untuk mendapatkan nilai pertama yang ditentukan di header HTTP. Jika tidak ada, Anda akan mendapatkan nilai yang ditentukan dalam atribut charset dari elemen <meta> (misalnya, <meta charset="utf-8">). Terakhir, jika tidak ada satu pun opsi yang tersedia, document.characterSet akan menjadi setelan sistem pengguna.

Anda dapat membaca diskusi selengkapnya tentang alasan untuk tidak menentukan hal ini dalam masalah github ini

TL;DR: Menghapus dukungan untuk nilai subresource untuk atribut rel dari HTMLLinkElement.

Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium

Intent atribut subresource pada <link> adalah untuk mengambil data resource selama waktu tidak ada aktivitas browser. Setelah mendownload halaman, browser dapat melakukan pra-download resource seperti halaman lain sehingga saat diminta oleh pengguna, halaman tersebut dapat diambil dari cache browser.

Atribut subresource mengalami sejumlah masalah. Pertama, tidak pernah berfungsi sebagaimana mestinya. Resource yang direferensikan didownload dengan prioritas rendah. Atribut ini tidak pernah diterapkan pada browser apa pun selain Chrome. Implementasi Chrome memiliki bug yang menyebabkan resource didownload dua kali.

Developer yang ingin meningkatkan pengalaman pengguna melalui pramuat konten memiliki sejumlah opsi, yang paling dapat disesuaikan adalah membuat pekerja layanan untuk memanfaatkan precache dan Caches API. Solusi tambahan mencakup nilai lain untuk atribut rel yang mencakup preconnect, prefetch, preload, prerender. Beberapa opsi ini bersifat eksperimental dan mungkin tidak didukung secara luas.

Menghapus penggantian versi TLS yang tidak aman

TL;DR: Menghapus mekanisme yang memaksa server menampilkan data menggunakan versi TLS yang kurang atau tidak aman.

Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium

Transport Layer Security (TLS) mendukung mekanisme untuk menegosiasikan versi, sehingga memungkinkan pengenalan versi TLS baru tanpa merusak kompatibilitas. Beberapa server menerapkan hal ini sedemikian rupa sehingga browser diwajibkan menggunakan endpoint yang tidak aman sebagai penggantian. Oleh karena itu, penyerang dapat memaksa situs apa pun, bukan hanya situs yang tidak dikonfigurasi dengan benar, untuk bernegosiasi guna mendapatkan versi TLS yang lebih lemah.

Situs yang terpengaruh akan gagal terhubung dengan ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION. Administrator harus memastikan software server mereka sudah yang terbaru. Jika masih belum terselesaikan, hubungi vendor software server untuk melihat apakah perbaikan tersedia.

Menghapus KeyboardEvent.prototype.keyLocation

TL;DR: Menghapus alias yang tidak diperlukan untuk atribut Keyboard.prototype.location.

Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium

Atribut ini hanyalah alias untuk atribut Keyboard.prototype.location, yang memungkinkan disambiguasi antar-tombol yang terletak di beberapa tempat di keyboard. Misalnya, kedua atribut tersebut memungkinkan developer membedakan antara dua tombol Enter pada keyboard yang diperluas.

Pengendali error dan keberhasilan diperlukan dalam metode RTCPeerConnection

TL;DR: Metode RTCPeerConnection WebRTC createOffer() dan createAnswer() sekarang memerlukan pengendali error serta pengendali yang berhasil. Sebelumnya, metode ini dapat dipanggil hanya dengan pengendali yang berhasil. Penggunaan tersebut tidak digunakan lagi.

Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium

Di Chrome 49, kami menambahkan peringatan jika Anda memanggil setLocalDescription() atau setRemoteDescription() tanpa memberikan pengendali error. Argumen pengendali error bersifat wajib mulai Chrome 50.

Ini merupakan bagian dari pembersihan cara untuk memperkenalkan promise pada metode ini, seperti yang diperlukan oleh spesifikasi WebRTC.

Berikut ini contoh dari demo RTCPeerConnection WebRTC (main.js, baris 126):

    function onCreateOfferSuccess(desc) {
      pc1.setLocalDescription(desc, function() {
         onSetLocalSuccess(pc1);
      }, onSetSessionDescriptionError);
      pc2.setRemoteDescription(desc, function() {
        onSetRemoteSuccess(pc2);
      }, onSetSessionDescriptionError);
      pc2.createAnswer(onCreateAnswerSuccess, onCreateSessionDescriptionError);
    }

Perlu diperhatikan bahwa setLocalDescription() dan setRemoteDescription() memiliki pengendali error. Browser lama yang hanya mengharapkan pengendali berhasil akan mengabaikan argumen pengendali error jika ada; memanggil kode ini di browser lama tidak akan menyebabkan pengecualian.

Secara umum, untuk aplikasi WebRTC produksi, sebaiknya gunakan adapter.js, shim, yang dikelola oleh project WebRTC, untuk melindungi aplikasi dari perubahan spesifikasi dan perbedaan awalan.

XMLHttpRequestProgressEvent tidak didukung lagi

TL;DR: Antarmuka XMLHttpRequestProgressEvent akan dihapus, bersama atribut position dan totalSize.

Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium

Peristiwa ini dibuat untuk mendukung properti kompatibilitas Gecko position dan totalSize. Dukungan untuk ketiganya dihapus di Mozilla 22 dan fungsinya telah lama digantikan oleh ProgressEvent.

     var progressBar = document.getElementById("p"),
          client = new XMLHttpRequest()
      client.open("GET", "magical-unicorns")
      client.onprogress = function(pe) {
        if(pe.lengthComputable) {
          progressBar.max = pe.total
          progressBar.value = pe.loaded
        }
      }

Menghapus Ekstensi Media Terenkripsi yang mengawali

TL;DR: Ekstensi media terenkripsi berawalan telah dihapus dan diganti dengan pengganti tanpa awalan berbasis spesifikasi.

Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium

Di Chrome 42, kami meluncurkan versi ekstensi media terenkripsi berbasis spesifikasi tanpa awalan. API ini digunakan untuk menemukan, memilih, dan berinteraksi dengan sistem Manajemen Hak Digital (DRM) untuk digunakan dengan HTMLMediaElement.

Itu dilakukan hampir setahun lalu. Dan karena versi tanpa awalan memiliki kemampuan lebih banyak daripada versi berawalan, kini saatnya menghapus versi API berawalan.

Menghapus dukungan untuk properti SVGElement.offset

TL;DR: Properti offset untuk SVGElement telah dihapus dan digantikan dengan properti yang lebih didukung secara luas di HTMLElement.

Intent untuk Menghapus | Pelacak Chromestatus | Bug Chromium

Properti offset telah lama didukung oleh HTMLElement dan SVGElement; tetapi, Gecko dan Edge hanya mendukungnya di HTMLElement. Untuk meningkatkan konsistensi di antara browser, properti ini tidak digunakan lagi di Chrome 48 dan kini telah dihapus.

Meskipun properti yang setara adalah bagian dari HTMLElement, developer yang mencari alternatif juga dapat menggunakan getBoundingClientRect()