internal override void OnMessage(string method, JsonElement?serverParams)
        {
            switch (method)
            {
            case "close":
                Close?.Invoke(this, EventArgs.Empty);
                break;

            case "bindingCall":
                BindingCall?.Invoke(
                    this,
                    new() { BindingCall = serverParams?.GetProperty("binding").ToObject <BindingCallChannel>(Connection.DefaultJsonSerializerOptions).Object });
                break;

            case "route":
                var route   = serverParams?.GetProperty("route").ToObject <RouteChannel>(Connection.DefaultJsonSerializerOptions).Object;
                var request = serverParams?.GetProperty("request").ToObject <RequestChannel>(Connection.DefaultJsonSerializerOptions).Object;
                Route?.Invoke(
                    this,
                    new() { Route = route, Request = request });
                break;

            case "page":
                Page?.Invoke(
                    this,
                    new() { PageChannel = serverParams?.GetProperty("page").ToObject <PageChannel>(Connection.DefaultJsonSerializerOptions) });
                break;

            case "crBackgroundPage":
                BackgroundPage?.Invoke(
                    this,
                    new() { PageChannel = serverParams?.GetProperty("page").ToObject <PageChannel>(Connection.DefaultJsonSerializerOptions) });
                break;

            case "crServiceWorker":
                ServiceWorker?.Invoke(
                    this,
                    new() { WorkerChannel = serverParams?.GetProperty("worker").ToObject <WorkerChannel>(Connection.DefaultJsonSerializerOptions) });
                break;

            case "request":
                Request?.Invoke(this, serverParams?.ToObject <BrowserContextChannelRequestEventArgs>(Connection.DefaultJsonSerializerOptions));
                break;

            case "requestFinished":
                RequestFinished?.Invoke(this, serverParams?.ToObject <BrowserContextChannelRequestEventArgs>(Connection.DefaultJsonSerializerOptions));
                break;

            case "requestFailed":
                RequestFailed?.Invoke(this, serverParams?.ToObject <BrowserContextChannelRequestEventArgs>(Connection.DefaultJsonSerializerOptions));
                break;

            case "response":
                Response?.Invoke(this, serverParams?.ToObject <BrowserContextChannelResponseEventArgs>(Connection.DefaultJsonSerializerOptions));
                break;
            }
        }
        internal override void OnMessage(string method, JsonElement?serverParams)
        {
            switch (method)
            {
            case "close":
                Close?.Invoke(this, EventArgs.Empty);
                break;

            case "bindingCall":
                BindingCall?.Invoke(
                    this,
                    new BindingCallEventArgs
                {
                    BidingCall = serverParams?.GetProperty("binding").ToObject <BindingCallChannel>(Connection.GetDefaultJsonSerializerOptions()).Object,
                });
                break;

            case "route":
                Route?.Invoke(
                    this,
                    new RouteEventArgs
                {
                    Route   = serverParams?.GetProperty("route").ToObject <RouteChannel>(Connection.GetDefaultJsonSerializerOptions()).Object,
                    Request = serverParams?.GetProperty("request").ToObject <RequestChannel>(Connection.GetDefaultJsonSerializerOptions()).Object,
                });
                break;

            case "page":
                Page?.Invoke(
                    this,
                    new BrowserContextPageEventArgs
                {
                    PageChannel = serverParams?.GetProperty("page").ToObject <PageChannel>(Connection.GetDefaultJsonSerializerOptions()),
                });
                break;

            case "crBackgroundPage":
                BackgroundPage?.Invoke(
                    this,
                    new BrowserContextPageEventArgs
                {
                    PageChannel = serverParams?.GetProperty("page").ToObject <PageChannel>(Connection.GetDefaultJsonSerializerOptions()),
                });
                break;

            case "crServiceWorker":
                ServiceWorker?.Invoke(
                    this,
                    new WorkerChannelEventArgs
                {
                    WorkerChannel = serverParams?.GetProperty("worker").ToObject <WorkerChannel>(Connection.GetDefaultJsonSerializerOptions()),
                });
                break;
            }
        }
