Siapkan ekstensi Anda saat kami mulai menguji menu ekstensi baru

Dipublikasikan: 19 November 2024

Di Google I/O 2024, kami membagikan beberapa desain awal untuk perubahan mendatang pada menu ekstensi, yang memberi pengguna kontrol lebih besar atas situs yang dapat diakses ekstensi. Kami akan segera mulai menguji perubahan ini, dimulai dengan sebagian kecil pengguna di Canary dan berharap dapat meluncurkannya secara lebih luas pada masa mendatang.

Saat berbicara dengan developer tentang perubahan ini sebelumnya, kami sering mendengar kekhawatiran tentang dampak perubahan cara ekstensi meminta izin host pada waktu penginstalan. Menu baru tidak memengaruhi perilaku default apa pun. Ekstensi akan terus diberi akses ke semua host yang diminta pada saat penginstalan. Tujuan dari perubahan ini adalah untuk memudahkan pengguna menemukan kontrol yang sudah tersedia.

Postingan ini memberikan ringkasan tentang hal yang akan terjadi dan cara menyiapkan ekstensi dengan API baru untuk menangani kasus saat akses ke halaman telah ditahan oleh pengguna.

Apa yang berubah?

Untuk memberi pengguna kontrol yang lebih besar, kami akan memperkenalkan menu ekstensi baru. Ekstensi akan terus diberi akses ke semua host yang diminta pada saat penginstalan, tetapi pengguna kini akan memiliki cara yang lebih mudah untuk mengontrol akses per ekstensi.

Desain dalam proses untuk menu ekstensi baru
Desain yang sedang dalam proses untuk menu ekstensi baru

Menu baru (digambarkan dengan desain saat ini yang dapat berubah) menunjukkan dengan lebih jelas ekstensi mana yang dapat berjalan di halaman, dan memberi pengguna kemampuan untuk mengubah akses jika dipilih. Pengguna juga dapat mencegah semua ekstensi berjalan di situs tertentu. Seperti yang telah disebutkan, tidak ada setelan atau setelan default yang tersedia yang berubah. Kami berfokus untuk mempermudah pengguna menemukan fitur yang sudah ada.

Menambahkan permintaan akses situs

Kami telah mendesain API baru untuk melengkapi perubahan ini, dengan masukan signifikan dari browser dan developer lain di Grup Komunitas WebExtensions.

Jika pengguna telah menahan akses ke halaman, ekstensi kini dapat meminta akses menggunakan permissions.addSiteAccessRequest API baru. Saat ekstensi melakukan hal ini, pengguna akan melihat pesan "Izinkan" di samping potongan teka-teki ekstensi di toolbar. Berikut adalah salah satu desain yang sedang kami pelajari:

Permintaan akses situs di example.com
Permintaan akses situs di example.com

Saat pengguna mengklik "Izinkan" dalam menu ekstensi, ekstensi akan diberi akses persisten ke host. Pengguna dapat menahannya lagi di masa mendatang dengan mengakses menu ekstensi atau di halaman chrome://extensions. Mengklik "Izinkan 1?" dalam toolbar memberikan cara yang lebih cepat untuk memberikan akses langsung.

Ekstensi dapat memanggil permissions.addSiteAccessRequest dengan tabId untuk menampilkan permintaan izin untuk tab tersebut. Anda dapat menggunakan deteksi fitur untuk mulai menggunakannya dengan aman di ekstensi Anda sekarang. API tidak akan melakukan apa pun untuk pengguna tanpa menu baru, tetapi mengadopsinya akan menguntungkan pengguna dengan menu baru saat diluncurkan secara bertahap.

chrome.tabs.onUpdated.addListener(async (tabId, changes) => {
  if (typeof changes.url !== 'string') return;

  const url = new URL(changes.url);

  // If we are on the /checkout page of example.com.
  if (url.origin === 'https://example.com' && url.pathname === '/checkout') {
    const hasPermission = await chrome.permissions.contains({
      origins: ['https://example.com/*']
    });

    // We already have host permissions.
    if (hasPermission) {
      return;
    }

    // Add a site access request if the API is available.
    if (chrome.permissions.addSiteAccessRequest) {
      chrome.permissions.addSiteAccessRequest({ tabId });
    }
  }
});

Dalam contoh ini, kita hanya menambahkan permintaan jika pengguna berada di halaman /checkout. Anda dapat melihat kode lengkap di repositori contoh ekstensi Chrome kami.

Ekstensi harus memperhatikan kapan harus meminta akses kepada pengguna. Pengguna lebih cenderung mengabaikan permintaan yang berisik dan Chrome mungkin membatasi permintaan yang berlebihan. Pengguna juga dapat memilih untuk menonaktifkan kemampuan ekstensi untuk menampilkan permintaan. Oleh karena itu, Anda hanya boleh meminta akses dalam situasi tertentu, saat Anda yakin bahwa pengguna akan ingin berinteraksi dengan ekstensi Anda.

Permintaan terikat ke tab tertentu dan otomatis dihapus saat pengguna membuka asal yang berbeda. Metode removeSiteAccessRequest yang sesuai tersedia untuk menghapus permintaan secara eksplisit (seperti jika permintaan terikat ke jalur tertentu).

Karena API ini ditautkan dengan menu ekstensi baru, panggilan akan diabaikan jika menu baru tidak diaktifkan. Namun, sebaiknya coba API ini sekarang, dan pertimbangkan untuk menggunakannya di ekstensi Anda. Anda akan memberikan pengalaman pengguna yang luar biasa saat perubahan menu baru ditampilkan secara bertahap untuk lebih banyak pengguna.

Untuk mempelajari lebih lanjut cara menggunakan izin opsional, lihat dokumentasi izin.

Cobalah

API diaktifkan secara default di Chrome 133.0.6838.0 dan yang lebih tinggi (saat ini di Chrome Canary). Untuk mengaktifkan menu baru, di chrome://flags, aktifkan tanda "Extensions Menu Access Control".

Sebagai pengingat, fitur ini masih dalam proses dan dapat terus berkembang dan berubah. Sebaiknya lakukan pengujian di Chrome Canary untuk melihat pengalaman terbaru.

Anda dapat memberikan masukan tentang desain baru di milis chromium-extensions yang akan kami pertimbangkan saat kami terus mengerjakan menu baru.