/// <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));
        }
Пример #2
0
        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);
        }
Пример #3
0
        /// <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);
        }