Skip to content

[java] Mark all current BiDi related classes beta#17690

Merged
pujagani merged 5 commits into
SeleniumHQ:trunkfrom
pujagani:mark-bidi-classes-beta
Jun 19, 2026
Merged

[java] Mark all current BiDi related classes beta#17690
pujagani merged 5 commits into
SeleniumHQ:trunkfrom
pujagani:mark-bidi-classes-beta

Conversation

@pujagani

Copy link
Copy Markdown
Contributor

🔗 Related Issues

💥 What does this PR do?

Marks all hand-written Java BiDi classes (org.openqa.selenium.bidi.**) with @beta, signalling that they may change or be removed without a formal deprecation cycle.

🔧 Implementation Notes

Before replacing hand-written BiDi code with generated code marking @beta (from org.openqa.selenium.Beta) to indicate "may be deleted in the next Selenium release without warning", which gives us the flexibility to swap in generated classes in the same packages without going through @deprecated route.

🤖 AI assistance

  • No substantial AI assistance used
  • AI assisted (complete below)
    • Tool(s):
    • What was generated:
    • I reviewed all AI output and can explain the change

💡 Additional Considerations

Should be called out in release notes: existing BiDi Java classes are now @beta and subject to change as generated replacements land.
Follow-up: CDDL-based Java BiDi generator design and implementation PR (consuming bidi-model.json from #17657).

🔄 Types of changes

  • Cleanup (formatting, renaming)

@selenium-ci selenium-ci added C-java Java Bindings B-devtools Includes everything BiDi or Chrome DevTools related labels Jun 19, 2026
@qodo-code-review

Copy link
Copy Markdown
Contributor

PR Summary by Qodo

[java] Mark Java BiDi API surface as @beta
✨ Enhancement 🕐 20-40 Minutes

Grey Divider

Description

• Annotate all handwritten Java BiDi types with @Beta to mark the API as unstable.
• Clarify that these classes may change or be removed without deprecation.
• Prepare for swapping in generated BiDi types in the same packages.
Diagram

graph TD
  U["User code"] --> M(["BiDi modules"]) --> C[["BiDi core"]] --> X["WS/HTTP"] --> B{{"Browser BiDi"}}
  C --> W["WebDriver"]
  C --> T["BiDi types"] --> E[("@Beta")]

  subgraph Legend
    direction LR
    _usr["Caller"] ~~~ _mod(["Module facade"]) ~~~ _core[["Core API"]] ~~~ _ext{{"Remote endpoint"}} ~~~ _ann[("Annotation")]
  end
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Annotate packages via package-info.java
  • ➕ Avoids touching dozens of individual files
  • ➕ Makes it harder to miss new types added later
  • ➖ Depends on @Beta supporting ElementType.PACKAGE and toolchain honoring it
  • ➖ Granularity is coarser if only some types should be stable later
2. Use Javadoc warnings / release notes only
  • ➕ No code churn across many files
  • ➕ No annotation dependency
  • ➖ Weaker signal to IDEs/static analysis and downstream consumers
  • ➖ Easy for users to miss without reading docs

Recommendation: The per-type @Beta annotations in this PR are the most explicit, tool-visible signal and don’t rely on package-level annotation support. If @Beta is confirmed to support PACKAGE, a follow-up could simplify maintenance by switching to package-info.java per subpackage, but the current approach is safe and unambiguous.

Files changed (143) +305 / -0

Enhancement (143) +305 / -0
BiDi.javaMark BiDi core entrypoint as @Beta +2/-0

Mark BiDi core entrypoint as @beta

• Imports 'org.openqa.selenium.Beta' and annotates 'BiDi' to signal an unstable API surface.

java/src/org/openqa/selenium/bidi/BiDi.java

BiDiException.javaMark BiDiException as @Beta +2/-0

Mark BiDiException as @beta

• Adds '@Beta' to indicate this BiDi exception type may change or be removed without deprecation.

java/src/org/openqa/selenium/bidi/BiDiException.java

BiDiProvider.javaMark BiDiProvider augmenter as @Beta +2/-0

Mark BiDiProvider augmenter as @beta

• Annotates the 'AugmenterProvider' implementation with '@Beta' to flag instability of BiDi augmentation.

java/src/org/openqa/selenium/bidi/BiDiProvider.java

BiDiSessionStatus.javaMark BiDiSessionStatus as @Beta +2/-0

Mark BiDiSessionStatus as @beta

• Adds '@Beta' to the session status value object.

java/src/org/openqa/selenium/bidi/BiDiSessionStatus.java

Command.javaMark Command wrapper as @Beta +2/-0

Mark Command wrapper as @beta

• Annotates 'Command' with '@Beta' to reflect the unstable BiDi command API.

java/src/org/openqa/selenium/bidi/Command.java

Connection.javaMark Connection transport wrapper as @Beta +2/-0

Mark Connection transport wrapper as @beta

• Adds '@Beta' to the BiDi connection implementation to indicate API volatility.

java/src/org/openqa/selenium/bidi/Connection.java

ConverterFunctions.javaMark ConverterFunctions utilities as @Beta +2/-0

Mark ConverterFunctions utilities as @beta

• Adds '@Beta' annotation to conversion helpers used by BiDi JSON parsing/serialization.

java/src/org/openqa/selenium/bidi/ConverterFunctions.java

Event.javaMark Event wrapper as @Beta +2/-0

Mark Event wrapper as @beta

• Annotates 'Event' with '@Beta' to indicate event API may change.

java/src/org/openqa/selenium/bidi/Event.java

HasBiDi.javaMark HasBiDi capability interface as @Beta +2/-0

Mark HasBiDi capability interface as @beta

• Adds '@Beta' to the 'HasBiDi' interface to flag its unstable contract.

java/src/org/openqa/selenium/bidi/HasBiDi.java

ClientWindow.javaMark deprecated ClientWindow as @Beta +3/-0

Mark deprecated ClientWindow as @beta

• Adds '@Beta' alongside existing '@Deprecated' to keep expectations clear during transitions.

java/src/org/openqa/selenium/bidi/browser/ClientWindow.java

ClientWindowInfo.javaMark ClientWindowInfo as @Beta +2/-0

Mark ClientWindowInfo as @beta

• Annotates the browser window info type with '@Beta'.

java/src/org/openqa/selenium/bidi/browser/ClientWindowInfo.java

ClientWindowState.javaMark ClientWindowState enum as @Beta +3/-0

Mark ClientWindowState enum as @beta

• Adds '@Beta' to the window state enum.

java/src/org/openqa/selenium/bidi/browser/ClientWindowState.java

DownloadBehavior.javaMark DownloadBehavior as @Beta +2/-0

Mark DownloadBehavior as @beta

• Annotates the download behavior type with '@Beta'.

java/src/org/openqa/selenium/bidi/browser/DownloadBehavior.java

SetDownloadBehaviorParameters.javaMark SetDownloadBehaviorParameters as @Beta +2/-0

Mark SetDownloadBehaviorParameters as @beta

• Adds '@Beta' to the parameters builder for setting download behavior.

java/src/org/openqa/selenium/bidi/browser/SetDownloadBehaviorParameters.java

BoxClipRectangle.javaMark BoxClipRectangle as @Beta +2/-0

Mark BoxClipRectangle as @beta

• Annotates the clip rectangle subtype with '@Beta'.

java/src/org/openqa/selenium/bidi/browsingcontext/BoxClipRectangle.java

BrowsingContext.javaMark BrowsingContext module API as @Beta +2/-0

Mark BrowsingContext module API as @beta

• Adds '@Beta' to the browsing context facade to signal instability of the module API.

java/src/org/openqa/selenium/bidi/browsingcontext/BrowsingContext.java

BrowsingContextInfo.javaMark BrowsingContextInfo as @Beta +2/-0

Mark BrowsingContextInfo as @beta

• Annotates the browsing context info value object with '@Beta'.

java/src/org/openqa/selenium/bidi/browsingcontext/BrowsingContextInfo.java

CaptureScreenshotParameters.javaMark CaptureScreenshotParameters as @Beta +2/-0

Mark CaptureScreenshotParameters as @beta

• Adds '@Beta' to screenshot capture parameter types.

java/src/org/openqa/selenium/bidi/browsingcontext/CaptureScreenshotParameters.java

ClipRectangle.javaMark ClipRectangle base type as @Beta +2/-0

Mark ClipRectangle base type as @beta

• Annotates the base clip rectangle abstraction with '@Beta'.

java/src/org/openqa/selenium/bidi/browsingcontext/ClipRectangle.java

CreateContextParameters.javaMark CreateContextParameters as @Beta +2/-0

Mark CreateContextParameters as @beta

• Adds '@Beta' to the parameters for creating browsing contexts.

java/src/org/openqa/selenium/bidi/browsingcontext/CreateContextParameters.java

DownloadCanceled.javaMark DownloadCanceled event type as @Beta +2/-0

Mark DownloadCanceled event type as @beta

• Annotates the download-canceled event payload type with '@Beta'.

java/src/org/openqa/selenium/bidi/browsingcontext/DownloadCanceled.java

DownloadCompleted.javaMark DownloadCompleted event type as @Beta +2/-0

Mark DownloadCompleted event type as @beta

• Adds '@Beta' to the download-completed event payload type.

java/src/org/openqa/selenium/bidi/browsingcontext/DownloadCompleted.java

DownloadEnded.javaMark DownloadEnded as @Beta +2/-0

Mark DownloadEnded as @beta

• Annotates the download-ended wrapper type with '@Beta'.

java/src/org/openqa/selenium/bidi/browsingcontext/DownloadEnded.java

DownloadInfo.javaMark DownloadInfo as @Beta +2/-0

Mark DownloadInfo as @beta

• Adds '@Beta' to download info/navigation payload type.

java/src/org/openqa/selenium/bidi/browsingcontext/DownloadInfo.java

ElementClipRectangle.javaMark ElementClipRectangle as @Beta +2/-0

Mark ElementClipRectangle as @beta

• Annotates the element clip rectangle subtype with '@Beta'.

java/src/org/openqa/selenium/bidi/browsingcontext/ElementClipRectangle.java

HistoryUpdated.javaMark HistoryUpdated event type as @Beta +2/-0

Mark HistoryUpdated event type as @beta

• Adds '@Beta' to the history-updated event payload type.

java/src/org/openqa/selenium/bidi/browsingcontext/HistoryUpdated.java

ImageFormat.javaMark ImageFormat as @Beta +2/-0

Mark ImageFormat as @beta

• Annotates screenshot image format type with '@Beta'.

java/src/org/openqa/selenium/bidi/browsingcontext/ImageFormat.java

LocateNodeParameters.javaMark LocateNodeParameters as @Beta +2/-0

Mark LocateNodeParameters as @beta

• Adds '@Beta' to locate-node parameter builder type.

java/src/org/openqa/selenium/bidi/browsingcontext/LocateNodeParameters.java

Locator.javaMark Locator as @Beta +2/-0

Mark Locator as @beta

• Annotates the locator builder used by BiDi browsing context commands with '@Beta'.

java/src/org/openqa/selenium/bidi/browsingcontext/Locator.java

NavigationInfo.javaMark NavigationInfo as @Beta +2/-0

Mark NavigationInfo as @beta

• Adds '@Beta' to navigation info payload type.

java/src/org/openqa/selenium/bidi/browsingcontext/NavigationInfo.java

NavigationResult.javaMark NavigationResult as @Beta +2/-0

Mark NavigationResult as @beta

• Annotates the navigation result wrapper type with '@Beta'.

java/src/org/openqa/selenium/bidi/browsingcontext/NavigationResult.java

ReadinessState.javaMark ReadinessState enum as @Beta +3/-0

Mark ReadinessState enum as @beta

• Adds '@Beta' to the readiness state enum.

java/src/org/openqa/selenium/bidi/browsingcontext/ReadinessState.java

UserPromptClosed.javaMark UserPromptClosed event type as @Beta +2/-0

Mark UserPromptClosed event type as @beta

• Annotates the user prompt closed event payload type with '@Beta'.

java/src/org/openqa/selenium/bidi/browsingcontext/UserPromptClosed.java

UserPromptOpened.javaMark UserPromptOpened event type as @Beta +2/-0

Mark UserPromptOpened event type as @beta

• Adds '@Beta' to the user prompt opened event payload type.

java/src/org/openqa/selenium/bidi/browsingcontext/UserPromptOpened.java

UserPromptType.javaMark UserPromptType enum as @Beta +2/-0

Mark UserPromptType enum as @beta

• Annotates the user prompt type enum with '@Beta'.

java/src/org/openqa/selenium/bidi/browsingcontext/UserPromptType.java

AbstractOverrideParameters.javaMark AbstractOverrideParameters as @Beta +2/-0

Mark AbstractOverrideParameters as @beta

• Adds '@Beta' to the base parameter type for emulation overrides.

java/src/org/openqa/selenium/bidi/emulation/AbstractOverrideParameters.java

Emulation.javaMark Emulation module API as @Beta +2/-0

Mark Emulation module API as @beta

• Annotates the 'Emulation' facade with '@Beta' to indicate unstable module API.

java/src/org/openqa/selenium/bidi/emulation/Emulation.java

GeolocationCoordinates.javaMark GeolocationCoordinates as @Beta +2/-0

Mark GeolocationCoordinates as @beta

• Adds '@Beta' to the geolocation coordinates type.

java/src/org/openqa/selenium/bidi/emulation/GeolocationCoordinates.java

GeolocationPositionError.javaMark GeolocationPositionError as @Beta +2/-0

Mark GeolocationPositionError as @beta

• Annotates the position error type with '@Beta'.

java/src/org/openqa/selenium/bidi/emulation/GeolocationPositionError.java

OverrideParameters.javaMark OverrideParameters interface as @Beta +2/-0

Mark OverrideParameters interface as @beta

• Adds '@Beta' to the emulation override parameters interface.

java/src/org/openqa/selenium/bidi/emulation/OverrideParameters.java

ScreenArea.javaMark ScreenArea as @Beta +2/-0

Mark ScreenArea as @beta

• Annotates the screen area value type with '@Beta'.

java/src/org/openqa/selenium/bidi/emulation/ScreenArea.java

ScreenOrientation.javaMark ScreenOrientation as @Beta +2/-0

Mark ScreenOrientation as @beta

• Adds '@Beta' to the screen orientation value type.

java/src/org/openqa/selenium/bidi/emulation/ScreenOrientation.java

ScreenOrientationNatural.javaMark ScreenOrientationNatural enum as @Beta +3/-0

Mark ScreenOrientationNatural enum as @beta

• Annotates the natural orientation enum with '@Beta'.

java/src/org/openqa/selenium/bidi/emulation/ScreenOrientationNatural.java

ScreenOrientationType.javaMark ScreenOrientationType enum as @Beta +3/-0

Mark ScreenOrientationType enum as @beta

• Adds '@Beta' to the screen orientation type enum.

java/src/org/openqa/selenium/bidi/emulation/ScreenOrientationType.java

SetGeolocationOverrideParameters.javaMark SetGeolocationOverrideParameters as @Beta +2/-0

Mark SetGeolocationOverrideParameters as @beta

• Annotates geolocation override parameter builder with '@Beta'.

java/src/org/openqa/selenium/bidi/emulation/SetGeolocationOverrideParameters.java

SetNetworkConditionsParameters.javaMark SetNetworkConditionsParameters as @Beta +2/-0

Mark SetNetworkConditionsParameters as @beta

• Adds '@Beta' to the network conditions override parameter builder.

java/src/org/openqa/selenium/bidi/emulation/SetNetworkConditionsParameters.java

SetScreenOrientationOverrideParameters.javaMark SetScreenOrientationOverrideParameters as @Beta +2/-0

Mark SetScreenOrientationOverrideParameters as @beta

• Annotates screen orientation override parameter builder with '@Beta'.

java/src/org/openqa/selenium/bidi/emulation/SetScreenOrientationOverrideParameters.java

SetScreenSettingsOverrideParameters.javaMark SetScreenSettingsOverrideParameters as @Beta +2/-0

Mark SetScreenSettingsOverrideParameters as @beta

• Adds '@Beta' to screen settings override parameter builder.

java/src/org/openqa/selenium/bidi/emulation/SetScreenSettingsOverrideParameters.java

SetScriptingEnabledParameters.javaMark SetScriptingEnabledParameters as @Beta +2/-0

Mark SetScriptingEnabledParameters as @beta

• Annotates scripting enabled override parameter builder with '@Beta'.

java/src/org/openqa/selenium/bidi/emulation/SetScriptingEnabledParameters.java

SetTimezoneOverrideParameters.javaMark SetTimezoneOverrideParameters as @Beta +2/-0

Mark SetTimezoneOverrideParameters as @beta

• Adds '@Beta' to timezone override parameter builder.

java/src/org/openqa/selenium/bidi/emulation/SetTimezoneOverrideParameters.java

SetUserAgentOverrideParameters.javaMark SetUserAgentOverrideParameters as @Beta +2/-0

Mark SetUserAgentOverrideParameters as @beta

• Annotates user agent override parameter builder with '@Beta'.

java/src/org/openqa/selenium/bidi/emulation/SetUserAgentOverrideParameters.java

BaseLogEntry.javaMark BaseLogEntry as @Beta +2/-0

Mark BaseLogEntry as @beta

• Adds '@Beta' to the base log entry type for BiDi logging events.

java/src/org/openqa/selenium/bidi/log/BaseLogEntry.java

ConsoleLogEntry.javaMark ConsoleLogEntry as @Beta +2/-0

Mark ConsoleLogEntry as @beta

• Annotates console log entry type with '@Beta'.

java/src/org/openqa/selenium/bidi/log/ConsoleLogEntry.java

FilterBy.javaMark FilterBy as @Beta +2/-0

Mark FilterBy as @beta

• Adds '@Beta' to the log filtering builder type.

java/src/org/openqa/selenium/bidi/log/FilterBy.java

GenericLogEntry.javaMark GenericLogEntry as @Beta +2/-0

Mark GenericLogEntry as @beta

• Annotates generic log entry type with '@Beta'.

java/src/org/openqa/selenium/bidi/log/GenericLogEntry.java

JavascriptLogEntry.javaMark JavascriptLogEntry as @Beta +2/-0

Mark JavascriptLogEntry as @beta

• Adds '@Beta' to JavaScript log entry type.

java/src/org/openqa/selenium/bidi/log/JavascriptLogEntry.java

Log.javaMark Log event factory as @Beta +2/-0

Mark Log event factory as @beta

• Annotates the 'Log' helper/factory type with '@Beta'.

java/src/org/openqa/selenium/bidi/log/Log.java

LogEntry.javaMark LogEntry wrapper as @Beta +2/-0

Mark LogEntry wrapper as @beta

• Adds '@Beta' to the log entry wrapper type.

java/src/org/openqa/selenium/bidi/log/LogEntry.java

LogLevel.javaMark LogLevel enum as @Beta +3/-0

Mark LogLevel enum as @beta

• Annotates the log level enum with '@Beta'.

java/src/org/openqa/selenium/bidi/log/LogLevel.java

StackFrame.javaMark log StackFrame as @Beta +2/-0

Mark log StackFrame as @beta

• Adds '@Beta' to the log stack frame value type.

java/src/org/openqa/selenium/bidi/log/StackFrame.java

StackTrace.javaMark log StackTrace as @Beta +2/-0

Mark log StackTrace as @beta

• Annotates the log stack trace value type with '@Beta'.

java/src/org/openqa/selenium/bidi/log/StackTrace.java

Browser.javaMark Browser module facade as @Beta +2/-0

Mark Browser module facade as @beta

• Adds '@Beta' to the Browser BiDi module facade class.

java/src/org/openqa/selenium/bidi/module/Browser.java

BrowsingContextInspector.javaMark BrowsingContextInspector as @Beta +2/-0

Mark BrowsingContextInspector as @beta

• Annotates the browsing context inspector helper with '@Beta'.

java/src/org/openqa/selenium/bidi/module/BrowsingContextInspector.java

Input.javaMark Input module facade as @Beta +2/-0

Mark Input module facade as @beta

• Adds '@Beta' to the Input BiDi module facade class.

java/src/org/openqa/selenium/bidi/module/Input.java

LogInspector.javaMark LogInspector as @Beta +2/-0

Mark LogInspector as @beta

• Annotates the log inspector utility with '@Beta'.

java/src/org/openqa/selenium/bidi/module/LogInspector.java

Network.javaMark Network module facade as @Beta +2/-0

Mark Network module facade as @beta

• Adds '@Beta' to the Network BiDi module facade class.

java/src/org/openqa/selenium/bidi/module/Network.java

Permission.javaMark Permission module facade as @Beta +2/-0

Mark Permission module facade as @beta

• Annotates the Permission BiDi module facade with '@Beta'.

java/src/org/openqa/selenium/bidi/module/Permission.java

Script.javaMark Script module facade as @Beta +2/-0

Mark Script module facade as @beta

• Adds '@Beta' to the Script BiDi module facade class.

java/src/org/openqa/selenium/bidi/module/Script.java

SpeculationInspector.javaMark SpeculationInspector as @Beta +2/-0

Mark SpeculationInspector as @beta

• Annotates speculation inspector helper with '@Beta'.

java/src/org/openqa/selenium/bidi/module/SpeculationInspector.java

Storage.javaMark Storage module facade as @Beta +2/-0

Mark Storage module facade as @beta

• Adds '@Beta' to the Storage BiDi module facade class.

java/src/org/openqa/selenium/bidi/module/Storage.java

AddInterceptParameters.javaMark AddInterceptParameters as @Beta +2/-0

Mark AddInterceptParameters as @beta

• Annotates network intercept parameters builder with '@Beta'.

java/src/org/openqa/selenium/bidi/network/AddInterceptParameters.java

AuthChallenge.javaMark AuthChallenge as @Beta +2/-0

Mark AuthChallenge as @beta

• Adds '@Beta' to the authentication challenge value type.

java/src/org/openqa/selenium/bidi/network/AuthChallenge.java

BaseParameters.javaMark BaseParameters as @Beta +2/-0

Mark BaseParameters as @beta

• Annotates the base network event parameters type with '@Beta'.

java/src/org/openqa/selenium/bidi/network/BaseParameters.java

BeforeRequestSent.javaMark BeforeRequestSent as @Beta +2/-0

Mark BeforeRequestSent as @beta

• Adds '@Beta' to the before-request-sent event payload type.

java/src/org/openqa/selenium/bidi/network/BeforeRequestSent.java

BytesValue.javaMark BytesValue as @Beta +2/-0

Mark BytesValue as @beta

• Annotates the bytes value type with '@Beta'.

java/src/org/openqa/selenium/bidi/network/BytesValue.java

CacheBehavior.javaMark CacheBehavior enum as @Beta +3/-0

Mark CacheBehavior enum as @beta

• Adds '@Beta' to the cache behavior enum.

java/src/org/openqa/selenium/bidi/network/CacheBehavior.java

ContinueRequestParameters.javaMark ContinueRequestParameters as @Beta +2/-0

Mark ContinueRequestParameters as @beta

• Annotates continue-request parameters builder with '@Beta'.

java/src/org/openqa/selenium/bidi/network/ContinueRequestParameters.java

ContinueResponseParameters.javaMark ContinueResponseParameters as @Beta +2/-0

Mark ContinueResponseParameters as @beta

• Adds '@Beta' to continue-response parameters builder.

java/src/org/openqa/selenium/bidi/network/ContinueResponseParameters.java

Cookie.javaMark Cookie as @Beta +2/-0

Mark Cookie as @beta

• Annotates the network cookie value type with '@Beta'.

java/src/org/openqa/selenium/bidi/network/Cookie.java

FetchError.javaMark FetchError as @Beta +2/-0

Mark FetchError as @beta

• Adds '@Beta' to fetch error event payload type.

java/src/org/openqa/selenium/bidi/network/FetchError.java

FetchTimingInfo.javaMark FetchTimingInfo as @Beta +2/-0

Mark FetchTimingInfo as @beta

• Annotates fetch timing info value type with '@Beta'.

java/src/org/openqa/selenium/bidi/network/FetchTimingInfo.java

Header.javaMark Header as @Beta +2/-0

Mark Header as @beta

• Adds '@Beta' to the network header value type.

java/src/org/openqa/selenium/bidi/network/Header.java

Initiator.javaMark Initiator as @Beta +2/-0

Mark Initiator as @beta

• Annotates request initiator type with '@Beta'.

java/src/org/openqa/selenium/bidi/network/Initiator.java

InterceptPhase.javaMark InterceptPhase enum as @Beta +3/-0

Mark InterceptPhase enum as @beta

• Adds '@Beta' to the network intercept phase enum.

java/src/org/openqa/selenium/bidi/network/InterceptPhase.java

ProvideResponseParameters.javaMark ProvideResponseParameters as @Beta +2/-0

Mark ProvideResponseParameters as @beta

• Annotates provide-response parameters builder with '@Beta'.

java/src/org/openqa/selenium/bidi/network/ProvideResponseParameters.java

RequestData.javaMark RequestData as @Beta +2/-0

Mark RequestData as @beta

• Adds '@Beta' to request data value type.

java/src/org/openqa/selenium/bidi/network/RequestData.java

ResponseData.javaMark ResponseData as @Beta +2/-0

Mark ResponseData as @beta

• Annotates response data value type with '@Beta'.

java/src/org/openqa/selenium/bidi/network/ResponseData.java

ResponseDetails.javaMark ResponseDetails as @Beta +2/-0

Mark ResponseDetails as @beta

• Adds '@Beta' to response details event payload type.

java/src/org/openqa/selenium/bidi/network/ResponseDetails.java

SetCookieHeader.javaMark SetCookieHeader as @Beta +2/-0

Mark SetCookieHeader as @beta

• Annotates the set-cookie header helper type with '@Beta'.

java/src/org/openqa/selenium/bidi/network/SetCookieHeader.java

UrlPattern.javaMark UrlPattern as @Beta +2/-0

Mark UrlPattern as @beta

• Adds '@Beta' to the URL pattern builder used for network filtering.

java/src/org/openqa/selenium/bidi/network/UrlPattern.java

PermissionState.javaMark PermissionState enum as @Beta +3/-0

Mark PermissionState enum as @beta

• Annotates the permissions state enum with '@Beta'.

java/src/org/openqa/selenium/bidi/permissions/PermissionState.java

ArrayLocalValue.javaMark ArrayLocalValue as @Beta +2/-0

Mark ArrayLocalValue as @beta

• Adds '@Beta' to the local array value model type.

java/src/org/openqa/selenium/bidi/script/ArrayLocalValue.java

CallFunctionParameters.javaMark CallFunctionParameters as @Beta +2/-0

Mark CallFunctionParameters as @beta

• Annotates call-function parameters builder with '@Beta'.

java/src/org/openqa/selenium/bidi/script/CallFunctionParameters.java

ChannelValue.javaMark ChannelValue as @Beta +2/-0

Mark ChannelValue as @beta

• Adds '@Beta' to the channel value model type.

java/src/org/openqa/selenium/bidi/script/ChannelValue.java

ContextTarget.javaMark ContextTarget as @Beta +3/-0

Mark ContextTarget as @beta

• Annotates context target model type with '@Beta'.

java/src/org/openqa/selenium/bidi/script/ContextTarget.java

DateLocalValue.javaMark DateLocalValue as @Beta +2/-0

Mark DateLocalValue as @beta

• Adds '@Beta' to the local date value model type.

java/src/org/openqa/selenium/bidi/script/DateLocalValue.java

EvaluateParameters.javaMark EvaluateParameters as @Beta +2/-0

Mark EvaluateParameters as @beta

• Annotates evaluate parameters builder with '@Beta'.

java/src/org/openqa/selenium/bidi/script/EvaluateParameters.java

EvaluateResult.javaMark EvaluateResult as @Beta +3/-0

Mark EvaluateResult as @beta

• Adds '@Beta' to the evaluate result interface.

java/src/org/openqa/selenium/bidi/script/EvaluateResult.java

EvaluateResultExceptionValue.javaMark EvaluateResultExceptionValue as @Beta +3/-0

Mark EvaluateResultExceptionValue as @beta

• Annotates exception result model type with '@Beta'.

java/src/org/openqa/selenium/bidi/script/EvaluateResultExceptionValue.java

EvaluateResultSuccess.javaMark EvaluateResultSuccess as @Beta +3/-0

Mark EvaluateResultSuccess as @beta

• Adds '@Beta' to the success result model type.

java/src/org/openqa/selenium/bidi/script/EvaluateResultSuccess.java

ExceptionDetails.javaMark ExceptionDetails as @Beta +2/-0

Mark ExceptionDetails as @beta

• Annotates exception details model type with '@Beta'.

java/src/org/openqa/selenium/bidi/script/ExceptionDetails.java

LocalValue.javaMark LocalValue hierarchy as @Beta +2/-0

Mark LocalValue hierarchy as @beta

• Adds '@Beta' to the base local value abstraction used across script types.

java/src/org/openqa/selenium/bidi/script/LocalValue.java

MapLocalValue.javaMark MapLocalValue as @Beta +2/-0

Mark MapLocalValue as @beta

• Annotates local map value model type with '@Beta'.

java/src/org/openqa/selenium/bidi/script/MapLocalValue.java

Message.javaMark Message as @Beta +2/-0

Mark Message as @beta

• Adds '@Beta' to the channel message model type.

java/src/org/openqa/selenium/bidi/script/Message.java

NodeProperties.javaMark NodeProperties as @Beta +2/-0

Mark NodeProperties as @beta

• Annotates node properties model type with '@Beta'.

java/src/org/openqa/selenium/bidi/script/NodeProperties.java

ObjectLocalValue.javaMark ObjectLocalValue as @Beta +2/-0

Mark ObjectLocalValue as @beta

• Adds '@Beta' to the local object value model type.

java/src/org/openqa/selenium/bidi/script/ObjectLocalValue.java

PrimitiveProtocolValue.javaMark PrimitiveProtocolValue as @Beta +2/-0

Mark PrimitiveProtocolValue as @beta

• Annotates primitive protocol value model type with '@Beta'.

java/src/org/openqa/selenium/bidi/script/PrimitiveProtocolValue.java

PrimitiveType.javaMark PrimitiveType enum as @Beta +3/-0

Mark PrimitiveType enum as @beta

• Adds '@Beta' to the primitive type enum.

java/src/org/openqa/selenium/bidi/script/PrimitiveType.java

RealmInfo.javaMark RealmInfo as @Beta +2/-0

Mark RealmInfo as @beta

• Annotates realm info model type with '@Beta'.

java/src/org/openqa/selenium/bidi/script/RealmInfo.java

RealmTarget.javaMark RealmTarget as @Beta +3/-0

Mark RealmTarget as @beta

• Adds '@Beta' to realm target model type.

java/src/org/openqa/selenium/bidi/script/RealmTarget.java

RealmType.javaMark RealmType enum as @Beta +3/-0

Mark RealmType enum as @beta

• Annotates realm type enum with '@Beta'.

java/src/org/openqa/selenium/bidi/script/RealmType.java

RegExpValue.javaMark RegExpValue as @Beta +2/-0

Mark RegExpValue as @beta

• Adds '@Beta' to the RegExp value model type.

java/src/org/openqa/selenium/bidi/script/RegExpValue.java

RemoteReference.javaMark RemoteReference as @Beta +2/-0

Mark RemoteReference as @beta

• Annotates remote reference model type with '@Beta'.

java/src/org/openqa/selenium/bidi/script/RemoteReference.java

RemoteValue.javaMark RemoteValue as @Beta +2/-0

Mark RemoteValue as @beta

• Adds '@Beta' to remote value model type used in script results.

java/src/org/openqa/selenium/bidi/script/RemoteValue.java

ResultOwnership.javaMark ResultOwnership enum as @Beta +3/-0

Mark ResultOwnership enum as @beta

• Annotates result ownership enum with '@Beta'.

java/src/org/openqa/selenium/bidi/script/ResultOwnership.java

SerializationOptions.javaMark SerializationOptions as @Beta +2/-0

Mark SerializationOptions as @beta

• Adds '@Beta' to serialization options type.

java/src/org/openqa/selenium/bidi/script/SerializationOptions.java

SetLocalValue.javaMark SetLocalValue as @Beta +2/-0

Mark SetLocalValue as @beta

• Annotates local set value model type with '@Beta'.

java/src/org/openqa/selenium/bidi/script/SetLocalValue.java

Source.javaMark Source as @Beta +2/-0

Mark Source as @beta

• Adds '@Beta' to the script source model type.

java/src/org/openqa/selenium/bidi/script/Source.java

StackFrame.javaMark script StackFrame as @Beta +2/-0

Mark script StackFrame as @beta

• Annotates the script stack frame model type with '@Beta'.

java/src/org/openqa/selenium/bidi/script/StackFrame.java

StackTrace.javaMark script StackTrace as @Beta +2/-0

Mark script StackTrace as @beta

• Adds '@Beta' to the script stack trace model type.

java/src/org/openqa/selenium/bidi/script/StackTrace.java

Target.javaMark Target base type as @Beta +2/-0

Mark Target base type as @beta

• Annotates the base target abstraction with '@Beta'.

java/src/org/openqa/selenium/bidi/script/Target.java

WindowProxyProperties.javaMark WindowProxyProperties as @Beta +2/-0

Mark WindowProxyProperties as @beta

• Adds '@Beta' to window proxy properties model type.

java/src/org/openqa/selenium/bidi/script/WindowProxyProperties.java

WindowRealmInfo.javaMark WindowRealmInfo as @Beta +2/-0

Mark WindowRealmInfo as @beta

• Annotates window realm info model type with '@Beta'.

java/src/org/openqa/selenium/bidi/script/WindowRealmInfo.java

PrefetchStatusUpdatedParameters.javaMark PrefetchStatusUpdatedParameters as @Beta +2/-0

Mark PrefetchStatusUpdatedParameters as @beta

• Adds '@Beta' to speculation prefetch status update event payload type.

java/src/org/openqa/selenium/bidi/speculation/PrefetchStatusUpdatedParameters.java

PreloadingStatus.javaMark PreloadingStatus enum as @Beta +3/-0

Mark PreloadingStatus enum as @beta

• Annotates preloading status enum with '@Beta'.

java/src/org/openqa/selenium/bidi/speculation/PreloadingStatus.java

Speculation.javaMark Speculation event factory as @Beta +2/-0

Mark Speculation event factory as @beta

• Adds '@Beta' to the speculation event helper/factory type.

java/src/org/openqa/selenium/bidi/speculation/Speculation.java

BrowsingContextPartitionDescriptor.javaMark BrowsingContextPartitionDescriptor as @Beta +2/-0

Mark BrowsingContextPartitionDescriptor as @beta

• Annotates the storage partition descriptor subtype with '@Beta'.

java/src/org/openqa/selenium/bidi/storage/BrowsingContextPartitionDescriptor.java

CookieFilter.javaMark CookieFilter as @Beta +2/-0

Mark CookieFilter as @beta

• Adds '@Beta' to the cookie filter builder type.

java/src/org/openqa/selenium/bidi/storage/CookieFilter.java

DeleteCookiesParameters.javaMark DeleteCookiesParameters as @Beta +2/-0

Mark DeleteCookiesParameters as @beta

• Annotates delete-cookies parameters type with '@Beta'.

java/src/org/openqa/selenium/bidi/storage/DeleteCookiesParameters.java

GetCookiesParameters.javaMark GetCookiesParameters as @Beta +2/-0

Mark GetCookiesParameters as @beta

• Adds '@Beta' to get-cookies parameters type.

java/src/org/openqa/selenium/bidi/storage/GetCookiesParameters.java

GetCookiesResult.javaMark GetCookiesResult as @Beta +2/-0

Mark GetCookiesResult as @beta

• Annotates get-cookies result wrapper type with '@Beta'.

java/src/org/openqa/selenium/bidi/storage/GetCookiesResult.java

PartialCookie.javaMark PartialCookie as @Beta +2/-0

Mark PartialCookie as @beta

• Adds '@Beta' to the partial cookie builder/value type.

java/src/org/openqa/selenium/bidi/storage/PartialCookie.java

PartitionDescriptor.javaMark PartitionDescriptor base type as @Beta +2/-0

Mark PartitionDescriptor base type as @beta

• Annotates the storage partition descriptor base type with '@Beta'.

java/src/org/openqa/selenium/bidi/storage/PartitionDescriptor.java

PartitionKey.javaMark PartitionKey as @Beta +2/-0

Mark PartitionKey as @beta

• Adds '@Beta' to the storage partition key value type.

java/src/org/openqa/selenium/bidi/storage/PartitionKey.java

SetCookieParameters.javaMark SetCookieParameters as @Beta +2/-0

Mark SetCookieParameters as @beta

• Annotates set-cookie parameters type with '@Beta'.

<a href='https://github.com/SeleniumHQ/selenium/pull/17690/files#diff-355563d742d6...

@qodo-code-review

qodo-code-review Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (2) 📎 Requirement gaps (0) 📜 Skill insights (0)

Context used
✅ Compliance rules (platform): 18 rules

Grey Divider


Action required

1. ClientWindow deprecated without forRemoval 📘 Rule violation ✧ Quality
Description
ClientWindow is annotated with @Deprecated but does not specify forRemoval = true, which
violates the deprecation annotation standard required by the checklist. This can lead to
inconsistent deprecation signaling and tooling behavior across the codebase.
Code

java/src/org/openqa/selenium/bidi/browser/ClientWindow.java[R25-26]

@Deprecated
+@Beta
Evidence
PR Compliance ID 330196 requires every @Deprecated usage to explicitly set forRemoval = true. In
ClientWindow, the class is annotated with @Deprecated without specifying forRemoval, as shown
in the cited lines.

Rule 330196: Use @Deprecated(forRemoval = true) for all deprecated elements
java/src/org/openqa/selenium/bidi/browser/ClientWindow.java[22-27]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`java/src/org/openqa/selenium/bidi/browser/ClientWindow.java` uses `@Deprecated` without `forRemoval = true`, which violates the project compliance requirement for Java deprecations.

## Issue Context
This PR touches `ClientWindow` (adds `@Beta`), so the existing `@Deprecated` annotation should be brought into compliance.

## Fix Focus Areas
- java/src/org/openqa/selenium/bidi/browser/ClientWindow.java[25-26]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. BiDi APIs missing Javadoc 📘 Rule violation ✧ Quality
Description
Several public BiDi types modified in this PR (now annotated with @Beta) do not have a Javadoc
block immediately preceding their declarations. This violates the requirement that all public API
types (and their public members) be documented with Javadoc.
Code

java/src/org/openqa/selenium/bidi/BiDi.java[R31-36]

+import org.openqa.selenium.Beta;
import org.openqa.selenium.WebDriverException;
import org.openqa.selenium.internal.Require;

+@Beta
public class BiDi implements Closeable {
Evidence
PR Compliance ID 330200 requires a Javadoc block immediately preceding each public API type
declaration. In the cited files, @Beta is directly followed by a public type declaration without
any /** ... */ Javadoc block above it.

Rule 330200: Require Javadoc for all public API types and methods
java/src/org/openqa/selenium/bidi/BiDi.java[31-36]
java/src/org/openqa/selenium/bidi/HasBiDi.java[20-25]
java/src/org/openqa/selenium/bidi/script/EvaluateResult.java[20-24]
java/src/org/openqa/selenium/bidi/webextension/ExtensionData.java[20-25]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Public API types modified in this PR (e.g., now marked `@Beta`) are missing required Javadoc immediately above their type declarations.

## Issue Context
PR Compliance requires Javadoc for all public API types and methods. The cited files show public type declarations (`public class` / `public interface`) without a preceding `/** ... */` Javadoc block.

## Fix Focus Areas
- java/src/org/openqa/selenium/bidi/BiDi.java[31-36]
- java/src/org/openqa/selenium/bidi/HasBiDi.java[20-25]
- java/src/org/openqa/selenium/bidi/script/EvaluateResult.java[20-24]
- java/src/org/openqa/selenium/bidi/webextension/ExtensionData.java[20-25]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Import order not formatted ✓ Resolved 🐞 Bug ⚙ Maintainability
Description
Some changed BiDi classes place import org.openqa.selenium.Beta; before java.* imports (e.g.,
HasBiDi), which is inconsistent with the repository’s google-java-format output. The CI “Format”
job runs ./go format (google-java-format) and fails if it produces diffs, so this will block CI
until imports are reformatted.
Code

java/src/org/openqa/selenium/bidi/HasBiDi.java[R20-21]

+import org.openqa.selenium.Beta;
import java.util.Optional;
Evidence
HasBiDi and ClientWindowInfo show org.openqa.selenium.Beta imported before java.*, while
other formatted files in the repo use java.* before org.*. CI runs google-java-format via `./go
format` and fails if formatting changes are produced, making this a deterministic CI failure until
reformatted.

java/src/org/openqa/selenium/bidi/HasBiDi.java[18-24]
java/src/org/openqa/selenium/bidi/browser/ClientWindowInfo.java[18-24]
java/src/org/openqa/selenium/chromium/HasCdp.java[20-25]
scripts/format.sh[89-95]
.github/workflows/ci-lint.yml[47-62]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Some modified Java files have import blocks that are not in the canonical order produced by the repo’s formatter (google-java-format). This causes CI’s format check to modify files and then fail the job because the working tree is dirty.

## Issue Context
CI runs `./go format`, which applies google-java-format to all `java/**.java` files, and then fails if `git diff` is non-empty.

## Fix
Run `./go format` and commit the resulting changes, or manually reorder imports to match google-java-format output (then re-run `./go format` to confirm no changes).

## Fix Focus Areas
- java/src/org/openqa/selenium/bidi/HasBiDi.java[18-23]
- java/src/org/openqa/selenium/bidi/browser/ClientWindowInfo.java[18-23]
- java/src/org/openqa/selenium/bidi/browser/SetDownloadBehaviorParameters.java[18-27]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

Comment thread java/src/org/openqa/selenium/bidi/BiDi.java
Comment thread java/src/org/openqa/selenium/bidi/HasBiDi.java Outdated
@diemol

diemol commented Jun 19, 2026

Copy link
Copy Markdown
Member

Feel free to merge when CI is green 🎉

@qodo-code-review

Copy link
Copy Markdown
Contributor

Code review by qodo was updated up to the latest commit 2b30287

@qodo-code-review

Copy link
Copy Markdown
Contributor

Code review by qodo was updated up to the latest commit 57886f1

@pujagani pujagani force-pushed the mark-bidi-classes-beta branch from 6921b23 to b35f647 Compare June 19, 2026 09:39
Comment thread java/src/org/openqa/selenium/bidi/browser/ClientWindow.java
@qodo-code-review

Copy link
Copy Markdown
Contributor

Code review by qodo was updated up to the latest commit b35f647

@pujagani pujagani merged commit d0f9c6d into SeleniumHQ:trunk Jun 19, 2026
43 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

B-devtools Includes everything BiDi or Chrome DevTools related C-java Java Bindings

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants