diff --git a/dotnet/src/webdriver/DevTools/v130/V130Network.cs b/dotnet/src/webdriver/DevTools/v130/V130Network.cs index 8250ea6244de9..74315810d2d34 100644 --- a/dotnet/src/webdriver/DevTools/v130/V130Network.cs +++ b/dotnet/src/webdriver/DevTools/v130/V130Network.cs @@ -338,27 +338,27 @@ private void OnFetchRequestPaused(object? sender, Fetch.RequestPausedEventArgs e if (e.ResponseErrorReason == null && e.ResponseStatusCode == null) { 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, + Method = e.Request.Method, + Url = e.Request.Url, + PostData = e.Request.PostData, + Headers = new Dictionary(e.Request.Headers) + }; RequestPausedEventArgs wrapped = new RequestPausedEventArgs(null, requestData); this.OnRequestPaused(wrapped); } else { - var responseData = new HttpResponseData - ( - requestId: e.RequestId, - url: e.Request.Url, - resourceType: e.ResourceType.ToString(), - statusCode: e.ResponseStatusCode.GetValueOrDefault(), - errorReason: e.ResponseErrorReason?.ToString() - ); + var responseData = new HttpResponseData() + { + RequestId = e.RequestId, + Url = e.Request.Url, + ResourceType = e.ResourceType.ToString(), + StatusCode = e.ResponseStatusCode.GetValueOrDefault(), + ErrorReason = e.ResponseErrorReason?.ToString() + }; if (e.ResponseHeaders != null) { diff --git a/dotnet/src/webdriver/DevTools/v131/V131Network.cs b/dotnet/src/webdriver/DevTools/v131/V131Network.cs index 48b99c4ba2034..d3a647e020f54 100644 --- a/dotnet/src/webdriver/DevTools/v131/V131Network.cs +++ b/dotnet/src/webdriver/DevTools/v131/V131Network.cs @@ -338,27 +338,27 @@ private void OnFetchRequestPaused(object? sender, Fetch.RequestPausedEventArgs e if (e.ResponseErrorReason == null && e.ResponseStatusCode == null) { 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, + Method = e.Request.Method, + Url = e.Request.Url, + PostData = e.Request.PostData, + Headers = new Dictionary(e.Request.Headers) + }; RequestPausedEventArgs wrapped = new RequestPausedEventArgs(null, requestData); this.OnRequestPaused(wrapped); } else { - var responseData = new HttpResponseData - ( - requestId: e.RequestId, - url: e.Request.Url, - resourceType: e.ResourceType.ToString(), - statusCode: e.ResponseStatusCode.GetValueOrDefault(), - errorReason: e.ResponseErrorReason?.ToString() - ); + var responseData = new HttpResponseData() + { + RequestId = e.RequestId, + Url = e.Request.Url, + ResourceType = e.ResourceType.ToString(), + StatusCode = e.ResponseStatusCode.GetValueOrDefault(), + ErrorReason = e.ResponseErrorReason?.ToString() + }; if (e.ResponseHeaders != null) { diff --git a/dotnet/src/webdriver/DevTools/v132/V132Network.cs b/dotnet/src/webdriver/DevTools/v132/V132Network.cs index 05b474be8364e..7f0215b40e082 100644 --- a/dotnet/src/webdriver/DevTools/v132/V132Network.cs +++ b/dotnet/src/webdriver/DevTools/v132/V132Network.cs @@ -338,27 +338,27 @@ private void OnFetchRequestPaused(object? sender, Fetch.RequestPausedEventArgs e if (e.ResponseErrorReason == null && e.ResponseStatusCode == null) { 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, + Method = e.Request.Method, + Url = e.Request.Url, + PostData = e.Request.PostData, + Headers = new Dictionary(e.Request.Headers) + }; RequestPausedEventArgs wrapped = new RequestPausedEventArgs(null, requestData); this.OnRequestPaused(wrapped); } else { - var responseData = new HttpResponseData - ( - requestId: e.RequestId, - url: e.Request.Url, - resourceType: e.ResourceType.ToString(), - statusCode: e.ResponseStatusCode.GetValueOrDefault(), - errorReason: e.ResponseErrorReason?.ToString() - ); + var responseData = new HttpResponseData() + { + RequestId = e.RequestId, + Url = e.Request.Url, + ResourceType = e.ResourceType.ToString(), + StatusCode = e.ResponseStatusCode.GetValueOrDefault(), + ErrorReason = e.ResponseErrorReason?.ToString() + }; if (e.ResponseHeaders != null) { diff --git a/dotnet/src/webdriver/DevTools/v85/V85Network.cs b/dotnet/src/webdriver/DevTools/v85/V85Network.cs index 8ca317383aa35..91ac0c803eeea 100644 --- a/dotnet/src/webdriver/DevTools/v85/V85Network.cs +++ b/dotnet/src/webdriver/DevTools/v85/V85Network.cs @@ -335,13 +335,13 @@ private void OnFetchRequestPaused(object? sender, Fetch.RequestPausedEventArgs e if (e.ResponseErrorReason == null && e.ResponseStatusCode == null) { 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, + Method = e.Request.Method, + Url = e.Request.Url, + PostData = e.Request.PostData, + Headers = new Dictionary(e.Request.Headers) + }; RequestPausedEventArgs wrapped = new RequestPausedEventArgs(null, requestData); this.OnRequestPaused(wrapped); @@ -349,13 +349,13 @@ private void OnFetchRequestPaused(object? sender, Fetch.RequestPausedEventArgs e else { var responseData = new HttpResponseData - ( - requestId: e.RequestId, - url: e.Request.Url, - resourceType: e.ResourceType.ToString(), - statusCode: e.ResponseStatusCode.GetValueOrDefault(), - errorReason: e.ResponseErrorReason?.ToString() - ); + { + RequestId = e.RequestId, + Url = e.Request.Url, + ResourceType = e.ResourceType.ToString(), + StatusCode = e.ResponseStatusCode.GetValueOrDefault(), + ErrorReason = e.ResponseErrorReason?.ToString() + }; if (e.ResponseHeaders != null) { diff --git a/dotnet/src/webdriver/HttpRequestData.cs b/dotnet/src/webdriver/HttpRequestData.cs index 72acf607f3f92..b5d024a9714f8 100644 --- a/dotnet/src/webdriver/HttpRequestData.cs +++ b/dotnet/src/webdriver/HttpRequestData.cs @@ -35,15 +35,6 @@ public HttpRequestData() { } - internal 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; - } - /// /// Gets the method of the HTTP request. /// @@ -67,6 +58,6 @@ internal HttpRequestData(string? method, string? url, string? postData, Dictiona /// /// Gets the ID of the HTTP request. /// - public string? RequestId { get; } + public string? RequestId { get; internal set; } } } diff --git a/dotnet/src/webdriver/HttpResponseData.cs b/dotnet/src/webdriver/HttpResponseData.cs index 66dbf9bee5666..c28ee0ed0fa4e 100644 --- a/dotnet/src/webdriver/HttpResponseData.cs +++ b/dotnet/src/webdriver/HttpResponseData.cs @@ -32,29 +32,19 @@ public class HttpResponseData /// /// Initializes a new instance of the type. /// - /// The ID of the request that generated this response. - /// The URL of the HTTP response. - /// The type of resource for this response. - /// The numeric status code of the HTTP response. - /// The reason for an error response. - public HttpResponseData(string requestId, string url, string resourceType, long statusCode, string? errorReason) + public HttpResponseData() { - RequestId = requestId; - Url = url; - ResourceType = resourceType; - StatusCode = statusCode; - ErrorReason = errorReason; } /// /// Gets or sets the ID of the request that generated this response. /// - public string RequestId { get; set; } + public string? RequestId { get; set; } /// /// Gets or sets the URL of the HTTP response. /// - public string Url { get; set; } + public string? Url { get; set; } /// /// Gets or sets the numeric status code of the HTTP response. @@ -79,7 +69,7 @@ public string? Body /// /// Gets or sets the type of resource for this response. /// - public string ResourceType { get; set; } + public string? ResourceType { get; set; } /// /// Gets or sets the reason for an error response. diff --git a/dotnet/src/webdriver/NetworkManager.cs b/dotnet/src/webdriver/NetworkManager.cs index e2863c8c85523..8a215d3721027 100644 --- a/dotnet/src/webdriver/NetworkManager.cs +++ b/dotnet/src/webdriver/NetworkManager.cs @@ -262,7 +262,7 @@ private async Task OnResponsePaused(object sender, ResponsePausedEventArgs e) // method demands one; however, the only property used by that method is the RequestId property. // It might be better to refactor that method signature to simply pass the request ID, or // alternatively, just pass the response data, which should also contain the request ID anyway. - HttpRequestData requestData = new HttpRequestData(null, null, null, null, requestId: e.ResponseData.RequestId); + HttpRequestData requestData = new HttpRequestData { RequestId = e.ResponseData.RequestId }; await this.session.Value.Domains.Network.ContinueRequestWithResponse(requestData, handler.ResponseTransformer(e.ResponseData)).ConfigureAwait(false); return; } diff --git a/dotnet/src/webdriver/NetworkResponseReceivedEventArgs.cs b/dotnet/src/webdriver/NetworkResponseReceivedEventArgs.cs index 5710531fa71b7..9386d3990da31 100644 --- a/dotnet/src/webdriver/NetworkResponseReceivedEventArgs.cs +++ b/dotnet/src/webdriver/NetworkResponseReceivedEventArgs.cs @@ -51,12 +51,12 @@ public NetworkResponseReceivedEventArgs(HttpResponseData responseData) /// /// Gets the request ID of the network request that generated this response. /// - public string RequestId { get; } + public string? RequestId { get; } /// /// Gets the URL of the network response. /// - public string ResponseUrl { get; } + public string? ResponseUrl { get; } /// /// Gets the HTTP status code of the network response. @@ -79,7 +79,7 @@ public NetworkResponseReceivedEventArgs(HttpResponseData responseData) /// /// Gets the type of resource of the network response. /// - public string ResponseResourceType { get; } + public string? ResponseResourceType { get; } /// /// Gets the headers associated with this network response. diff --git a/dotnet/test/common/NetworkInterceptionTests.cs b/dotnet/test/common/NetworkInterceptionTests.cs index 59434fb563e86..9acb79016f973 100644 --- a/dotnet/test/common/NetworkInterceptionTests.cs +++ b/dotnet/test/common/NetworkInterceptionTests.cs @@ -81,5 +81,32 @@ public async Task TestCanUseAuthorizationHandler() Assert.That(text, Is.EqualTo("authorized")); } } + + [Test] + [IgnoreBrowser(Selenium.Browser.Firefox, "Firefox does not support Chrome DevTools Protocol")] + public async Task TransformNetworkResponse() + { + if (driver is IDevTools) + { + var handler = new NetworkResponseHandler() + { + ResponseMatcher = _ => true, + ResponseTransformer = _ => new HttpResponseData + { + StatusCode = 200, + Body = "Creamy, delicious cheese!" + } + }; + INetwork networkInterceptor = driver.Manage().Network; + networkInterceptor.AddResponseHandler(handler); + await networkInterceptor.StartMonitoring(); + + driver.Navigate().GoToUrl("https://www.selenium.dev"); + await networkInterceptor.StopMonitoring(); + + var body = driver.FindElement(By.TagName("body")); + Assert.AreEqual("Creamy, delicious cheese!", body.Text); + } + } } }