From c27261218a3e4b3909618b5979f9b070d48bc8b6 Mon Sep 17 00:00:00 2001 From: Maciej Kucharczyk Date: Sat, 18 Oct 2025 11:26:50 +0200 Subject: [PATCH] [java] JSpecify annotations for `org.openqa.selenium.federatedcredentialmanagement` --- .../FederatedCredentialManagementAccount.java | 39 ++++++++++--------- .../FederatedCredentialManagementDialog.java | 9 +++-- .../HasFederatedCredentialManagement.java | 5 ++- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/java/src/org/openqa/selenium/federatedcredentialmanagement/FederatedCredentialManagementAccount.java b/java/src/org/openqa/selenium/federatedcredentialmanagement/FederatedCredentialManagementAccount.java index 83ce598e5119e..ff9248a2eb7f5 100644 --- a/java/src/org/openqa/selenium/federatedcredentialmanagement/FederatedCredentialManagementAccount.java +++ b/java/src/org/openqa/selenium/federatedcredentialmanagement/FederatedCredentialManagementAccount.java @@ -18,6 +18,8 @@ package org.openqa.selenium.federatedcredentialmanagement; import java.util.Map; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; /** * Represents an account displayed in a FedCM account list. @@ -27,29 +29,30 @@ * @see * https://w3c-fedid.github.io/FedCM/#webdriver-accountlist */ +@NullMarked public class FederatedCredentialManagementAccount { - private final String accountId; - private final String email; - private final String name; - private final String givenName; - private final String pictureUrl; + private final @Nullable String accountId; + private final @Nullable String email; + private final @Nullable String name; + private final @Nullable String givenName; + private final @Nullable String pictureUrl; /** * The config URL of the identity provider that provided this account. * *

This allows identifying the IDP in multi-IDP cases. */ - private final String idpConfigUrl; + private final @Nullable String idpConfigUrl; /** * The login state for this account. * *

One of LOGIN_STATE_SIGNIN and LOGIN_STATE_SIGNUP. */ - private final String loginState; + private final @Nullable String loginState; - private final String termsOfServiceUrl; - private final String privacyPolicyUrl; + private final @Nullable String termsOfServiceUrl; + private final @Nullable String privacyPolicyUrl; public static final String LOGIN_STATE_SIGNIN = "SignIn"; public static final String LOGIN_STATE_SIGNUP = "SignUp"; @@ -66,39 +69,39 @@ public FederatedCredentialManagementAccount(Map dict) { privacyPolicyUrl = (String) dict.getOrDefault("privacyPolicyUrl", null); } - public String getAccountid() { + public @Nullable String getAccountid() { return accountId; } - public String getEmail() { + public @Nullable String getEmail() { return email; } - public String getName() { + public @Nullable String getName() { return name; } - public String getGivenName() { + public @Nullable String getGivenName() { return givenName; } - public String getPictureUrl() { + public @Nullable String getPictureUrl() { return pictureUrl; } - public String getIdpConfigUrl() { + public @Nullable String getIdpConfigUrl() { return idpConfigUrl; } - public String getLoginState() { + public @Nullable String getLoginState() { return loginState; } - public String getTermsOfServiceUrl() { + public @Nullable String getTermsOfServiceUrl() { return termsOfServiceUrl; } - public String getPrivacyPolicyUrl() { + public @Nullable String getPrivacyPolicyUrl() { return privacyPolicyUrl; } } diff --git a/java/src/org/openqa/selenium/federatedcredentialmanagement/FederatedCredentialManagementDialog.java b/java/src/org/openqa/selenium/federatedcredentialmanagement/FederatedCredentialManagementDialog.java index 45478d1f618f3..3c12d92e0c6c0 100644 --- a/java/src/org/openqa/selenium/federatedcredentialmanagement/FederatedCredentialManagementDialog.java +++ b/java/src/org/openqa/selenium/federatedcredentialmanagement/FederatedCredentialManagementDialog.java @@ -18,12 +18,15 @@ package org.openqa.selenium.federatedcredentialmanagement; import java.util.List; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; /** * Represents an open dialog of the Federated Credential Management API. * * @see https://w3c-fedid.github.io/FedCM/ */ +@NullMarked public interface FederatedCredentialManagementDialog { String DIALOG_TYPE_ACCOUNT_LIST = "AccountChooser"; @@ -44,13 +47,13 @@ public interface FederatedCredentialManagementDialog { * *

One of DIALOG_TYPE_ACCOUNT_LIST and DIALOG_TYPE_AUTO_REAUTH. */ - String getDialogType(); + @Nullable String getDialogType(); /** Returns the title of the dialog. */ - String getTitle(); + @Nullable String getTitle(); /** Returns the subtitle of the dialog or null if none. */ - String getSubtitle(); + @Nullable String getSubtitle(); void clickDialog(); diff --git a/java/src/org/openqa/selenium/federatedcredentialmanagement/HasFederatedCredentialManagement.java b/java/src/org/openqa/selenium/federatedcredentialmanagement/HasFederatedCredentialManagement.java index c7457a8b6a45a..501a52d6e05e7 100644 --- a/java/src/org/openqa/selenium/federatedcredentialmanagement/HasFederatedCredentialManagement.java +++ b/java/src/org/openqa/selenium/federatedcredentialmanagement/HasFederatedCredentialManagement.java @@ -17,10 +17,13 @@ package org.openqa.selenium.federatedcredentialmanagement; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; import org.openqa.selenium.Beta; /** Used by classes to indicate that they can interact with FedCM dialogs. */ @Beta +@NullMarked public interface HasFederatedCredentialManagement { /** * Disables the promise rejection delay. @@ -45,5 +48,5 @@ public interface HasFederatedCredentialManagement { *

Can be used with WebDriverWait like: wait.until(driver -> * ((HasFederatedCredentialManagement) driver). getFederatedCredentialManagementDialog() != null); */ - FederatedCredentialManagementDialog getFederatedCredentialManagementDialog(); + @Nullable FederatedCredentialManagementDialog getFederatedCredentialManagementDialog(); }