diff --git a/lib/PuppeteerSharp/Cdp/CdpElementHandle.cs b/lib/PuppeteerSharp/Cdp/CdpElementHandle.cs new file mode 100644 index 000000000..bb9274f78 --- /dev/null +++ b/lib/PuppeteerSharp/Cdp/CdpElementHandle.cs @@ -0,0 +1,175 @@ +// * MIT License +// * +// * Copyright (c) Darío Kondratiuk +// * +// * Permission is hereby granted, free of charge, to any person obtaining a copy +// * of this software and associated documentation files (the "Software"), to deal +// * in the Software without restriction, including without limitation the rights +// * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// * copies of the Software, and to permit persons to whom the Software is +// * furnished to do so, subject to the following conditions: +// * +// * The above copyright notice and this permission notice shall be included in all +// * copies or substantial portions of the Software. +// * +// * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// * SOFTWARE. + +using System; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using PuppeteerSharp.Messaging; +using PuppeteerSharp.QueryHandlers; + +namespace PuppeteerSharp.Cdp; + +/// +public class CdpElementHandle : ElementHandle +{ + internal CdpElementHandle( + IsolatedWorld world, + RemoteObject remoteObject) : base(world, remoteObject) + { + Handle = new CdpJSHandle(world, remoteObject); + Logger = Realm.Environment.Client.Connection.LoggerFactory.CreateLogger(GetType()); + } + + /// + /// Logger. + /// + internal ILogger Logger { get; } + + internal override CustomQuerySelectorRegistry CustomQuerySelectorRegistry => + Client.Connection.CustomQuerySelectorRegistry; + + /// + protected override Page Page => Frame.FrameManager.Page; + + private CDPSession Client => Handle.Realm.Environment.Client; + + private FrameManager FrameManager => Frame.FrameManager; + + /// + public override async Task