MediaRequestProcessor<TMediaInfo>
sealed class MediaRequestProcessor<TMediaInfo> : ResourceRequestProcessor<TMediaInfo> where TMediaInfo : IMediaInfo
See the following link for more infos:
https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-load
using AngleSharp.Dom;
using AngleSharp.Dom.Media;
using AngleSharp.Services;
using AngleSharp.Services.Media;
using System.Threading;
using System.Threading.Tasks;
namespace AngleSharp.Network.RequestProcessors
{
internal sealed class MediaRequestProcessor<TMediaInfo> : ResourceRequestProcessor<TMediaInfo> where TMediaInfo : IMediaInfo
{
public TMediaInfo Media { get; set; }
public MediaNetworkState NetworkState {
get {
IDownload download = base.Download;
if (download != null) {
if (download.IsRunning)
return MediaNetworkState.Loading;
if (base.Resource == null)
return MediaNetworkState.NoSource;
}
return MediaNetworkState.Idle;
}
}
private MediaRequestProcessor(IConfiguration options, IResourceLoader loader)
: base(options, loader)
{
}
internal static MediaRequestProcessor<TMediaInfo> Create(Element element)
{
Document owner = element.Owner;
IConfiguration options = owner.Options;
IResourceLoader loader = owner.Loader;
if (options == null || loader == null)
return null;
return new MediaRequestProcessor<TMediaInfo>(options, loader);
}
protected override async Task ProcessResponseAsync(IResponse response)
{
IResourceService<TMediaInfo> service = ((ResourceRequestProcessor<TMediaInfo>)this).GetService(response);
if (service != null) {
CancellationToken none = CancellationToken.None;
TMediaInfo val2 = this.Media = await service.CreateAsync(response, none).ConfigureAwait(false);
}
}
}
}