1717// under the License.
1818// </copyright>
1919
20+ using OpenQA . Selenium . BiDi . Communication . Json . Internal ;
2021using OpenQA . Selenium . BiDi . Modules . Script ;
2122using System ;
2223using System . Text . Json ;
@@ -29,41 +30,39 @@ internal class RemoteValueConverter : JsonConverter<RemoteValue>
2930{
3031 public override RemoteValue ? Read ( ref Utf8JsonReader reader , Type typeToConvert , JsonSerializerOptions options )
3132 {
32- var jsonDocument = JsonDocument . ParseValue ( ref reader ) ;
33-
34- if ( jsonDocument . RootElement . ValueKind == JsonValueKind . String )
33+ if ( reader . TokenType == JsonTokenType . String )
3534 {
36- return new StringRemoteValue ( jsonDocument . RootElement . GetString ( ) ! ) ;
35+ return new StringRemoteValue ( reader . GetString ( ) ! ) ;
3736 }
3837
39- return jsonDocument . RootElement . GetProperty ( "type" ) . ToString ( ) switch
38+ return reader . GetDiscriminator ( "type" ) switch
4039 {
41- "number" => jsonDocument . Deserialize < NumberRemoteValue > ( options ) ,
42- "boolean" => jsonDocument . Deserialize < BooleanRemoteValue > ( options ) ,
43- "bigint" => jsonDocument . Deserialize < BigIntRemoteValue > ( options ) ,
44- "string" => jsonDocument . Deserialize < StringRemoteValue > ( options ) ,
45- "null" => jsonDocument . Deserialize < NullRemoteValue > ( options ) ,
46- "undefined" => jsonDocument . Deserialize < UndefinedRemoteValue > ( options ) ,
47- "symbol" => jsonDocument . Deserialize < SymbolRemoteValue > ( options ) ,
48- "array" => jsonDocument . Deserialize < ArrayRemoteValue > ( options ) ,
49- "object" => jsonDocument . Deserialize < ObjectRemoteValue > ( options ) ,
50- "function" => jsonDocument . Deserialize < FunctionRemoteValue > ( options ) ,
51- "regexp" => jsonDocument . Deserialize < RegExpRemoteValue > ( options ) ,
52- "date" => jsonDocument . Deserialize < DateRemoteValue > ( options ) ,
53- "map" => jsonDocument . Deserialize < MapRemoteValue > ( options ) ,
54- "set" => jsonDocument . Deserialize < SetRemoteValue > ( options ) ,
55- "weakmap" => jsonDocument . Deserialize < WeakMapRemoteValue > ( options ) ,
56- "weakset" => jsonDocument . Deserialize < WeakSetRemoteValue > ( options ) ,
57- "generator" => jsonDocument . Deserialize < GeneratorRemoteValue > ( options ) ,
58- "error" => jsonDocument . Deserialize < ErrorRemoteValue > ( options ) ,
59- "proxy" => jsonDocument . Deserialize < ProxyRemoteValue > ( options ) ,
60- "promise" => jsonDocument . Deserialize < PromiseRemoteValue > ( options ) ,
61- "typedarray" => jsonDocument . Deserialize < TypedArrayRemoteValue > ( options ) ,
62- "arraybuffer" => jsonDocument . Deserialize < ArrayBufferRemoteValue > ( options ) ,
63- "nodelist" => jsonDocument . Deserialize < NodeListRemoteValue > ( options ) ,
64- "htmlcollection" => jsonDocument . Deserialize < HtmlCollectionRemoteValue > ( options ) ,
65- "node" => jsonDocument . Deserialize < NodeRemoteValue > ( options ) ,
66- "window" => jsonDocument . Deserialize < WindowProxyRemoteValue > ( options ) ,
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 ) ,
6766 _ => null ,
6867 } ;
6968 }
0 commit comments