-
-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[dotnet] Annotate nullability on interactions #15152
base: trunk
Are you sure you want to change the base?
Conversation
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
PR Code Suggestions ✨Explore these optional code suggestions:
|
// Note that the OSS dialect of the wire protocol for the Actions API | ||
// uses the raw ID of the element, not an element reference. To use this, | ||
// extract the ID using the well-known key to the dictionary for element | ||
// references. | ||
return elementReference.ObjectReferenceId; | ||
return ((IWebDriverObjectReference)this.element).ObjectReferenceId; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
element
is WebElement
, which implements IWebDriverObjectReference
directly.
None of the implementations of ObjectReferenceId
can return null (WebElement
and ShadowRoot
).
public WebElement(WebDriver parentDriver, string id) | ||
{ | ||
this.driver = parentDriver; | ||
this.elementId = id; | ||
this.elementId = id ?? throw new ArgumentNullException(nameof(id)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
id == null
is unreachable here outside of users directly creating one. Adding this check here to enforce IWebDriverObjectReference.ObjectReferenceId
never returning null
.
User description
Thanks for contributing to Selenium!
A PR well described will help maintainers to quickly review and merge it
Before submitting your PR, please check our contributing guidelines.
Avoid large PRs, help reviewers by making them as simple and short as possible.
Description
Annotates nullability on interactions. The last type not annotated is the big
Actions
one.Motivation and Context
Contributes to #14640
Types of changes
Checklist
PR Type
Enhancement
Description
Annotated nullability across multiple files in the
dotnet
project.Improved code safety with
ArgumentNullException
checks.Refactored properties to use expression-bodied members.
Marked private fields as
readonly
where applicable.Changes walkthrough 📝
ElementCoordinates.cs
Annotate nullability and refactor `ElementCoordinates`.
dotnet/src/webdriver/ElementCoordinates.cs
ArgumentNullException
for constructor parameter.element
field asreadonly
.ActionSequence.cs
Annotate nullability and refactor `ActionSequence`.
dotnet/src/webdriver/Interactions/ActionSequence.cs
ArgumentNullException
for constructor parameter.interactions
field asreadonly
.IAction.cs
Enable nullable reference types in `IAction`.
dotnet/src/webdriver/Interactions/IAction.cs
ICoordinates.cs
Enable nullable reference types in `ICoordinates`.
dotnet/src/webdriver/Interactions/ICoordinates.cs
InputDeviceKind.cs
Enable nullable reference types in `InputDeviceKind`.
dotnet/src/webdriver/Interactions/InputDeviceKind.cs
Interaction.cs
Annotate nullability and refactor `Interaction`.
dotnet/src/webdriver/Interactions/Interaction.cs
ArgumentNullException
for constructor parameter.sourceDevice
.PauseInteraction.cs
Annotate nullability and refactor `PauseInteraction`.
dotnet/src/webdriver/Interactions/PauseInteraction.cs
duration
field asreadonly
.WebElement.cs
Annotate nullability and improve safety in `WebElement`.
dotnet/src/webdriver/WebElement.cs
ArgumentNullException
for constructor parameter.