Publicado em 19 de novembro de 2024
No Google I/O 2024, compartilhamos alguns designs iniciais das próximas mudanças no menu de extensões, que dão aos usuários mais controle sobre os sites que as extensões podem acessar. Em breve, vamos começar a testar essas mudanças com uma pequena porcentagem de usuários no Canary e esperamos lançar o recurso para mais pessoas no futuro.
Ao conversar com os desenvolvedores sobre essa mudança no passado, muitas vezes ouvimos preocupações sobre o impacto de mudar a maneira como as extensões podem solicitar permissões de host no momento da instalação. O novo menu não afeta o comportamento padrão. As extensões vão continuar tendo acesso a todos os hosts solicitados no momento da instalação. O objetivo dessas mudanças é facilitar a descoberta de controles que já estão disponíveis.
Esta postagem oferece uma visão geral do que esperar e como preparar suas extensões com uma nova API para lidar com casos em que o acesso a uma página foi retido pelo usuário.
O que muda?
Para dar mais controle aos usuários, vamos lançar um novo menu de extensões. As extensões vão continuar recebendo acesso a todos os hosts solicitados no momento da instalação, mas os usuários agora terão uma maneira mais fácil de controlar o acesso por extensão.
O novo menu (mostrado com o design atual, que pode mudar) mostra com mais clareza quais extensões podem ser executadas em uma página e permite que os usuários mudem o acesso, se quiserem. O usuário também pode impedir que todas as extensões sejam executadas em um site específico. Como mencionado, nenhuma das configurações ou padrões disponíveis vai mudar. Nosso foco é facilitar a descoberta do que já temos.
Adicionar uma solicitação de acesso ao site
Criamos uma nova API para complementar essas mudanças, com contribuições significativas de outros navegadores e desenvolvedores no Grupo da comunidade das WebExtensions.
Se um usuário tiver negado o acesso a uma página, as extensões poderão solicitar acesso usando a nova API permissions.addSiteAccessRequest
. Quando uma extensão faz isso, o usuário recebe uma mensagem "Permitir" ao lado do quebra-cabeça da extensão na barra de ferramentas. Este é um design que estamos testando:
Quando um usuário clica em "Permitir" no menu de extensões, a extensão recebe acesso persistente ao host. O usuário pode bloquear novamente no futuro acessando o menu de extensões ou a página chrome://extensions. Clique em "Permitir 1?" na barra de ferramentas para conceder acesso imediato.
As extensões podem chamar permissions.addSiteAccessRequest
com um tabId
para mostrar uma solicitação de permissão para essa guia. Você pode usar a detecção de recursos para começar a usar sua extensão com segurança hoje mesmo. A API não vai fazer nada para os usuários sem o novo menu, mas a adoção dele vai beneficiar os usuários à medida que ele for lançado gradualmente.
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 });
}
}
});
Neste exemplo, só adicionamos uma solicitação se o usuário estiver na página /checkout
. Confira o código completo no nosso repositório de amostras de extensões do Chrome.
As extensões precisam ter cuidado ao pedir acesso aos usuários. Os usuários têm mais probabilidade de ignorar solicitações com ruídos, e o Chrome pode limitar solicitações excessivas. O usuário também pode desativar a capacidade de uma extensão de mostrar solicitações. Como resultado, só solicite o acesso em situações específicas, quando você tiver muita confiança de que o usuário vai interagir com a extensão.
As solicitações são vinculadas a uma guia específica e são apagadas automaticamente quando um usuário navega para uma origem diferente. Um método removeSiteAccessRequest
correspondente está disponível para limpar uma solicitação explicitamente (por exemplo, se ela estiver vinculada a um caminho específico).
Como essa API está vinculada ao novo menu de extensões, as chamadas serão ignoradas se o novo menu não estiver ativado. No entanto, recomendamos que você teste a API hoje mesmo e considere adotá-la na sua extensão. Você vai oferecer uma ótima experiência do usuário, já que as mudanças no novo menu vão aparecer gradualmente para mais usuários.
Para saber mais sobre o trabalho com permissões opcionais, consulte a documentação.
Faça um teste
A API está ativada por padrão no Chrome 133.0.6838.0 e versões mais recentes (atualmente no Chrome Canary). Para ativar o novo menu, em chrome://flags, ative a flag "Extensions Menu Access Control".
Vale lembrar que esse é um trabalho em andamento e pode continuar evoluindo e mudando. Recomendamos testar no Chrome Canary para ter a experiência mais atualizada.
Você pode enviar feedback sobre o novo design na lista de e-mails chromium-extensions. Vamos considerar seu feedback enquanto continuamos trabalhando no novo menu.