Temos o prazer de anunciar que agora o JxBrowser suporta extensões Chrome!
Você pode instalar, atualizar e interagir com praticamente qualquer extensão do Chrome, tanto da Chrome Web Store como um arquivo CRX.
Por que preciso de extensões?
As extensões do Chrome são muito úteis. Melhoram a funcionalidade do navegador, tornando os usuários mais produtivos e à vontade. Proporcionam uma forma económica de acessar a funcionalidades que, de outro modo, poderiam não estar disponíveis ou ser impraticáveis de implementar no software desktop.
Por exemplo, muitos serviços de terceiros como o 1Password, o Okta e o Salesforce são difíceis de integrar em aplicações desktop, mas oferecem extensões convenientes para o Chrome.
As extensões também fornecem funcionalidades como tradução, verificações gramaticais e revisões. Com o JxBrowser, você pode se beneficiar deles na sua aplicação desktop Java sem custos adicionais.
Como instalar extensões
Existem duas formas de instalar extensões do Chrome no JxBrowser: a partir de um arquivo CRX ou a partir da Chrome Web Store.
Para instalar uma extensão a partir de um arquivo CRX, é necessário o próprio arquivo CRX e uma única linha de código:
var extension = profile.extensions().install(Paths.get("/path/to/extensions.crx"));
Você pode agrupar arquivos CRX com a sua aplicação e instalá-los programaticamente na primeira inicialização da aplicação.
Tenha cuidado ao instalar extensões de fontes desconhecidas porque o JxBrowser não verifica a origem da extensão quando uma extensão é instalada a partir de um arquivo CRX. Enquanto a Chrome Web Store assina extensões públicas e o navegador pode verificar a sua origem, as extensões internas personalizadas não podem ser verificadas.
Em alternativa, você pode permitir que os usuários finais instalem extensões diretamente a partir da Chrome Web Store. Por padrão, proibimos a instalação de extensões desta forma. Para permitir que os usuários instalem as extensões a partir da Chrome Web Store, é necessário permitir explicitamente:
extensions.set(InstallExtensionCallback.class, (params, tell) -> {
var name = params.extensionName();
var version = params.extensionVersion();
// Não é possível congelar a versão! A Chrome Web Store instala sempre
// a versão mais recente disponível.
if (name.equals("1Password") && version.equals("2.25.1")) {
tell.install();
} else {
tell.cancel();
}
});
Em seguida, os usuários finais podem encontrar a extensão na Chrome Web Store e basta clicar em Adicionar ao Chrome.
Como interagir com as extensões
A maioria das extensões adiciona um ícone à barra de ferramentas do Google Chrome. Este ícone chama-se “uma ação de extensão”, e os usuários podem clicar nele.
O JxBrowser não apresenta a barra de ferramentas do Chrome, mas te permite clicar na ação a partir do código:
extension.action(browser).ifPresent(ExtensionAction::click);
E, se necessário, apresentar a ação de extensão na IU:
extension.action(browser).ifPresent(action -> {
action.on(ExtensionActionUpdated.class, event -> {
var icon = action.icon();
var type = action.type();
var badge = action.badge();
var tooltip = action.tooltip();
var enabled = action.isEnabled();
// Mostrar o ícone da ação.
});
});
Quando um usuário clica no ícone, a maioria das extensões abre uma pequena janela pop-up, uma “extension action popup”. Por padrão, o JxBrowser abre uma nova janela para cada pop-up, mas você pode substituir este comportamento.
browser.set(OpenExtensionActionPopupCallback.class, (params, tell) -> {
var extension = params.extension();
var popupBrowser = params.popupBrowser();
// Automatizar ações no navegador popup, ou apenas exibi-lo.
tell.proceed();
});
As extensões podem criar popups com conteúdo Web arbitrário. Por exemplo, elas podem abrir a página de configurações ou levar o usuário a um serviço Web de terceiros para autorização.
Por padrão, o JxBrowser bloqueia os popups de extensão, mas você pode alterar este comportamento:
// Registre esta chamada de retorno para controlar os popups da extensão.
extension.set(OpenExtensionPopupCallback.class, (params, tell) -> {
String url = params.url();
// Por exemplo, não permita o carregamento de páginas externas.
if (url.startsWith("chrome-extension://")) {
// Exiba o navegador popup.
} else {
// Caso contrário, feche-o.
params.popupBrowser().close();
}
tell.proceed();
});
E se você pretender apresentar todos os popups de extensão, utilize a implementação padrão fornecida com o JxBrowser:
extension.set(OpenExtensionPopupCallback.class,
new DefaultOpenExtensionPopupCallback());
Observação: O JxBrowser não suporta certas partes da API de extensão do Chrome, principalmente porque não fazem sentido no contexto de um navegador incorporado.
Para ver a lista atualizada das limitações, consulte lista das APIs não suportadas na documentação.
Como posso testar?
A API de extensões está disponível no JxBrowser 8.0.0-eap.4 e passará a fazer parte do próximo JxBrowser 8.0.0.
Você pode obter mais informações sobre outras funcionalidades da API de extensões na documentação oficial.
Enviando…
Desculpe, o envio foi interrompido
Tente novamente. Se o problema persistir, contate-nos através do endereço info@teamdev.com.
A sua chave de avaliação pessoal de JxBrowser e o guia de início rápido chegarão à sua caixa de entrada de e-mail dentro de alguns minutos.