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.

Uma extensão na aplicação de demonstração JxBrowser

Uma extensão na aplicação de demonstração JxBrowser.

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.

Instalar a extensão da Chrome Web Store na aplicação de demonstração JxBrowser.

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.

Uma ação de extensão na barra de ferramentas do Google Chrome

Uma ação de extensão na barra de ferramentas do Google Chrome.

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.

Um popup de extensão abriu-se como uma nova janela

Um popup de extensão abriu-se como uma nova janela.

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.

Spinner

Enviando…

Desculpe, o envio foi interrompido

Tente novamente. Se o problema persistir, contate-nos através do endereço info@teamdev.com.

Leia e aceite os termos para continuar.

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.