-
-
Notifications
You must be signed in to change notification settings - Fork 440
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2314 from hardkoded/page-target-class
Introduce an internal PageTarget subclass
- Loading branch information
Showing
8 changed files
with
250 additions
and
206 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
using System; | ||
using System.Threading.Tasks; | ||
using PuppeteerSharp.Helpers; | ||
|
||
namespace PuppeteerSharp | ||
{ | ||
internal class PageTarget : Target | ||
{ | ||
private readonly bool _ignoreHTTPSErrors; | ||
private readonly ViewPortOptions _defaultViewport; | ||
private readonly TaskQueue _screenshotTaskQueue; | ||
|
||
public PageTarget(TargetInfo targetInfo, CDPSession session, BrowserContext context, ITargetManager targetManager, Func<bool, Task<CDPSession>> sessionFactory, bool ignoreHTTPSErrors, ViewPortOptions defaultViewport, TaskQueue screenshotTaskQueue) | ||
: base(targetInfo, session, context, targetManager, sessionFactory) | ||
{ | ||
_ignoreHTTPSErrors = ignoreHTTPSErrors; | ||
_defaultViewport = defaultViewport; | ||
_screenshotTaskQueue = screenshotTaskQueue; | ||
PageTask = null; | ||
} | ||
|
||
internal Task<Page> PageTask { get; set; } | ||
|
||
/// <inheritdoc/> | ||
public override async Task<IPage> PageAsync() | ||
{ | ||
if (PageTask == null) | ||
{ | ||
var session = Session ?? await SessionFactory(true).ConfigureAwait(false); | ||
|
||
PageTask = Page.CreateAsync( | ||
session, | ||
this, | ||
_ignoreHTTPSErrors, | ||
_defaultViewport, | ||
_screenshotTaskQueue); | ||
} | ||
|
||
return await PageTask.ConfigureAwait(false); | ||
} | ||
|
||
protected override void Initialize() | ||
{ | ||
_ = InitializedTaskWrapper.Task.ContinueWith( | ||
async initializedTask => | ||
{ | ||
var success = initializedTask.Result; | ||
if (!success) | ||
{ | ||
return; | ||
} | ||
var opener = Opener as PageTarget; | ||
var openerPageTask = opener?.PageTask; | ||
if (openerPageTask == null || Type != TargetType.Page) | ||
{ | ||
return; | ||
} | ||
var openerPage = (Page)await openerPageTask.ConfigureAwait(false); | ||
if (!openerPage.HasPopupEventListeners) | ||
{ | ||
return; | ||
} | ||
var popupPage = await PageAsync().ConfigureAwait(false); | ||
openerPage.OnPopup(popupPage); | ||
}, | ||
TaskScheduler.Default); | ||
CheckIfInitialized(); | ||
} | ||
|
||
protected override void CheckIfInitialized() | ||
{ | ||
if (IsInitialized) | ||
{ | ||
return; | ||
} | ||
|
||
IsInitialized = !string.IsNullOrEmpty(TargetInfo.Url); | ||
if (IsInitialized) | ||
{ | ||
InitializedTaskWrapper.TrySetResult(true); | ||
} | ||
} | ||
} | ||
} |
Oops, something went wrong.