Example #3
0
        internal override void OnMessage(string method, JsonElement?serverParams)
        {
            switch (method)
            {
            case "close":
                Closed?.Invoke(this, EventArgs.Empty);
                break;

            case "crash":
                Crashed?.Invoke(this, EventArgs.Empty);
                break;

            case "domcontentloaded":
                DOMContentLoaded?.Invoke(this, EventArgs.Empty);
                break;

            case "load":
                Load?.Invoke(this, EventArgs.Empty);
                break;

            case "bindingCall":
                BindingCall?.Invoke(
                    this,
                    new BindingCallEventArgs
                {
                    BidingCall = serverParams?.GetProperty("binding").ToObject <BindingCallChannel>(Connection.GetDefaultJsonSerializerOptions()).Object,
                });
                break;

            case "route":
                Route?.Invoke(
                    this,
                    new RouteEventArgs
                {
                    Route   = serverParams?.GetProperty("route").ToObject <RouteChannel>(Connection.GetDefaultJsonSerializerOptions()).Object,
                    Request = serverParams?.GetProperty("request").ToObject <RequestChannel>(Connection.GetDefaultJsonSerializerOptions()).Object,
                });
                break;

            case "popup":
                Popup?.Invoke(this, new PageChannelPopupEventArgs
                {
                    Page = serverParams?.GetProperty("page").ToObject <PageChannel>(Connection.GetDefaultJsonSerializerOptions()).Object,
                });
                break;

            case "pageError":
                PageError?.Invoke(this, serverParams?.GetProperty("error").GetProperty("error").ToObject <PageErrorEventArgs>(Connection.GetDefaultJsonSerializerOptions()));
                break;

            case "fileChooser":
                FileChooser?.Invoke(this, serverParams?.ToObject <FileChooserChannelEventArgs>(Connection.GetDefaultJsonSerializerOptions()));
                break;

            case "frameAttached":
                FrameAttached?.Invoke(this, new FrameEventArgs(serverParams?.GetProperty("frame").ToObject <FrameChannel>(Connection.GetDefaultJsonSerializerOptions()).Object));
                break;

            case "frameDetached":
                FrameDetached?.Invoke(this, new FrameEventArgs(serverParams?.GetProperty("frame").ToObject <FrameChannel>(Connection.GetDefaultJsonSerializerOptions()).Object));
                break;

            case "dialog":
                Dialog?.Invoke(this, new DialogEventArgs(serverParams?.GetProperty("dialog").ToObject <DialogChannel>(Connection.GetDefaultJsonSerializerOptions()).Object));
                break;

            case "console":
                Console?.Invoke(this, new ConsoleEventArgs(serverParams?.GetProperty("message").ToObject <ConsoleMessage>(Connection.GetDefaultJsonSerializerOptions())));
                break;

            case "request":
                Request?.Invoke(this, new RequestEventArgs {
                    Request = serverParams?.GetProperty("request").ToObject <RequestChannel>(Connection.GetDefaultJsonSerializerOptions()).Object
                });
                break;

            case "requestFinished":
                RequestFinished?.Invoke(this, new RequestEventArgs {
                    Request = serverParams?.GetProperty("request").ToObject <RequestChannel>(Connection.GetDefaultJsonSerializerOptions()).Object
                });
                break;

            case "requestFailed":
                RequestFailed?.Invoke(this, serverParams?.ToObject <PageChannelRequestFailedEventArgs>(Connection.GetDefaultJsonSerializerOptions()));
                break;

            case "response":
                Response?.Invoke(this, new ResponseEventArgs {
                    Response = serverParams?.GetProperty("response").ToObject <ResponseChannel>(Connection.GetDefaultJsonSerializerOptions()).Object
                });
                break;

            case "download":
                Download?.Invoke(this, new DownloadEventArgs()
                {
                    Download = serverParams?.GetProperty("download").ToObject <DownloadChannel>(Connection.GetDefaultJsonSerializerOptions()).Object
                });
                break;

            case "worker":
                Worker?.Invoke(
                    this,
                    new WorkerChannelEventArgs
                {
                    WorkerChannel = serverParams?.GetProperty("worker").ToObject <WorkerChannel>(Connection.GetDefaultJsonSerializerOptions()),
                });
                break;
            }
        }
        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);
        }
