/// <summary> /// Loads a stylesheet resource via its URL. /// </summary> /// <param name="context">The context to use.</param> /// <param name="address">The address of the resource.</param> /// <param name="element">The hosting element.</param> /// <param name="cancel">The cancellation token.</param> /// <returns>The async task.</returns> public static async Task <IStyleSheet> OpenStyleSheetAsync(this IBrowsingContext context, Url address, IElement element, CancellationToken cancel) { var loader = context.GetService <IResourceLoader>(); var service = context.GetCssStyling(); if (loader != null && service != null) { var request = element.CreateRequestFor(address); var download = loader.FetchAsync(request); using (var response = await download.Task.ConfigureAwait(false)) { var options = new StyleOptions(element?.Owner ?? context.Active) { Element = element }; return(await service.ParseStylesheetAsync(response, options, cancel).ConfigureAwait(false)); } } return(null); }