迁移
从旧版本到 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();
});
迁移步骤:
- 将导入从
com.teamdev.jxbrowser.menu.internal.rpc更新为com.teamdev.jxbrowser.menu - 将方法调用从
contentType()重命名为contentTypes() - 从所有枚举值中删除
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.UNKNOWNCreditCardNetwork.UNKNOWNUrlRequestStatus.UNKNOWNNetError.UNKNOWNSuggestionsPopupType.UNKNOWNColorModel.UNKNOWNDuplexMode.UNKNOWN
如果适用,请将这些值替换为新的 UNKNOWN 值并删除旧用法。
已删除的 NetError 值
我们删除了 Chromium 中不再存在的某些 NetError 枚举值。如果您的代码引用了这些值
中的任何一个,您将看到编译错误,指示哪些特定值不再可用:
NO_SSL_VERSIONS_ENABLEDHTTPS_PROXY_TUNNEL_RESPONSE_REDIRECTSSL_HANDSHAKE_NOT_COMPLETEDSSL_BAD_PEER_PUBLIC_KEYSYN_REPLY_NOT_RECEIVEDENCODING_CONVERSION_FAILEDUNRECOGNIZED_FTP_DIRECTORY_LISTING_FORMAT