/// <summary> /// Registers and loads a <see cref="ResourceHandler"/> that represents the HTML content. /// </summary> /// <remarks> /// `Cef` Native `LoadHtml` is unpredictable and only works sometimes, this method wraps /// the provided HTML in a <see cref="ResourceHandler"/> and loads the provided url using /// the <see cref="IWebBrowser.Load"/> method. /// </remarks> /// <param name="browser">The ChromiumWebBrowser instance this method extends</param> /// <param name="html">The HTML content.</param> /// <param name="url">The URL that will be treated as the address of the content.</param> /// <param name="encoding">Character Encoding</param> /// <param name="oneTimeUse">Whether or not the handler should be used once (true) or until manually unregistered (false)</param> /// <returns>returns false if the Url was not successfully parsed into a Uri</returns> public static bool LoadHtml(this IWebBrowser browser, string html, string url, Encoding encoding, bool oneTimeUse = false) { if (browser.ResourceRequestHandlerFactory == null) { browser.ResourceRequestHandlerFactory = new ResourceRequestHandlerFactory(); } var handler = browser.ResourceRequestHandlerFactory as ResourceRequestHandlerFactory; if (handler == null) { throw new Exception("LoadHtml can only be used with the default IResourceRequestHandlerFactory(DefaultResourceRequestHandlerFactory) implementation"); } if (handler.RegisterHandler(url, ResourceHandler.GetByteArray(html, encoding, true), ResourceHandler.DefaultMimeType, oneTimeUse)) { browser.Load(url); return(true); } return(false); }
/// <summary> /// Registers and loads a <see cref="ResourceHandler"/> that represents the HTML content. /// </summary> /// <remarks> /// `Cef` Native `LoadHtml` is unpredictable and only works sometimes, this method wraps /// the provided HTML in a <see cref="ResourceHandler"/> and loads the provided url using /// the <see cref="IWebBrowser.Load"/> method. /// </remarks> /// <param name="browser">The ChromiumWebBrowser instance this method extends</param> /// <param name="html">The HTML content.</param> /// <param name="url">The URL that will be treated as the address of the content.</param> /// <param name="encoding">Character Encoding</param> /// <param name="oneTimeUse">Whether or not the handler should be used once (true) or until manually unregistered (false)</param> /// <returns>returns false if the Url was not successfully parsed into a Uri</returns> public static bool LoadHtml(this IWebBrowser browser, string html, string url, Encoding encoding, bool oneTimeUse = false) { var handler = browser.ResourceHandlerFactory; if (handler == null) { throw new Exception("Implement IResourceHandlerFactory and assign to the ResourceHandlerFactory property to use this feature"); } var resourceHandler = handler as DefaultResourceHandlerFactory; if (resourceHandler == null) { throw new Exception("LoadHtml can only be used with the default IResourceHandlerFactory(DefaultResourceHandlerFactory) implementation"); } if (resourceHandler.RegisterHandler(url, ResourceHandler.GetByteArray(html, encoding, true), ResourceHandler.DefaultMimeType, oneTimeUse)) { browser.Load(url); return(true); } return(false); }