Yeni uzantı menüsünü test etmeye başladığımızdan uzantınızı hazırlayın

Yayınlanma tarihi: 19 Kasım 2024

Google I/O 2024'te, uzantı menüsünde yapılacak değişikliklerle ilgili bazı erken tasarımları paylaşmıştık. Bu tasarımlar, kullanıcılara uzantıların erişebileceği siteler üzerinde daha fazla kontrol sahibi olma imkanı tanıyor. Bu değişiklikleri yakında Canary'daki kullanıcıların küçük bir kısmıyla test etmeye başlayacağız. Gelecekte daha geniş bir kitlenin kullanımına sunmayı umuyoruz.

Geçmişte geliştiricilerle bu değişiklik hakkında konuştuğumuzda, uzantıların yükleme sırasında ana makine izinleri isteme şeklinin değiştirilmesinin ne gibi bir etkisi olabileceğiyle ilgili endişeler duyuyorduk. Yeni menü, varsayılan davranışları etkilemez. Uzantıların, yükleme sırasında istenen tüm ana makinelere erişmesine izin verilmeye devam edecektir. Bu değişikliklerin amacı, kullanıcıların mevcut kontrolleri daha kolay keşfetmesini sağlamaktır.

Bu yayında, ne bekleyebileceğinize ve bir sayfaya erişimin kullanıcı tarafından engellendiği durumları ele almak için uzantılarınızı yeni bir API ile nasıl hazırlayabileceğinize dair genel bilgiler verilmektedir.

Neler değişiyor?

Kullanıcılara daha fazla kontrol sunmak için yeni bir uzantı menüsü kullanıma sunacağız. Uzantıların, yükleme sırasında istenen tüm ana makinelere erişmesine izin verilmeye devam edecek ancak kullanıcılar artık uzantı başına erişimi daha kolay bir şekilde kontrol edebilecek.

Yeni uzantılar menüsü için devam eden tasarım çalışması
Yeni uzantılar menüsü için devam eden tasarım

Yeni menü (değişebilecek mevcut tasarımıyla gösterilmiştir), bir sayfada hangi uzantıların çalışabileceğini daha net bir şekilde gösterir ve kullanıcılara, isterlerse erişimi değiştirme olanağı sunar. Kullanıcılar, belirli bir sitede tüm uzantıların çalışmasını da engelleyebilir. Belirtildiği gibi, mevcut ayarlardan veya varsayılan ayarlardan hiçbiri değişmiyor. Mevcut özellikleri kullanıcıların daha kolay keşfetmesini sağlamaya odaklanıyoruz.

Site erişim isteği ekleme

WebExtensions Topluluk Grubu'ndaki diğer tarayıcılardan ve geliştiricilerden önemli katkılar alarak bu değişiklikleri tamamlayacak yeni bir API tasarladık.

Bir kullanıcı bir sayfaya erişimi engellediyse uzantılar artık yeni permissions.addSiteAccessRequest API'yi kullanarak erişim isteğinde bulunabilir. Bir uzantı bunu yaptığında, kullanıcı araç çubuğundaki uzantı bulmacasının yanında "İzin ver" mesajını görür. İncelediğimiz tasarımlardan birini aşağıda görebilirsiniz:

example.com adresinde site erişimi isteği
example.com'da site erişimi isteği

Kullanıcı, uzantılar menüsünde "İzin ver"i tıkladığında uzantıya ana makineye kalıcı erişim izni verilir. Kullanıcı, uzantılar menüsüne veya chrome://extensions sayfasına giderek ileride bu özelliği tekrar devre dışı bırakabilir. Araç çubuğundaki "1'e izin verilecek mi?" seçeneğini tıklayarak anında erişim izni verebilirsiniz.

Uzantılar, ilgili sekme için izin isteği göstermek üzere permissions.addSiteAccessRequest işlevini tabId ile çağırabilir. Özellik algılama özelliğini kullanarak uzantınızda hemen kullanmaya başlayabilirsiniz. API, yeni menüsü olmayan kullanıcılar için hiçbir şey yapmaz ancak kademeli olarak kullanıma sunulduğunda yeni menüyü kullanan kullanıcılara fayda sağlar.

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 });
    }
  }
});

Bu örnekte, yalnızca kullanıcı /checkout sayfasındaysa istek ekleriz. Kodun tamamını chrome-extensions-samples depomuzda bulabilirsiniz.

Uzantılar, kullanıcılardan ne zaman erişim isteğinde bulunacakları konusunda dikkatli olmalıdır. Kullanıcıların rahatsız edici istekleri yoksayma olasılığı daha yüksektir ve Chrome, aşırı istekleri azaltabilir. Kullanıcılar, uzantıların istek gösterme özelliğini devre dışı bırakmayı da seçebilir. Bu nedenle, erişim isteğinde bulunmayı yalnızca kullanıcının uzantılarınızla etkileşime geçmek isteyeceğinden emin olduğunuz belirli durumlarda yapmalısınız.

İstekler belirli bir sekmeye bağlıdır ve kullanıcı farklı bir kaynağa gittiğinde otomatik olarak temizlenir. Bir isteği açıkça temizlemek için (ör. istek belirli bir yola bağlıysa) ilgili removeSiteAccessRequest yöntemi kullanılabilir.

Bu API, yeni uzantılar menüsüne bağlı olduğundan yeni menü etkinleştirilmemişse çağrılar yoksayılır. Ancak API'yi hemen denemenizi ve uzantınıza uygulamanızı öneririz. Yeni menü değişiklikleri kademeli olarak daha fazla kullanıcıya gösterildiğinden mükemmel bir kullanıcı deneyimi sunarsınız.

İsteğe bağlı izinlerle çalışma hakkında daha fazla bilgi edinmek için izinler dokümanlarına göz atın.

Deneyin

API, Chrome 133.0.6838.0 ve sonraki sürümlerde (şu anda Chrome Canary'da) varsayılan olarak etkindir. Yeni menüyü etkinleştirmek için chrome://flags adresinde "Extensions Menu Access Control" (Uzantılar Menüsü Erişim Denetimi) bayrağını etkinleştirin.

Bu özelliğin henüz geliştirme aşamasında olduğunu ve zaman içinde gelişip değişebileceğini hatırlatmak isteriz. En güncel deneyimi görmek için Chrome Canary'da test etmenizi öneririz.

Yeni tasarımla ilgili geri bildirimlerinizi chromium-extensions posta listesine gönderebilirsiniz. Yeni menü üzerinde çalışmaya devam ederken geri bildirimlerinizi dikkate alacağız.