public HTMLMediaElement(Document owner, String name) : base(owner, name) { _src = new BoundLocation(this, AttributeNames.Src); _network = MediaNetworkState.Empty; RegisterAttributeObserver(AttributeNames.Src, value => Load()); }
/// <summary> /// Loads the media specified for this element. /// </summary> public void Load() { var src = CurrentSource; //TODO More complex check if something is already loading (what is loading, cancel?, ...) //see: https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-load this.CancelTasks(); if (src != null) { _network = MediaNetworkState.Idle; var url = new Url(src); var request = this.CreateRequestFor(url); _network = MediaNetworkState.Loading; this.LoadResource <TResource>(request).ContinueWith(m => { if (m.IsFaulted || m.Result == null) { _media = default(TResource); _network = MediaNetworkState.NoSource; } else { _media = m.Result; } this.FireLoadOrErrorEvent(m); }); } }
/// <summary> /// Loads the media specified for this element. /// </summary> public void Load() { //TODO More complex check if something is already loading (what is loading, cancel?, ...) //see: https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-load if (_resourceTask != null) { return; } var src = CurrentSource; if (src != null) { _network = MediaNetworkState.Idle; var url = this.HyperRef(src); _resourceTask = Owner.Options.LoadResource <TResource>(url); _network = MediaNetworkState.Loading; _resourceTask.ContinueWith(_ => { if (_.Result == null) { _network = MediaNetworkState.NoSource; } this.FireSimpleEvent(EventNames.Load); }); } }
async Task <TResource> LoadAsync(Url url, CancellationToken cancel) { var media = await Owner.Options.LoadResource <TResource>(url, cancel).ConfigureAwait(false); if (media == null) { _network = MediaNetworkState.NoSource; } this.FireSimpleEvent(EventNames.Load); return(media); }
void FinishLoading(Task <TResource> task) { _media = default(TResource); if (task.IsCompleted && !task.IsFaulted) { _media = task.Result; } if (_media == null) { _network = MediaNetworkState.NoSource; } this.FireLoadOrErrorEvent(task); }
/// <summary> /// Loads the media specified for this element. /// </summary> public void Load() { var source = CurrentSource; //TODO More complex check if something is already loading (what is loading, cancel?, ...) //see: https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-load this.CancelTasks(); if (source == null) { return; } _network = MediaNetworkState.Idle; var url = new Url(source); var request = this.CreateRequestFor(url); _network = MediaNetworkState.Loading; this.LoadResource <TResource>(request). ContinueWith(FinishLoading); }
void UpdateSource(String value) { //TODO More complex check if something is already loading (what is loading, cancel?, ...) //see: https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-load if (_download != null && !_download.IsCompleted) { _download.Cancel(); } var document = Owner; _network = MediaNetworkState.Idle; if (value != null && document != null) { var loader = document.Loader; if (loader != null) { var url = new Url(value); var request = this.CreateRequestFor(url); _network = MediaNetworkState.Loading; _download = loader.DownloadAsync(request); var task = this.ProcessResource <TResource>(_download, result => { _media = result; if (_media == null) { _network = MediaNetworkState.NoSource; } }); document.DelayLoad(task); } } }
/// <summary> /// Loads the media specified for this element. /// </summary> public void Load() { //TODO More complex check if something is already loading (what is loading, cancel?, ...) //see: https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-load if (_resourceTask != null) { return; } else if (_cts != null) { _cts.Cancel(); } var src = CurrentSource; if (src != null) { _network = MediaNetworkState.Idle; var url = new Url(src); _cts = new CancellationTokenSource(); _network = MediaNetworkState.Loading; _resourceTask = LoadAsync(url, _cts.Token); } }
public HTMLMediaElement(Document owner, String name, String prefix) : base(owner, name, prefix) { _network = MediaNetworkState.Empty; RegisterAttributeObserver(AttributeNames.Src, value => Load()); }
internal HTMLMediaElement(String name) : base(name) { _network = MediaNetworkState.Empty; }
public HTMLMediaElement(Document owner, String name, String prefix) : base(owner, name, prefix) { _network = MediaNetworkState.Empty; }