Skip to content

Commit 3b1f24d

Browse files
authored
chore: enable #nullable iteration 2 (#3167)
1 parent 70f3aa3 commit 3b1f24d

28 files changed

+95
-196
lines changed

src/Playwright/Core/APIResponse.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public async Task<byte[]> BodyAsync()
6767
return await _context.WrapApiCallAsync(
6868
async () =>
6969
{
70-
var response = await _context.SendMessageToServerAsync("fetchResponseBody", new Dictionary<string, object> { ["fetchUid"] = FetchUid() }).ConfigureAwait(false);
70+
var response = await _context.SendMessageToServerAsync("fetchResponseBody", new Dictionary<string, object?> { ["fetchUid"] = FetchUid() }).ConfigureAwait(false);
7171
if (response?.TryGetProperty("binary", out var binary) == true)
7272
{
7373
return Convert.FromBase64String(binary.ToString());
@@ -96,11 +96,11 @@ public async Task<string> TextAsync()
9696

9797
internal async Task<string[]> FetchLogAsync()
9898
{
99-
var response = await _context.SendMessageToServerAsync("fetchLog", new Dictionary<string, object> { ["fetchUid"] = FetchUid() }).ConfigureAwait(false);
99+
var response = await _context.SendMessageToServerAsync("fetchLog", new Dictionary<string, object?> { ["fetchUid"] = FetchUid() }).ConfigureAwait(false);
100100
return response.Value.GetProperty("log").ToObject<string[]>();
101101
}
102102

103-
public ValueTask DisposeAsync() => new(_context.SendMessageToServerAsync("disposeAPIResponse", new Dictionary<string, object> { ["fetchUid"] = FetchUid() }));
103+
public ValueTask DisposeAsync() => new(_context.SendMessageToServerAsync("disposeAPIResponse", new Dictionary<string, object?> { ["fetchUid"] = FetchUid() }));
104104

105105
public override string ToString()
106106
{

src/Playwright/Core/BrowserType.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,7 @@ public async Task<IBrowser> ConnectAsync(string wsEndpoint, BrowserTypeConnectOp
176176
{
177177
new KeyValuePair<string, string>("x-playwright-browser", Name),
178178
}.ToDictionary(pair => pair.Key, pair => pair.Value);
179-
var localUtils = _connection.LocalUtils;
180-
var pipe = await localUtils.ConnectAsync(wsEndpoint: wsEndpoint, headers: headers, slowMo: options.SlowMo, timeout: options.Timeout, exposeNetwork: options.ExposeNetwork).ConfigureAwait(false);
179+
var pipe = await _connection.LocalUtils!.ConnectAsync(wsEndpoint: wsEndpoint, headers: headers, slowMo: options.SlowMo, timeout: options.Timeout, exposeNetwork: options.ExposeNetwork).ConfigureAwait(false);
181180

182181
void ClosePipe()
183182
{

src/Playwright/Core/CDPSession.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ internal override void OnMessage(string method, JsonElement? serverParams)
5858
[MethodImpl(MethodImplOptions.NoInlining)]
5959
public async Task<JsonElement?> SendAsync(string method, Dictionary<string, object>? args = null)
6060
{
61-
var newArgs = new Dictionary<string, object>() { { "method", method } };
61+
var newArgs = new Dictionary<string, object?>() { { "method", method } };
6262
if (args != null)
6363
{
6464
newArgs["params"] = args;

src/Playwright/Helpers/ChannelHelpers.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@
2626
using System.Text.Json;
2727
using Microsoft.Playwright.Transport;
2828

29-
#nullable enable
30-
3129
namespace Microsoft.Playwright.Helpers;
3230

3331
internal static class ChannelHelpers

src/Playwright/Helpers/ClassUtils.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
* SOFTWARE.
2323
*/
2424

25+
#nullable enable
2526
namespace Microsoft.Playwright.Helpers;
2627

2728
internal static class ClassUtils

src/Playwright/Helpers/EnumHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2222
* SOFTWARE.
2323
*/
24-
24+
#nullable enable
2525
using System;
2626
using System.Collections.Concurrent;
2727
using System.Collections.Generic;

src/Playwright/Helpers/RouteFallbackOptionsExtensions.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
* SOFTWARE.
2323
*/
2424
#nullable enable
25-
2625
namespace Microsoft.Playwright.Helpers;
2726

2827
internal static class RouteFallbackOptionsExtensions

src/Playwright/Transport/ApiZone.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2222
* SOFTWARE.
2323
*/
24-
24+
#nullable enable
2525
using System.Collections.Generic;
2626
using System.Text.Json.Serialization;
2727
using Microsoft.Playwright.Transport.Protocol;
@@ -31,7 +31,7 @@ namespace Microsoft.Playwright.Transport;
3131
internal class ApiZone
3232
{
3333
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
34-
public string ApiName { get; set; }
34+
public string? ApiName { get; set; }
3535

36-
public List<StackFrame> Frames { get; set; }
36+
public List<StackFrame> Frames { get; set; } = null!;
3737
}

src/Playwright/Transport/ChannelOwner.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2222
* SOFTWARE.
2323
*/
24-
24+
#nullable enable
2525
using System;
2626
using System.Collections.Concurrent;
2727
using System.Collections.Generic;
@@ -39,13 +39,13 @@ internal class ChannelOwner
3939
internal bool _wasCollected;
4040
internal bool _isInternalType;
4141

42-
internal ChannelOwner(ChannelOwner parent, string guid) : this(parent, null, guid)
42+
internal ChannelOwner(ChannelOwner parent, string guid) : this(parent, parent._connection, guid)
4343
{
4444
}
4545

4646
internal ChannelOwner(ChannelOwner parent, Connection connection, string guid)
4747
{
48-
_connection = parent?._connection ?? connection;
48+
_connection = connection;
4949

5050
Guid = guid;
5151
Parent = parent;
@@ -61,20 +61,20 @@ internal ChannelOwner(ChannelOwner parent, Connection connection, string guid)
6161

6262
internal string Guid { get; set; }
6363

64-
internal ChannelOwner Parent { get; set; }
64+
internal ChannelOwner? Parent { get; set; }
6565

6666
internal virtual void OnMessage(string method, JsonElement? serverParams)
6767
{
6868
}
6969

7070
internal void Adopt(ChannelOwner child)
7171
{
72-
child.Parent.Objects.TryRemove(child.Guid, out _);
72+
child.Parent!.Objects.TryRemove(child.Guid, out _);
7373
Objects[child.Guid] = child;
7474
child.Parent = this;
7575
}
7676

77-
internal void DisposeOwner(string reason)
77+
internal void DisposeOwner(string? reason)
7878
{
7979
Parent?.Objects?.TryRemove(Guid, out var _);
8080
_connection?.Objects.TryRemove(Guid, out var _);
@@ -96,7 +96,7 @@ internal void DisposeOwner(string reason)
9696

9797
internal void MarkAsInternalType() => _isInternalType = true;
9898

99-
internal EventHandler<T> UpdateEventHandler<T>(string eventName, EventHandler<T> handlers, EventHandler<T> handler, bool add)
99+
internal EventHandler<T>? UpdateEventHandler<T>(string eventName, EventHandler<T>? handlers, EventHandler<T> handler, bool add)
100100
{
101101
if (add)
102102
{
@@ -124,7 +124,7 @@ private void UpdateEventSubscription(string eventName, bool enabled)
124124
() => _connection.SendMessageToServerAsync(
125125
this,
126126
"updateSubscription",
127-
new Dictionary<string, object>
127+
new Dictionary<string, object?>
128128
{
129129
["event"] = eventName,
130130
["enabled"] = enabled,
@@ -134,12 +134,12 @@ private void UpdateEventSubscription(string eventName, bool enabled)
134134

135135
internal Task<JsonElement?> SendMessageToServerAsync(
136136
string method,
137-
Dictionary<string, object> args = null,
137+
Dictionary<string, object?>? args = null,
138138
bool keepNulls = false)
139139
=> SendMessageToServerAsync<JsonElement?>(method, args, keepNulls);
140140

141141
internal Task<T> SendMessageToServerAsync<T>(
142142
string method,
143-
Dictionary<string, object> args = null,
143+
Dictionary<string, object?>? args = null,
144144
bool keepNulls = false) => _connection.SendMessageToServerAsync<T>(this, method, args, keepNulls);
145145
}

src/Playwright/Transport/Connection.cs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -150,10 +150,7 @@ private async Task<T> InnerSendMessageToServerAsync<T>(
150150

151151
int id = Interlocked.Increment(ref _lastId);
152152
var tcs = new TaskCompletionSource<JsonElement?>(TaskCreationOptions.RunContinuationsAsynchronously);
153-
var callback = new ConnectionCallback
154-
{
155-
TaskCompletionSource = tcs,
156-
};
153+
var callback = new ConnectionCallback(tcs);
157154

158155
_callbacks.TryAdd(id, callback);
159156

@@ -186,21 +183,20 @@ private async Task<T> InnerSendMessageToServerAsync<T>(
186183

187184
if (_tracingCount > 0 && frames.Count > 0 && @object.Guid != "localUtils")
188185
{
189-
LocalUtils.AddStackToTracingNoReply(frames, id);
186+
LocalUtils?.AddStackToTracingNoReply(frames, id);
190187
}
191188

192189
await _queue.EnqueueAsync(() =>
193190
{
194-
return OnMessage(
195-
new MessageRequest
196-
{
197-
Id = id,
198-
Guid = @object == null ? string.Empty : @object.Guid,
199-
Method = method,
200-
Params = sanitizedArgs,
201-
Metadata = metadata,
202-
},
203-
keepNulls);
191+
var message = new Dictionary<string, object>
192+
{
193+
["id"] = id,
194+
["guid"] = @object?.Guid ?? string.Empty,
195+
["method"] = method,
196+
["params"] = sanitizedArgs,
197+
["metadata"] = metadata,
198+
};
199+
return OnMessage(message, keepNulls);
204200
}).ConfigureAwait(false);
205201

206202
var result = await tcs.Task.ConfigureAwait(false);
@@ -276,8 +272,7 @@ internal void Dispatch(PlaywrightServerMessage message)
276272
{
277273
if (message.Method == "__create__")
278274
{
279-
var createObjectInfo = message.Params.Value.ToObject<CreateObjectInfo>(DefaultJsonSerializerOptions);
280-
CreateRemoteObject(message.Guid, createObjectInfo.Type, createObjectInfo.Guid, createObjectInfo.Initializer);
275+
CreateRemoteObject(message.Guid, message.Params.Value.GetProperty("type").ToObject<ChannelOwnerType>(), message.Params.GetString("guid", false)!, message.Params?.GetProperty("initializer"));
281276
return;
282277
}
283278

@@ -584,5 +579,10 @@ private void EnsureApiZoneExists()
584579

585580
internal class ConnectionCallback
586581
{
587-
public TaskCompletionSource<JsonElement?> TaskCompletionSource { get; set; }
582+
public ConnectionCallback(TaskCompletionSource<JsonElement?> taskCompletionSource)
583+
{
584+
TaskCompletionSource = taskCompletionSource;
585+
}
586+
587+
internal TaskCompletionSource<JsonElement?> TaskCompletionSource { get; }
588588
}

0 commit comments

Comments
 (0)