Skip to content

Commit d0d4728

Browse files
committed
And reveal nested properties in result
1 parent 364c2e2 commit d0d4728

File tree

7 files changed

+92
-29
lines changed

7 files changed

+92
-29
lines changed

dotnet/src/webdriver/BiDi/Browser/GetClientWindowsCommand.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,20 @@ public sealed class GetClientWindowsOptions : CommandOptions;
3030

3131
public sealed record GetClientWindowsResult : EmptyResult, IReadOnlyList<ClientWindowInfo>
3232
{
33-
private readonly IReadOnlyList<ClientWindowInfo> _clientWindows;
34-
3533
internal GetClientWindowsResult(IReadOnlyList<ClientWindowInfo> clientWindows)
3634
{
37-
_clientWindows = clientWindows;
35+
ClientWindows = clientWindows;
3836
}
3937

40-
public ClientWindowInfo this[int index] => _clientWindows[index];
38+
public IReadOnlyList<ClientWindowInfo> ClientWindows { get; }
39+
40+
public ClientWindowInfo this[int index] => ClientWindows[index];
41+
42+
public int Count => ClientWindows.Count;
43+
4144

42-
public int Count => _clientWindows.Count;
4345

44-
public IEnumerator<ClientWindowInfo> GetEnumerator() => _clientWindows.GetEnumerator();
46+
public IEnumerator<ClientWindowInfo> GetEnumerator() => ClientWindows.GetEnumerator();
4547

46-
IEnumerator IEnumerable.GetEnumerator() => (_clientWindows as IEnumerable).GetEnumerator();
48+
IEnumerator IEnumerable.GetEnumerator() => (ClientWindows as IEnumerable).GetEnumerator();
4749
}

dotnet/src/webdriver/BiDi/Browser/GetUserContextsCommand.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,18 @@ public class GetUserContextsOptions : CommandOptions;
3030

3131
public sealed record GetUserContextsResult : EmptyResult, IReadOnlyList<UserContextInfo>
3232
{
33-
private readonly IReadOnlyList<UserContextInfo> _userContexts;
34-
3533
internal GetUserContextsResult(IReadOnlyList<UserContextInfo> userContexts)
3634
{
37-
_userContexts = userContexts;
35+
UserContexts = userContexts;
3836
}
3937

40-
public UserContextInfo this[int index] => _userContexts[index];
38+
public IReadOnlyList<UserContextInfo> UserContexts { get; }
39+
40+
public UserContextInfo this[int index] => UserContexts[index];
4141

42-
public int Count => _userContexts.Count;
42+
public int Count => UserContexts.Count;
4343

44-
public IEnumerator<UserContextInfo> GetEnumerator() => _userContexts.GetEnumerator();
44+
public IEnumerator<UserContextInfo> GetEnumerator() => UserContexts.GetEnumerator();
4545

46-
IEnumerator IEnumerable.GetEnumerator() => (_userContexts as IEnumerable).GetEnumerator();
46+
IEnumerator IEnumerable.GetEnumerator() => (UserContexts as IEnumerable).GetEnumerator();
4747
}

dotnet/src/webdriver/BiDi/BrowsingContext/GetTreeCommand.cs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
// </copyright>
1919

2020
using OpenQA.Selenium.BiDi.Communication;
21+
using System.Collections;
2122
using System.Collections.Generic;
2223

2324
namespace OpenQA.Selenium.BiDi.BrowsingContext;
@@ -46,4 +47,20 @@ public sealed record BrowsingContextGetTreeOptions
4647
public long? MaxDepth { get; set; }
4748
}
4849

49-
public sealed record GetTreeResult(IReadOnlyList<BrowsingContextInfo> Contexts) : EmptyResult;
50+
public sealed record GetTreeResult : EmptyResult, IReadOnlyList<BrowsingContextInfo>
51+
{
52+
internal GetTreeResult(IReadOnlyList<BrowsingContextInfo> contexts)
53+
{
54+
Contexts = contexts;
55+
}
56+
57+
public IReadOnlyList<BrowsingContextInfo> Contexts { get; }
58+
59+
public BrowsingContextInfo this[int index] => Contexts[index];
60+
61+
public int Count => Contexts.Count;
62+
63+
public IEnumerator<BrowsingContextInfo> GetEnumerator() => Contexts.GetEnumerator();
64+
65+
IEnumerator IEnumerable.GetEnumerator() => (Contexts as IEnumerable).GetEnumerator();
66+
}

dotnet/src/webdriver/BiDi/BrowsingContext/LocateNodesCommand.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,18 +39,18 @@ public sealed class LocateNodesOptions : CommandOptions
3939

