From 3856a059373b177b1b8cc1bc4d3fc7c04d7db20b Mon Sep 17 00:00:00 2001 From: Michael Render Date: Sun, 9 Feb 2025 11:39:29 -0500 Subject: [PATCH 1/7] [dotnet] Add back in a public parameterless constructor to `HttpRequestData` --- dotnet/src/webdriver/HttpRequestData.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/dotnet/src/webdriver/HttpRequestData.cs b/dotnet/src/webdriver/HttpRequestData.cs index e1f0db6a86e81..0d8a06ff874db 100644 --- a/dotnet/src/webdriver/HttpRequestData.cs +++ b/dotnet/src/webdriver/HttpRequestData.cs @@ -28,6 +28,16 @@ namespace OpenQA.Selenium /// public class HttpRequestData { + /// + /// Initializes a new instance of the type. + /// + public HttpRequestData() + { + this.Method = null!; + this.Url = null!; + this.Headers = null!; + } + /// /// Initializes a new instance of the type. /// @@ -68,6 +78,6 @@ public HttpRequestData(string method, string url, string? postData, Dictionary /// Gets the ID of the HTTP request. /// - public string RequestId { get; } + public string? RequestId { get; } } } From 9ded84a2fde33fdd0f601363c0960b7232f77962 Mon Sep 17 00:00:00 2001 From: Michael Render Date: Sun, 9 Feb 2025 12:06:47 -0500 Subject: [PATCH 2/7] Improve nullability --- dotnet/src/webdriver/HttpRequestData.cs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/dotnet/src/webdriver/HttpRequestData.cs b/dotnet/src/webdriver/HttpRequestData.cs index 0d8a06ff874db..83a922587100a 100644 --- a/dotnet/src/webdriver/HttpRequestData.cs +++ b/dotnet/src/webdriver/HttpRequestData.cs @@ -33,9 +33,6 @@ public class HttpRequestData /// public HttpRequestData() { - this.Method = null!; - this.Url = null!; - this.Headers = null!; } /// @@ -58,12 +55,12 @@ public HttpRequestData(string method, string url, string? postData, Dictionary /// Gets the method of the HTTP request. /// - public string Method { get; set; } + public string? Method { get; set; } /// /// Gets the URL of the HTTP request. /// - public string Url { get; set; } + public string? Url { get; set; } /// /// Gets the POST data of the HTTP request, if any. @@ -73,7 +70,7 @@ public HttpRequestData(string method, string url, string? postData, Dictionary /// Gets the headers of the HTTP request. /// - public Dictionary Headers { get; set; } + public Dictionary Headers { get; set; } = new Dictionary(); /// /// Gets the ID of the HTTP request. From d0afea9b8fe7601a5bc55a98094b5afe590a5147 Mon Sep 17 00:00:00 2001 From: Michael Render Date: Sun, 9 Feb 2025 12:32:26 -0500 Subject: [PATCH 3/7] Make RequestId only settable internally --- dotnet/src/webdriver/DevTools/v130/V130Network.cs | 6 ++++-- dotnet/src/webdriver/DevTools/v131/V131Network.cs | 6 ++++-- dotnet/src/webdriver/DevTools/v132/V132Network.cs | 6 ++++-- dotnet/src/webdriver/DevTools/v85/V85Network.cs | 6 ++++-- dotnet/src/webdriver/HttpRequestData.cs | 6 ++---- 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/dotnet/src/webdriver/DevTools/v130/V130Network.cs b/dotnet/src/webdriver/DevTools/v130/V130Network.cs index c76a972c84c49..75bf665c42e39 100644 --- a/dotnet/src/webdriver/DevTools/v130/V130Network.cs +++ b/dotnet/src/webdriver/DevTools/v130/V130Network.cs @@ -339,12 +339,14 @@ private void OnFetchRequestPaused(object? sender, Fetch.RequestPausedEventArgs e { var requestData = new HttpRequestData ( - requestId: e.RequestId, method: e.Request.Method, url: e.Request.Url, postData: e.Request.PostData, headers: new Dictionary(e.Request.Headers) - ); + ) + { + RequestId = e.RequestId + }; RequestPausedEventArgs wrapped = new RequestPausedEventArgs(null, requestData); this.OnRequestPaused(wrapped); diff --git a/dotnet/src/webdriver/DevTools/v131/V131Network.cs b/dotnet/src/webdriver/DevTools/v131/V131Network.cs index a634125e6d021..11fef4387cb8c 100644 --- a/dotnet/src/webdriver/DevTools/v131/V131Network.cs +++ b/dotnet/src/webdriver/DevTools/v131/V131Network.cs @@ -339,12 +339,14 @@ private void OnFetchRequestPaused(object? sender, Fetch.RequestPausedEventArgs e { var requestData = new HttpRequestData ( - requestId: e.RequestId, method: e.Request.Method, url: e.Request.Url, postData: e.Request.PostData, headers: new Dictionary(e.Request.Headers) - ); + ) + { + RequestId = e.RequestId + }; RequestPausedEventArgs wrapped = new RequestPausedEventArgs(null, requestData); this.OnRequestPaused(wrapped); diff --git a/dotnet/src/webdriver/DevTools/v132/V132Network.cs b/dotnet/src/webdriver/DevTools/v132/V132Network.cs index d5b66f4d4f58c..85c5eb775b321 100644 --- a/dotnet/src/webdriver/DevTools/v132/V132Network.cs +++ b/dotnet/src/webdriver/DevTools/v132/V132Network.cs @@ -339,12 +339,14 @@ private void OnFetchRequestPaused(object? sender, Fetch.RequestPausedEventArgs e { var requestData = new HttpRequestData ( - requestId: e.RequestId, method: e.Request.Method, url: e.Request.Url, postData: e.Request.PostData, headers: new Dictionary(e.Request.Headers) - ); + ) + { + RequestId = e.RequestId + }; RequestPausedEventArgs wrapped = new RequestPausedEventArgs(null, requestData); this.OnRequestPaused(wrapped); diff --git a/dotnet/src/webdriver/DevTools/v85/V85Network.cs b/dotnet/src/webdriver/DevTools/v85/V85Network.cs index 77e8174b8c720..ea0fd440ccb80 100644 --- a/dotnet/src/webdriver/DevTools/v85/V85Network.cs +++ b/dotnet/src/webdriver/DevTools/v85/V85Network.cs @@ -336,12 +336,14 @@ private void OnFetchRequestPaused(object? sender, Fetch.RequestPausedEventArgs e { var requestData = new HttpRequestData ( - requestId: e.RequestId, method: e.Request.Method, url: e.Request.Url, postData: e.Request.PostData, headers: new Dictionary(e.Request.Headers) - ); + ) + { + RequestId = e.RequestId + }; RequestPausedEventArgs wrapped = new RequestPausedEventArgs(null, requestData); this.OnRequestPaused(wrapped); diff --git a/dotnet/src/webdriver/HttpRequestData.cs b/dotnet/src/webdriver/HttpRequestData.cs index 83a922587100a..bd139e70f5d64 100644 --- a/dotnet/src/webdriver/HttpRequestData.cs +++ b/dotnet/src/webdriver/HttpRequestData.cs @@ -42,14 +42,12 @@ public HttpRequestData() /// The URL of the HTTP request. /// The POST data of the HTTP request. /// The headers of the HTTP request. - /// The ID of the HTTP request. - public HttpRequestData(string method, string url, string? postData, Dictionary headers, string requestId) + public HttpRequestData(string method, string url, string? postData, Dictionary headers) { this.Method = method; this.Url = url; this.PostData = postData; this.Headers = headers; - this.RequestId = requestId; } /// @@ -75,6 +73,6 @@ public HttpRequestData(string method, string url, string? postData, Dictionary /// Gets the ID of the HTTP request. /// - public string? RequestId { get; } + public string? RequestId { get; internal set; } } } From 383decdc7c739de0429d11965673b0868a10c65c Mon Sep 17 00:00:00 2001 From: Michael Render Date: Sun, 9 Feb 2025 13:08:46 -0500 Subject: [PATCH 4/7] Revert "Make RequestId only settable internally" This reverts commit d0afea9b8fe7601a5bc55a98094b5afe590a5147. --- dotnet/src/webdriver/DevTools/v130/V130Network.cs | 6 ++---- dotnet/src/webdriver/DevTools/v131/V131Network.cs | 6 ++---- dotnet/src/webdriver/DevTools/v132/V132Network.cs | 6 ++---- dotnet/src/webdriver/DevTools/v85/V85Network.cs | 6 ++---- dotnet/src/webdriver/HttpRequestData.cs | 6 ++++-- 5 files changed, 12 insertions(+), 18 deletions(-) diff --git a/dotnet/src/webdriver/DevTools/v130/V130Network.cs b/dotnet/src/webdriver/DevTools/v130/V130Network.cs index 75bf665c42e39..c76a972c84c49 100644 --- a/dotnet/src/webdriver/DevTools/v130/V130Network.cs +++ b/dotnet/src/webdriver/DevTools/v130/V130Network.cs @@ -339,14 +339,12 @@ private void OnFetchRequestPaused(object? sender, Fetch.RequestPausedEventArgs e { var requestData = new HttpRequestData ( + requestId: e.RequestId, method: e.Request.Method, url: e.Request.Url, postData: e.Request.PostData, headers: new Dictionary(e.Request.Headers) - ) - { - RequestId = e.RequestId - }; + ); RequestPausedEventArgs wrapped = new RequestPausedEventArgs(null, requestData); this.OnRequestPaused(wrapped); diff --git a/dotnet/src/webdriver/DevTools/v131/V131Network.cs b/dotnet/src/webdriver/DevTools/v131/V131Network.cs index 11fef4387cb8c..a634125e6d021 100644 --- a/dotnet/src/webdriver/DevTools/v131/V131Network.cs +++ b/dotnet/src/webdriver/DevTools/v131/V131Network.cs @@ -339,14 +339,12 @@ private void OnFetchRequestPaused(object? sender, Fetch.RequestPausedEventArgs e { var requestData = new HttpRequestData ( + requestId: e.RequestId, method: e.Request.Method, url: e.Request.Url, postData: e.Request.PostData, headers: new Dictionary(e.Request.Headers) - ) - { - RequestId = e.RequestId - }; + ); RequestPausedEventArgs wrapped = new RequestPausedEventArgs(null, requestData); this.OnRequestPaused(wrapped); diff --git a/dotnet/src/webdriver/DevTools/v132/V132Network.cs b/dotnet/src/webdriver/DevTools/v132/V132Network.cs index 85c5eb775b321..d5b66f4d4f58c 100644 --- a/dotnet/src/webdriver/DevTools/v132/V132Network.cs +++ b/dotnet/src/webdriver/DevTools/v132/V132Network.cs @@ -339,14 +339,12 @@ private void OnFetchRequestPaused(object? sender, Fetch.RequestPausedEventArgs e { var requestData = new HttpRequestData ( + requestId: e.RequestId, method: e.Request.Method, url: e.Request.Url, postData: e.Request.PostData, headers: new Dictionary(e.Request.Headers) - ) - { - RequestId = e.RequestId - }; + ); RequestPausedEventArgs wrapped = new RequestPausedEventArgs(null, requestData); this.OnRequestPaused(wrapped); diff --git a/dotnet/src/webdriver/DevTools/v85/V85Network.cs b/dotnet/src/webdriver/DevTools/v85/V85Network.cs index ea0fd440ccb80..77e8174b8c720 100644 --- a/dotnet/src/webdriver/DevTools/v85/V85Network.cs +++ b/dotnet/src/webdriver/DevTools/v85/V85Network.cs @@ -336,14 +336,12 @@ private void OnFetchRequestPaused(object? sender, Fetch.RequestPausedEventArgs e { var requestData = new HttpRequestData ( + requestId: e.RequestId, method: e.Request.Method, url: e.Request.Url, postData: e.Request.PostData, headers: new Dictionary(e.Request.Headers) - ) - { - RequestId = e.RequestId - }; + ); RequestPausedEventArgs wrapped = new RequestPausedEventArgs(null, requestData); this.OnRequestPaused(wrapped); diff --git a/dotnet/src/webdriver/HttpRequestData.cs b/dotnet/src/webdriver/HttpRequestData.cs index bd139e70f5d64..83a922587100a 100644 --- a/dotnet/src/webdriver/HttpRequestData.cs +++ b/dotnet/src/webdriver/HttpRequestData.cs @@ -42,12 +42,14 @@ public HttpRequestData() /// The URL of the HTTP request. /// The POST data of the HTTP request. /// The headers of the HTTP request. - public HttpRequestData(string method, string url, string? postData, Dictionary headers) + /// The ID of the HTTP request. + public HttpRequestData(string method, string url, string? postData, Dictionary headers, string requestId) { this.Method = method; this.Url = url; this.PostData = postData; this.Headers = headers; + this.RequestId = requestId; } /// @@ -73,6 +75,6 @@ public HttpRequestData(string method, string url, string? postData, Dictionary /// Gets the ID of the HTTP request. /// - public string? RequestId { get; internal set; } + public string? RequestId { get; } } } From 6a2fb5f3abfacf158d1c084da7f2d5cc097b231a Mon Sep 17 00:00:00 2001 From: Michael Render Date: Sun, 9 Feb 2025 13:13:43 -0500 Subject: [PATCH 5/7] Handle nullability, make new constructor internal --- dotnet/src/webdriver/DevTools/v130/V130Network.cs | 2 +- dotnet/src/webdriver/DevTools/v131/V131Network.cs | 2 +- dotnet/src/webdriver/DevTools/v132/V132Network.cs | 2 +- dotnet/src/webdriver/DevTools/v85/V85Network.cs | 4 ++-- dotnet/src/webdriver/HttpRequestData.cs | 12 ++---------- dotnet/src/webdriver/NetworkRequestSentEventArgs.cs | 13 ++++++++----- 6 files changed, 15 insertions(+), 20 deletions(-) diff --git a/dotnet/src/webdriver/DevTools/v130/V130Network.cs b/dotnet/src/webdriver/DevTools/v130/V130Network.cs index c76a972c84c49..6c5f21a729de3 100644 --- a/dotnet/src/webdriver/DevTools/v130/V130Network.cs +++ b/dotnet/src/webdriver/DevTools/v130/V130Network.cs @@ -153,7 +153,7 @@ public override async Task ContinueRequest(HttpRequestData requestData) Url = requestData.Url, }; - if (requestData.Headers.Count > 0) + if (requestData.Headers != null && requestData.Headers.Count > 0) { List headers = new List(); foreach (KeyValuePair headerPair in requestData.Headers) diff --git a/dotnet/src/webdriver/DevTools/v131/V131Network.cs b/dotnet/src/webdriver/DevTools/v131/V131Network.cs index a634125e6d021..422787bafb0dd 100644 --- a/dotnet/src/webdriver/DevTools/v131/V131Network.cs +++ b/dotnet/src/webdriver/DevTools/v131/V131Network.cs @@ -153,7 +153,7 @@ public override async Task ContinueRequest(HttpRequestData requestData) Url = requestData.Url, }; - if (requestData.Headers.Count > 0) + if (requestData.Headers != null && requestData.Headers.Count > 0) { List headers = new List(); foreach (KeyValuePair headerPair in requestData.Headers) diff --git a/dotnet/src/webdriver/DevTools/v132/V132Network.cs b/dotnet/src/webdriver/DevTools/v132/V132Network.cs index d5b66f4d4f58c..189bb749fd5ed 100644 --- a/dotnet/src/webdriver/DevTools/v132/V132Network.cs +++ b/dotnet/src/webdriver/DevTools/v132/V132Network.cs @@ -153,7 +153,7 @@ public override async Task ContinueRequest(HttpRequestData requestData) Url = requestData.Url, }; - if (requestData.Headers.Count > 0) + if (requestData.Headers != null && requestData.Headers.Count > 0) { List headers = new List(); foreach (KeyValuePair headerPair in requestData.Headers) diff --git a/dotnet/src/webdriver/DevTools/v85/V85Network.cs b/dotnet/src/webdriver/DevTools/v85/V85Network.cs index 77e8174b8c720..d4857c5fa2010 100644 --- a/dotnet/src/webdriver/DevTools/v85/V85Network.cs +++ b/dotnet/src/webdriver/DevTools/v85/V85Network.cs @@ -153,7 +153,7 @@ public override async Task ContinueRequest(HttpRequestData requestData) Url = requestData.Url, }; - if (requestData.Headers.Count > 0) + if (requestData.Headers != null && requestData.Headers.Count > 0) { List headers = new List(); foreach (KeyValuePair headerPair in requestData.Headers) @@ -304,7 +304,7 @@ public override async Task AddResponseBody(HttpResponseData responseData) } /// - /// Asynchronously contines an intercepted network response without modification. + /// Asynchronously contiunes an intercepted network response without modification. /// /// The of the network response. /// A task that represents the asynchronous operation. diff --git a/dotnet/src/webdriver/HttpRequestData.cs b/dotnet/src/webdriver/HttpRequestData.cs index 83a922587100a..0748d398f0e97 100644 --- a/dotnet/src/webdriver/HttpRequestData.cs +++ b/dotnet/src/webdriver/HttpRequestData.cs @@ -35,15 +35,7 @@ public HttpRequestData() { } - /// - /// Initializes a new instance of the type. - /// - /// The method of the HTTP request. - /// The URL of the HTTP request. - /// The POST data of the HTTP request. - /// The headers of the HTTP request. - /// The ID of the HTTP request. - public HttpRequestData(string method, string url, string? postData, Dictionary headers, string requestId) + internal HttpRequestData(string method, string url, string? postData, Dictionary headers, string requestId) { this.Method = method; this.Url = url; @@ -70,7 +62,7 @@ public HttpRequestData(string method, string url, string? postData, Dictionary /// Gets the headers of the HTTP request. /// - public Dictionary Headers { get; set; } = new Dictionary(); + public Dictionary? Headers { get; set; } /// /// Gets the ID of the HTTP request. diff --git a/dotnet/src/webdriver/NetworkRequestSentEventArgs.cs b/dotnet/src/webdriver/NetworkRequestSentEventArgs.cs index 33e43a04ff8b1..a88ba90b7cf7a 100644 --- a/dotnet/src/webdriver/NetworkRequestSentEventArgs.cs +++ b/dotnet/src/webdriver/NetworkRequestSentEventArgs.cs @@ -41,26 +41,29 @@ public NetworkRequestSentEventArgs(HttpRequestData requestData) this.RequestUrl = requestData.Url; this.RequestMethod = requestData.Method; this.RequestPostData = requestData.PostData; - foreach (KeyValuePair header in requestData.Headers) + if (requestData.Headers != null) { - this.requestHeaders[header.Key] = header.Value; + foreach (KeyValuePair header in requestData.Headers) + { + this.requestHeaders[header.Key] = header.Value; + } } } /// /// Gets the internal request ID of the network request. /// - public string RequestId { get; } + public string? RequestId { get; } /// /// Gets the URL of the network request. /// - public string RequestUrl { get; } + public string? RequestUrl { get; } /// /// Gets the HTTP method of the network request. /// - public string RequestMethod { get; } + public string? RequestMethod { get; } /// /// Gets the post data of the network request, if any. From 836ab74751a44aaa78d934df9def56833b3d26fc Mon Sep 17 00:00:00 2001 From: Michael Render Date: Sun, 9 Feb 2025 15:08:58 -0500 Subject: [PATCH 6/7] Apply suggestions from code review Simplify null check Co-authored-by: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com> --- dotnet/src/webdriver/DevTools/v130/V130Network.cs | 2 +- dotnet/src/webdriver/DevTools/v131/V131Network.cs | 2 +- dotnet/src/webdriver/DevTools/v132/V132Network.cs | 2 +- dotnet/src/webdriver/DevTools/v85/V85Network.cs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dotnet/src/webdriver/DevTools/v130/V130Network.cs b/dotnet/src/webdriver/DevTools/v130/V130Network.cs index 6c5f21a729de3..8250ea6244de9 100644 --- a/dotnet/src/webdriver/DevTools/v130/V130Network.cs +++ b/dotnet/src/webdriver/DevTools/v130/V130Network.cs @@ -153,7 +153,7 @@ public override async Task ContinueRequest(HttpRequestData requestData) Url = requestData.Url, }; - if (requestData.Headers != null && requestData.Headers.Count > 0) + if (requestData.Headers?.Count > 0) { List headers = new List(); foreach (KeyValuePair headerPair in requestData.Headers) diff --git a/dotnet/src/webdriver/DevTools/v131/V131Network.cs b/dotnet/src/webdriver/DevTools/v131/V131Network.cs index 422787bafb0dd..48b99c4ba2034 100644 --- a/dotnet/src/webdriver/DevTools/v131/V131Network.cs +++ b/dotnet/src/webdriver/DevTools/v131/V131Network.cs @@ -153,7 +153,7 @@ public override async Task ContinueRequest(HttpRequestData requestData) Url = requestData.Url, }; - if (requestData.Headers != null && requestData.Headers.Count > 0) + if (requestData.Headers?.Count > 0) { List headers = new List(); foreach (KeyValuePair headerPair in requestData.Headers) diff --git a/dotnet/src/webdriver/DevTools/v132/V132Network.cs b/dotnet/src/webdriver/DevTools/v132/V132Network.cs index 189bb749fd5ed..05b474be8364e 100644 --- a/dotnet/src/webdriver/DevTools/v132/V132Network.cs +++ b/dotnet/src/webdriver/DevTools/v132/V132Network.cs @@ -153,7 +153,7 @@ public override async Task ContinueRequest(HttpRequestData requestData) Url = requestData.Url, }; - if (requestData.Headers != null && requestData.Headers.Count > 0) + if (requestData.Headers?.Count > 0) { List headers = new List(); foreach (KeyValuePair headerPair in requestData.Headers) diff --git a/dotnet/src/webdriver/DevTools/v85/V85Network.cs b/dotnet/src/webdriver/DevTools/v85/V85Network.cs index d4857c5fa2010..8ca317383aa35 100644 --- a/dotnet/src/webdriver/DevTools/v85/V85Network.cs +++ b/dotnet/src/webdriver/DevTools/v85/V85Network.cs @@ -153,7 +153,7 @@ public override async Task ContinueRequest(HttpRequestData requestData) Url = requestData.Url, }; - if (requestData.Headers != null && requestData.Headers.Count > 0) + if (requestData.Headers?.Count > 0) { List headers = new List(); foreach (KeyValuePair headerPair in requestData.Headers) From e9efd6870df21a078b0b7026fc660207485489bb Mon Sep 17 00:00:00 2001 From: Michael Render Date: Sun, 9 Feb 2025 15:11:45 -0500 Subject: [PATCH 7/7] Update dotnet/src/webdriver/HttpRequestData.cs --- dotnet/src/webdriver/HttpRequestData.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet/src/webdriver/HttpRequestData.cs b/dotnet/src/webdriver/HttpRequestData.cs index 0748d398f0e97..72acf607f3f92 100644 --- a/dotnet/src/webdriver/HttpRequestData.cs +++ b/dotnet/src/webdriver/HttpRequestData.cs @@ -35,7 +35,7 @@ public HttpRequestData() { } - internal HttpRequestData(string method, string url, string? postData, Dictionary headers, string requestId) + internal HttpRequestData(string? method, string? url, string? postData, Dictionary? headers, string? requestId) { this.Method = method; this.Url = url;