Publicado em 20 de julho de 2021

JxBrowser 7.17

Temos o prazer de apresentar o JxBrowser 7.17! Esta versão oferece suporte para os perfis Chromium, API JavaScript Promise, notificações quando o estado da conexão de rede é alterado e muitas outras melhorias e correções.

Chromium 91

O Chromium foi atualizado para a versão 91.0.4472.114.

Esta versão do Chromium inclui várias correções de segurança importantes, portanto, recomendamos que atualize para esta versão.

Algumas funcionalidades do Chromium foram removidas ou alteradas. Consulte o guia de migração para ver qual API do JxBrowser foi removida e que alternativas você pode utilizar.

Perfis

Nesta versão, expandimos a API com uma funcionalidade que permite gerenciar perfis do Chromium. Agora, a arquitetura tem a seguinte estrutura:

Arquitetura do JxBrowser

Cada Engine tem um Profile padrão que pode ser acessado via:

Profile defaultProfile = engine.profiles().defaultProfile();

Os seguintes serviços pertencem agora ao Profile, portanto você pode gerenciar cookies, downloads, permissões, plugins, etc. de forma independente para cada perfil:

  • ZoomLevels
  • Plugins
  • Proxy
  • Network
  • SpellChecker
  • CookieStore
  • HttpCache
  • HttpAuthCache
  • Downloads
  • Permissions

Para criar um novo perfil comum ou anônimo, utilize a seguinte API:

Profiles profiles = engine.profiles();
Profile myProfile = profiles.newProfile("MyProfile");
Profile myIncognitoProfile = profiles.newIncognitoProfile("MyIncognitoProfile");

Cada instância do Browser tem um perfil. Para criar uma instância do Browser para um perfil específico, utilize o seguinte procedimento:

Browser browser = profiles.defaultProfile().newBrowser();
...
Profile myProfile = profiles.newProfile("MyProfile");
Browser browser = myProfile.newBrowser();

Para manter a compatibilidade com versões anteriores, não alteramos a interface Engine. Ela apenas atribui as suas chamadas para o perfil padrão. Por exemplo:

Browser browser = engine.newBrowser();
// é equivalente a
Browser browser = engine.profiles().defaultProfile().newBrowser();

e

CookieStore cookieStore = engine.cookieStore();
// é equivalente a
CookieStore cookieStore = engine.profiles().defaultProfile().cookieStore();

Se você configurar o Engine com o diretório de dados do usuário, então todos os perfis criados serão restaurados após o reinício da aplicação, a menos que você exclua um perfil através de Profiles.delete(Profile).

Note que o perfil padrão não pode ser excluído.

JS Promises

A nossa conversão automática de tipos de JavaScript para tipos Java e vice-versa foi expandida com o suporte de JavaScript Promise. Agora, você pode trabalhar com Promises JavaScript através do novo tipo JsPromise.

JsPromise promise = frame.executeJavaScript(
        "new Promise(function(resolve, reject) {\n"
                + "     setTimeout(function() {\n"
                + "         resolve('Hello Java!');\n"
                + "     }, 2000);"
                + "})");
promise.then(results -> {
    System.out.println(results[0]);
    return promise;
}).then(results -> {
    System.out.println(results[0]);
    return promise;
}).catchError(errors -> {
    System.out.println(errors[0]);
    return promise;
});

Estado da conexão de rede

O Chromium monitora internamente o estado da conexão à Internet. Quando a conexão à Internet é interrompida e depois restabelecida, o Chromium detecta este fato e recarrega programaticamente a página Web atualmente carregada. Nesta versão, expandimos a API com esta funcionalidade. Agora você pode receber notificações quando o estado da conexão de rede for alterado. Por exemplo:

network.on(NetworkChanged.class, e -> {
    // Se o tipo de conexão for TYPE_NONE, não existe conexão.
    if (e.connectionType() == ConnectionType.TYPE_NONE) {
        // A conexão de rede foi interrompida. Estamos offline.
    } else {
        // A conexão de rede foi restaurada.
    }
});

Melhorias

  • O evento NavigationFinished foi expandido com isFragmentNavigation() que indica se a navegação foi realizada para um fragmento dentro do mesmo documento.

Problemas corrigidos

  • A janela nativa do Chromium é separada quando o JavaFX BrowserView é incorporado no TabPane e o Stage é restaurado após minimizar no Linux no modo de renderização acelerada por hardware.
  • Falha do Chromium ao fechar o Browser depois de utilizar o conjunto Desktop Affinity API.
  • O Browser rouba o foco da entrada quando a janela Java é exibida no Linux no modo de renderização acelerada por hardware.
  • Uma tentativa de executar métodos relacionados à interface do usuário no navegador pop-up aberto por Frame.viewSource() causa uma falha nativa no Windows.
  • A falta de dados de queda do D&D dentro de uma página Web apresentada no Swing BrowserView no macOS.
  • Suporte para representações de texto personalizadas na funcionalidade Swing D&D no modo de renderização fora de tela.

Baixe o JxBrowser 7.17

Por favor, compartilhe seu e-mail conosco, e nós lhe enviaremos instruções para download.

Enviando...
Por favor, verifique sua caixa de entrada.

Não foi possível enviar o e-mail. Por favor, use o link direto para baixar o JxBrowser.

Se você é um cliente registrado, não precisa fazer nada para usar esta atualização.

Se você deseja avaliar o produto, precisa de uma licença de avaliação.

Obtenha Teste Gratuito de 30 dias
Go Top