List icon Conteúdo

Publicado em 12 de dezembro de 2017

JxBrowser 6.18

Temos o prazer de anunciar que a versão 6.18 do JxBrowser já está disponível para download. Nesta versão, nos concentramos nas funcionalidades, reforçando a segurança de navegação dos usuários. A versão também contém várias outras funcionalidades e melhorias solicitadas.

Autenticação U2F

Nesta versão, activamos o suporte da norma de autenticação U2F. Não é necessário configurar a biblioteca ou a aplicação Java para poder autenticar utilizando a norma U2F. Note que o registro de dispositivos U2F não é suportado neste momento. Você pode registrar o seu dispositivo U2F no Google Chrome ou em outra aplicação do navegador Web e, em seguida, utilizá-lo no JxBrowser para autenticação.

CacheStorage.clearHttpAuthenticationCache()

A API foi expandida com uma nova funcionalidade que permite limpar o cache HTTP Auth. O código seguinte demonstra como utilizar esta nova funcionalidade:

browser.getCacheStorage().

clearHttpAuthenticationCache(new Callback() {
    @Override
    public void invoke () {
        System.out.println("O cache de autenticação HTTP foi limpo");
    }
});

Encriptação de cookies

O JxBrowser não encripta cookies por padrão. Para ativar a encriptação de cookies, utilize a opção --enable-cookie-encryption Chromium switcher.

O JxBrowser utiliza as rotinas de encriptação de cookies do Chromium, portanto, utiliza a mesma forma de armazenar cookies que o Chromium.

No Linux, para encriptar os cookies, o JxBrowser utiliza o GNOME Keyring ou KWallet. Embora o Chromium escolha automaticamente qual a loja a utilizar, a loja a utilizar também pode ser especificada com um argumento de linha de comandos:

  • --password-store=gnome (para usar o GNOME Keyring)
  • --password-store=kwallet (para usar KWallet)

No Windows, para encriptar cookies, o JxBrowser utiliza apenas a DPAPI. Atualmente, não existem alternativas.

No macOS, o JxBrowser utiliza a chave privada armazenada na aplicação Keychain para encriptar cookies com encriptação AES.

Procurar texto assíncrono

Nas versões anteriores, não havia forma de cancelar a pesquisa atual até esta estar concluída. Nesta versão, expandimos a API com uma nova funcionalidade que permite realizar uma pesquisa de texto na página Web carregada e poder cancelá-la a qualquer momento.

O exemplo seguinte demonstra como utilizar esta nova API:

SearchParams request = new SearchParams("Text to find");
browser.findText(request, new SearchResultCallback() {
    @Override
    public void onResultReceived (SearchResult result){
        // Se a pesquisa tiver sido concluída, obtenha o número de correspondências.
        if (result.isCompleted()) {
            int numberOfMatches = result.getNumberOfMatches();
        }
        // caso contrário - cancele a pesquisa.
        else {
            browser.stopFindingText(StopFindAction.CLEAR_SELECTION);
        }
    }
});

Suporte a Java 9

Agora, o JxBrowser pode ser utilizado em aplicações Java desktop que estão sendo executadas no JRE 9.

Note que o suporte de Java 9 tem várias limitações:

  • O JxBrowser suporta apenas aplicações Java 9 que não utilizam o Java Platform Module System. O suporte do sistema Module será adicionado numa das próximas versões.
  • O JxBrowser não suporta SWT+Java 9.
  • O JxBrowser suporta apenas os parâmetros padrões da JVM. Se você modificar os valores padrões, por exemplo, "--illegal-access=deny" em vez do padrão "--illegal-access=permit", dos parâmetros VM, então a biblioteca pode não funcionar no JRE 9.

O resto da funcionalidade do JxBrowser deve estar funcionando da mesma forma que no JRE 6, 7 e 8.

Problemas corrigidos

  • A exceção "IllegalStateException: HTML document is not available", lançada as vezes quando uma nova página Web é carregada. O crash nativo ao descartar a instância Browser enquanto há um trabalho de impressão ativo. Agora, os trabalhos de impressão pendentes serão cancelados quando a instância Browser, que iniciou a impressão, for eliminada.
  • A falha nativa esporádica no macOS e no Windows ao usar as instâncias do Browser em ambiente multi-threaded.
  • O problema com uma linha branca de um único pixel à direita e na parte inferior de um frame Java executado no modo tela cheia no Linux.
  • A falha nativa no processo de renderização do Chromium que ocorre ao destruir a instância JSContext no ambiente Java multi-threaded.
  • A falha nativa no processo principal do Chromium na plataforma Linux com os dispositivos GPU AMD Radeon e nVIDIA GeForce quando a aplicação JavaFX está sendo executada.
  • A passagem de um certificado SSL de cliente personalizado para o Chromium não tem quaisquer efeitos, a menos que o certificado esteja registrado no SO.

Melhorias

  • Os arquivos binários do Chromium foram assinados com carimbo de data/hora. Em compilações anteriores, os arquivos binários eram assinados com o certificado TeamDev, que é válido até 25 de abril de 2018. O carimbo de data/hora não foi utilizado durante a assinatura, portanto, a assinatura será inválida a partir do dia seguinte.
  • A correção que resolve a vulnerabilidade CVE-2017-5124 do Chromium (Chromium 62) foi portada para o Chromium 60 utilizado no JxBrowser 6.18.
  • Também melhoramos o desempenho ao encontrar texto com o mesmo request de pesquisa na página Web carregada várias vezes.

Nos envie uma mensagem para customer-care@teamdev.com para fazer o download do JxBrowser 6.18.