Skip to content

Commit ed9bf29

Browse files
committed
Polymorphic
1 parent 7eecb0a commit ed9bf29

File tree

4 files changed

+38
-50
lines changed

4 files changed

+38
-50
lines changed

dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/EvaluateResultConverter.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,20 @@
2020
using OpenQA.Selenium.BiDi.Communication.Json.Internal;
2121
using OpenQA.Selenium.BiDi.Modules.Script;
2222
using System;
23-
using System.Diagnostics.CodeAnalysis;
2423
using System.Text.Json;
2524
using System.Text.Json.Serialization;
2625

2726
namespace OpenQA.Selenium.BiDi.Communication.Json.Converters.Polymorphic;
2827

29-
[UnconditionalSuppressMessage("Trimming", "IL2026", Justification = "Json serializer options should have AOT-safe type resolution")]
30-
[UnconditionalSuppressMessage("AOT", "IL3050", Justification = "Json serializer options should have AOT-safe type resolution")]
3128
// https://github.com/dotnet/runtime/issues/72604
3229
internal class EvaluateResultConverter : JsonConverter<EvaluateResult>
3330
{
3431
public override EvaluateResult? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
3532
{
3633
return reader.GetDiscriminator("type") switch
3734
{
38-
"success" => JsonSerializer.Deserialize<EvaluateResultSuccess>(ref reader, options),
39-
"exception" => JsonSerializer.Deserialize<EvaluateResultException>(ref reader, options),
35+
"success" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<EvaluateResultSuccess>()),
36+
"exception" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<EvaluateResultException>()),
4037
_ => null,
4138
};
4239
}

dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/LogEntryConverter.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,20 @@
2020
using OpenQA.Selenium.BiDi.Communication.Json.Internal;
2121
using OpenQA.Selenium.BiDi.Modules.Log;
2222
using System;
23-
using System.Diagnostics.CodeAnalysis;
2423
using System.Text.Json;
2524
using System.Text.Json.Serialization;
2625

2726
namespace OpenQA.Selenium.BiDi.Communication.Json.Converters.Polymorphic;
2827

2928
// https://github.com/dotnet/runtime/issues/72604
30-
[UnconditionalSuppressMessage("Trimming", "IL2026", Justification = "Json serializer options should have AOT-safe type resolution")]
31-
[UnconditionalSuppressMessage("AOT", "IL3050", Justification = "Json serializer options should have AOT-safe type resolution")]
3229
internal class LogEntryConverter : JsonConverter<Modules.Log.LogEntry>
3330
{
3431
public override Modules.Log.LogEntry? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
3532
{
3633
return reader.GetDiscriminator("type") switch
3734
{
38-
"console" => JsonSerializer.Deserialize<ConsoleLogEntry>(ref reader, options),
39-
"javascript" => JsonSerializer.Deserialize<JavascriptLogEntry>(ref reader, options),
35+
"console" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<ConsoleLogEntry>()),
36+
"javascript" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<JavascriptLogEntry>()),
4037
_ => null,
4138
};
4239
}

dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RealmInfoConverter.cs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,29 +20,26 @@
2020
using OpenQA.Selenium.BiDi.Communication.Json.Internal;
2121
using OpenQA.Selenium.BiDi.Modules.Script;
2222
using System;
23-
using System.Diagnostics.CodeAnalysis;
2423
using System.Text.Json;
2524
using System.Text.Json.Serialization;
2625

2726
namespace OpenQA.Selenium.BiDi.Communication.Json.Converters.Polymorphic;
2827

2928
// https://github.com/dotnet/runtime/issues/72604
30-
[UnconditionalSuppressMessage("Trimming", "IL2026", Justification = "Json serializer options should have AOT-safe type resolution")]
31-
[UnconditionalSuppressMessage("AOT", "IL3050", Justification = "Json serializer options should have AOT-safe type resolution")]
3229
internal class RealmInfoConverter : JsonConverter<RealmInfo>
3330
{
3431
public override RealmInfo? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
3532
{
3633
return reader.GetDiscriminator("type") switch
3734
{
38-
"window" => JsonSerializer.Deserialize<WindowRealmInfo>(ref reader, options),
39-
"dedicated-worker" => JsonSerializer.Deserialize<DedicatedWorkerRealmInfo>(ref reader, options),
40-
"shared-worker" => JsonSerializer.Deserialize<SharedWorkerRealmInfo>(ref reader, options),
41-
"service-worker" => JsonSerializer.Deserialize<ServiceWorkerRealmInfo>(ref reader, options),
42-
"worker" => JsonSerializer.Deserialize<WorkerRealmInfo>(ref reader, options),
43-
"paint-worklet" => JsonSerializer.Deserialize<PaintWorkletRealmInfo>(ref reader, options),
44-
"audio-worklet" => JsonSerializer.Deserialize<AudioWorkletRealmInfo>(ref reader, options),
45-
"worklet" => JsonSerializer.Deserialize<WorkletRealmInfo>(ref reader, options),
35+
"window" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<WindowRealmInfo>()),
36+
"dedicated-worker" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<DedicatedWorkerRealmInfo>()),
37+
"shared-worker" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<SharedWorkerRealmInfo>()),
38+
"service-worker" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<ServiceWorkerRealmInfo>()),
39+
"worker" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<WorkerRealmInfo>()),
40+
"paint-worklet" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<PaintWorkletRealmInfo>()),
41+
"audio-worklet" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<AudioWorkletRealmInfo>()),
42+
"worklet" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<WorkletRealmInfo>()),
4643
_ => null,
4744
};
4845
}

dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RemoteValueConverter.cs

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,12 @@
2020
using OpenQA.Selenium.BiDi.Communication.Json.Internal;
2121
using OpenQA.Selenium.BiDi.Modules.Script;
2222
using System;
23-
using System.Diagnostics.CodeAnalysis;
2423
using System.Text.Json;
2524
using System.Text.Json.Serialization;
2625

2726
namespace OpenQA.Selenium.BiDi.Communication.Json.Converters.Polymorphic;
2827

2928
// https://github.com/dotnet/runtime/issues/72604
30-
[UnconditionalSuppressMessage("Trimming", "IL2026", Justification = "Json serializer options should have AOT-safe type resolution")]
31-
[UnconditionalSuppressMessage("AOT", "IL3050", Justification = "Json serializer options should have AOT-safe type resolution")]
3229
internal class RemoteValueConverter : JsonConverter<RemoteValue>
3330
{
3431
public override RemoteValue? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
@@ -40,32 +37,32 @@ internal class RemoteValueConverter : JsonConverter<RemoteValue>
4037

4138
return reader.GetDiscriminator("type") switch
4239
{
43-
"number" => JsonSerializer.Deserialize<NumberRemoteValue>(ref reader, options),
44-
"boolean" => JsonSerializer.Deserialize<BooleanRemoteValue>(ref reader, options),
45-
"bigint" => JsonSerializer.Deserialize<BigIntRemoteValue>(ref reader, options),
46-
"string" => JsonSerializer.Deserialize<StringRemoteValue>(ref reader, options),
47-
"null" => JsonSerializer.Deserialize<NullRemoteValue>(ref reader, options),
48-
"undefined" => JsonSerializer.Deserialize<UndefinedRemoteValue>(ref reader, options),
49-
"symbol" => JsonSerializer.Deserialize<SymbolRemoteValue>(ref reader, options),
50-
"array" => JsonSerializer.Deserialize<ArrayRemoteValue>(ref reader, options),
51-
"object" => JsonSerializer.Deserialize<ObjectRemoteValue>(ref reader, options),
52-
"function" => JsonSerializer.Deserialize<FunctionRemoteValue>(ref reader, options),
53-
"regexp" => JsonSerializer.Deserialize<RegExpRemoteValue>(ref reader, options),
54-
"date" => JsonSerializer.Deserialize<DateRemoteValue>(ref reader, options),
55-
"map" => JsonSerializer.Deserialize<MapRemoteValue>(ref reader, options),
56-
"set" => JsonSerializer.Deserialize<SetRemoteValue>(ref reader, options),
57-
"weakmap" => JsonSerializer.Deserialize<WeakMapRemoteValue>(ref reader, options),
58-
"weakset" => JsonSerializer.Deserialize<WeakSetRemoteValue>(ref reader, options),
59-
"generator" => JsonSerializer.Deserialize<GeneratorRemoteValue>(ref reader, options),
60-
"error" => JsonSerializer.Deserialize<ErrorRemoteValue>(ref reader, options),
61-
"proxy" => JsonSerializer.Deserialize<ProxyRemoteValue>(ref reader, options),
62-
"promise" => JsonSerializer.Deserialize<PromiseRemoteValue>(ref reader, options),
63-
"typedarray" => JsonSerializer.Deserialize<TypedArrayRemoteValue>(ref reader, options),
64-
"arraybuffer" => JsonSerializer.Deserialize<ArrayBufferRemoteValue>(ref reader, options),
65-
"nodelist" => JsonSerializer.Deserialize<NodeListRemoteValue>(ref reader, options),
66-
"htmlcollection" => JsonSerializer.Deserialize<HtmlCollectionRemoteValue>(ref reader, options),
67-
"node" => JsonSerializer.Deserialize<NodeRemoteValue>(ref reader, options),
68-
"window" => JsonSerializer.Deserialize<WindowProxyRemoteValue>(ref reader, options),
40+
"number" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<NumberRemoteValue>()),
41+
"boolean" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<BooleanRemoteValue>()),
42+
"bigint" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<BigIntRemoteValue>()),
43+
"string" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<StringRemoteValue>()),
44+
"null" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<NullRemoteValue>()),
45+
"undefined" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<UndefinedRemoteValue>()),
46+
"symbol" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<SymbolRemoteValue>()),
47+
"array" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<ArrayRemoteValue>()),
48+
"object" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<ObjectRemoteValue>()),
49+
"function" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<FunctionRemoteValue>()),
50+
"regexp" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<RegExpRemoteValue>()),
51+
"date" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<DateRemoteValue>()),
52+
"map" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<MapRemoteValue>()),
53+
"set" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<SetRemoteValue>()),
54+
"weakmap" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<WeakMapRemoteValue>()),
55+
"weakset" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<WeakSetRemoteValue>()),
56+
"generator" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<GeneratorRemoteValue>()),
57+
"error" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<ErrorRemoteValue>()),
58+
"proxy" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<ProxyRemoteValue>()),
59+
"promise" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<PromiseRemoteValue>()),
60+
"typedarray" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<TypedArrayRemoteValue>()),
61+
"arraybuffer" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<ArrayBufferRemoteValue>()),
62+
"nodelist" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<NodeListRemoteValue>()),
63+
"htmlcollection" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<HtmlCollectionRemoteValue>()),
64+
"node" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<NodeRemoteValue>()),
65+
"window" => JsonSerializer.Deserialize(ref reader, options.GetTypeInfo<WindowProxyRemoteValue>()),
6966
_ => null,
7067
};
7168
}

0 commit comments

Comments
 (0)