Example #5
0
 public BindingCallChannel(string guid, Connection connection, BindingCall owner) : base(guid, connection, owner)
 {
 }
        internal override void OnMessage(string method, JsonElement?serverParams)
        {
            switch (method)
            {
            case "close":
                Closed?.Invoke(this, EventArgs.Empty);
                break;

            case "crash":
                Crashed?.Invoke(this, EventArgs.Empty);
                break;

            case "domcontentloaded":
                DOMContentLoaded?.Invoke(this, EventArgs.Empty);
                break;

            case "load":
                Load?.Invoke(this, EventArgs.Empty);
                break;

            case "bindingCall":
                BindingCall?.Invoke(
                    this,
                    new() { BindingCall = serverParams?.GetProperty("binding").ToObject <BindingCallChannel>(Connection.DefaultJsonSerializerOptions).Object });
                break;

            case "route":
                var route   = serverParams?.GetProperty("route").ToObject <RouteChannel>(Connection.DefaultJsonSerializerOptions).Object;
                var request = serverParams?.GetProperty("request").ToObject <RequestChannel>(Connection.DefaultJsonSerializerOptions).Object;
                Route?.Invoke(
                    this,
                    new() { Route = route, Request = request });
                break;

            case "popup":
                Popup?.Invoke(this, new() { Page = serverParams?.GetProperty("page").ToObject <PageChannel>(Connection.DefaultJsonSerializerOptions).Object });
                break;

            case "pageError":
                PageError?.Invoke(this, serverParams?.GetProperty("error").GetProperty("error").ToObject <SerializedError>(Connection.DefaultJsonSerializerOptions));
                break;

            case "fileChooser":
                FileChooser?.Invoke(this, serverParams?.ToObject <FileChooserChannelEventArgs>(Connection.DefaultJsonSerializerOptions));
                break;

            case "frameAttached":
                FrameAttached?.Invoke(this, serverParams?.GetProperty("frame").ToObject <FrameChannel>(Connection.DefaultJsonSerializerOptions).Object);
                break;

            case "frameDetached":
                FrameDetached?.Invoke(this, serverParams?.GetProperty("frame").ToObject <FrameChannel>(Connection.DefaultJsonSerializerOptions).Object);
                break;

            case "dialog":
                Dialog?.Invoke(this, serverParams?.GetProperty("dialog").ToObject <DialogChannel>(Connection.DefaultJsonSerializerOptions).Object);
                break;

            case "console":
                Console?.Invoke(this, serverParams?.GetProperty("message").ToObject <ConsoleMessage>(Connection.DefaultJsonSerializerOptions));
                break;

            case "webSocket":
                WebSocket?.Invoke(this, serverParams?.GetProperty("webSocket").ToObject <WebSocketChannel>(Connection.DefaultJsonSerializerOptions).Object);
                break;

            case "download":
                Download?.Invoke(this, serverParams?.ToObject <PageDownloadEvent>(Connection.DefaultJsonSerializerOptions));
                break;

            case "video":
                Video?.Invoke(this, new() { Artifact = serverParams?.GetProperty("artifact").ToObject <ArtifactChannel>(Connection.DefaultJsonSerializerOptions).Object });
                break;

            case "worker":
                Worker?.Invoke(
                    this,
                    new() { WorkerChannel = serverParams?.GetProperty("worker").ToObject <WorkerChannel>(Connection.DefaultJsonSerializerOptions) });
                break;
            }
        }