Exemple #1
0
        public void ChangeUrl(Uri url)
        {
            var conf = configProvider.GetConfig();

            if (conf is null)
            {
                throw new ConfigException(Resources.ConfigNotFound);
            }
            if (conf.Info is null)
            {
                throw new ConfigException(Resources.ConfigInfoIsNull);
            }
            var shared = configProvider.GetSharedConfig();
            var tmp    = conf.Info.Url;

            conf.Info.Url = url;
            if (shared != null && shared.Config != null && shared.Config.Info != null)
            {
                shared.Config.Info.Url = url;
            }
            try
            {
                OnConfigUrlChanged?.Invoke(this, conf, url);
            }
            catch
            {
                conf.Info.Url = tmp;
                if (shared != null && shared.Config != null && shared.Config.Info != null)
                {
                    shared.Config.Info.Url = tmp;
                }
                throw;
            }
            configProvider.Commit();
            OnUrlChanged?.Invoke(this, url);
        }
Exemple #2
0
            private void Client_OnEvent(string method, Newtonsoft.Json.Linq.JToken args)
            {
                Frame frame = null;

                switch (method)
                {
                case "Page.navigatedWithinDocument":
                    var newUrl = args["url"].ToString();
                    Frames.TryGetValue(args["frameId"].ToString(), out frame);
                    OnUrlChanged?.Invoke(newUrl, frame);
                    break;

                case "Page.frameNavigated":
                    frame            = args["frame"].ToObject <Frame>();
                    Frames[frame.id] = frame;
                    OnNavigated?.Invoke(frame);
                    break;

                case "Runtime.executionContextsCleared":
                    OnPageDestroyed?.Invoke();
                    IsScreencastStarted = false;
                    break;

                case "Page.frameStartedLoading":
                    OnStartedLoading?.Invoke(args["frameId"].ToString());
                    break;

                case "Page.loadEventFired":
                    OnLoaded?.Invoke();
                    break;

                case "Network.loadingFinished":
                    var reqId = args["requestId"].ToString();
                    if (Responses.TryGetValue(reqId, out Response resp))
                    {
                        OnRequestComplete?.Invoke(resp.Request, resp);
                    }
                    break;

                case "Network.responseReceived":
                    reqId = args["requestId"].ToString();
                    if (Requests.TryGetValue(reqId, out Request req))
                    {
                        Requests.Remove(reqId);
                    }
                    resp             = args["response"].ToObject <Response>();
                    resp.Request     = req;
                    resp.requestId   = reqId;
                    Responses[reqId] = resp;
                    // HACK: Chrome sucks and the response is not actually ready yet.
                    // OnRequestComplete?.Invoke(req, resp);
                    break;

                case "Network.requestWillBeSent":
                    reqId       = args["requestId"].ToString();
                    req         = args.ToObject <Request>();
                    req.frameId = args["frameId"].ToString();
                    Frames.TryGetValue(req.frameId, out req.Frame);
                    req.requestId   = reqId;
                    Requests[reqId] = req;
                    OnRequestStarted?.Invoke(req);
                    break;

                case "Page.screencastFrame":
                    var sessionId = (int)args["sessionId"];
                    var t         = Client.Send("Page.screencastFrameAck", new { sessionId });
                    MostRecentFrameBase64   = args["data"].ToString();
                    MostRecentFrameMetadata = args["metadata"].ToObject <ScreencastFrameMetadata>();
                    OnScreencastFrame?.Invoke(MostRecentFrameBase64, MostRecentFrameMetadata);
                    break;
                }
            }