Skip to content

Commit b160e14

Browse files
authored
Merge branch 'trunk' into ignore-prefixed-options
2 parents a2057a8 + 9935e51 commit b160e14

File tree

17 files changed

+157
-73
lines changed

17 files changed

+157
-73
lines changed

common/mirror/selenium

+14-14
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
11
[
22
{
3-
"tag_name": "selenium-4.31.0",
3+
"tag_name": "nightly",
44
"assets": [
55
{
6-
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.31.0/selenium-dotnet-4.31.0.zip"
6+
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-java-4.32.0-SNAPSHOT.zip"
77
},
88
{
9-
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.31.0/selenium-dotnet-strongnamed-4.31.0.zip"
9+
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-server-4.32.0-SNAPSHOT.jar"
1010
},
1111
{
12-
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.31.0/selenium-java-4.31.0.zip"
13-
},
14-
{
15-
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.31.0/selenium-server-4.31.0.jar"
16-
},
17-
{
18-
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.31.0/selenium-server-4.31.0.zip"
12+
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-server-4.32.0-SNAPSHOT.zip"
1913
}
2014
]
2115
},
2216
{
23-
"tag_name": "nightly",
17+
"tag_name": "selenium-4.31.0",
2418
"assets": [
2519
{
26-
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-java-4.31.0.zip"
20+
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.31.0/selenium-dotnet-4.31.0.zip"
2721
},
2822
{
29-
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-server-4.31.0.jar"
23+
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.31.0/selenium-dotnet-strongnamed-4.31.0.zip"
3024
},
3125
{
32-
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-server-4.31.0.zip"
26+
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.31.0/selenium-java-4.31.0.zip"
27+
},
28+
{
29+
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.31.0/selenium-server-4.31.0.jar"
30+
},
31+
{
32+
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.31.0/selenium-server-4.31.0.zip"
3333
}
3434
]
3535
},

dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetClientWindowsResultConverter.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
// under the License.
1818
// </copyright>
1919

20+
using OpenQA.Selenium.BiDi.Communication.Json.Internal;
2021
using OpenQA.Selenium.BiDi.Modules.Browser;
2122
using System;
2223
using System.Collections.Generic;
@@ -30,7 +31,7 @@ internal class GetClientWindowsResultConverter : JsonConverter<GetClientWindowsR
3031
public override GetClientWindowsResult Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
3132
{
3233
using var doc = JsonDocument.ParseValue(ref reader);
33-
var clientWindows = doc.RootElement.GetProperty("clientWindows").Deserialize<IReadOnlyList<ClientWindowInfo>>(options);
34+
var clientWindows = doc.RootElement.GetProperty("clientWindows").Deserialize(options.GetTypeInfo<IReadOnlyList<ClientWindowInfo>>());
3435

3536
return new GetClientWindowsResult(clientWindows!);
3637
}

dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetCookiesResultConverter.cs

+4-2
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@
1717
// under the License.
1818
// </copyright>
1919

20+
using OpenQA.Selenium.BiDi.Communication.Json.Internal;
2021
using OpenQA.Selenium.BiDi.Modules.Storage;
2122
using System;
2223
using System.Collections.Generic;
2324
using System.Text.Json;
2425
using System.Text.Json.Serialization;
26+
using System.Text.Json.Serialization.Metadata;
2527

2628
namespace OpenQA.Selenium.BiDi.Communication.Json.Converters.Enumerable;
2729

@@ -30,8 +32,8 @@ internal class GetCookiesResultConverter : JsonConverter<GetCookiesResult>
3032
public override GetCookiesResult Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
3133
{
3234
using var doc = JsonDocument.ParseValue(ref reader);
33-
var cookies = doc.RootElement.GetProperty("cookies").Deserialize<IReadOnlyList<Modules.Network.Cookie>>(options);
34-
var partitionKey = doc.RootElement.GetProperty("partitionKey").Deserialize<PartitionKey>(options);
35+
var cookies = doc.RootElement.GetProperty("cookies").Deserialize(options.GetTypeInfo<IReadOnlyList<Modules.Network.Cookie>>());
36+
var partitionKey = doc.RootElement.GetProperty("partitionKey").Deserialize((JsonTypeInfo<PartitionKey>)options.GetTypeInfo(typeof(PartitionKey)));
3537

3638
return new GetCookiesResult(cookies!, partitionKey!);
3739
}

dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetRealmsResultConverter.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
// under the License.
1818
// </copyright>
1919

20+
using OpenQA.Selenium.BiDi.Communication.Json.Internal;
2021
using OpenQA.Selenium.BiDi.Modules.Script;
2122
using System;
2223
using System.Collections.Generic;
@@ -30,7 +31,7 @@ internal class GetRealmsResultConverter : JsonConverter<GetRealmsResult>
3031
public override GetRealmsResult Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
3132
{
3233
using var doc = JsonDocument.ParseValue(ref reader);
33-
var realms = doc.RootElement.GetProperty("realms").Deserialize<IReadOnlyList<RealmInfo>>(options);
34+
var realms = doc.RootElement.GetProperty("realms").Deserialize(options.GetTypeInfo<IReadOnlyList<RealmInfo>>());
3435

3536
return new GetRealmsResult(realms!);
3637
}

dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetUserContextsResultConverter.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
// under the License.
1818
// </copyright>
1919

20+
using OpenQA.Selenium.BiDi.Communication.Json.Internal;
2021
using OpenQA.Selenium.BiDi.Modules.Browser;
2122
using System;
2223
using System.Collections.Generic;
@@ -30,7 +31,7 @@ internal class GetUserContextsResultConverter : JsonConverter<GetUserContextsRes
3031
public override GetUserContextsResult Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
3132
{
3233
using var doc = JsonDocument.ParseValue(ref reader);
33-
var userContexts = doc.RootElement.GetProperty("userContexts").Deserialize<IReadOnlyList<UserContextInfo>>(options);
34+
var userContexts = doc.RootElement.GetProperty("userContexts").Deserialize(options.GetTypeInfo<IReadOnlyList<UserContextInfo>>());
3435

3536
return new GetUserContextsResult(userContexts!);
3637
}

dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/InputSourceActionsConverter.cs

+7-5
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
// under the License.
1818
// </copyright>
1919

20+
using OpenQA.Selenium.BiDi.Communication.Json.Internal;
2021
using OpenQA.Selenium.BiDi.Modules.Input;
2122
using System;
23+
using System.Collections.Generic;
2224
using System.Linq;
2325
using System.Text.Json;
2426
using System.Text.Json.Serialization;
@@ -43,31 +45,31 @@ public override void Write(Utf8JsonWriter writer, SourceActions value, JsonSeria
4345
case KeyActions keys:
4446
writer.WriteString("type", "key");
4547
writer.WritePropertyName("actions");
46-
JsonSerializer.Serialize(writer, keys.Actions.Select(a => a as IKeySourceAction), options);
48+
JsonSerializer.Serialize(writer, keys.Actions.Select(a => a as IKeySourceAction), options.GetTypeInfo<IEnumerable<IKeySourceAction?>>());
4749

4850
break;
4951
case PointerActions pointers:
5052
writer.WriteString("type", "pointer");
5153
if (pointers.Options is not null)
5254
{
5355
writer.WritePropertyName("parameters");
54-
JsonSerializer.Serialize(writer, pointers.Options, options);
56+
JsonSerializer.Serialize(writer, pointers.Options, options.GetTypeInfo(typeof(PointerParameters)));
5557
}
5658

5759
writer.WritePropertyName("actions");
58-
JsonSerializer.Serialize(writer, pointers.Actions.Select(a => a as IPointerSourceAction), options);
60+
JsonSerializer.Serialize(writer, pointers.Actions.Select(a => a as IPointerSourceAction), options.GetTypeInfo<IEnumerable<IPointerSourceAction?>>());
5961

6062
break;
6163
case WheelActions wheels:
6264
writer.WriteString("type", "wheel");
6365
writer.WritePropertyName("actions");
64-
JsonSerializer.Serialize(writer, wheels.Actions.Select(a => a as IWheelSourceAction), options);
66+
JsonSerializer.Serialize(writer, wheels.Actions.Select(a => a as IWheelSourceAction), options.GetTypeInfo<IEnumerable<IWheelSourceAction?>>());
6567

6668
break;
6769
case NoneActions none:
6870
writer.WriteString("type", "none");
6971
writer.WritePropertyName("actions");
70-
JsonSerializer.Serialize(writer, none.Actions.Select(a => a as INoneSourceAction), options);
72+
JsonSerializer.Serialize(writer, none.Actions.Select(a => a as INoneSourceAction), options.GetTypeInfo<IEnumerable<INoneSourceAction?>>());
7173

7274
break;
7375
}

dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/LocateNodesResultConverter.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
// under the License.
1818
// </copyright>
1919

20+
using OpenQA.Selenium.BiDi.Communication.Json.Internal;
2021
using OpenQA.Selenium.BiDi.Modules.BrowsingContext;
2122
using OpenQA.Selenium.BiDi.Modules.Script;
2223
using System;
@@ -31,7 +32,7 @@ internal class LocateNodesResultConverter : JsonConverter<LocateNodesResult>
3132
public override LocateNodesResult Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
3233
{
3334
using var doc = JsonDocument.ParseValue(ref reader);
34-
var nodes = doc.RootElement.GetProperty("nodes").Deserialize<IReadOnlyList<NodeRemoteValue>>(options);
35+
var nodes = doc.RootElement.GetProperty("nodes").Deserialize(options.GetTypeInfo<IReadOnlyList<NodeRemoteValue>>());
3536

3637
return new LocateNodesResult(nodes!);
3738
}

dotnet/src/webdriver/BiDi/Communication/Json/Converters/InputOriginConverter.cs

+3
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,14 @@
1919

2020
using OpenQA.Selenium.BiDi.Modules.Input;
2121
using System;
22+
using System.Diagnostics.CodeAnalysis;
2223
using System.Text.Json;
2324
using System.Text.Json.Serialization;
2425

2526
namespace OpenQA.Selenium.BiDi.Communication.Json.Converters;
2627

28+
[UnconditionalSuppressMessage("Trimming", "IL2026", Justification = "Json serializer options should have AOT-safe type resolution")]
29+
[UnconditionalSuppressMessage("AOT", "IL3050", Justification = "Json serializer options should have AOT-safe type resolution")]
2730
internal class InputOriginConverter : JsonConverter<Origin>
2831
{
2932
public override Origin Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ internal class EvaluateResultConverter : JsonConverter<EvaluateResult>
3232
{
3333
return reader.GetDiscriminator("type") switch
3434
{
35-
"success" => JsonSerializer.Deserialize<EvaluateResultSuccess>(ref reader, options),
36-
"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>()),
3737
_ => null,
3838
};
3939
}

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ internal class LogEntryConverter : JsonConverter<Modules.Log.LogEntry>
3232
{
3333
return reader.GetDiscriminator("type") switch
3434
{
35-
"console" => JsonSerializer.Deserialize<ConsoleLogEntry>(ref reader, options),
36-
"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>()),
3737
_ => null,
3838
};
3939
}

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

+8-8
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@ internal class RealmInfoConverter : JsonConverter<RealmInfo>
3232
{
3333
return reader.GetDiscriminator("type") switch
3434
{
35-
"window" => JsonSerializer.Deserialize<WindowRealmInfo>(ref reader, options),
36-
"dedicated-worker" => JsonSerializer.Deserialize<DedicatedWorkerRealmInfo>(ref reader, options),
37-
"shared-worker" => JsonSerializer.Deserialize<SharedWorkerRealmInfo>(ref reader, options),
38-
"service-worker" => JsonSerializer.Deserialize<ServiceWorkerRealmInfo>(ref reader, options),
39-
"worker" => JsonSerializer.Deserialize<WorkerRealmInfo>(ref reader, options),
40-
"paint-worklet" => JsonSerializer.Deserialize<PaintWorkletRealmInfo>(ref reader, options),
41-
"audio-worklet" => JsonSerializer.Deserialize<AudioWorkletRealmInfo>(ref reader, options),
42-
"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>()),
4343
_ => null,
4444
};
4545
}

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

+26-26
Original file line numberDiff line numberDiff line change
@@ -37,32 +37,32 @@ internal class RemoteValueConverter : JsonConverter<RemoteValue>
3737

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

dotnet/src/webdriver/BiDi/Communication/Json/Internal/JsonExtensions.cs

+6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
// </copyright>
1919

2020
using System.Text.Json;
21+
using System.Text.Json.Serialization.Metadata;
2122

2223
namespace OpenQA.Selenium.BiDi.Communication.Json.Internal;
2324

@@ -51,4 +52,9 @@ public static string GetDiscriminator(this ref Utf8JsonReader reader, string nam
5152

5253
return discriminator ?? throw new JsonException($"Couldn't determine '{name}' discriminator.");
5354
}
55+
56+
public static JsonTypeInfo<T> GetTypeInfo<T>(this JsonSerializerOptions options)
57+
{
58+
return (JsonTypeInfo<T>)options.GetTypeInfo(typeof(T));
59+
}
5460
}

0 commit comments

Comments
 (0)