Skip to content

Commit

Permalink
Move target updates to the target manager (#2316)
Browse files Browse the repository at this point in the history
  • Loading branch information
kblok authored Sep 15, 2023
1 parent dfac7b3 commit c359dd2
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 20 deletions.
30 changes: 12 additions & 18 deletions lib/PuppeteerSharp/Browser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -341,20 +341,14 @@ protected virtual void Dispose(bool disposing) => _ = CloseAsync()
private void TargetManager_TargetDiscovered(object sender, TargetChangedArgs e)
=> TargetDiscovered?.Invoke(this, e);

private void TargetManager_TargetChanged(object sender, TargetChangedArgs e)
private void OnTargetChanged(object sender, TargetChangedArgs e)
{
var previousURL = e.Target.Url;
var wasInitialized = e.Target.IsInitialized;
e.Target.TargetInfoChanged(e.TargetInfo);
if (wasInitialized && previousURL != e.Target.Url)
{
var args = new TargetChangedArgs { Target = e.Target };
TargetChanged?.Invoke(this, args);
e.Target.BrowserContext.OnTargetChanged(this, args);
}
var args = new TargetChangedArgs { Target = e.Target };
TargetChanged?.Invoke(this, args);
e.Target.BrowserContext.OnTargetChanged(this, args);
}

private async void TargetManager_TargetGone(object sender, TargetChangedArgs e)
private async void OnDetachedFromTargetAsync(object sender, TargetChangedArgs e)
{
try
{
Expand All @@ -376,7 +370,7 @@ private async void TargetManager_TargetGone(object sender, TargetChangedArgs e)
}
}

private async void TargetManager_TargetAvailable(object sender, TargetChangedArgs e)
private async void OnAttachedToTargetAsync(object sender, TargetChangedArgs e)
{
try
{
Expand Down Expand Up @@ -454,19 +448,19 @@ private async void Connection_Disconnected(object sender, EventArgs e)
private Task AttachAsync()
{
Connection.Disconnected += Connection_Disconnected;
TargetManager.TargetAvailable += TargetManager_TargetAvailable;
TargetManager.TargetGone += TargetManager_TargetGone;
TargetManager.TargetChanged += TargetManager_TargetChanged;
TargetManager.TargetAvailable += OnAttachedToTargetAsync;
TargetManager.TargetGone += OnDetachedFromTargetAsync;
TargetManager.TargetChanged += OnTargetChanged;
TargetManager.TargetDiscovered += TargetManager_TargetDiscovered;
return TargetManager.InitializeAsync();
}

private void Detach()
{
Connection.Disconnected -= Connection_Disconnected;
TargetManager.TargetAvailable -= TargetManager_TargetAvailable;
TargetManager.TargetGone -= TargetManager_TargetGone;
TargetManager.TargetChanged -= TargetManager_TargetChanged;
TargetManager.TargetAvailable -= OnAttachedToTargetAsync;
TargetManager.TargetGone -= OnDetachedFromTargetAsync;
TargetManager.TargetChanged -= OnTargetChanged;
TargetManager.TargetDiscovered -= TargetManager_TargetDiscovered;
}

Expand Down
15 changes: 13 additions & 2 deletions lib/PuppeteerSharp/ChromeTargetManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,18 @@ private void OnTargetInfoChanged(TargetCreatedResponse e)
return;
}

TargetChanged?.Invoke(this, new TargetChangedArgs { Target = target, TargetInfo = e.TargetInfo });
var previousURL = target.Url;
var wasInitialized = target.IsInitialized;
target.TargetInfoChanged(e.TargetInfo);

if (wasInitialized && previousURL != target.Url)
{
TargetChanged?.Invoke(this, new TargetChangedArgs
{
Target = target,
TargetInfo = e.TargetInfo,
});
}
}

private async Task OnAttachedToTargetAsync(object sender, TargetAttachedToTargetResponse e)
Expand Down Expand Up @@ -339,7 +350,7 @@ await Task.WhenAll(
}
catch (Exception ex)
{
_logger.LogError("Failed to call setautoAttach and runIfWaitingForDebugger", ex);
_logger.LogError("Failed to call setAutoAttach and runIfWaitingForDebugger", ex);
}
}

Expand Down

0 comments on commit c359dd2

Please sign in to comment.