internal Browser(IChannelOwner parent, string guid, BrowserInitializer initializer) : base(parent, guid) { Channel = new Microsoft.Playwright.Transport.Channels.BrowserChannel(guid, parent.Connection, this); IsConnected = true; Channel.Closed += (_, _) => DidClose(); _initializer = initializer; }
internal Browser(IChannelOwner parent, string guid, BrowserInitializer initializer) : base(parent, guid) { Channel = new BrowserChannel(guid, parent.Connection, this); IsConnected = true; Channel.Closed += (sender, e) => DidClose(); _initializer = initializer; }
internal CDPSession(IChannelOwner parent, string guid) : base(parent, guid) { _connection = parent.Connection; _channel = new CDPSessionChannel(guid, parent.Connection, this); _channel.CDPEvent += (sender, e) => MessageReceived?.Invoke(this, e); }
public JsonPipe(IChannelOwner parent, string guid, JsonPipeInitializer initializer) : base(parent, guid) { _channel = new(guid, parent.Connection, this); _initializer = initializer; _channel.Closed += (_, e) => Closed.Invoke(this, e); _channel.Message += (_, e) => Message.Invoke(this, e); }
internal void OnObjectCreated(string guid, IChannelOwner result) { Objects.TryAdd(guid, result); if (_waitingForObject.TryRemove(guid, out var callback)) { callback.TrySetResult(result); } }
internal Response(IChannelOwner parent, string guid, ResponseInitializer initializer) : base(parent, guid) { _channel = new(guid, parent.Connection, this); _initializer = initializer; _initializer.Request.Timing = _initializer.Timing; _finishedTask = new(); _headers = new RawHeaders(_initializer.Headers.ConvertAll(x => new NameValueEntry(x.Name, x.Value)).ToArray()); }
internal Playwright(IChannelOwner parent, string guid, PlaywrightInitializer initializer, ILoggerFactory loggerFactory) : base(parent, guid) { _connection = parent.Connection; _initializer = initializer; _channel = new PlaywrightChannel(guid, parent.Connection, this); _loggerFactory = loggerFactory; _ = (Selectors as Microsoft.Playwright.Selectors).AddChannelAsync(initializer.Selectors.Object); }
internal ChannelOwnerBase(IChannelOwner parent, Connection connection, string guid) { _connection = parent?.Connection ?? connection; Guid = guid; Parent = parent; _connection.Objects[guid] = this; if (Parent != null) { Parent.Objects[guid] = this; } }
internal Response(IChannelOwner parent, string guid, ResponseInitializer initializer) : base(parent, guid) { _channel = new ResponseChannel(guid, parent.Connection, this); _initializer = initializer; if (initializer.Headers != null) { foreach (var kv in initializer.Headers) { _headers[kv.Name] = kv.Value; } } }
internal WebSocket(IChannelOwner parent, string guid, WebSocketInitializer initializer) : base(parent, guid) { _channel = new(guid, parent.Connection, this); _initializer = initializer; _channel.Close += (_, _) => { IsClosed = true; Close?.Invoke(this, this); }; _channel.FrameReceived += (_, e) => FrameReceived?.Invoke(this, e); _channel.FrameSent += (_, e) => FrameSent?.Invoke(this, e); _channel.SocketError += (_, e) => SocketError?.Invoke(this, e); }
internal Playwright(IChannelOwner parent, string guid, PlaywrightInitializer initializer, ILoggerFactory loggerFactory) : base(parent, guid) { _connection = parent.Connection; _initializer = initializer; _channel = new PlaywrightChannel(guid, parent.Connection, this); _loggerFactory = loggerFactory; foreach (var entry in initializer.DeviceDescriptors) { _devices[entry.Name] = entry.Descriptor; } _ = Selectors.AddChannelAsync(initializer.Selectors.Object); }
internal Request(IChannelOwner parent, string guid, RequestInitializer initializer) : base(parent, guid) { // TODO: Consider using a mapper between RequestInitiliazer and this object _channel = new(guid, parent.Connection, this); _initializer = initializer; RedirectedFrom = _initializer.RedirectedFrom; PostDataBuffer = _initializer.PostData; Timing = new(); if (RedirectedFrom != null) { _initializer.RedirectedFrom.RedirectedTo = this; } _headers = new RawHeaders(initializer.Headers.ConvertAll(x => new NameValueEntry(x.Name, x.Value)).ToArray()); }
internal ChromiumBrowserContext(IChannelOwner parent, string guid, BrowserContextInitializer initializer) : base(parent, guid, initializer) { if (initializer.CrBackgroundPages != null) { foreach (var pageChannel in initializer.CrBackgroundPages) { var page = ((PageChannel)pageChannel).Object; _crBackgroundPages.Add(page); page.BrowserContext = this; BackgroundPage?.Invoke(this, new PageEventArgs { Page = page }); } } Channel.BackgroundPage += (sender, e) => { var page = e.PageChannel.Object; page.BrowserContext = this; _crBackgroundPages.Add(page); BackgroundPage?.Invoke(this, new PageEventArgs { Page = page }); }; if (initializer.CrServiceWorkers != null) { foreach (var workerChannel in initializer.CrServiceWorkers) { var worker = ((WorkerChannel)workerChannel).Object; ServiceWorkersList.Add(worker); worker.BrowserContext = this; ServiceWorker?.Invoke(this, new WorkerEventArgs(worker)); } } Channel.ServiceWorker += (sender, e) => { var worker = e.WorkerChannel.Object; ServiceWorkersList.Add(worker); worker.BrowserContext = this; ServiceWorker?.Invoke(this, new WorkerEventArgs(worker)); }; }
public Worker(IChannelOwner parent, string guid, WorkerInitializer initializer) : base(parent, guid) { _channel = new WorkerChannel(guid, parent.Connection, this); _initializer = initializer; _channel.Closed += (sender, e) => { if (Page != null) { Page.WorkersList.Remove(this); } if (BrowserContext != null) { BrowserContext.ServiceWorkersList.Remove(this); } Close?.Invoke(this, EventArgs.Empty); }; }
internal Request(IChannelOwner parent, string guid, RequestInitializer initializer) : base(parent, guid) { _channel = new RequestChannel(guid, parent.Connection, this); _initializer = initializer; RedirectedFrom = _initializer.RedirectedFrom?.Object; PostDataBuffer = _initializer.PostData != null?Convert.FromBase64String(_initializer.PostData) : null; if (RedirectedFrom != null) { _initializer.RedirectedFrom.Object.RedirectedTo = this; } if (initializer.Headers != null) { foreach (var kv in initializer.Headers) { Headers[kv.Name] = kv.Value; } } }
internal Frame(IChannelOwner parent, string guid, FrameInitializer initializer) : base(parent, guid) { _channel = new FrameChannel(guid, parent.Connection, this); _initializer = initializer; Url = _initializer.Url; Name = _initializer.Name; ParentFrame = _initializer.ParentFrame; _loadStates = initializer.LoadStates; _channel.LoadState += (sender, e) => { lock (_loadStates) { if (e.Add.HasValue) { _loadStates.Add(e.Add.Value); LoadState?.Invoke(this, new LoadStateEventArgs { LifecycleEvent = e.Add.Value }); } if (e.Remove.HasValue) { _loadStates.Remove(e.Remove.Value); } } }; _channel.Navigated += (sender, e) => { Url = e.Url; Name = e.Name; Navigated?.Invoke(this, e); if (string.IsNullOrEmpty(e.Error)) { ((Page)Page)?.OnFrameNavigated(this); } }; }
internal Request(IChannelOwner parent, string guid, RequestInitializer initializer) : base(parent, guid) { // TODO: Consider using a mapper between RequestInitiliazer and this object _channel = new RequestChannel(guid, parent.Connection, this); _initializer = initializer; RedirectedFrom = _initializer.RedirectedFrom?.Object; PostDataBuffer = _initializer.PostData != null?Convert.FromBase64String(_initializer.PostData) : null; Timing = new RequestTimingResult(); if (RedirectedFrom != null) { _initializer.RedirectedFrom.Object.RedirectedTo = this; } if (initializer.Headers != null) { Headers = initializer.Headers.Select(x => new KeyValuePair <string, string>(x.Name, x.Value)).ToArray(); } else { Headers = Array.Empty <KeyValuePair <string, string> >(); } }
public Dialog(IChannelOwner parent, string guid, DialogInitializer initializer) : base(parent, guid) { _channel = new DialogChannel(guid, parent.Connection, this); _initializer = initializer; }
internal ConsoleMessage(IChannelOwner parent, string guid, ConsoleMessageInitializer initializer) : base(parent, guid) { _channel = new(guid, parent.Connection, this); _initializer = initializer; }
public LocalUtils(IChannelOwner parent, string guid, JsonElement?initializer) : base(parent, guid) { _channel = new(guid, parent.Connection, this); }
internal ChromiumBrowser(IChannelOwner parent, string guid, BrowserInitializer initializer) : base(parent, guid, initializer) { }
internal WritableStream(IChannelOwner parent, string guid) : base(parent, guid) { Channel = new(guid, parent.Connection, this); }
internal PlaywrightStream(IChannelOwner parent, string guid) : base(parent, guid) { _channel = new StreamChannel(guid, parent.Connection, this); }
internal BrowserType(IChannelOwner parent, string guid, BrowserTypeInitializer initializer) : base(parent, guid) { _initializer = initializer; _channel = new BrowserTypeChannel(guid, parent.Connection, this); }
internal Route(IChannelOwner parent, string guid, RouteInitializer initializer) : base(parent, guid) { _channel = new(guid, parent.Connection, this); _initializer = initializer; }
public Tracing(IChannelOwner parent, string guid) : base(parent, guid) { _channel = new(guid, parent.Connection, this); }
internal ElementHandle(IChannelOwner parent, string guid, ElementHandleInitializer initializer) : base(parent, guid, initializer) { _channel = new ElementHandleChannel(guid, parent.Connection, this); _channel.PreviewUpdated += (_, e) => Preview = e.Preview; }
internal void CreateRemoteObject(ChannelOwnerType type, string guid, JsonElement?initializer) { IChannelOwner result = null; switch (type) { case ChannelOwnerType.BindingCall: result = new BindingCall(this, guid, initializer?.ToObject <BindingCallInitializer>(_connection.GetDefaultJsonSerializerOptions())); break; case ChannelOwnerType.Playwright: #pragma warning disable CA2000 // Dispose objects before losing scope result = new Playwright(this, guid, initializer?.ToObject <PlaywrightInitializer>(_connection.GetDefaultJsonSerializerOptions()), _loggerFactory); #pragma warning restore CA2000 // Dispose objects before losing scope break; case ChannelOwnerType.Browser: result = new Browser(this, guid, initializer?.ToObject <BrowserInitializer>(_connection.GetDefaultJsonSerializerOptions())); break; case ChannelOwnerType.BrowserType: result = new BrowserType(this, guid, initializer?.ToObject <BrowserTypeInitializer>(_connection.GetDefaultJsonSerializerOptions())); break; case ChannelOwnerType.Context: result = new BrowserContext(this, guid, initializer?.ToObject <BrowserContextInitializer>(_connection.GetDefaultJsonSerializerOptions())); break; case ChannelOwnerType.ConsoleMessage: result = new ConsoleMessage(this, guid, initializer?.ToObject <ConsoleMessageInitializer>(_connection.GetDefaultJsonSerializerOptions())); break; case ChannelOwnerType.Dialog: result = new Dialog(this, guid, initializer?.ToObject <DialogInitializer>(_connection.GetDefaultJsonSerializerOptions())); break; case ChannelOwnerType.Download: result = new Download(this, guid, initializer?.ToObject <DownloadInitializer>(_connection.GetDefaultJsonSerializerOptions())); break; case ChannelOwnerType.ElementHandle: result = new ElementHandle(this, guid, initializer?.ToObject <ElementHandleInitializer>(_connection.GetDefaultJsonSerializerOptions())); break; case ChannelOwnerType.Frame: result = new Frame(this, guid, initializer?.ToObject <FrameInitializer>(_connection.GetDefaultJsonSerializerOptions())); break; case ChannelOwnerType.JSHandle: result = new JSHandle(this, guid, initializer?.ToObject <JSHandleInitializer>(_connection.GetDefaultJsonSerializerOptions())); break; case ChannelOwnerType.Page: result = new Page(this, guid, initializer?.ToObject <PageInitializer>(_connection.GetDefaultJsonSerializerOptions())); break; case ChannelOwnerType.Request: result = new Request(this, guid, initializer?.ToObject <RequestInitializer>(_connection.GetDefaultJsonSerializerOptions())); break; case ChannelOwnerType.Response: result = new Response(this, guid, initializer?.ToObject <ResponseInitializer>(_connection.GetDefaultJsonSerializerOptions())); break; case ChannelOwnerType.Route: result = new Route(this, guid, initializer?.ToObject <RouteInitializer>(_connection.GetDefaultJsonSerializerOptions())); break; default: Debug.Write("Missing type " + type); break; } _objects.TryAdd(guid, result); _connection.OnObjectCreated(guid, result); }
public BindingCall(IChannelOwner parent, string guid, BindingCallInitializer initializer) : base(parent, guid) { _channel = new BindingCallChannel(guid, parent.Connection, this); _initializer = initializer; }
internal Artifact(IChannelOwner parent, string guid, ArtifactInitializer initializer) : base(parent, guid) { _connection = parent.Connection; _channel = new(guid, parent.Connection, this); AbsolutePath = initializer.AbsolutePath; }