internal static async Task <IBrowser> ConnectAsync(IBrowserApp app, ConnectOptions options) { var transport = await BrowserHelper.CreateTransportAsync(options).ConfigureAwait(false); var connection = new ChromiumConnection(transport); var response = await connection.RootSession.SendAsync(new TargetGetBrowserContextsRequest()).ConfigureAwait(false); var browser = new ChromiumBrowser(app, connection, response.BrowserContextIds); await connection.RootSession.SendAsync(new TargetSetDiscoverTargetsRequest { Discover = true }).ConfigureAwait(false); await browser.WaitForTargetAsync(t => t.Type == TargetType.Page).ConfigureAwait(false); return(browser); }
private ChromiumBrowser(IBrowserApp app, ChromiumConnection connection, string[] browserContextIds) { _app = app; _connection = connection; _session = connection.RootSession; DefaultContext = new BrowserContext(new ChromiumBrowserContext(connection.RootSession, this)); _contexts = browserContextIds.ToDictionary( contextId => contextId, contextId => (IBrowserContext) new BrowserContext(new ChromiumBrowserContext(connection.RootSession, this, contextId, null))); _session.MessageReceived += Session_MessageReceived; _connection.Disconnected += (sender, e) => Disconnected?.Invoke(this, EventArgs.Empty); }