From 121f37e1f062c7a10645f991aea705e4eceeed81 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 14 May 2026 21:59:34 +0000
Subject: [PATCH 1/2] Initial plan
From d8994d1e71e498320dfe50172472df2a05d41125 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 14 May 2026 22:26:53 +0000
Subject: [PATCH 2/2] Add XML documentation to 21 undocumented public
properties in AndroidMessageHandler
Agent-Logs-Url: https://github.com/dotnet/android/sessions/291023bc-79ea-49a2-8aea-a340d736a43f
Co-authored-by: jonathanpeppers <840039+jonathanpeppers@users.noreply.github.com>
---
.../AndroidMessageHandler.cs | 100 ++++++++++++++++++
1 file changed, 100 insertions(+)
diff --git a/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs b/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs
index 403f5a0ab2d..706f22fc63c 100644
--- a/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs
+++ b/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs
@@ -149,10 +149,34 @@ public void Reset ()
bool decompress_here => _acceptEncoding is not null && _acceptEncoding != IDENTITY_ENCODING;
string? _acceptEncoding;
+ ///
+ /// Gets a value indicating whether the handler supports automatic response content decompression.
+ /// Always returns for .
+ ///
public bool SupportsAutomaticDecompression => true;
+
+ ///
+ /// Gets a value indicating whether the handler supports proxy settings.
+ /// Always returns for .
+ ///
public bool SupportsProxy => true;
+
+ ///
+ /// Gets a value indicating whether the handler supports configuration settings for the
+ /// and properties.
+ /// Always returns for .
+ ///
public bool SupportsRedirectConfiguration => true;
+ ///
+ /// Gets or sets the type of decompression method used by the handler for automatic
+ /// decompression of the HTTP content response.
+ ///
+ ///
+ /// Supported methods are ,
+ /// , and .
+ /// Set to to disable automatic decompression.
+ ///
public DecompressionMethods AutomaticDecompression
{
get => _decompressionMethods;
@@ -181,6 +205,10 @@ public DecompressionMethods AutomaticDecompression
}
}
+ ///
+ /// Gets or sets the cookie container used to store server cookies.
+ ///
+ /// The value specified is .
public CookieContainer CookieContainer
{
get => _cookieContainer ?? (_cookieContainer = new CookieContainer ());
@@ -196,21 +224,55 @@ public CookieContainer CookieContainer
// NOTE: defaults here are based on:
// https://github.com/dotnet/runtime/blob/f3b77e64b87895aa7e697f321eb6d4151a4333df/src/libraries/Common/src/System/Net/Http/HttpHandlerDefaults.cs
+ ///
+ /// Gets or sets a value that indicates whether the handler uses the
+ /// property to store server cookies and uses these cookies when sending requests. The default value
+ /// is .
+ ///
public bool UseCookies { get; set; } = true;
+ ///
+ /// Gets or sets a value that indicates whether the handler sends an Authorization header with the
+ /// request. The default value is .
+ ///
public bool PreAuthenticate { get; set; } = false;
+ ///
+ /// Gets or sets a value that indicates whether the handler uses a proxy for requests. The default
+ /// value is .
+ ///
public bool UseProxy { get; set; } = true;
+ ///
+ /// Gets or sets the proxy information used by the handler.
+ ///
public IWebProxy? Proxy { get; set; }
+ ///
+ /// Gets or sets authentication information used by this handler.
+ ///
public ICredentials? Credentials { get; set; }
+ ///
+ /// Gets or sets a value that indicates whether the handler should follow redirection responses.
+ /// The default value is .
+ ///
public bool AllowAutoRedirect { get; set; } = true;
+ ///
+ /// Gets or sets a value that indicates how client certificates are provided. The default value is
+ /// .
+ ///
public ClientCertificateOption ClientCertificateOptions { get; set; } = ClientCertificateOption.Manual;
private X509CertificateCollection? _clientCertificates;
+
+ ///
+ /// Gets or sets the collection of client certificates used by the handler to authenticate the client.
+ ///
+ ///
+ /// is not set to .
+ ///
public X509CertificateCollection? ClientCertificates
{
get
@@ -225,16 +287,35 @@ public X509CertificateCollection? ClientCertificates
set => _clientCertificates = value;
}
+ ///
+ /// Gets or sets the credentials to use when authenticating with the proxy.
+ ///
public ICredentials? DefaultProxyCredentials { get; set; }
+ ///
+ /// Gets or sets the maximum number of concurrent connections allowed per server. The default value
+ /// is .
+ ///
public int MaxConnectionsPerServer { get; set; } = int.MaxValue;
+ ///
+ /// Gets or sets the maximum length, in kilobytes (1024 bytes), of the response headers. The default
+ /// value is 64 KB.
+ ///
public int MaxResponseHeadersLength { get; set; } = 64; // Units in K (1024) bytes.
+ ///
+ /// Gets or sets a value that indicates whether the certificate revocation list is checked during
+ /// validation. The default value is .
+ ///
public bool CheckCertificateRevocationList { get; set; } = false;
ServerCertificateCustomValidator? _serverCertificateCustomValidator = null;
+ ///
+ /// Gets or sets a callback to validate the server certificate. When set, the callback is invoked
+ /// during the TLS handshake to perform custom certificate validation.
+ ///
public Func? ServerCertificateCustomValidationCallback
{
get => _serverCertificateCustomValidator?.Callback;
@@ -249,15 +330,34 @@ public X509CertificateCollection? ClientCertificates
}
}
+ ///
+ /// Gets or sets the TLS/SSL protocols used by the handler. The default value is
+ /// | on Android API 29+,
+ /// or on earlier versions.
+ ///
+ ///
+ /// See the
+ /// Android SSLSocket documentation for details on supported protocols by API level.
+ ///
// See: https://developer.android.com/reference/javax/net/ssl/SSLSocket#protocols
public SslProtocols SslProtocols { get; set; } =
(int)Build.VERSION.SdkInt >= 29 ?
SslProtocols.Tls13 | SslProtocols.Tls12 : SslProtocols.Tls12;
+ ///
+ /// Gets or sets a custom property collection for the handler. This can be used to pass
+ /// additional metadata or configuration to the underlying transport.
+ ///
public IDictionary? Properties { get; set; }
int maxAutomaticRedirections = 50;
+ ///
+ /// Gets or sets the maximum number of allowed HTTP redirects. The default value is 50.
+ ///
+ ///
+ /// The specified value is less than or equal to 0.
+ ///
public int MaxAutomaticRedirections
{
get => maxAutomaticRedirections;