Penghentian dan Penghapusan API di Chrome 50

Di hampir setiap versi Chrome, kami melihat sejumlah besar update dan peningkatan pada produk, performanya, dan juga kemampuan platform web.

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

AppCache tidak digunakan lagi di konteks yang tidak aman

TL;DR: Untuk menghambat pembuatan skrip lintas situs, kami menghentikan penggunaan AppCache pada origin yang tidak aman. Kami memperkirakan bahwa di Chrome 52, fitur ini hanya akan berfungsi pada 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 hak istimewa yang efektif untuk serangan cross-site scripting. Sebagai bagian dari upaya yang lebih besar untuk menghapus fitur canggih di origin yang tidak aman.

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

Document.defaultCharset dihapus

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

Intent to Remove | Chromestatus Tracker | CRBug Issue

document.defaultCharset, yang tidak digunakan lagi di Chrome 49, adalah properti hanya baca yang menampilkan encoding karakter default sistem pengguna berdasarkan setelan regional mereka. Nilai ini tidak berguna untuk dipertahankan karena cara browser menggunakan informasi encoding karakter dalam Respons HTTP atau dalam tag meta yang disematkan di halaman.

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

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

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

Intent to Remove | Chromestatus Tracker | Chromium Bug

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

Atribut subresource mengalami sejumlah masalah. Pertama, fitur ini tidak pernah berfungsi sebagaimana mestinya. Resource yang dirujuk didownload dengan prioritas rendah. Atribut ini tidak pernah diterapkan di browser 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 pra-cache dan Caches API. Solusi tambahan mencakup nilai lain untuk atribut rel termasuk 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 untuk memaksa server menampilkan data menggunakan versi TLS yang kurang aman atau tidak aman.

Intent to Remove | Chromestatus Tracker | Chromium Bug

Transport layer security (TLS) mendukung mekanisme untuk menegosiasikan versi, sehingga memungkinkan pengenalan versi TLS baru tanpa merusak kompatibilitas. Beberapa server menerapkannya sedemikian rupa sehingga browser diperlukan untuk menggunakan endpoint yang tidak aman sebagai penggantian. Oleh karena itu, penyerang dapat memaksa situs mana pun, bukan hanya situs yang salah dikonfigurasi, untuk melakukan negosiasi TLS versi yang lebih lemah.

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

Menghapus KeyboardEvent.prototype.keyLocation

TL;DR: Hapus 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 antara tombol yang terletak di beberapa tempat pada keyboard. Misalnya, kedua atribut ini 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 keberhasilan. Sebelumnya, Anda dapat memanggil metode ini hanya dengan pengendali sukses. Penggunaan tersebut tidak digunakan lagi.

Intent to Remove | Chromestatus Tracker | Chromium Bug

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

Hal ini merupakan bagian dari penyiapan untuk memperkenalkan promise pada metode ini, seperti yang diwajibkan oleh spesifikasi WebRTC.

Berikut adalah 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 sukses 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 lagi didukung

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

Intent to Remove | Chromestatus Tracker | Chromium Bug

Peristiwa ini dibuat untuk mendukung properti kompatibilitas Gecko position dan totalSize. Dukungan untuk ketiganya dihentikan 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 dengan awalan

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

Intent to Remove | Chromestatus Tracker | Chromium Bug

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

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

Menghapus dukungan untuk properti SVGElement.offset

TL;DR: Properti offset untuk SVGElement telah dihentikan dan digantikan oleh properti yang lebih banyak didukung di HTMLElement.

Intent to Remove | Chromestatus Tracker | Chromium Bug

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

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