Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[dotnet][bidi] Add optional PromptUnload parameter when closing BrowsingContext and compiler helps #15254

Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,7 @@ public class BrowsingContextModule(Broker broker) : Module(broker)
{
public async Task<BrowsingContext> CreateAsync(ContextType type, CreateOptions? options = null)
{
var @params = new CreateCommandParameters(type);

if (options is not null)
{
@params.ReferenceContext = options.ReferenceContext;
@params.Background = options.Background;
@params.UserContext = options.UserContext;
}
var @params = new CreateCommandParameters(type, options?.ReferenceContext, options?.Background, options?.UserContext);

var createResult = await Broker.ExecuteCommandAsync<CreateCommand, CreateResult>(new CreateCommand(@params), options).ConfigureAwait(false);

Expand All @@ -46,12 +39,7 @@ public async Task<BrowsingContext> CreateAsync(ContextType type, CreateOptions?

public async Task<NavigateResult> NavigateAsync(BrowsingContext context, string url, NavigateOptions? options = null)
{
var @params = new NavigateCommandParameters(context, url);

if (options is not null)
{
@params.Wait = options.Wait;
}
var @params = new NavigateCommandParameters(context, url, options?.Wait);

return await Broker.ExecuteCommandAsync<NavigateCommand, NavigateResult>(new NavigateCommand(@params), options).ConfigureAwait(false);
}
Expand All @@ -65,35 +53,21 @@ public async Task ActivateAsync(BrowsingContext context, ActivateOptions? option

public async Task<LocateNodesResult> LocateNodesAsync(BrowsingContext context, Locator locator, LocateNodesOptions? options = null)
{
var @params = new LocateNodesCommandParameters(context, locator);

if (options is not null)
{
@params.MaxNodeCount = options.MaxNodeCount;
@params.SerializationOptions = options.SerializationOptions;
@params.StartNodes = options.StartNodes;
}
var @params = new LocateNodesCommandParameters(context, locator, options?.MaxNodeCount, options?.SerializationOptions, options?.StartNodes);

return await Broker.ExecuteCommandAsync<LocateNodesCommand, LocateNodesResult>(new LocateNodesCommand(@params), options).ConfigureAwait(false);
}

public async Task<CaptureScreenshotResult> CaptureScreenshotAsync(BrowsingContext context, CaptureScreenshotOptions? options = null)
{
var @params = new CaptureScreenshotCommandParameters(context);

if (options is not null)
{
@params.Origin = options.Origin;
@params.Format = options.Format;
@params.Clip = options.Clip;
}
var @params = new CaptureScreenshotCommandParameters(context, options?.Origin, options?.Format, options?.Clip);

return await Broker.ExecuteCommandAsync<CaptureScreenshotCommand, CaptureScreenshotResult>(new CaptureScreenshotCommand(@params), options).ConfigureAwait(false);
}

public async Task CloseAsync(BrowsingContext context, CloseOptions? options = null)
{
var @params = new CloseCommandParameters(context);
var @params = new CloseCommandParameters(context, options?.PromptUnload);

await Broker.ExecuteCommandAsync(new CloseCommand(@params), options).ConfigureAwait(false);
}
Expand All @@ -107,39 +81,21 @@ public async Task<TraverseHistoryResult> TraverseHistoryAsync(BrowsingContext co

public async Task<NavigateResult> ReloadAsync(BrowsingContext context, ReloadOptions? options = null)
{
var @params = new ReloadCommandParameters(context);

if (options is not null)
{
@params.IgnoreCache = options.IgnoreCache;
@params.Wait = options.Wait;
}
var @params = new ReloadCommandParameters(context, options?.IgnoreCache, options?.Wait);

return await Broker.ExecuteCommandAsync<ReloadCommand, NavigateResult>(new ReloadCommand(@params), options).ConfigureAwait(false);
}

public async Task SetViewportAsync(BrowsingContext context, SetViewportOptions? options = null)
{
var @params = new SetViewportCommandParameters(context);

if (options is not null)
{
@params.Viewport = options.Viewport;
@params.DevicePixelRatio = options?.DevicePixelRatio;
}
var @params = new SetViewportCommandParameters(context, options?.Viewport, options?.DevicePixelRatio);

await Broker.ExecuteCommandAsync(new SetViewportCommand(@params), options).ConfigureAwait(false);
}

public async Task<IReadOnlyList<BrowsingContextInfo>> GetTreeAsync(GetTreeOptions? options = null)
{
var @params = new GetTreeCommandParameters();

if (options is not null)
{
@params.MaxDepth = options.MaxDepth;
@params.Root = options.Root;
}
var @params = new GetTreeCommandParameters(options?.MaxDepth, options?.Root);

var getTreeResult = await Broker.ExecuteCommandAsync<GetTreeCommand, GetTreeResult>(new GetTreeCommand(@params), options).ConfigureAwait(false);

Expand All @@ -148,31 +104,14 @@ public async Task<IReadOnlyList<BrowsingContextInfo>> GetTreeAsync(GetTreeOption

public async Task<PrintResult> PrintAsync(BrowsingContext context, PrintOptions? options = null)
{
var @params = new PrintCommandParameters(context);

if (options is not null)
{
@params.Background = options.Background;
@params.Margin = options.Margin;
@params.Orientation = options.Orientation;
@params.Page = options.Page;
@params.PageRanges = options.PageRanges;
@params.Scale = options.Scale;
@params.ShrinkToFit = options.ShrinkToFit;
}
var @params = new PrintCommandParameters(context, options?.Background, options?.Margin, options?.Orientation, options?.Page, options?.PageRanges, options?.Scale, options?.ShrinkToFit);

return await Broker.ExecuteCommandAsync<PrintCommand, PrintResult>(new PrintCommand(@params), options).ConfigureAwait(false);
}

public async Task HandleUserPromptAsync(BrowsingContext context, HandleUserPromptOptions? options = null)
{
var @params = new HandleUserPromptCommandParameters(context);

if (options is not null)
{
@params.Accept = options.Accept;
@params.UserText = options.UserText;
}
var @params = new HandleUserPromptCommandParameters(context, options?.Accept, options?.UserText);

await Broker.ExecuteCommandAsync(new HandleUserPromptCommand(@params), options).ConfigureAwait(false);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,7 @@ namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext;
internal class CaptureScreenshotCommand(CaptureScreenshotCommandParameters @params)
: Command<CaptureScreenshotCommandParameters>(@params, "browsingContext.captureScreenshot");

internal record CaptureScreenshotCommandParameters(BrowsingContext Context) : CommandParameters
{
public Origin? Origin { get; set; }

public ImageFormat? Format { get; set; }

public ClipRectangle? Clip { get; set; }
}
internal record CaptureScreenshotCommandParameters(BrowsingContext Context, Origin? Origin, ImageFormat? Format, ClipRectangle? Clip) : CommandParameters;

public record CaptureScreenshotOptions : CommandOptions
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext;
internal class CloseCommand(CloseCommandParameters @params)
: Command<CloseCommandParameters>(@params, "browsingContext.close");

internal record CloseCommandParameters(BrowsingContext Context) : CommandParameters;
internal record CloseCommandParameters(BrowsingContext Context, bool? PromptUnload) : CommandParameters;

public record CloseOptions : CommandOptions;
public record CloseOptions : CommandOptions
{
public bool? PromptUnload { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,7 @@ namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext;
internal class CreateCommand(CreateCommandParameters @params)
: Command<CreateCommandParameters>(@params, "browsingContext.create");

internal record CreateCommandParameters(ContextType Type) : CommandParameters
{
public BrowsingContext? ReferenceContext { get; set; }

public bool? Background { get; set; }

public Browser.UserContext? UserContext { get; set; }
}
internal record CreateCommandParameters(ContextType Type, BrowsingContext? ReferenceContext, bool? Background, Browser.UserContext? UserContext) : CommandParameters;

public record CreateOptions : CommandOptions
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,7 @@ namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext;
internal class GetTreeCommand(GetTreeCommandParameters @params)
: Command<GetTreeCommandParameters>(@params, "browsingContext.getTree");

internal record GetTreeCommandParameters : CommandParameters
{
public long? MaxDepth { get; set; }

public BrowsingContext? Root { get; set; }
}
internal record GetTreeCommandParameters(long? MaxDepth, BrowsingContext? Root) : CommandParameters;

public record GetTreeOptions : CommandOptions
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,7 @@ namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext;
class HandleUserPromptCommand(HandleUserPromptCommandParameters @params)
: Command<HandleUserPromptCommandParameters>(@params, "browsingContext.handleUserPrompt");

internal record HandleUserPromptCommandParameters(BrowsingContext Context) : CommandParameters
{
public bool? Accept { get; set; }

public string? UserText { get; set; }
}
internal record HandleUserPromptCommandParameters(BrowsingContext Context, bool? Accept, string? UserText) : CommandParameters;

public record HandleUserPromptOptions : CommandOptions
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,7 @@ namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext;
internal class LocateNodesCommand(LocateNodesCommandParameters @params)
: Command<LocateNodesCommandParameters>(@params, "browsingContext.locateNodes");

internal record LocateNodesCommandParameters(BrowsingContext Context, Locator Locator) : CommandParameters
{
public long? MaxNodeCount { get; set; }

public Script.SerializationOptions? SerializationOptions { get; set; }

public IEnumerable<Script.ISharedReference>? StartNodes { get; set; }
}
internal record LocateNodesCommandParameters(BrowsingContext Context, Locator Locator, long? MaxNodeCount, Script.SerializationOptions? SerializationOptions, IEnumerable<Script.ISharedReference>? StartNodes) : CommandParameters;

public record LocateNodesOptions : CommandOptions
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,7 @@ namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext;
internal class NavigateCommand(NavigateCommandParameters @params)
: Command<NavigateCommandParameters>(@params, "browsingContext.navigate");

internal record NavigateCommandParameters(BrowsingContext Context, string Url) : CommandParameters
{
public ReadinessState? Wait { get; set; }
}
internal record NavigateCommandParameters(BrowsingContext Context, string Url, ReadinessState? Wait) : CommandParameters;

public record NavigateOptions : CommandOptions
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,22 +28,7 @@ namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext;
internal class PrintCommand(PrintCommandParameters @params)
: Command<PrintCommandParameters>(@params, "browsingContext.print");

internal record PrintCommandParameters(BrowsingContext Context) : CommandParameters
{
public bool? Background { get; set; }

public PrintMargin? Margin { get; set; }

public PrintOrientation? Orientation { get; set; }

public PrintPage? Page { get; set; }

public IEnumerable<PrintPageRange>? PageRanges { get; set; }

public double? Scale { get; set; }

public bool? ShrinkToFit { get; set; }
}
internal record PrintCommandParameters(BrowsingContext Context, bool? Background, PrintMargin? Margin, PrintOrientation? Orientation, PrintPage? Page, IEnumerable<PrintPageRange>? PageRanges, double? Scale, bool? ShrinkToFit) : CommandParameters;

public record PrintOptions : CommandOptions
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,7 @@ namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext;
internal class ReloadCommand(ReloadCommandParameters @params)
: Command<ReloadCommandParameters>(@params, "browsingContext.reload");

internal record ReloadCommandParameters(BrowsingContext Context) : CommandParameters
{
public bool? IgnoreCache { get; set; }

public ReadinessState? Wait { get; set; }
}
internal record ReloadCommandParameters(BrowsingContext Context, bool? IgnoreCache, ReadinessState? Wait) : CommandParameters;

public record ReloadOptions : CommandOptions
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,7 @@ namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext;
internal class SetViewportCommand(SetViewportCommandParameters @params)
: Command<SetViewportCommandParameters>(@params, "browsingContext.setViewport");

internal record SetViewportCommandParameters(BrowsingContext Context) : CommandParameters
{
public Viewport? Viewport { get; set; }

public double? DevicePixelRatio { get; set; }
}
internal record SetViewportCommandParameters(BrowsingContext Context, Viewport? Viewport, double? DevicePixelRatio) : CommandParameters;

public record SetViewportOptions : CommandOptions
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,7 @@ namespace OpenQA.Selenium.BiDi.Modules.Network;
internal class AddInterceptCommand(AddInterceptCommandParameters @params)
: Command<AddInterceptCommandParameters>(@params, "network.addIntercept");

internal record AddInterceptCommandParameters(IEnumerable<InterceptPhase> Phases) : CommandParameters
{
public IEnumerable<BrowsingContext.BrowsingContext>? Contexts { get; set; }

public IEnumerable<UrlPattern>? UrlPatterns { get; set; }
}
internal record AddInterceptCommandParameters(IEnumerable<InterceptPhase> Phases, IEnumerable<BrowsingContext.BrowsingContext>? Contexts, IEnumerable<UrlPattern>? UrlPatterns) : CommandParameters;

public record AddInterceptOptions : CommandOptions
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,18 +27,7 @@ namespace OpenQA.Selenium.BiDi.Modules.Network;
internal class ContinueRequestCommand(ContinueRequestCommandParameters @params)
: Command<ContinueRequestCommandParameters>(@params, "network.continueRequest");

internal record ContinueRequestCommandParameters(Request Request) : CommandParameters
{
public BytesValue? Body { get; set; }

public IEnumerable<CookieHeader>? Cookies { get; set; }

public IEnumerable<Header>? Headers { get; set; }

public string? Method { get; set; }

public string? Url { get; set; }
}
internal record ContinueRequestCommandParameters(Request Request, BytesValue? Body, IEnumerable<CookieHeader>? Cookies, IEnumerable<Header>? Headers, string? Method, string? Url) : CommandParameters;

public record ContinueRequestOptions : CommandOptions
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,18 +27,7 @@ namespace OpenQA.Selenium.BiDi.Modules.Network;
internal class ContinueResponseCommand(ContinueResponseCommandParameters @params)
: Command<ContinueResponseCommandParameters>(@params, "network.continueResponse");

internal record ContinueResponseCommandParameters(Request Request) : CommandParameters
{
public IEnumerable<SetCookieHeader>? Cookies { get; set; }

public IEnumerable<AuthCredentials>? Credentials { get; set; }

public IEnumerable<Header>? Headers { get; set; }

public string? ReasonPhrase { get; set; }

public long? StatusCode { get; set; }
}
internal record ContinueResponseCommandParameters(Request Request, IEnumerable<SetCookieHeader>? Cookies, IEnumerable<AuthCredentials>? Credentials, IEnumerable<Header>? Headers, string? ReasonPhrase, long? StatusCode) : CommandParameters;

public record ContinueResponseOptions : CommandOptions
{
Expand Down
Loading
Loading