Skip to content

Commit

Permalink
v1.4 Update drivers (microsoft#855)
Browse files Browse the repository at this point in the history
* v1.4 Update drivers

* Fix evaluate

* Fix a few tests

* Fix waiter

* Improve close

* Reorder event
  • Loading branch information
kblok committed Sep 16, 2020
1 parent 5c20e77 commit 2fe80d4
Show file tree
Hide file tree
Showing 9 changed files with 64 additions and 20 deletions.
19 changes: 10 additions & 9 deletions src/PlaywrightSharp.Tests/Page/Network/NetworkEventsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -91,15 +91,16 @@ public async Task PageEventsRequestFailed()
[Fact(Timeout = PlaywrightSharp.Playwright.DefaultTimeout)]
public async Task PageEventsRequestFinished()
{
var requests = new List<IRequest>();
Page.RequestFinished += (sender, e) => requests.Add(e.Request);
await Page.GoToAsync(TestConstants.EmptyPage);
Assert.Single(requests);
Assert.Equal(TestConstants.EmptyPage, requests[0].Url);
Assert.NotNull(await requests[0].GetResponseAsync());
Assert.Equal(HttpMethod.Get, requests[0].Method);
Assert.Equal(Page.MainFrame, requests[0].Frame);
Assert.Equal(TestConstants.EmptyPage, requests[0].Frame.Url);
var (_, response) = await TaskUtils.WhenAll(
Page.WaitForEvent<RequestEventArgs>(PageEvent.RequestFinished),
Page.GoToAsync(TestConstants.EmptyPage));

var request = response.Request;
Assert.Equal(TestConstants.EmptyPage, request.Url);
Assert.NotNull(await request.GetResponseAsync());
Assert.Equal(HttpMethod.Get, request.Method);
Assert.Equal(Page.MainFrame, request.Frame);
Assert.Equal(TestConstants.EmptyPage, request.Frame.Url);
}

///<playwright-file>network.spec.js</playwright-file>
Expand Down
4 changes: 2 additions & 2 deletions src/PlaywrightSharp/BrowserContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ public Task CloseAsync()
if (!_isClosedOrClosing)
{
_isClosedOrClosing = true;
return _channel.CloseAsync();
return Task.WhenAny(_closeTcs.Task, _channel.CloseAsync());
}

return _closeTcs.Task;
Expand Down Expand Up @@ -375,9 +375,9 @@ private void Channel_Closed(object sender, EventArgs e)
Browser.BrowserContextsList.Remove(this);
}

Closed?.Invoke(this, EventArgs.Empty);
_closeTcs.TrySetResult(true);
RejectPendingOperations();
Closed?.Invoke(this, EventArgs.Empty);
_scope.Dispose();
}

Expand Down
6 changes: 3 additions & 3 deletions src/PlaywrightSharp/Drivers/browsers.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@
"browsers": [
{
"name": "chromium",
"revision": "792639.1",
"revision": "799411",
"download": true
},
{
"name": "firefox",
"revision": "1169",
"revision": "1171",
"download": true
},
{
"name": "webkit",
"revision": "1341",
"revision": "1343",
"download": true
}
]
Expand Down
Binary file modified src/PlaywrightSharp/Drivers/playwright-driver-linux
Binary file not shown.
Binary file modified src/PlaywrightSharp/Drivers/playwright-driver-macos
Binary file not shown.
Binary file modified src/PlaywrightSharp/Drivers/playwright-driver-win.exe
Binary file not shown.
2 changes: 1 addition & 1 deletion src/PlaywrightSharp/Frame.cs
Original file line number Diff line number Diff line change
Expand Up @@ -691,7 +691,7 @@ private Waiter SetupNavigationWaiter(int? timeout)
waiter.RejectOnEvent<FrameEventArgs>(
Page,
"FrameDetached",
new NavigationException("Navigation failed because page was closed!"),
new NavigationException("Navigating frame was detached!"),
e => e.Frame == this);
timeout ??= Page?.DefaultNavigationTimeout ?? Playwright.DefaultTimeout;
waiter.RejectOnTimeout(timeout, $"Timeout {timeout}ms exceeded.");
Expand Down
6 changes: 6 additions & 0 deletions src/PlaywrightSharp/PageEvent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,12 @@ public enum PageEvent
/// <see cref="IPage.Request"/>
Request,

/// <summary>
/// Request event
/// </summary>
/// <see cref="IPage.RequestFinished"/>
RequestFinished,

/// <summary>
/// FileChooser event.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,38 @@ public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions
return;
}

if (value is IDictionary)
if (value is IDictionary dictionary && dictionary.Keys.OfType<string>().Any())
{
JsonSerializer.Serialize(writer, value);
writer.WriteStartObject();
writer.WritePropertyName("o");
writer.WriteStartArray();

_visited.Add(value);
foreach (object key in dictionary.Keys)
{
writer.WriteStartObject();
object obj = dictionary[key];
writer.WriteString("k", key.ToString());
writer.WritePropertyName("v");

if (obj == null)
{
writer.WriteStartObject();
writer.WriteString("v", "null");
writer.WriteEndObject();
}
else
{
JsonSerializer.Serialize(writer, obj, options);
}

writer.WriteEndObject();
}

_visited.Remove(value);

writer.WriteEndArray();
writer.WriteEndObject();
return;
}

Expand Down Expand Up @@ -276,14 +305,14 @@ private static object ParseEvaluateResult(JsonElement result, Type t, JsonSerial
dicResult[kv.K] = kv.V.ToObject(type, serializerOptions);
}

var defaultConverter = JsonExtensions.GetNewDefaultSerializerOptions(false);
string serialized = JsonSerializer.Serialize(dicResult, defaultConverter);

if (typeof(T) == typeof(ExpandoObject) || typeof(T) == typeof(object))
{
return dynamicResult;
}

var defaultConverter = JsonExtensions.GetNewDefaultSerializerOptions(false);
string serialized = JsonSerializer.Serialize(dicResult, defaultConverter);

return JsonSerializer.Deserialize<T>(serialized, defaultConverter);
}

Expand Down Expand Up @@ -382,6 +411,14 @@ private static Type ValueKindToType(JsonElement element)
{
return typeof(decimal);
}

if (
element.ValueKind == JsonValueKind.Object &&
element.TryGetProperty("v", out var number) &&
(number.ToString() == "Infinity" || number.ToString() == "-Infinity" || number.ToString() == "-0" || number.ToString() == "NaN"))
{
return typeof(double);
}
}

return element.ValueKind switch
Expand Down

0 comments on commit 2fe80d4

Please sign in to comment.