SEBWIN-342: Resolved UI dependencies in configuration download mechanism.
This commit is contained in:
parent
363f751f55
commit
66cefac874
5 changed files with 28 additions and 73 deletions
|
@ -18,12 +18,6 @@ namespace SafeExamBrowser.Browser.Contracts
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool AllowDownload { get; set; }
|
public bool AllowDownload { get; set; }
|
||||||
|
|
||||||
// TODO
|
|
||||||
///// <summary>
|
|
||||||
///// The browser window from which the download request originated.
|
|
||||||
///// </summary>
|
|
||||||
//public IBrowserWindow BrowserWindow { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Callback executed once a download has been finished.
|
/// Callback executed once a download has been finished.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -174,9 +174,25 @@ namespace SafeExamBrowser.Browser
|
||||||
{
|
{
|
||||||
if (settings.AllowConfigurationDownloads)
|
if (settings.AllowConfigurationDownloads)
|
||||||
{
|
{
|
||||||
// TODO args.BrowserWindow = window;
|
|
||||||
logger.Debug($"Forwarding download request for configuration file '{fileName}'.");
|
logger.Debug($"Forwarding download request for configuration file '{fileName}'.");
|
||||||
ConfigurationDownloadRequested?.Invoke(fileName, args);
|
ConfigurationDownloadRequested?.Invoke(fileName, args);
|
||||||
|
|
||||||
|
if (args.AllowDownload)
|
||||||
|
{
|
||||||
|
logger.Debug($"Download request for configuration file '{fileName}' was granted. Asking user to confirm the reconfiguration...");
|
||||||
|
|
||||||
|
var message = TextKey.MessageBox_ReconfigurationQuestion;
|
||||||
|
var title = TextKey.MessageBox_ReconfigurationQuestionTitle;
|
||||||
|
var result = messageBox.Show(message, title, MessageBoxAction.YesNo, MessageBoxIcon.Question, window);
|
||||||
|
|
||||||
|
args.AllowDownload = result == MessageBoxResult.Yes;
|
||||||
|
logger.Info($"The user chose to {(args.AllowDownload ? "start" : "abort")} the reconfiguration.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logger.Debug($"Download request for configuration file '{fileName}' was denied.");
|
||||||
|
messageBox.Show(TextKey.MessageBox_ReconfigurationDenied, TextKey.MessageBox_ReconfigurationDeniedTitle, parent: window);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -81,7 +81,6 @@ namespace SafeExamBrowser.Browser.Handlers
|
||||||
|
|
||||||
logger.Debug($"Detected download request for configuration file '{downloadItem.Url}'.");
|
logger.Debug($"Detected download request for configuration file '{downloadItem.Url}'.");
|
||||||
ConfigurationDownloadRequested?.Invoke(downloadItem.SuggestedFileName, args);
|
ConfigurationDownloadRequested?.Invoke(downloadItem.SuggestedFileName, args);
|
||||||
logger.Debug($"Download of configuration file '{downloadItem.Url}' was {(args.AllowDownload ? "granted" : "denied")}.");
|
|
||||||
|
|
||||||
if (args.AllowDownload)
|
if (args.AllowDownload)
|
||||||
{
|
{
|
||||||
|
@ -90,11 +89,17 @@ namespace SafeExamBrowser.Browser.Handlers
|
||||||
callbacks[downloadItem.Id] = args.Callback;
|
callbacks[downloadItem.Id] = args.Callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logger.Debug($"Starting download of configuration file '{downloadItem.Url}'...");
|
||||||
|
|
||||||
using (callback)
|
using (callback)
|
||||||
{
|
{
|
||||||
callback.Continue(args.DownloadPath, false);
|
callback.Continue(args.DownloadPath, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logger.Debug($"Download of configuration file '{downloadItem.Url}' was cancelled.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -286,55 +286,6 @@ namespace SafeExamBrowser.Client.UnitTests
|
||||||
Assert.IsTrue(bounds == 3);
|
Assert.IsTrue(bounds == 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
|
||||||
public void Reconfiguration_MustAskUserToConfirm()
|
|
||||||
{
|
|
||||||
appConfig.DownloadDirectory = @"C:\Folder\Does\Not\Exist";
|
|
||||||
settings.ConfigurationMode = ConfigurationMode.ConfigureClient;
|
|
||||||
messageBox.Setup(m => m.Show(
|
|
||||||
It.IsAny<TextKey>(),
|
|
||||||
It.IsAny<TextKey>(),
|
|
||||||
It.IsAny<MessageBoxAction>(),
|
|
||||||
It.IsAny<MessageBoxIcon>(),
|
|
||||||
It.IsAny<IWindow>())).Returns(MessageBoxResult.Yes);
|
|
||||||
|
|
||||||
sut.TryStart();
|
|
||||||
browserController.Raise(b => b.ConfigurationDownloadRequested += null, "filepath.seb", new DownloadEventArgs());
|
|
||||||
|
|
||||||
messageBox.Verify(m => m.Show(
|
|
||||||
It.IsAny<TextKey>(),
|
|
||||||
It.IsAny<TextKey>(),
|
|
||||||
It.IsAny<MessageBoxAction>(),
|
|
||||||
It.IsAny<MessageBoxIcon>(),
|
|
||||||
It.IsAny<IWindow>()), Times.Once);
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestMethod]
|
|
||||||
public void Reconfiguration_MustNotStartIfNotWantedByUser()
|
|
||||||
{
|
|
||||||
var args = new DownloadEventArgs();
|
|
||||||
|
|
||||||
settings.ConfigurationMode = ConfigurationMode.ConfigureClient;
|
|
||||||
messageBox.Setup(m => m.Show(
|
|
||||||
It.IsAny<TextKey>(),
|
|
||||||
It.IsAny<TextKey>(),
|
|
||||||
It.IsAny<MessageBoxAction>(),
|
|
||||||
It.IsAny<MessageBoxIcon>(),
|
|
||||||
It.IsAny<IWindow>())).Returns(MessageBoxResult.No);
|
|
||||||
|
|
||||||
sut.TryStart();
|
|
||||||
browserController.Raise(b => b.ConfigurationDownloadRequested += null, "filepath.seb", args);
|
|
||||||
|
|
||||||
messageBox.Verify(m => m.Show(
|
|
||||||
It.IsAny<TextKey>(),
|
|
||||||
It.IsAny<TextKey>(),
|
|
||||||
It.IsAny<MessageBoxAction>(),
|
|
||||||
It.IsAny<MessageBoxIcon>(),
|
|
||||||
It.IsAny<IWindow>()), Times.Once);
|
|
||||||
|
|
||||||
Assert.IsFalse(args.AllowDownload);
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Reconfiguration_MustDenyIfInExamMode()
|
public void Reconfiguration_MustDenyIfInExamMode()
|
||||||
{
|
{
|
||||||
|
|
|
@ -227,26 +227,15 @@ namespace SafeExamBrowser.Client
|
||||||
{
|
{
|
||||||
if (Settings.ConfigurationMode == ConfigurationMode.ConfigureClient)
|
if (Settings.ConfigurationMode == ConfigurationMode.ConfigureClient)
|
||||||
{
|
{
|
||||||
logger.Info($"Received download request for configuration file '{fileName}'. Asking user to confirm the reconfiguration...");
|
args.AllowDownload = true;
|
||||||
|
args.Callback = Browser_ConfigurationDownloadFinished;
|
||||||
var message = TextKey.MessageBox_ReconfigurationQuestion;
|
args.DownloadPath = Path.Combine(appConfig.DownloadDirectory, fileName);
|
||||||
var title = TextKey.MessageBox_ReconfigurationQuestionTitle;
|
logger.Info($"Allowed download request for configuration file '{fileName}'.");
|
||||||
var result = messageBox.Show(message, title, MessageBoxAction.YesNo, MessageBoxIcon.Question/*// TODO , args.BrowserWindow*/);
|
|
||||||
var reconfigure = result == MessageBoxResult.Yes;
|
|
||||||
|
|
||||||
logger.Info($"The user chose to {(reconfigure ? "start" : "abort")} the reconfiguration.");
|
|
||||||
|
|
||||||
if (reconfigure)
|
|
||||||
{
|
|
||||||
args.AllowDownload = true;
|
|
||||||
args.Callback = Browser_ConfigurationDownloadFinished;
|
|
||||||
args.DownloadPath = Path.Combine(appConfig.DownloadDirectory, fileName);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
args.AllowDownload = false;
|
||||||
logger.Info($"Denied download request for configuration file '{fileName}' due to '{Settings.ConfigurationMode}' mode.");
|
logger.Info($"Denied download request for configuration file '{fileName}' due to '{Settings.ConfigurationMode}' mode.");
|
||||||
messageBox.Show(TextKey.MessageBox_ReconfigurationDenied, TextKey.MessageBox_ReconfigurationDeniedTitle/*,// TODO parent: args.BrowserWindow*/);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue