From 81f750053268a38ccadcda466e45a2b3b7526748 Mon Sep 17 00:00:00 2001 From: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com> Date: Sat, 11 Oct 2025 22:46:20 +0300 Subject: [PATCH] [dotnet] [biid] Avoid using JsonInclude attribute to include optional property for DTO --- .../BrowsingContext/BrowsingContextInfo.cs | 9 ++----- .../BrowsingContextNetworkModule.cs | 6 ++--- .../UserPromptClosedEventArgs.cs | 10 ++------ .../UserPromptOpenedEventArgs.cs | 8 ++---- .../BiDi/Network/AuthRequiredEventArgs.cs | 5 ++-- .../BiDi/Network/BaseParametersEventArgs.cs | 10 ++------ .../Network/BeforeRequestSentEventArgs.cs | 5 ++-- .../BiDi/Network/FetchErrorEventArgs.cs | 5 ++-- .../BiDi/Network/NetworkModule.HighLevel.cs | 19 +++++++------- .../Network/ResponseCompletedEventArgs.cs | 6 +++-- .../webdriver/BiDi/Network/ResponseData.cs | 8 ++---- .../BiDi/Network/ResponseStartedEventArgs.cs | 6 +++-- .../webdriver/BiDi/Script/NodeProperties.cs | 25 +------------------ .../src/webdriver/BiDi/Script/RemoteValue.cs | 8 +----- 14 files changed, 42 insertions(+), 88 deletions(-) diff --git a/dotnet/src/webdriver/BiDi/BrowsingContext/BrowsingContextInfo.cs b/dotnet/src/webdriver/BiDi/BrowsingContext/BrowsingContextInfo.cs index 271aefc1310c7..5dbfe555921b7 100644 --- a/dotnet/src/webdriver/BiDi/BrowsingContext/BrowsingContextInfo.cs +++ b/dotnet/src/webdriver/BiDi/BrowsingContext/BrowsingContextInfo.cs @@ -18,13 +18,8 @@ // using System.Collections.Generic; -using System.Text.Json.Serialization; namespace OpenQA.Selenium.BiDi.BrowsingContext; -public sealed record BrowsingContextInfo(BiDi BiDi, IReadOnlyList? Children, Browser.ClientWindow ClientWindow, BrowsingContext Context, BrowsingContext? OriginalOpener, string Url, Browser.UserContext UserContext) - : BrowsingContextEventArgs(BiDi, Context) -{ - [JsonInclude] - public BrowsingContext? Parent { get; internal set; } -} +public sealed record BrowsingContextInfo(BiDi BiDi, IReadOnlyList? Children, Browser.ClientWindow ClientWindow, BrowsingContext Context, BrowsingContext? OriginalOpener, string Url, Browser.UserContext UserContext, BrowsingContext? Parent) + : BrowsingContextEventArgs(BiDi, Context); diff --git a/dotnet/src/webdriver/BiDi/BrowsingContext/BrowsingContextNetworkModule.cs b/dotnet/src/webdriver/BiDi/BrowsingContext/BrowsingContextNetworkModule.cs index 46703be62af13..039a6644f03dc 100644 --- a/dotnet/src/webdriver/BiDi/BrowsingContext/BrowsingContextNetworkModule.cs +++ b/dotnet/src/webdriver/BiDi/BrowsingContext/BrowsingContextNetworkModule.cs @@ -35,7 +35,7 @@ public async Task InterceptRequestAsync(Func await handler(new(req.BiDi, req.Context, req.IsBlocked, req.Navigation, req.RedirectCount, req.Request, req.Timestamp, req.Initiator)), + async req => await handler(new(req.BiDi, req.Context, req.IsBlocked, req.Navigation, req.RedirectCount, req.Request, req.Timestamp, req.Initiator, req.Intercepts)), new BrowsingContextsSubscriptionOptions(null) { Contexts = [context] }).ConfigureAwait(false); return intercept; @@ -51,7 +51,7 @@ public async Task InterceptResponseAsync(Func await handler(new(res.BiDi, res.Context, res.IsBlocked, res.Navigation, res.RedirectCount, res.Request, res.Timestamp, res.Response)), + async res => await handler(new(res.BiDi, res.Context, res.IsBlocked, res.Navigation, res.RedirectCount, res.Request, res.Timestamp, res.Response, res.Intercepts)), new BrowsingContextsSubscriptionOptions(null) { Contexts = [context] }).ConfigureAwait(false); return intercept; @@ -67,7 +67,7 @@ public async Task InterceptAuthAsync(Func hand var intercept = await networkModule.AddInterceptAsync([InterceptPhase.AuthRequired], addInterceptOptions).ConfigureAwait(false); await intercept.OnAuthRequiredAsync( - async auth => await handler(new(auth.BiDi, auth.Context, auth.IsBlocked, auth.Navigation, auth.RedirectCount, auth.Request, auth.Timestamp, auth.Response)), + async auth => await handler(new(auth.BiDi, auth.Context, auth.IsBlocked, auth.Navigation, auth.RedirectCount, auth.Request, auth.Timestamp, auth.Response, auth.Intercepts)), new BrowsingContextsSubscriptionOptions(null) { Contexts = [context] }).ConfigureAwait(false); return intercept; diff --git a/dotnet/src/webdriver/BiDi/BrowsingContext/UserPromptClosedEventArgs.cs b/dotnet/src/webdriver/BiDi/BrowsingContext/UserPromptClosedEventArgs.cs index 75d1395b69b05..3e2572203c627 100644 --- a/dotnet/src/webdriver/BiDi/BrowsingContext/UserPromptClosedEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/BrowsingContext/UserPromptClosedEventArgs.cs @@ -17,13 +17,7 @@ // under the License. // -using System.Text.Json.Serialization; - namespace OpenQA.Selenium.BiDi.BrowsingContext; -public sealed record UserPromptClosedEventArgs(BiDi BiDi, BrowsingContext Context, bool Accepted) - : BrowsingContextEventArgs(BiDi, Context) -{ - [JsonInclude] - public string? UserText { get; internal set; } -} +public sealed record UserPromptClosedEventArgs(BiDi BiDi, BrowsingContext Context, bool Accepted, string? UserText) + : BrowsingContextEventArgs(BiDi, Context); diff --git a/dotnet/src/webdriver/BiDi/BrowsingContext/UserPromptOpenedEventArgs.cs b/dotnet/src/webdriver/BiDi/BrowsingContext/UserPromptOpenedEventArgs.cs index 3a88648222921..d2cd1020e54d0 100644 --- a/dotnet/src/webdriver/BiDi/BrowsingContext/UserPromptOpenedEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/BrowsingContext/UserPromptOpenedEventArgs.cs @@ -22,12 +22,8 @@ namespace OpenQA.Selenium.BiDi.BrowsingContext; -public sealed record UserPromptOpenedEventArgs(BiDi BiDi, BrowsingContext Context, Session.UserPromptHandlerType Handler, UserPromptType Type, string Message) - : BrowsingContextEventArgs(BiDi, Context) -{ - [JsonInclude] - public string? DefaultValue { get; internal set; } -} +public sealed record UserPromptOpenedEventArgs(BiDi BiDi, BrowsingContext Context, Session.UserPromptHandlerType Handler, UserPromptType Type, string Message, string? DefaultValue) + : BrowsingContextEventArgs(BiDi, Context); [JsonConverter(typeof(CamelCaseEnumConverter))] public enum UserPromptType diff --git a/dotnet/src/webdriver/BiDi/Network/AuthRequiredEventArgs.cs b/dotnet/src/webdriver/BiDi/Network/AuthRequiredEventArgs.cs index e933e0e29dfb5..ba61acf4eb928 100644 --- a/dotnet/src/webdriver/BiDi/Network/AuthRequiredEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Network/AuthRequiredEventArgs.cs @@ -18,8 +18,9 @@ // using System; +using System.Collections.Generic; namespace OpenQA.Selenium.BiDi.Network; -public record AuthRequiredEventArgs(BiDi BiDi, BrowsingContext.BrowsingContext? Context, bool IsBlocked, BrowsingContext.Navigation? Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, ResponseData Response) : - BaseParametersEventArgs(BiDi, Context, IsBlocked, Navigation, RedirectCount, Request, Timestamp); +public record AuthRequiredEventArgs(BiDi BiDi, BrowsingContext.BrowsingContext? Context, bool IsBlocked, BrowsingContext.Navigation? Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, ResponseData Response, IReadOnlyList? Intercepts) : + BaseParametersEventArgs(BiDi, Context, IsBlocked, Navigation, RedirectCount, Request, Timestamp, Intercepts); diff --git a/dotnet/src/webdriver/BiDi/Network/BaseParametersEventArgs.cs b/dotnet/src/webdriver/BiDi/Network/BaseParametersEventArgs.cs index a1c990228a2eb..d438d714c6add 100644 --- a/dotnet/src/webdriver/BiDi/Network/BaseParametersEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Network/BaseParametersEventArgs.cs @@ -18,15 +18,9 @@ // using System.Collections.Generic; -using System.Text.Json.Serialization; using System; namespace OpenQA.Selenium.BiDi.Network; -public abstract record BaseParametersEventArgs(BiDi BiDi, BrowsingContext.BrowsingContext? Context, bool IsBlocked, BrowsingContext.Navigation? Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp) - : BrowsingContextEventArgs(BiDi, Context) -{ - [JsonInclude] - public IReadOnlyList? Intercepts { get; internal set; } -} - +public abstract record BaseParametersEventArgs(BiDi BiDi, BrowsingContext.BrowsingContext? Context, bool IsBlocked, BrowsingContext.Navigation? Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, IReadOnlyList? Intercepts) + : BrowsingContextEventArgs(BiDi, Context); diff --git a/dotnet/src/webdriver/BiDi/Network/BeforeRequestSentEventArgs.cs b/dotnet/src/webdriver/BiDi/Network/BeforeRequestSentEventArgs.cs index 7524878c2141d..f73dccf71d7f8 100644 --- a/dotnet/src/webdriver/BiDi/Network/BeforeRequestSentEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Network/BeforeRequestSentEventArgs.cs @@ -19,8 +19,9 @@ using OpenQA.Selenium.BiDi.BrowsingContext; using System; +using System.Collections.Generic; namespace OpenQA.Selenium.BiDi.Network; -public record BeforeRequestSentEventArgs(BiDi BiDi, BrowsingContext.BrowsingContext? Context, bool IsBlocked, Navigation? Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, Initiator Initiator) - : BaseParametersEventArgs(BiDi, Context, IsBlocked, Navigation, RedirectCount, Request, Timestamp); +public record BeforeRequestSentEventArgs(BiDi BiDi, BrowsingContext.BrowsingContext? Context, bool IsBlocked, Navigation? Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, Initiator Initiator, IReadOnlyList? Intercepts) + : BaseParametersEventArgs(BiDi, Context, IsBlocked, Navigation, RedirectCount, Request, Timestamp, Intercepts); diff --git a/dotnet/src/webdriver/BiDi/Network/FetchErrorEventArgs.cs b/dotnet/src/webdriver/BiDi/Network/FetchErrorEventArgs.cs index 829d73aa45413..ab19d29f69215 100644 --- a/dotnet/src/webdriver/BiDi/Network/FetchErrorEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Network/FetchErrorEventArgs.cs @@ -19,8 +19,9 @@ using OpenQA.Selenium.BiDi.BrowsingContext; using System; +using System.Collections.Generic; namespace OpenQA.Selenium.BiDi.Network; -public sealed record FetchErrorEventArgs(BiDi BiDi, BrowsingContext.BrowsingContext? Context, bool IsBlocked, Navigation? Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, string ErrorText) - : BaseParametersEventArgs(BiDi, Context, IsBlocked, Navigation, RedirectCount, Request, Timestamp); +public sealed record FetchErrorEventArgs(BiDi BiDi, BrowsingContext.BrowsingContext? Context, bool IsBlocked, Navigation? Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, string ErrorText, IReadOnlyList? Intercepts) + : BaseParametersEventArgs(BiDi, Context, IsBlocked, Navigation, RedirectCount, Request, Timestamp, Intercepts); diff --git a/dotnet/src/webdriver/BiDi/Network/NetworkModule.HighLevel.cs b/dotnet/src/webdriver/BiDi/Network/NetworkModule.HighLevel.cs index b2137c8c9ec31..0a3b356f0b577 100644 --- a/dotnet/src/webdriver/BiDi/Network/NetworkModule.HighLevel.cs +++ b/dotnet/src/webdriver/BiDi/Network/NetworkModule.HighLevel.cs @@ -18,6 +18,7 @@ // using System; +using System.Collections.Generic; using System.Threading.Tasks; namespace OpenQA.Selenium.BiDi.Network; @@ -28,7 +29,7 @@ public async Task InterceptRequestAsync(Func await handler(new(req.BiDi, req.Context, req.IsBlocked, req.Navigation, req.RedirectCount, req.Request, req.Timestamp, req.Initiator))).ConfigureAwait(false); + await intercept.OnBeforeRequestSentAsync(async req => await handler(new(req.BiDi, req.Context, req.IsBlocked, req.Navigation, req.RedirectCount, req.Request, req.Timestamp, req.Initiator, req.Intercepts))).ConfigureAwait(false); return intercept; } @@ -37,7 +38,7 @@ public async Task InterceptResponseAsync(Func await handler(new(res.BiDi, res.Context, res.IsBlocked, res.Navigation, res.RedirectCount, res.Request, res.Timestamp, res.Response))).ConfigureAwait(false); + await intercept.OnResponseStartedAsync(async res => await handler(new(res.BiDi, res.Context, res.IsBlocked, res.Navigation, res.RedirectCount, res.Request, res.Timestamp, res.Response, res.Intercepts))).ConfigureAwait(false); return intercept; } @@ -46,7 +47,7 @@ public async Task InterceptAuthAsync(Func hand { var intercept = await AddInterceptAsync([InterceptPhase.AuthRequired], options).ConfigureAwait(false); - await intercept.OnAuthRequiredAsync(async auth => await handler(new(auth.BiDi, auth.Context, auth.IsBlocked, auth.Navigation, auth.RedirectCount, auth.Request, auth.Timestamp, auth.Response))).ConfigureAwait(false); + await intercept.OnAuthRequiredAsync(async auth => await handler(new(auth.BiDi, auth.Context, auth.IsBlocked, auth.Navigation, auth.RedirectCount, auth.Request, auth.Timestamp, auth.Response, auth.Intercepts))).ConfigureAwait(false); return intercept; } @@ -58,8 +59,8 @@ public sealed class InterceptResponseOptions : AddInterceptOptions; public sealed class InterceptAuthOptions : AddInterceptOptions; -public sealed record InterceptedRequest(BiDi BiDi, BrowsingContext.BrowsingContext? Context, bool IsBlocked, BrowsingContext.Navigation? Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, Initiator Initiator) - : BeforeRequestSentEventArgs(BiDi, Context, IsBlocked, Navigation, RedirectCount, Request, Timestamp, Initiator) +public sealed record InterceptedRequest(BiDi BiDi, BrowsingContext.BrowsingContext? Context, bool IsBlocked, BrowsingContext.Navigation? Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, Initiator Initiator, IReadOnlyList? Intercepts) + : BeforeRequestSentEventArgs(BiDi, Context, IsBlocked, Navigation, RedirectCount, Request, Timestamp, Initiator, Intercepts) { public Task ContinueAsync(ContinueRequestOptions? options = null) { @@ -77,8 +78,8 @@ public Task ProvideResponseAsync(ProvideResponseOptions? options = null) } } -public sealed record InterceptedResponse(BiDi BiDi, BrowsingContext.BrowsingContext? Context, bool IsBlocked, BrowsingContext.Navigation? Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, ResponseData Response) - : ResponseStartedEventArgs(BiDi, Context, IsBlocked, Navigation, RedirectCount, Request, Timestamp, Response) +public sealed record InterceptedResponse(BiDi BiDi, BrowsingContext.BrowsingContext? Context, bool IsBlocked, BrowsingContext.Navigation? Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, ResponseData Response, IReadOnlyList? Intercepts) + : ResponseStartedEventArgs(BiDi, Context, IsBlocked, Navigation, RedirectCount, Request, Timestamp, Response, Intercepts) { public Task ContinueAsync(ContinueResponseOptions? options = null) { @@ -86,8 +87,8 @@ public Task ContinueAsync(ContinueResponseOptions? options = null) } } -public sealed record InterceptedAuth(BiDi BiDi, BrowsingContext.BrowsingContext? Context, bool IsBlocked, BrowsingContext.Navigation? Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, ResponseData Response) - : AuthRequiredEventArgs(BiDi, Context, IsBlocked, Navigation, RedirectCount, Request, Timestamp, Response) +public sealed record InterceptedAuth(BiDi BiDi, BrowsingContext.BrowsingContext? Context, bool IsBlocked, BrowsingContext.Navigation? Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, ResponseData Response, IReadOnlyList? Intercepts) + : AuthRequiredEventArgs(BiDi, Context, IsBlocked, Navigation, RedirectCount, Request, Timestamp, Response, Intercepts) { public Task ContinueAsync(AuthCredentials credentials, ContinueWithAuthCredentialsOptions? options = null) { diff --git a/dotnet/src/webdriver/BiDi/Network/ResponseCompletedEventArgs.cs b/dotnet/src/webdriver/BiDi/Network/ResponseCompletedEventArgs.cs index 3cd7ea5dad54e..f91e3293cc9c1 100644 --- a/dotnet/src/webdriver/BiDi/Network/ResponseCompletedEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Network/ResponseCompletedEventArgs.cs @@ -19,6 +19,7 @@ using OpenQA.Selenium.BiDi.BrowsingContext; using System; +using System.Collections.Generic; namespace OpenQA.Selenium.BiDi.Network; @@ -29,5 +30,6 @@ public sealed record ResponseCompletedEventArgs(BiDi BiDi, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, - ResponseData Response) - : BaseParametersEventArgs(BiDi, Context, IsBlocked, Navigation, RedirectCount, Request, Timestamp); + ResponseData Response, + IReadOnlyList? Intercepts) + : BaseParametersEventArgs(BiDi, Context, IsBlocked, Navigation, RedirectCount, Request, Timestamp, Intercepts); diff --git a/dotnet/src/webdriver/BiDi/Network/ResponseData.cs b/dotnet/src/webdriver/BiDi/Network/ResponseData.cs index 87868bde43534..40c8cd8fa6d01 100644 --- a/dotnet/src/webdriver/BiDi/Network/ResponseData.cs +++ b/dotnet/src/webdriver/BiDi/Network/ResponseData.cs @@ -18,7 +18,6 @@ // using System.Collections.Generic; -using System.Text.Json.Serialization; namespace OpenQA.Selenium.BiDi.Network; @@ -32,8 +31,5 @@ public record ResponseData(string Url, long BytesReceived, long? HeadersSize, long? BodySize, - ResponseContent Content) -{ - [JsonInclude] - public IReadOnlyList? AuthChallenges { get; internal set; } -} + ResponseContent Content, + IReadOnlyList? AuthChallenges); diff --git a/dotnet/src/webdriver/BiDi/Network/ResponseStartedEventArgs.cs b/dotnet/src/webdriver/BiDi/Network/ResponseStartedEventArgs.cs index 71a3eeb573388..7b80a936f0acd 100644 --- a/dotnet/src/webdriver/BiDi/Network/ResponseStartedEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Network/ResponseStartedEventArgs.cs @@ -19,6 +19,7 @@ using OpenQA.Selenium.BiDi.BrowsingContext; using System; +using System.Collections.Generic; namespace OpenQA.Selenium.BiDi.Network; @@ -29,5 +30,6 @@ public record ResponseStartedEventArgs(BiDi BiDi, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, - ResponseData Response) - : BaseParametersEventArgs(BiDi, Context, IsBlocked, Navigation, RedirectCount, Request, Timestamp); + ResponseData Response, + IReadOnlyList? Intercepts) + : BaseParametersEventArgs(BiDi, Context, IsBlocked, Navigation, RedirectCount, Request, Timestamp, Intercepts); diff --git a/dotnet/src/webdriver/BiDi/Script/NodeProperties.cs b/dotnet/src/webdriver/BiDi/Script/NodeProperties.cs index a63bf44def9a6..58decd195b6f7 100644 --- a/dotnet/src/webdriver/BiDi/Script/NodeProperties.cs +++ b/dotnet/src/webdriver/BiDi/Script/NodeProperties.cs @@ -18,30 +18,7 @@ // using System.Collections.Generic; -using System.Text.Json.Serialization; namespace OpenQA.Selenium.BiDi.Script; -public sealed record NodeProperties(long NodeType, long ChildNodeCount) -{ - [JsonInclude] - public IReadOnlyDictionary? Attributes { get; internal set; } - - [JsonInclude] - public IReadOnlyList? Children { get; internal set; } - - [JsonInclude] - public string? LocalName { get; internal set; } - - [JsonInclude] - public Mode? Mode { get; internal set; } - - [JsonInclude] - public string? NamespaceUri { get; internal set; } - - [JsonInclude] - public string? NodeValue { get; internal set; } - - [JsonInclude] - public NodeRemoteValue? ShadowRoot { get; internal set; } -} +public sealed record NodeProperties(long NodeType, long ChildNodeCount, IReadOnlyDictionary? Attributes, IReadOnlyList? Children, string? LocalName, Mode? Mode, string? NamespaceUri, string? NodeValue, NodeRemoteValue? ShadowRoot); diff --git a/dotnet/src/webdriver/BiDi/Script/RemoteValue.cs b/dotnet/src/webdriver/BiDi/Script/RemoteValue.cs index be58fcc6a2d77..ec45b047c6ba6 100644 --- a/dotnet/src/webdriver/BiDi/Script/RemoteValue.cs +++ b/dotnet/src/webdriver/BiDi/Script/RemoteValue.cs @@ -252,17 +252,11 @@ public sealed record HtmlCollectionRemoteValue : RemoteValue public IReadOnlyList? Value { get; set; } } -public sealed record NodeRemoteValue : RemoteValue, ISharedReference +public sealed record NodeRemoteValue(string? SharedId, NodeProperties? Value) : RemoteValue, ISharedReference { - [JsonInclude] - public string? SharedId { get; internal set; } - public Handle? Handle { get; set; } public InternalId? InternalId { get; set; } - - [JsonInclude] - public NodeProperties? Value { get; internal set; } } public sealed record WindowProxyRemoteValue(WindowProxyProperties Value) : RemoteValue