SEBWIN-362: Ensured load error page is not rendered when a request is aborted.
This commit is contained in:
parent
34cf9b9cf4
commit
9e8c5056cf
2 changed files with 33 additions and 5 deletions
|
@ -112,6 +112,7 @@ namespace SafeExamBrowser.Browser
|
||||||
private void InitializeControl()
|
private void InitializeControl()
|
||||||
{
|
{
|
||||||
var contextMenuHandler = new ContextMenuHandler();
|
var contextMenuHandler = new ContextMenuHandler();
|
||||||
|
var controlLogger = logger.CloneFor($"{nameof(BrowserControl)} #{Id}");
|
||||||
var dialogHandler = new DialogHandler();
|
var dialogHandler = new DialogHandler();
|
||||||
var displayHandler = new DisplayHandler();
|
var displayHandler = new DisplayHandler();
|
||||||
var downloadLogger = logger.CloneFor($"{nameof(DownloadHandler)} #{Id}");
|
var downloadLogger = logger.CloneFor($"{nameof(DownloadHandler)} #{Id}");
|
||||||
|
@ -140,7 +141,17 @@ namespace SafeExamBrowser.Browser
|
||||||
|
|
||||||
InitializeRequestFilter(requestFilter);
|
InitializeRequestFilter(requestFilter);
|
||||||
|
|
||||||
control = new BrowserControl(contextMenuHandler, dialogHandler, displayHandler, downloadHandler, htmlLoader, keyboardHandler, lifeSpanHandler, requestHandler, startUrl);
|
control = new BrowserControl(
|
||||||
|
contextMenuHandler,
|
||||||
|
dialogHandler,
|
||||||
|
displayHandler,
|
||||||
|
downloadHandler,
|
||||||
|
htmlLoader,
|
||||||
|
keyboardHandler,
|
||||||
|
lifeSpanHandler,
|
||||||
|
controlLogger,
|
||||||
|
requestHandler,
|
||||||
|
startUrl);
|
||||||
control.AddressChanged += Control_AddressChanged;
|
control.AddressChanged += Control_AddressChanged;
|
||||||
control.LoadingStateChanged += Control_LoadingStateChanged;
|
control.LoadingStateChanged += Control_LoadingStateChanged;
|
||||||
control.TitleChanged += Control_TitleChanged;
|
control.TitleChanged += Control_TitleChanged;
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
using CefSharp;
|
using CefSharp;
|
||||||
using CefSharp.WinForms;
|
using CefSharp.WinForms;
|
||||||
using SafeExamBrowser.Browser.Pages;
|
using SafeExamBrowser.Browser.Pages;
|
||||||
|
using SafeExamBrowser.Logging.Contracts;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Browser;
|
using SafeExamBrowser.UserInterface.Contracts.Browser;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Browser.Events;
|
using SafeExamBrowser.UserInterface.Contracts.Browser.Events;
|
||||||
|
|
||||||
|
@ -24,6 +25,7 @@ namespace SafeExamBrowser.Browser
|
||||||
private HtmlLoader htmlLoader;
|
private HtmlLoader htmlLoader;
|
||||||
private IKeyboardHandler keyboardHandler;
|
private IKeyboardHandler keyboardHandler;
|
||||||
private ILifeSpanHandler lifeSpanHandler;
|
private ILifeSpanHandler lifeSpanHandler;
|
||||||
|
private ILogger logger;
|
||||||
private IRequestHandler requestHandler;
|
private IRequestHandler requestHandler;
|
||||||
|
|
||||||
private AddressChangedEventHandler addressChanged;
|
private AddressChangedEventHandler addressChanged;
|
||||||
|
@ -59,6 +61,7 @@ namespace SafeExamBrowser.Browser
|
||||||
HtmlLoader htmlLoader,
|
HtmlLoader htmlLoader,
|
||||||
IKeyboardHandler keyboardHandler,
|
IKeyboardHandler keyboardHandler,
|
||||||
ILifeSpanHandler lifeSpanHandler,
|
ILifeSpanHandler lifeSpanHandler,
|
||||||
|
ILogger logger,
|
||||||
IRequestHandler requestHandler,
|
IRequestHandler requestHandler,
|
||||||
string url) : base(url)
|
string url) : base(url)
|
||||||
{
|
{
|
||||||
|
@ -69,6 +72,7 @@ namespace SafeExamBrowser.Browser
|
||||||
this.htmlLoader = htmlLoader;
|
this.htmlLoader = htmlLoader;
|
||||||
this.keyboardHandler = keyboardHandler;
|
this.keyboardHandler = keyboardHandler;
|
||||||
this.lifeSpanHandler = lifeSpanHandler;
|
this.lifeSpanHandler = lifeSpanHandler;
|
||||||
|
this.logger = logger;
|
||||||
this.requestHandler = requestHandler;
|
this.requestHandler = requestHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,12 +126,25 @@ namespace SafeExamBrowser.Browser
|
||||||
|
|
||||||
private void BrowserControl_LoadError(object sender, LoadErrorEventArgs e)
|
private void BrowserControl_LoadError(object sender, LoadErrorEventArgs e)
|
||||||
{
|
{
|
||||||
var html = string.Copy(errorPage);
|
if (e.ErrorCode == CefErrorCode.None)
|
||||||
|
{
|
||||||
|
logger.Info($"Request for '{e.FailedUrl}' was successful.");
|
||||||
|
}
|
||||||
|
else if (e.ErrorCode == CefErrorCode.Aborted)
|
||||||
|
{
|
||||||
|
logger.Info($"Request for '{e.FailedUrl}' was aborted.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var html = string.Copy(errorPage);
|
||||||
|
|
||||||
html = html.Replace("%%STATUS%%", $"{e.ErrorText} ({e.ErrorCode})");
|
logger.Warn($"Request for '{e.FailedUrl}' failed: {e.ErrorText} ({e.ErrorCode}).");
|
||||||
html = html.Replace("%%URL%%", e.FailedUrl);
|
|
||||||
|
|
||||||
e.Frame.LoadHtml(html, true);
|
html = html.Replace("%%STATUS%%", $"{e.ErrorText} ({e.ErrorCode})");
|
||||||
|
html = html.Replace("%%URL%%", e.FailedUrl);
|
||||||
|
|
||||||
|
e.Frame.LoadHtml(html, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue