迁移

目录

从旧版本到 8.16.0

在 JxBrowser 8.16.0 中,我们清理了上下文菜单 API,改进了添加密码和信用卡的错误处理, 并升级到 Chromium 144。这些更改需要更新上下文菜单回调、错误处理代码以及对已删除的 网络错误值的处理。

上下文菜单 API 清理 

为了提高 API 一致性,我们将 ContextMenuContentType 移至公共包并重命名了相关方法。

ContextMenuContentType 

ContextMenuContentType 枚举已移至公共包,其值不再具有 CONTEXT_MENU_CONTENT_TYPE_ 前缀。此外,方法 ShowContextMenuCallback.Params.contentType() 已重命名为 contentTypes()

旧版本:

import com.teamdev.jxbrowser.menu.internal.rpc.ContextMenuContentType;

browser.set(ShowContextMenuCallback.class, (params, tell) -> {
    var contentType = params.contentType();
    if (contentType.contains(ContextMenuContentType.CONTEXT_MENU_CONTENT_TYPE_EDITABLE)) {
        // Handle editable content
    }
    tell.close();
});

8.16.0:

import com.teamdev.jxbrowser.menu.ContextMenuContentType;

browser.set(ShowContextMenuCallback.class, (params, tell) -> {
    var contentTypes = params.contentTypes();
    if (contentTypes.contains(ContextMenuContentType.EDITABLE)) {
        // Handle editable content
    }
    tell.close();
});

迁移步骤:

  1. 将导入从 com.teamdev.jxbrowser.menu.internal.rpc 更新为 com.teamdev.jxbrowser.menu
  2. 将方法调用从 contentType() 重命名为 contentTypes()
  3. 从所有枚举值中删除 CONTEXT_MENU_CONTENT_TYPE_ 前缀

使用异常处理错误 

为了提高 API 一致性,用于添加密码、信用卡和用户数据配置文件的方法现在会针对验证错误抛出 异常,而不是返回错误字符串。

PasswordStore.add() 

旧版本:

String result = passwordStore.add(invalidPasswordRecord);
if (!result.isEmpty()) {
    System.err.println("Failed to add password: " + result);
}

8.16.0:

try {
    passwordStore.add(invalidPasswordRecord);
} catch (IllegalArgumentException e) {
    System.err.println("Failed to add password: " + e.getMessage());
}

当密码记录具有无效 URL 或空密码时,该方法现在会抛出 IllegalArgumentException

CreditCards.add() 

旧版本:

String result = creditCards.add(expiredCreditCard);
if (!result.isEmpty()) {
    System.err.println("Failed to add credit card: " + result);
}

8.16.0:

try {
    creditCards.add(expiredCreditCard);
} catch (IllegalArgumentException e) {
    System.err.println("Failed to add credit card: " + e.getMessage());
}

当信用卡已过期时,该方法现在会抛出 IllegalArgumentException

UserDataProfiles.add() 

旧版本:

String result = userDataProfiles.add(invalidUserProfile);
if (!result.isEmpty()) {
    System.err.println("Failed to add profile: " + result);
}

8.16.0:

try {
    userDataProfiles.add(invalidUserProfile);
} catch (IllegalArgumentException e) {
    System.err.println("Failed to add profile: " + e.getMessage());
}

该方法现在会在验证错误时抛出 IllegalArgumentException

枚举技术值清理 

我们从所有枚举中删除了 *_UNRECOGNIZED*_UNSPECIFIED 值。这些是用于内部 使用的技术值,不应在应用程序代码中使用。

对于少数 Chromium 对应项具有未知状态的枚举,我们添加了 UNKNOWN 值:

  • PermissionType.UNKNOWN
  • CreditCardNetwork.UNKNOWN
  • UrlRequestStatus.UNKNOWN
  • NetError.UNKNOWN
  • SuggestionsPopupType.UNKNOWN
  • ColorModel.UNKNOWN
  • DuplexMode.UNKNOWN

如果适用,请将这些值替换为新的 UNKNOWN 值并删除旧用法。

已删除的 NetError 

我们删除了 Chromium 中不再存在的某些 NetError 枚举值。如果您的代码引用了这些值 中的任何一个,您将看到编译错误,指示哪些特定值不再可用:

  • NO_SSL_VERSIONS_ENABLED
  • HTTPS_PROXY_TUNNEL_RESPONSE_REDIRECT
  • SSL_HANDSHAKE_NOT_COMPLETED
  • SSL_BAD_PEER_PUBLIC_KEY
  • SYN_REPLY_NOT_RECEIVED
  • ENCODING_CONVERSION_FAILED
  • UNRECOGNIZED_FTP_DIRECTORY_LISTING_FORMAT