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); }
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); } }
private async Task CreateTargetAsync(TargetCreatedResponse e) { var targetInfo = e.TargetInfo; var browserContextId = targetInfo.BrowserContextId; var shouldAttachToTarget = _targetFilterCallback(targetInfo); if (!shouldAttachToTarget) { return; } 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); } }