From 512f15649889aafc0a7ea99a9ab90cf52e932509 Mon Sep 17 00:00:00 2001 From: Renato Spencer Date: Sat, 22 Nov 2025 17:51:06 -0300 Subject: [PATCH 1/2] [java] Add JSpecify annotations to ChromiumDriver --- java/src/org/openqa/selenium/chromium/BUILD.bazel | 2 ++ java/src/org/openqa/selenium/chromium/ChromiumDriver.java | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/java/src/org/openqa/selenium/chromium/BUILD.bazel b/java/src/org/openqa/selenium/chromium/BUILD.bazel index 9b14784d4ec23..fa75c1be149e0 100644 --- a/java/src/org/openqa/selenium/chromium/BUILD.bazel +++ b/java/src/org/openqa/selenium/chromium/BUILD.bazel @@ -1,5 +1,6 @@ load("//java:defs.bzl", "java_export") load("//java:version.bzl", "SE_VERSION") +load("//java:defs.bzl", "artifact", "java_export", "java_library") java_export( name = "chromium", @@ -19,5 +20,6 @@ java_export( "//java:auto-service", "//java/src/org/openqa/selenium/json", "//java/src/org/openqa/selenium/remote", + artifact("org.jspecify:jspecify"), ], ) diff --git a/java/src/org/openqa/selenium/chromium/ChromiumDriver.java b/java/src/org/openqa/selenium/chromium/ChromiumDriver.java index 437d7063801d6..b4bb5340d6e53 100644 --- a/java/src/org/openqa/selenium/chromium/ChromiumDriver.java +++ b/java/src/org/openqa/selenium/chromium/ChromiumDriver.java @@ -20,6 +20,9 @@ import static org.openqa.selenium.remote.Browser.CHROME; import static org.openqa.selenium.remote.Browser.EDGE; import static org.openqa.selenium.remote.Browser.OPERA; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + import java.net.URI; import java.net.URISyntaxException; @@ -67,6 +70,7 @@ * A {@link WebDriver} implementation that controls a Chromium browser running on the local machine. * It is used as the base class for Chromium-based browser drivers (Chrome, Edge). */ +@NullMarked public class ChromiumDriver extends RemoteWebDriver implements HasAuthentication, HasBiDi, @@ -90,8 +94,8 @@ public class ChromiumDriver extends RemoteWebDriver private final Optional devTools; private final Optional biDiUri; private final Optional biDi; - protected HasCasting casting; - protected HasCdp cdp; + protected @Nullable HasCasting casting; + protected @Nullable HasCdp cdp; private final Map scriptKeys = new HashMap<>(); protected ChromiumDriver( From 9d5174bb9c5270d1e7701e818d2e4d544024e5c0 Mon Sep 17 00:00:00 2001 From: Renato Spencer Date: Sat, 22 Nov 2025 19:22:24 -0300 Subject: [PATCH 2/2] docs(chromium): add javadoc explaining nullability for casting and cdp fields --- java/src/org/openqa/selenium/chromium/BUILD.bazel | 2 +- java/src/org/openqa/selenium/chromium/ChromiumDriver.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/java/src/org/openqa/selenium/chromium/BUILD.bazel b/java/src/org/openqa/selenium/chromium/BUILD.bazel index fa75c1be149e0..2b05e31f1f84b 100644 --- a/java/src/org/openqa/selenium/chromium/BUILD.bazel +++ b/java/src/org/openqa/selenium/chromium/BUILD.bazel @@ -20,6 +20,6 @@ java_export( "//java:auto-service", "//java/src/org/openqa/selenium/json", "//java/src/org/openqa/selenium/remote", - artifact("org.jspecify:jspecify"), + artifact("org.jspecify:jspecify:1.0.0"), ], ) diff --git a/java/src/org/openqa/selenium/chromium/ChromiumDriver.java b/java/src/org/openqa/selenium/chromium/ChromiumDriver.java index b4bb5340d6e53..f467403ae3c46 100644 --- a/java/src/org/openqa/selenium/chromium/ChromiumDriver.java +++ b/java/src/org/openqa/selenium/chromium/ChromiumDriver.java @@ -94,8 +94,11 @@ public class ChromiumDriver extends RemoteWebDriver private final Optional devTools; private final Optional biDiUri; private final Optional biDi; + /** May be null when the driver does not support casting; initialized during setup if available. */ protected @Nullable HasCasting casting; + /** May be null when CDP is unavailable for the current browser/session. */ protected @Nullable HasCdp cdp; + private final Map scriptKeys = new HashMap<>(); protected ChromiumDriver(