4040
public sealed record LocateNodesResult : EmptyResult, IReadOnlyList<Script.NodeRemoteValue>
4141
{
42-
private readonly IReadOnlyList<Script.NodeRemoteValue> _nodes;
43-
4442
internal LocateNodesResult(IReadOnlyList<Script.NodeRemoteValue> nodes)
4543
{
46-
_nodes = nodes;
44+
Nodes = nodes;
4745
}
4846

49-
public Script.NodeRemoteValue this[int index] => _nodes[index];
47+
public readonly IReadOnlyList<Script.NodeRemoteValue> Nodes;
48+
49+
public Script.NodeRemoteValue this[int index] => Nodes[index];
5050

51-
public int Count => _nodes.Count;
51+
public int Count => Nodes.Count;
5252

53-
public IEnumerator<Script.NodeRemoteValue> GetEnumerator() => _nodes.GetEnumerator();
53+
public IEnumerator<Script.NodeRemoteValue> GetEnumerator() => Nodes.GetEnumerator();
5454

55-
IEnumerator IEnumerable.GetEnumerator() => (_nodes as IEnumerable).GetEnumerator();
55+
IEnumerator IEnumerable.GetEnumerator() => (Nodes as IEnumerable).GetEnumerator();
5656
}

dotnet/src/webdriver/BiDi/Communication/Broker.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ internal Broker(BiDi bidi, Uri url)
103103
new Json.Converters.Enumerable.GetUserContextsResultConverter(),
104104
new Json.Converters.Enumerable.GetClientWindowsResultConverter(),
105105
new Json.Converters.Enumerable.GetRealmsResultConverter(),
106+
new Json.Converters.Enumerable.GetTreeResultConverter(),
106107
}
107108
};
108109

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// <copyright file="GetTreeResultConverter.cs" company="Selenium Committers">
2+
// Licensed to the Software Freedom Conservancy (SFC) under one
3+
// or more contributor license agreements. See the NOTICE file
4+
// distributed with this work for additional information
5+
// regarding copyright ownership. The SFC licenses this file
6+
// to you under the Apache License, Version 2.0 (the
7+
// "License"); you may not use this file except in compliance
8+
// with the License. You may obtain a copy of the License at
9+
//
10+
// http://www.apache.org/licenses/LICENSE-2.0
11+
//
12+
// Unless required by applicable law or agreed to in writing,
13+
// software distributed under the License is distributed on an
14+
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
// KIND, either express or implied. See the License for the
16+
// specific language governing permissions and limitations
17+
// under the License.
18+
// </copyright>
19+
20+
using OpenQA.Selenium.BiDi.BrowsingContext;
21+
using OpenQA.Selenium.BiDi.Communication.Json.Internal;
22+
using System;
23+
using System.Collections.Generic;
24+
using System.Text.Json;
25+
using System.Text.Json.Serialization;
26+
27+
namespace OpenQA.Selenium.BiDi.Communication.Json.Converters.Enumerable;
28+
29+
internal class GetTreeResultConverter : JsonConverter<GetTreeResult>
30+
{
31+
public override GetTreeResult Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
32+
{
33+
using var doc = JsonDocument.ParseValue(ref reader);
34+
var contexts = doc.RootElement.GetProperty("contexts").Deserialize(options.GetTypeInfo<IReadOnlyList<BrowsingContextInfo>>());
35+
36+
return new GetTreeResult(contexts!);
37+
}
38+
39+
public override void Write(Utf8JsonWriter writer, GetTreeResult value, JsonSerializerOptions options)
40+
{
41+
throw new NotImplementedException();
42+
}
43+
}

dotnet/src/webdriver/BiDi/Storage/GetCookiesCommand.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,23 +39,23 @@ public sealed class GetCookiesOptions : CommandOptions
3939

4040
public sealed record GetCookiesResult : EmptyResult, IReadOnlyList<Network.Cookie>
4141
{
42-
private readonly IReadOnlyList<Network.Cookie> _cookies;
43-
4442
internal GetCookiesResult(IReadOnlyList<Network.Cookie> cookies, PartitionKey partitionKey)
4543
{
46-
_cookies = cookies;
44+
Cookies = cookies;
4745
PartitionKey = partitionKey;
4846
}
4947

48+
public IReadOnlyList<Network.Cookie> Cookies { get; }
49+
5050
public PartitionKey PartitionKey { get; init; }
5151

52-
public Network.Cookie this[int index] => _cookies[index];
52+
public Network.Cookie this[int index] => Cookies[index];
5353

54-
public int Count => _cookies.Count;
54+
public int Count => Cookies.Count;
5555

56-
public IEnumerator<Network.Cookie> GetEnumerator() => _cookies.GetEnumerator();
56+
public IEnumerator<Network.Cookie> GetEnumerator() => Cookies.GetEnumerator();
5757

58-
IEnumerator IEnumerable.GetEnumerator() => (_cookies as IEnumerable).GetEnumerator();
58+
IEnumerator IEnumerable.GetEnumerator() => (Cookies as IEnumerable).GetEnumerator();
5959
}
6060

6161
public sealed record CookieFilter

0 commit comments

Comments
 (0)