AngleSharp by Florian Rappl

<PackageReference Include="AngleSharp" Version="0.8.5" />

 BrowsingContext

public sealed class BrowsingContext : IBrowsingContext
A simple and lightweight browsing context.
using AngleSharp.Dom; using AngleSharp.Extensions; using AngleSharp.Network; namespace AngleSharp { public sealed class BrowsingContext : IBrowsingContext { private readonly IConfiguration _configuration; private readonly Sandboxes _security; private readonly IBrowsingContext _parent; private readonly IDocument _creator; private readonly IDocumentLoader _loader; private readonly IHistory _history; private IDocument _active; public IDocument Active => _active; public IDocumentLoader Loader => _loader; public IConfiguration Configuration => _configuration; public IDocument Creator => _creator; public IWindow Current { get { if (_active == null) return null; return _active.DefaultView; } } public IBrowsingContext Parent => _parent; public IHistory SessionHistory => _history; public Sandboxes Security => _security; internal BrowsingContext(IConfiguration configuration, Sandboxes security) { _configuration = configuration; _security = security; _loader = this.CreateLoader(); _history = this.CreateHistory(); } internal BrowsingContext(IBrowsingContext parent, Sandboxes security) : this(parent.Configuration, security) { _parent = parent; _creator = _parent.Active; } public static IBrowsingContext New(IConfiguration configuration = null) { if (configuration == null) configuration = AngleSharp.Configuration.Default; return configuration.NewContext(Sandboxes.None); } public void NavigateTo(IDocument document) { if (_history != null) _history.PushState(document, document.Title, document.Url); _active = document; } } }