From 3e017afd950bfd3a7718ba05328913479f674882 Mon Sep 17 00:00:00 2001 From: Steve Pfister Date: Mon, 3 May 2021 20:39:21 -0400 Subject: [PATCH 1/4] Ensure MacCatalyst default http handler is the same as iOS --- src/libraries/System.Net.Http/src/System.Net.Http.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Net.Http/src/System.Net.Http.csproj b/src/libraries/System.Net.Http/src/System.Net.Http.csproj index 8f495ebd79224..eb1cce88e3086 100644 --- a/src/libraries/System.Net.Http/src/System.Net.Http.csproj +++ b/src/libraries/System.Net.Http/src/System.Net.Http.csproj @@ -36,9 +36,9 @@ - + - + From 2303d9ab083eb2578b6a7a1d060fae9689451c2c Mon Sep 17 00:00:00 2001 From: Steve Pfister Date: Tue, 4 May 2021 13:36:30 -0400 Subject: [PATCH 2/4] Add a MacCatalyst handler per feedback --- .../src/System.Net.Http.csproj | 1 + ...Client.CreateDefaultHandler.MacCatalyst.cs | 29 +++++++++++++++++++ .../HttpClient.CreateDefaultHandler.iOS.cs | 2 +- 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.CreateDefaultHandler.MacCatalyst.cs diff --git a/src/libraries/System.Net.Http/src/System.Net.Http.csproj b/src/libraries/System.Net.Http/src/System.Net.Http.csproj index eb1cce88e3086..0fa6bed9b11d6 100644 --- a/src/libraries/System.Net.Http/src/System.Net.Http.csproj +++ b/src/libraries/System.Net.Http/src/System.Net.Http.csproj @@ -39,6 +39,7 @@ + diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.CreateDefaultHandler.MacCatalyst.cs b/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.CreateDefaultHandler.MacCatalyst.cs new file mode 100644 index 0000000000000..03f4f945c9f27 --- /dev/null +++ b/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.CreateDefaultHandler.MacCatalyst.cs @@ -0,0 +1,29 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Reflection; + +namespace System.Net.Http +{ + public partial class HttpClient + { + private static MethodInfo? handlerMethod; + + private static HttpMessageHandler CreateDefaultHandler() + { + // Default is to use the iOS native handler + if (!IsNativeHandlerEnabled()) + { + return new HttpClientHandler(); + } + + if (handlerMethod == null) + { + Type? runtimeOptions = Type.GetType("ObjCRuntime.RuntimeOptions, Xamarin.iOS"); + handlerMethod = runtimeOptions!.GetMethod("GetHttpMessageHandler", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static); + } + + return (HttpMessageHandler)handlerMethod!.Invoke(null, null)!; + } + } +} diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.CreateDefaultHandler.iOS.cs b/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.CreateDefaultHandler.iOS.cs index 03f4f945c9f27..dc19e0ed35d87 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.CreateDefaultHandler.iOS.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.CreateDefaultHandler.iOS.cs @@ -19,7 +19,7 @@ private static HttpMessageHandler CreateDefaultHandler() if (handlerMethod == null) { - Type? runtimeOptions = Type.GetType("ObjCRuntime.RuntimeOptions, Xamarin.iOS"); + Type? runtimeOptions = Type.GetType("ObjCRuntime.RuntimeOptions, Xamarin.MacCatalyst"); handlerMethod = runtimeOptions!.GetMethod("GetHttpMessageHandler", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static); } From dbeab7af77bc69867131c4eb2f6d691f50104e7e Mon Sep 17 00:00:00 2001 From: Steve Pfister Date: Tue, 4 May 2021 16:44:30 -0400 Subject: [PATCH 3/4] Flip assembly names around --- .../Net/Http/HttpClient.CreateDefaultHandler.MacCatalyst.cs | 2 +- .../src/System/Net/Http/HttpClient.CreateDefaultHandler.iOS.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.CreateDefaultHandler.MacCatalyst.cs b/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.CreateDefaultHandler.MacCatalyst.cs index 03f4f945c9f27..dc19e0ed35d87 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.CreateDefaultHandler.MacCatalyst.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.CreateDefaultHandler.MacCatalyst.cs @@ -19,7 +19,7 @@ private static HttpMessageHandler CreateDefaultHandler() if (handlerMethod == null) { - Type? runtimeOptions = Type.GetType("ObjCRuntime.RuntimeOptions, Xamarin.iOS"); + Type? runtimeOptions = Type.GetType("ObjCRuntime.RuntimeOptions, Xamarin.MacCatalyst"); handlerMethod = runtimeOptions!.GetMethod("GetHttpMessageHandler", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static); } diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.CreateDefaultHandler.iOS.cs b/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.CreateDefaultHandler.iOS.cs index dc19e0ed35d87..03f4f945c9f27 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.CreateDefaultHandler.iOS.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.CreateDefaultHandler.iOS.cs @@ -19,7 +19,7 @@ private static HttpMessageHandler CreateDefaultHandler() if (handlerMethod == null) { - Type? runtimeOptions = Type.GetType("ObjCRuntime.RuntimeOptions, Xamarin.MacCatalyst"); + Type? runtimeOptions = Type.GetType("ObjCRuntime.RuntimeOptions, Xamarin.iOS"); handlerMethod = runtimeOptions!.GetMethod("GetHttpMessageHandler", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static); } From 416263798ab4869f6ea15d85e3be035025e63d0f Mon Sep 17 00:00:00 2001 From: Steve Pfister Date: Fri, 7 May 2021 09:22:41 -0400 Subject: [PATCH 4/4] Removed csproj check --- src/libraries/System.Net.Http/src/System.Net.Http.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Net.Http/src/System.Net.Http.csproj b/src/libraries/System.Net.Http/src/System.Net.Http.csproj index 0fa6bed9b11d6..841bae61b9ecf 100644 --- a/src/libraries/System.Net.Http/src/System.Net.Http.csproj +++ b/src/libraries/System.Net.Http/src/System.Net.Http.csproj @@ -6,7 +6,7 @@ $(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-Linux;$(NetCoreAppCurrent)-OSX;$(NetCoreAppCurrent)-FreeBSD;$(NetCoreAppCurrent)-MacCatalyst;$(NetCoreAppCurrent)-iOS;$(NetCoreAppCurrent)-tvOS;$(NetCoreAppCurrent)-Browser;$(NetCoreAppCurrent)-illumos;$(NetCoreAppCurrent)-Solaris;$(NetCoreAppCurrent)-Android enable - + $(DefineConstants);SYSNETHTTP_NO_OPENSSL @@ -38,7 +38,7 @@ - +