Przygotuj rozszerzenie, ponieważ rozpoczynamy testowanie nowego menu rozszerzeń

Data publikacji: 19 listopada 2024 r.

Podczas konferencji Google I/O 2024 przedstawiliśmy wstępne projekty nadchodzących zmian w menu rozszerzeń, które dadzą użytkownikom większą kontrolę nad dostępem rozszerzeń do witryn. Wkrótce zaczniemy testować te zmiany, zaczynając od niewielkiej grupy użytkowników wersji Canary. Mamy nadzieję, że w przyszłości będziemy mogli wprowadzić je na większą skalę.

W okolicznościach rozmów z deweloperami na temat tej zmiany często słyszeliśmy obawy dotyczące wpływu zmiany sposobu, w jaki rozszerzenia mogą prosić o uprawnienia hosta podczas instalacji. Nowe menu nie wpływa na żadne domyślne działanie. Rozszerzeniom nadal będzie przyznawany dostęp do wszystkich żądanych hostów w momencie instalacji. Celem tych zmian jest ułatwienie użytkownikom odkrywania dostępnych już ustawień.

W tym wpisie znajdziesz omówienie tego, czego możesz się spodziewać, i informacji o tym, jak możesz przygotować swoje rozszerzenia za pomocą nowego interfejsu API, aby obsługiwać przypadki, w których użytkownik zablokował dostęp do strony.

Co się zmienia?

Aby zapewnić użytkownikom większą kontrolę, wprowadzimy nowe menu rozszerzeń. Rozszerzeniom nadal będzie przyznawany dostęp do wszystkich żądanych hostów w momencie instalacji, ale użytkownicy będą teraz mogli łatwiej kontrolować dostęp do poszczególnych rozszerzeń.

Projekt nowego menu rozszerzeń w trakcie tworzenia
Projekt nowego menu rozszerzeń (w trakcie tworzenia)

Nowe menu (na zdjęciu widać obecny wygląd, który może ulec zmianie) wyraźniej wskazuje, które rozszerzenia mogą działać na stronie, oraz umożliwia użytkownikom zmianę dostępu. Użytkownik może też uniemożliwić uruchamianie wszystkich rozszerzeń w konkretnej witrynie. Jak już wspomnieliśmy, nie zmieniamy żadnych dostępnych ustawień ani domyślnych wartości – skupiamy się na ułatwieniu użytkownikom odkrywania tego, co już mamy.

Dodawanie żądania dostępu do witryny

W ramach tych zmian opracowaliśmy nowy interfejs API, który powstał dzięki znacznemu wkładowi innych przeglądarek i programistów z grupy społeczności WebExtensions.

Jeśli użytkownik odmówił dostępu do strony, rozszerzenia mogą teraz poprosić o dostęp za pomocą nowego interfejsu API permissions.addSiteAccessRequest. Gdy rozszerzenie spróbuje to zrobić, użytkownik zobaczy komunikat „Zezwól” obok elementu puzzli rozszerzenia na pasku narzędzi. Oto jeden z projektów, które rozważamy:

prośba o dostęp do witryny example.com,
Prośba o dostęp do witryny example.com

Gdy użytkownik kliknie „Zezwól” w menu rozszerzeń, rozszerzeniu zostanie przyznany stały dostęp do hosta. Użytkownik może ponownie zablokować rozszerzenie w przyszłości, otwierając menu rozszerzeń lub stronę chrome://extensions. Kliknięcie „Zezwól” na pasku narzędzi to szybszy sposób na przyznanie natychmiastowego dostępu.

Rozszerzenia mogą wywoływać permissions.addSiteAccessRequest z argumentem tabId, aby wyświetlić prośbę o uprawnienia dla tej karty. Możesz już bezpiecznie korzystać z tej funkcji w rozszerzeniu, korzystając z wykrywania funkcji. Interfejs API nie będzie działał dla użytkowników bez nowego menu, ale jego wdrożenie przyniesie korzyści użytkownikom, którzy będą mogli korzystać z nowego menu w miarę jego stopniowego wdrażania.

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

W tym przykładzie dodajemy żądanie tylko wtedy, gdy użytkownik znajduje się na stronie /checkout. Pełny kod znajdziesz w repozytorium chrome-extensions-samples.

Rozszerzenia powinny zwracać uwagę na to, kiedy prosić użytkowników o dostęp. Użytkownicy prawdopodobnie zignorują żądania generujące dużo ruchu, a Chrome może ograniczyć nadmierne żądania. Użytkownik może też wyłączyć możliwość wyświetlania próśb przez rozszerzenie. Dlatego prośbę o dostęp należy wysyłać tylko w określonych sytuacjach, gdy istnieje duża pewność, że użytkownik będzie chciał korzystać z rozszerzenia.

Prośby są powiązane z konkretną kartą i automatycznie usuwane, gdy użytkownik przejdzie do innego źródła. Dostępna jest odpowiednia metoda removeSiteAccessRequest, która pozwala wyraźnie usunąć żądanie (np. jeśli jest ono powiązane z określoną ścieżką).

Ponieważ ten interfejs API jest powiązany z nowym menu rozszerzeń, wywołania zostaną zignorowane, jeśli nowe menu nie jest włączone. Zachęcamy jednak do wypróbowania tego interfejsu API już dziś i zastosowania go w rozszerzeniu. Dzięki temu zapewnisz użytkownikom lepsze wrażenia, ponieważ zmiany w nowym menu będą się stopniowo pojawiać u większej liczby użytkowników.

Więcej informacji o używaniu opcjonalnych uprawnień znajdziesz w dokumentacji dotyczącej uprawnień.

Wypróbuj

Interfejs API jest domyślnie włączony w Chrome 133.0.6838.0 i nowszych wersjach (obecnie w Chrome Canary). Aby włączyć nowe menu, na stronie chrome://flags włącz flagę „Extensions Menu Access Control” (Kontrola dostępu do menu rozszerzeń).

Przypominamy, że ta funkcja jest wciąż rozwijana i może ulec dalszym zmianom. Zalecamy przetestowanie w Chrome Canary, aby uzyskać najnowsze wrażenia.

Opinię na temat nowego interfejsu możesz przesłać na listę mailingową chromium-extensions. Będziemy brać ją pod uwagę, gdy będziemy dalej pracować nad nowym menu.