De 7.11 para 7.12

No JxBrowser 7.12, o motor Chromium foi atualizado para a versão 84. Esta versão do Chromium tem várias alterações de ruptura no código fonte que afetam a API pública do JxBrowser. Neste guia de migração, descrevemos qual a API que foi removida na versão 7.12 e quais as alternativas você deveria utilizar.

Rede

Substituição de cabeçalhos de requests HTTP

v7.11

Os callbacks BeforeSendHeadersCallback e BeforeSendProxyHeadersCallback foram removidos no Chromium 84.

network.set(BeforeSendHeadersCallback.class, params -> 
        BeforeSendHeadersCallback.Response.override(modifiedHeaders));
network.set(BeforeSendProxyHeadersCallback.class, params ->
        BeforeSendProxyHeadersCallback.Response.override(modifiedHeaders));
network.set(BeforeSendHeadersCallback::class.java,
    BeforeSendHeadersCallback { params ->
        BeforeSendHeadersCallback.Response.override(modifiedHeaders)
    }
)
network.set(BeforeSendProxyHeadersCallback::class.java,
    BeforeSendProxyHeadersCallback { params ->
        BeforeSendProxyHeadersCallback.Response.override(modifiedHeaders)
    }
)

v7.12

Para substituir os cabeçalhos HTTP antes de serem enviados para um servidor Web, utilize a seguinte API:

network.set(BeforeStartTransactionCallback.class, params -> 
    BeforeStartTransactionCallback.Response.override(modifiedHeaders));
network.set(BeforeStartTransactionCallback::class.java,
    BeforeStartTransactionCallback { params ->
        BeforeStartTransactionCallback.Response.override(modifiedHeaders)
    }
)

Filtragem de recursos

O callback LoadResourceCallback foi removido no Chromium 84.

v7.11

network.set(LoadResourceCallback.class, params -> {
    if (params.resourceType() == ResourceType.IMAGE) {
        return LoadResourceCallback.Response.cancel();
    }
    return LoadResourceCallback.Response.load();
});
network.set(LoadResourceCallback::class.java,
    LoadResourceCallback { params ->
        if (params.resourceType() == ResourceType.IMAGE) {
            LoadResourceCallback.Response.cancel()
        } else {
            LoadResourceCallback.Response.load()
        }
    }
)

v7.12

Use a chamada de retorno BeforeUrlRequestCallback para filtrar recursos como mostrado abaixo:

network.set(BeforeUrlRequestCallback.class, params -> {
    if (params.urlRequest().resourceType() == ResourceType.IMAGE) {
        return BeforeUrlRequestCallback.Response.cancel();
    }
    return BeforeUrlRequestCallback.Response.proceed();
});
network.set(BeforeUrlRequestCallback::class.java,
    BeforeUrlRequestCallback { params ->
        if (params.urlRequest().resourceType() == ResourceType.IMAGE) {
            BeforeUrlRequestCallback.Response.cancel()
        } else {
            BeforeUrlRequestCallback.Response.proceed()
        }
    }
)

Cache

v7.11

O método obsoleto HttpCache.clearDiskCache(Runnable) foi removido:

httpCache.clearDiskCache(() -> {
    // A cache HTTP foi limpa.
});
httpCache.clearDiskCache {
    // A cache HTTP foi limpa.
}

v7.12

Em vez disso, utilize a seguinte API:

CompletableFuture<Void> future = httpCache.clear();
val future: CompletableFuture<Void> = httpCache.clear()

Entrada do usuário

Roda do mouse

v7.11

Os seguintes métodos obsoletos com.teamdev.jxbrowser.ui.event.MouseWheel foram removidos:

  • isHorizontalScroll()
  • scrollbarPixelsPerLine()
  • unitsToScroll()

v7.12

Em vez disso, utilize os métodos deltaX() e deltaY().

DOM

Eventos do teclado

A forma de acessar o código da chave em com.teamdev.jxbrowser.dom.event.KeyEvent foi alterada. Como resultado, o método não utilizado com.teamdev.jxbrowser.dom.event.KeyEvent.keyCode() foi removido.

v7.11

Para acessar o código da chave do KeyEvent do DOM, utilizar a seguinte API:

document.addEventListener(EventType.KEY_PRESS, event -> {
    if (event instanceof KeyEvent) {
        KeyEvent keyEvent = (KeyEvent) event;
        System.out.println("DOM KeyEvent: keyCode=" + keyEvent.keyCode());
    }
}, false);
document.addEventListener(EventType.KEY_PRESS, { event ->
    if (event is KeyEvent) {
        println("DOM KeyEvent: keyCode=${event.keyCode}")
    }
}, false)

Esta abordagem tem várias limitações: não há forma de obter o caractere da tecla pressionada no idioma atualmente selecionado. Só é possível obter o código da chave como um valor de enum predefinido.

v7.12

Nesta versão, melhoramos esta funcionalidade, portanto, agora funciona de forma semelhante a da DOM API:

document.addEventListener(EventType.KEY_PRESS, event -> {
    if (event instanceof KeyEvent) {
        KeyEvent keyEvent = (KeyEvent) event;
        DomKeyCode keyCode = keyEvent.domKeyCode();
        String character = keyEvent.character();
        System.out.println("DOM KeyEvent: keyCode=" + keyCode + ", character=" + character);
    }
}, false);
document.addEventListener(EventType.KEY_PRESS, { event ->
    if (event is KeyEvent) {
        val keyCode = event.keyCode
        val character = event.keyChar
        println("DOM KeyEvent: keyCode=$keyCode, character=$character")
    }
}, false)

Agora você pode obter o código de tecla esperado e uma representação em cadeia do caractere da tecla pressionada no idioma atualmente selecionado.

API Bridge JavaScript-Java

O acesso a métodos estáticos públicos Java a partir do JavaScript é agora proibido.

A ponte JavaScript-Java permite injetar objetos Java no JavaScript e trabalhar com eles através de referências Java. Trabalhar com os métodos estáticos através de uma referência de objeto Java é uma forma não recomendada e propensa a erros.

Carregando URL

v7.11

Os seguintes métodos Navegação obsoletos foram removidos:

  • loadUrlAndWait(String, Timestamp)
  • loadUrlAndWait(LoadUrlParams, Timestamp)

v7.12

Em vez disso, utilize os seguintes métodos:

  • loadUrlAndWait(String url, Duration timeout)
  • loadUrlAndWait(LoadUrlParams params, Duration timeout)

Tempo limite predefinido

v7.11

O campo estático Navigation.DEFAULT_TIMEOUT_IN_SECONDS foi removido.

v7.12

Em vez disso, utilize a seguinte alternativa:

Duration timeout = Navigation.defaultTimeout();
val timeout: Duration = Navigation.defaultTimeout()

API removida

As seguintes classes e métodos foram removidos porque a funcionalidade correspondente no Chromium 84 já não existe e não foram apresentadas alternativas:

  • O método com.teamdev.jxbrowser.navigation.event.FrameLoadFailed.errorDescription() foi removido sem qualquer alternativa.
  • O método com.teamdev.jxbrowser.net.event.RequestCompleted.isStarted() foi removido porque agora o request de URL não pode ser completado se este não tiver sido iniciado. Portanto, não faz sentido usar este método porque ele sempre retorna verdadeiro.
  • O campo estático Timestamp.MILLIS_PER_SECOND foi removido.
Go top