BrowsingContext
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 (IDocument document)
{
if (_history != null)
_history.PushState(document, document.Title, document.Url);
_active = document;
}
}
}