/// <inheritdoc cref="IBrowserContextDelegate.NewPageAsync"/> public async Task <IPage> NewPageAsync() { var response = await _connection.SendAsync(new TargetNewPageRequest { BrowserContextId = _browserContextId }).ConfigureAwait(false); var target = _browser.TargetsMap[response.TargetId]; return(await target.GetPageAsync().ConfigureAwait(false)); }
internal static async Task <IBrowser> ConnectAsync(IBrowserApp app, ConnectOptions options) { var transport = await BrowserHelper.CreateTransportAsync(options).ConfigureAwait(false); var connection = new FirefoxConnection(transport); var response = await connection.SendAsync(new TargetGetBrowserContextsRequest()).ConfigureAwait(false); var browser = new FirefoxBrowser(app, connection, response.BrowserContextIds); await connection.SendAsync(new TargetEnableRequest()).ConfigureAwait(false); await browser.WaitForTargetAsync(t => t.Type == TargetType.Page).ConfigureAwait(false); return(browser); }
/// <inheritdoc cref="IBrowser.CloseAsync"/> public async Task CloseAsync() { var tsc = new TaskCompletionSource <bool>(); void EventHandler(object sender, EventArgs e) { tsc.TrySetResult(true); _connection.Disconnected -= EventHandler; } _connection.Disconnected += EventHandler; await _connection.SendAsync(new BrowserCloseRequest()).ConfigureAwait(false); await tsc.Task.ConfigureAwait(false); }