Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 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);
 }
Ejemplo n.º 5
0
 internal void OnObjectCreated(string guid, IChannelOwner result)
 {
     Objects.TryAdd(guid, result);
     if (_waitingForObject.TryRemove(guid, out var callback))
     {
         callback.TrySetResult(result);
     }
 }
Ejemplo n.º 6
0
        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());
        }
Ejemplo n.º 7
0
 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);
 }
Ejemplo n.º 8
0
        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;
            }
        }
Ejemplo n.º 9
0
        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;
                }
            }
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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));
            };
        }
Ejemplo n.º 14
0
        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);
            };
        }
Ejemplo n.º 15
0
        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;
                }
            }
        }
Ejemplo n.º 16
0
        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);
                }
            };
        }
Ejemplo n.º 17
0
        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> >();
            }
        }
Ejemplo n.º 18
0
 public Dialog(IChannelOwner parent, string guid, DialogInitializer initializer) : base(parent, guid)
 {
     _channel     = new DialogChannel(guid, parent.Connection, this);
     _initializer = initializer;
 }
Ejemplo n.º 19
0
 internal ConsoleMessage(IChannelOwner parent, string guid, ConsoleMessageInitializer initializer) : base(parent, guid)
 {
     _channel     = new(guid, parent.Connection, this);
     _initializer = initializer;
 }
Ejemplo n.º 20
0
 public LocalUtils(IChannelOwner parent, string guid, JsonElement?initializer) : base(parent, guid)
 {
     _channel = new(guid, parent.Connection, this);
 }
Ejemplo n.º 21
0
 internal ChromiumBrowser(IChannelOwner parent, string guid, BrowserInitializer initializer) : base(parent, guid, initializer)
 {
 }
Ejemplo n.º 22
0
 internal WritableStream(IChannelOwner parent, string guid) : base(parent, guid)
 {
     Channel = new(guid, parent.Connection, this);
 }
Ejemplo n.º 23
0
 internal PlaywrightStream(IChannelOwner parent, string guid) : base(parent, guid)
 {
     _channel = new StreamChannel(guid, parent.Connection, this);
 }
Ejemplo n.º 24
0
 internal BrowserType(IChannelOwner parent, string guid, BrowserTypeInitializer initializer) : base(parent, guid)
 {
     _initializer = initializer;
     _channel     = new BrowserTypeChannel(guid, parent.Connection, this);
 }
Ejemplo n.º 25
0
 internal Route(IChannelOwner parent, string guid, RouteInitializer initializer) : base(parent, guid)
 {
     _channel     = new(guid, parent.Connection, this);
     _initializer = initializer;
 }
Ejemplo n.º 26
0
 public Tracing(IChannelOwner parent, string guid) : base(parent, guid)
 {
     _channel = new(guid, parent.Connection, this);
 }
Ejemplo n.º 27
0
 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);
        }
Ejemplo n.º 29
0
 public BindingCall(IChannelOwner parent, string guid, BindingCallInitializer initializer) : base(parent, guid)
 {
     _channel     = new BindingCallChannel(guid, parent.Connection, this);
     _initializer = initializer;
 }
Ejemplo n.º 30
0
 internal Artifact(IChannelOwner parent, string guid, ArtifactInitializer initializer) : base(parent, guid)
 {
     _connection  = parent.Connection;
     _channel     = new(guid, parent.Connection, this);
     AbsolutePath = initializer.AbsolutePath;
 }