You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.0 KiB
62 lines
2.0 KiB
namespace ZenFulcrum.EmbeddedBrowser { |
|
/// <summary> |
|
/// Generates HTML for errors for page load failures. |
|
/// |
|
/// In the past we had a single static HTML page that we'd load, followed by a CallFunction() invocation to set the error |
|
/// details. The JS call can be iffy at times when an error is going on, so now we just go with straight HTML and no JavaScript. |
|
/// |
|
/// The Real Solution™ is to have some form of page interstitials and/or a proper error page concept. |
|
/// </summary> |
|
public static class ErrorGenerator { |
|
private const string htmlIntro = @"<!DOCTYPE html><html><head><meta charset=""UTF-8""> |
|
<style type='text/css'> |
|
body { background: rgba(255, 255, 255, .7); color: black; } |
|
#loadError .detail { font-size: 90%; color: #444; } |
|
</style></head><body> |
|
"; |
|
|
|
private const string htmlOutro = @"</body></html>"; |
|
|
|
private const string loadTemplate = @"<div id='loadError'> |
|
<h1>Load Error</h1> |
|
<p class='mainError'>{mainError}</p> |
|
<p class='detail'>{detail}</p> |
|
</div>"; |
|
|
|
private const string sadTemplate = @"<div id='sadTab'> |
|
<h1>Page Crashed</h1> |
|
<p>The renderer process for this page is no longer running.</p> |
|
</div>"; |
|
|
|
/// <summary> |
|
/// Quick and dirty htmlspecialchars. |
|
/// (Given we don't have access to System.Net.WebUtility.HtmlDecode.) |
|
/// </summary> |
|
private static string Encode(string text) { |
|
return text.Replace("&", "&").Replace("\"", """).Replace("<", "<").Replace(">", ">"); |
|
} |
|
|
|
public static string GenerateFetchError(JSONNode err) { |
|
return htmlIntro + |
|
loadTemplate |
|
.Replace("{mainError}", Encode("Failed to load " + err["url"])) |
|
.Replace("{detail}", Encode(err["error"])) + |
|
htmlOutro |
|
; |
|
} |
|
|
|
public static string GenerateCertError(JSONNode err) { |
|
return htmlIntro + |
|
loadTemplate |
|
.Replace("{mainError}", Encode("Failed to load " + err["url"])) |
|
.Replace("{detail}", Encode(err["error"])) + |
|
htmlOutro |
|
; |
|
} |
|
|
|
public static string GenerateSadTabError() { |
|
return htmlIntro + sadTemplate + htmlOutro; |
|
} |
|
} |
|
|
|
} |