Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions lib/PuppeteerSharp/Bidi/BidiBrowser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -282,12 +282,12 @@ public override async Task SetWindowBoundsAsync(string windowId, WindowBounds wi
{
if (windowBounds.Left.HasValue)
{
parameters.X = (ulong)windowBounds.Left.Value;
parameters.X = windowBounds.Left.Value;
}

if (windowBounds.Top.HasValue)
{
parameters.Y = (ulong)windowBounds.Top.Value;
parameters.Y = windowBounds.Top.Value;
}

if (windowBounds.Width.HasValue)
Expand Down Expand Up @@ -338,7 +338,7 @@ internal static async Task<BidiBrowser> CreateAsync(
{
var capabilityRequest = new CapabilityRequest()
{
AcceptInsecureCertificates = options.AcceptInsecureCerts,
AcceptInsecureCerts = options.AcceptInsecureCerts,
AdditionalCapabilities = { ["webSocketUrl"] = true, },

// Tell the browser not to auto-handle prompts so we can handle them via the Dialog API.
Expand Down
2 changes: 1 addition & 1 deletion lib/PuppeteerSharp/Bidi/BidiElementHandle.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ public override async Task<IFrame> ContentFrameAsync()

if (value?.Type == RemoteValueType.Window && value is WindowProxyRemoteValue windowProxyValue)
{
var contextId = windowProxyValue.Value.Context;
var contextId = windowProxyValue.Value.BrowsingContextId;
return BidiFrame.BidiPage.Frames.FirstOrDefault(frame => frame.Id == contextId);
}

Expand Down
6 changes: 3 additions & 3 deletions lib/PuppeteerSharp/Bidi/BidiFrame.cs
Original file line number Diff line number Diff line change
Expand Up @@ -606,15 +606,15 @@ internal async Task RemoveExposedFunctionAsync(string name)
internal async Task SetFilesAsync(BidiElementHandle element, string[] files)
{
await BrowsingContext.SetFilesAsync(
element.Value.ConvertTo<NodeRemoteValue>().ToSharedReference(),
element.Value.As<NodeRemoteValue>().ToSharedReference(),
files).ConfigureAwait(false);
}

internal async Task<IList<NodeRemoteValue>> LocateNodesAsync(BidiElementHandle element, BidiLocator locator)
{
return await BrowsingContext.LocateNodesAsync(
locator,
[element.Value.ConvertTo<NodeRemoteValue>().ToSharedReference()]).ConfigureAwait(false);
[element.Value.As<NodeRemoteValue>().ToSharedReference()]).ConfigureAwait(false);
}

/// <inheritdoc />
Expand Down Expand Up @@ -981,7 +981,7 @@ private void Initialize()

BrowsingContext.Log += (sender, args) =>
{
if (Id != args.Source.Context)
if (Id != args.Source.BrowsingContextId)
{
return;
}
Expand Down
6 changes: 3 additions & 3 deletions lib/PuppeteerSharp/Bidi/BidiMouse.cs
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,8 @@ public override Task WheelAsync(decimal deltaX, decimal deltaY)
{
_wheelSource.Actions.Add(new WheelScrollAction
{
X = (ulong)_lastMovePoint.X,
Y = (ulong)_lastMovePoint.Y,
X = (long)_lastMovePoint.X,
Y = (long)_lastMovePoint.Y,
DeltaX = (long)deltaX,
DeltaY = (long)deltaY,
});
Expand Down Expand Up @@ -184,7 +184,7 @@ protected override void Dispose(bool disposing)
}
}

private long GetBidiButton(MouseButton optionsButton)
private ulong GetBidiButton(MouseButton optionsButton)
{
return optionsButton switch
{
Expand Down
35 changes: 15 additions & 20 deletions lib/PuppeteerSharp/Bidi/BidiPage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
using WebDriverBiDi.BrowsingContext;
using WebDriverBiDi.Input;
using WebDriverBiDi.Network;
using WebDriverBiDi.Protocol;
using WebDriverBiDi.Script;

namespace PuppeteerSharp.Bidi;
Expand Down Expand Up @@ -215,8 +216,8 @@ public override async Task EmulateTimezoneAsync(string timezoneId)
var commandParameters = new WebDriverBiDi.Emulation.SetTimeZoneOverrideCommandParameters()
{
TimeZone = timezoneId,
Contexts = [BidiMainFrame.BrowsingContext.Id],
};
commandParameters.Contexts.Add(BidiMainFrame.BrowsingContext.Id);

await BidiMainFrame.BrowsingContext.Session.Driver.Emulation.SetTimeZoneOverrideAsync(commandParameters).ConfigureAwait(false);
}
Expand Down Expand Up @@ -246,8 +247,8 @@ public override async Task EmulateLocaleAsync(string locale = null)
var commandParameters = new WebDriverBiDi.Emulation.SetLocaleOverrideCommandParameters()
{
Locale = locale,
Contexts = [BidiMainFrame.BrowsingContext.Id],
};
commandParameters.Contexts.Add(BidiMainFrame.BrowsingContext.Id);

await BidiMainFrame.BrowsingContext.Session.Driver.Emulation.SetLocaleOverrideAsync(commandParameters).ConfigureAwait(false);
}
Expand Down Expand Up @@ -309,7 +310,7 @@ void FileDialogOpenedHandler(object sender, FileDialogOpenedEventArgs e)
return;
}

var element = CreateElementHandleFromSharedReference(e.Element);
var element = CreateElementHandleFromSharedReference(e.Element.ToSharedReference());
var chooser = new FileChooser(element, e.IsMultiple);
fileChooserTcs.TrySetResult(chooser);
}
Expand Down Expand Up @@ -378,8 +379,8 @@ public override async Task SetGeolocationAsync(GeolocationOption options)
var commandParameters = new WebDriverBiDi.Emulation.SetGeolocationOverrideCoordinatesCommandParameters
{
Coordinates = coordinates,
Contexts = [BidiMainFrame.BrowsingContext.Id],
};
commandParameters.Contexts.Add(BidiMainFrame.BrowsingContext.Id);

await BidiMainFrame.BrowsingContext.Session.Driver.Emulation.SetGeolocationOverrideAsync(commandParameters).ConfigureAwait(false);
}
Expand All @@ -390,8 +391,8 @@ public override async Task SetJavaScriptEnabledAsync(bool enabled)
var commandParameters = new WebDriverBiDi.Emulation.SetScriptingEnabledCommandParameters
{
IsScriptingEnabled = enabled,
Contexts = [BidiMainFrame.BrowsingContext.Id],
};
commandParameters.Contexts.Add(BidiMainFrame.BrowsingContext.Id);

await BidiMainFrame.BrowsingContext.Session.Driver.Emulation.SetScriptingEnabledAsync(commandParameters).ConfigureAwait(false);
_isJavaScriptEnabled = enabled;
Expand All @@ -409,10 +410,8 @@ await BidiMainFrame.Client.SendAsync(
/// <inheritdoc />
public override async Task SetCacheEnabledAsync(bool enabled = true)
{
var commandParameters = new SetCacheBehaviorCommandParameters(enabled ? CacheBehavior.Default : CacheBehavior.Bypass)
{
Contexts = [BidiMainFrame.BrowsingContext.Id],
};
var commandParameters = new SetCacheBehaviorCommandParameters(enabled ? CacheBehavior.Default : CacheBehavior.Bypass);
commandParameters.Contexts.Add(BidiMainFrame.BrowsingContext.Id);

await BidiMainFrame.BrowsingContext.Session.Driver.Network.SetCacheBehaviorAsync(commandParameters).ConfigureAwait(false);
}
Expand Down Expand Up @@ -646,10 +645,8 @@ public override Task CaptureHeapSnapshotAsync(HeapSnapshotOptions options)
public override async Task<NewDocumentScriptEvaluation> EvaluateFunctionOnNewDocumentAsync(string pageFunction, params object[] args)
{
var expression = EvaluationExpression(pageFunction, args);
var commandParameters = new WebDriverBiDi.Script.AddPreloadScriptCommandParameters(expression)
{
Contexts = [BidiMainFrame.BrowsingContext.Id],
};
var commandParameters = new WebDriverBiDi.Script.AddPreloadScriptCommandParameters(expression);
commandParameters.Contexts.Add(BidiMainFrame.BrowsingContext.Id);

var result = await BidiMainFrame.BrowsingContext.Session.Driver.Script.AddPreloadScriptAsync(commandParameters).ConfigureAwait(false);
return new NewDocumentScriptEvaluation(result.PreloadScriptId);
Expand Down Expand Up @@ -682,10 +679,8 @@ public override async Task<NewDocumentScriptEvaluation> EvaluateExpressionOnNewD
{
// Wrap the expression in a function so it can be used as a preload script
var functionExpression = $"() => {{{expression}}}";
var commandParameters = new WebDriverBiDi.Script.AddPreloadScriptCommandParameters(functionExpression)
{
Contexts = [BidiMainFrame.BrowsingContext.Id],
};
var commandParameters = new WebDriverBiDi.Script.AddPreloadScriptCommandParameters(functionExpression);
commandParameters.Contexts.Add(BidiMainFrame.BrowsingContext.Id);

var result = await BidiMainFrame.BrowsingContext.Session.Driver.Script.AddPreloadScriptAsync(commandParameters).ConfigureAwait(false);
return new NewDocumentScriptEvaluation(result.PreloadScriptId);
Expand Down Expand Up @@ -906,7 +901,7 @@ win.document.activeElement instanceof win.HTMLFrameElement

if (remoteValue is WindowProxyRemoteValue windowProxyRemoteValue)
{
var frame = Frames.OfType<BidiFrame>().FirstOrDefault(f => f.Id == windowProxyRemoteValue.Value.Context);
var frame = Frames.OfType<BidiFrame>().FirstOrDefault(f => f.Id == windowProxyRemoteValue.Value.BrowsingContextId);
if (frame != null)
{
return frame;
Expand Down Expand Up @@ -965,7 +960,7 @@ await BidiMainFrame.IsolatedRealm.EvaluateExpressionAsync("document.fonts.ready"
.WithTimeout(timeout).ConfigureAwait(false);
}

var pageRanges = new List<object>();
var pageRanges = new List<PageRange>();
if (!string.IsNullOrEmpty(options.PageRanges))
{
foreach (var range in options.PageRanges.Split(','))
Expand Down Expand Up @@ -1233,7 +1228,7 @@ private async Task<string> ToggleInterceptionAsync(
{
if (expected && interception == null)
{
var options = new AddInterceptCommandParameters(phases);
var options = new AddInterceptCommandParameters(phases[0]);

return await BidiMainFrame.BrowsingContext.AddInterceptAsync(options).ConfigureAwait(false);
}
Expand Down
11 changes: 5 additions & 6 deletions lib/PuppeteerSharp/Bidi/Core/BrowsingContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -247,8 +247,7 @@ internal async Task ReloadAsync(bool? ignoreCache = null)

internal async Task<string> AddInterceptAsync(WebDriverBiDi.Network.AddInterceptCommandParameters options)
{
options.BrowsingContextIds ??= new List<string>();
options.BrowsingContextIds.Add(Id);
options.Contexts.Add(Id);
var result = await Session.Driver.Network.AddInterceptAsync(options).ConfigureAwait(false);
return result.InterceptId;
}
Expand All @@ -267,8 +266,8 @@ internal async Task SetUserAgentAsync(string userAgent)
var parameters = new SetUserAgentOverrideCommandParameters
{
UserAgent = userAgent,
Contexts = [Id],
};
parameters.Contexts.Add(Id);
await Session.Driver.Emulation.SetUserAgentOverrideAsync(parameters).ConfigureAwait(false);
}

Expand All @@ -277,8 +276,8 @@ internal async Task SetOfflineModeAsync(bool enabled)
var parameters = new SetNetworkConditionsCommandParameters
{
NetworkConditions = enabled ? new NetworkConditionsOffline() : null,
Contexts = [Id],
};
parameters.Contexts.Add(Id);
await Session.Driver.Emulation.SetNetworkConditionsAsync(parameters).ConfigureAwait(false);
}

Expand All @@ -287,8 +286,8 @@ internal async Task SetScreenOrientationOverrideAsync(ScreenOrientation screenOr
var parameters = new SetScreenOrientationOverrideCommandParameters
{
ScreenOrientation = screenOrientation,
Contexts = [Id],
};
parameters.Contexts.Add(Id);
await Session.Driver.Emulation.SetScreenOrientationOverrideAsync(parameters).ConfigureAwait(false);
}

Expand Down Expand Up @@ -445,7 +444,7 @@ private void Initialize()

Session.LogEntryAdded += (_, args) =>
{
if (args.Source.Context != Id)
if (args.Source.BrowsingContextId != Id)
{
return;
}
Expand Down
10 changes: 2 additions & 8 deletions lib/PuppeteerSharp/Bidi/Core/Request.cs
Original file line number Diff line number Diff line change
Expand Up @@ -187,10 +187,7 @@ internal async Task<byte[]> GetResponseContentAsync()

private async Task<string> FetchPostDataInternalAsync()
{
var commandParams = new GetDataCommandParameters(Id)
{
DataType = DataType.Request,
};
var commandParams = new GetDataCommandParameters(Id, DataType.Request);

var result = await Session.Driver.Network.GetDataAsync(commandParams).ConfigureAwait(false);

Expand All @@ -207,10 +204,7 @@ private async Task<byte[]> GetResponseContentInternalAsync()
{
try
{
var commandParams = new GetDataCommandParameters(Id)
{
DataType = DataType.Response,
};
var commandParams = new GetDataCommandParameters(Id, DataType.Response);

var result = await Session.Driver.Network.GetDataAsync(commandParams).ConfigureAwait(false);
return result.Bytes.ValueAsByteArray;
Expand Down
10 changes: 4 additions & 6 deletions lib/PuppeteerSharp/Bidi/ExposableFunction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -164,11 +164,9 @@ private async Task InitializeAsync()
// contexts for addPreloadScript (BiDi requires top-level contexts).
if (!_isolate)
{
var addPreloadParams = new AddPreloadScriptCommandParameters(functionDeclaration)
{
Arguments = [channelValue],
Contexts = [_frame.BrowsingContext.Id],
};
var addPreloadParams = new AddPreloadScriptCommandParameters(functionDeclaration);
addPreloadParams.Arguments.Add(channelValue);
addPreloadParams.Contexts.Add(_frame.BrowsingContext.Id);

var scriptResult = await Connection.Script.AddPreloadScriptAsync(addPreloadParams).ConfigureAwait(false);
_scripts.Add((_frame, scriptResult.PreloadScriptId));
Expand Down Expand Up @@ -402,7 +400,7 @@ private object ConvertArgument(object arg, Type targetType)

private BidiRealm GetRealm(Source source)
{
var frame = FindFrame(source.Context);
var frame = FindFrame(source.BrowsingContextId);
if (frame == null)
{
return null;
Expand Down
22 changes: 12 additions & 10 deletions lib/PuppeteerSharp/Bidi/PuppeteerConnection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#if !CDP_ONLY

using System;
using System.Buffers;
using System.Threading;
using System.Threading.Tasks;
using PuppeteerSharp.Transport;
Expand Down Expand Up @@ -55,34 +56,33 @@ public PuppeteerConnection(IConnectionTransport transport)
public override bool IsActive => _isActive;

/// <inheritdoc/>
public override ConnectionType ConnectionType => ConnectionType.WebSocket;
public override ConnectionKind ConnectionKind => ConnectionKind.WebSocket;

/// <inheritdoc/>
public override Task StartAsync(string connectionString, CancellationToken cancellationToken = default)
protected override Task StartConnectionAsync(CancellationToken cancellationToken = default)
{
// The transport is already connected (it was created by the TransportFactory)
// We just need to mark ourselves as active and set the connection string
ConnectionString = connectionString;
_isActive = true;
return Task.CompletedTask;
}

/// <inheritdoc/>
public override Task StopAsync(CancellationToken cancellationToken = default)
protected override Task StopConnectionAsync(CancellationToken cancellationToken = default)
{
_transport.MessageReceived -= OnTransportMessageReceived;
_transport.Closed -= OnTransportClosed;
_transport.StopReading();
_transport.Dispose();
ConnectionString = string.Empty;
_isActive = false;
return Task.CompletedTask;
}

/// <inheritdoc/>
public override Task SendDataAsync(byte[] data, CancellationToken cancellationToken = default)
protected override Task SendConnectionDataAsync(ReadOnlyMemory<byte> messageBuffer, CancellationToken cancellationToken = default)
{
return _transport.SendAsync(data);
// IConnectionTransport.SendAsync takes a byte[], so the buffer has to be copied. The base
// SendDataAsync has already checked that the connection is active, raised the trace log
// message, and taken the send semaphore that makes this call atomic.
return _transport.SendAsync(messageBuffer.ToArray());
}

/// <inheritdoc/>
Expand All @@ -108,7 +108,9 @@ private async void OnTransportMessageReceived(object sender, MessageReceivedEven
{
try
{
await InvocableConnectionDataReceivedObservableEvent.InvokeNotifyObserversAsync(new ConnectionDataReceivedEventArgs(e.Message)).ConfigureAwait(false);
using var messageBuffer = new MessageBuffer();
messageBuffer.Append(e.Message);
await this.NotifyDataReceivedObserverAsync(messageBuffer).ConfigureAwait(false);
}
catch
{
Expand Down
2 changes: 1 addition & 1 deletion lib/PuppeteerSharp/Bidi/WindowRealm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ private void OnWindowRealmCreated(RealmCreatedEventArgs args)
private void OnDedicatedRealmCreated(RealmCreatedEventArgs args)
{
if (args.Type != RealmType.Window ||
args.As<WindowRealmInfo>().BrowsingContext != Context.Id ||
args.As<WindowRealmInfo>().BrowsingContextId != Context.Id ||
args.As<WindowRealmInfo>().Sandbox != _sandbox)
{
return;
Expand Down
8 changes: 4 additions & 4 deletions lib/PuppeteerSharp/PuppeteerSharp.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,12 @@
</PackageReference>
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
<PackageReference Include="ReactiveExtensionsSharp" Version="0.3.0" />
<PackageReference Include="WebDriverBiDi" Version="0.0.54" Condition=" !$(DefineConstants.Contains('CDP_ONLY')) " />
<PackageReference Include="WebDriverBiDi" Version="0.0.60" Condition=" !$(DefineConstants.Contains('CDP_ONLY')) " />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="10.0.7" />
<PackageReference Include="System.Text.Json" Version="10.0.7" />
<PackageReference Include="System.Threading.Channels" Version="10.0.7" />
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="10.0.11" />
<PackageReference Include="System.Text.Json" Version="10.0.11" />
<PackageReference Include="System.Threading.Channels" Version="10.0.11" />
</ItemGroup>
<ItemGroup>
<AdditionalFiles Include="..\stylecop.json" Link="stylecop.json" />
Expand Down
Loading