Ejemplo n.º 1
0
        private async Task CreateTargetAsync(TargetCreatedResponse e)
        {
            var targetInfo       = e.TargetInfo;
            var browserContextId = targetInfo.BrowserContextId;

            if (!(browserContextId != null && _contexts.TryGetValue(browserContextId, out var context)))
            {
                context = DefaultContext;
            }

            var target = new Target(
                e.TargetInfo,
                () => Connection.CreateSessionAsync(targetInfo),
                context);

            if (TargetsMap.ContainsKey(e.TargetInfo.TargetId))
            {
                _logger.LogError("Target should not exist before targetCreated");
            }

            TargetsMap[e.TargetInfo.TargetId] = target;

            if (await target.InitializedTask.ConfigureAwait(false))
            {
                var args = new TargetChangedArgs {
                    Target = target
                };
                TargetCreated?.Invoke(this, args);
                context.OnTargetCreated(this, args);
            }
        }
Ejemplo n.º 2
0
        private void ChangeTargetInfo(TargetCreatedResponse e)
        {
            if (!TargetsMap.ContainsKey(e.TargetInfo.TargetId))
            {
                throw new InvalidTargetException("Target should exists before ChangeTargetInfo");
            }

            var target = TargetsMap[e.TargetInfo.TargetId];

            target.TargetInfoChanged(e.TargetInfo);
        }
Ejemplo n.º 3
0
        private void OnTargetDestroyed(TargetTargetDestroyedFirefoxEvent payload)
        {
            string targetId = payload.TargetId;

            if (TargetsMap.TryRemove(targetId, out var target))
            {
                target.DidClose();
                TargetDestroyed?.Invoke(this, new TargetChangedArgs {
                    Target = target
                });
            }
        }
Ejemplo n.º 4
0
        private async Task DestroyTargetAsync(TargetDestroyedResponse e)
        {
            if (!TargetsMap.ContainsKey(e.TargetId))
            {
                throw new InvalidTargetException("Target should exists before DestroyTarget");
            }

            var target = TargetsMap[e.TargetId];

            TargetsMap.Remove(e.TargetId);

            target.CloseTaskWrapper.TrySetResult(true);

            if (await target.InitializedTask.ConfigureAwait(false))
            {
                var args = new TargetChangedArgs {
                    Target = target
                };
                TargetDestroyed?.Invoke(this, args);
                target.BrowserContext.OnTargetDestroyed(this, args);
            }
        }