SEBWIN-414: Implemented new feature to control displaying and logging of URLs in browser.

This commit is contained in:
Damian Büchel 2020-09-29 14:01:17 +02:00
parent 3a23cec2c2
commit 68decb740c
21 changed files with 1282 additions and 1024 deletions

View file

@ -16,6 +16,7 @@ using SafeExamBrowser.Browser.Contracts.Events;
using SafeExamBrowser.Browser.Handlers; using SafeExamBrowser.Browser.Handlers;
using SafeExamBrowser.Configuration.Contracts; using SafeExamBrowser.Configuration.Contracts;
using SafeExamBrowser.Logging.Contracts; using SafeExamBrowser.Logging.Contracts;
using SafeExamBrowser.Settings.Browser;
using SafeExamBrowser.UserInterface.Contracts.Browser.Data; using SafeExamBrowser.UserInterface.Contracts.Browser.Data;
using BrowserSettings = SafeExamBrowser.Settings.Browser.BrowserSettings; using BrowserSettings = SafeExamBrowser.Settings.Browser.BrowserSettings;
@ -25,18 +26,20 @@ namespace SafeExamBrowser.Browser.UnitTests.Handlers
public class DownloadHandlerTests public class DownloadHandlerTests
{ {
private AppConfig appConfig; private AppConfig appConfig;
private BrowserSettings settings;
private Mock<ILogger> logger; private Mock<ILogger> logger;
private BrowserSettings settings;
private WindowSettings windowSettings;
private DownloadHandler sut; private DownloadHandler sut;
[TestInitialize] [TestInitialize]
public void Initialize() public void Initialize()
{ {
appConfig = new AppConfig(); appConfig = new AppConfig();
settings = new BrowserSettings();
logger = new Mock<ILogger>(); logger = new Mock<ILogger>();
settings = new BrowserSettings();
windowSettings = new WindowSettings();
sut = new DownloadHandler(appConfig, settings, logger.Object); sut = new DownloadHandler(appConfig, logger.Object, settings, windowSettings);
} }
[TestMethod] [TestMethod]

View file

@ -14,6 +14,7 @@ using SafeExamBrowser.Browser.Handlers;
using SafeExamBrowser.Configuration.Contracts; using SafeExamBrowser.Configuration.Contracts;
using SafeExamBrowser.I18n.Contracts; using SafeExamBrowser.I18n.Contracts;
using SafeExamBrowser.Logging.Contracts; using SafeExamBrowser.Logging.Contracts;
using SafeExamBrowser.Settings.Browser;
using SafeExamBrowser.Settings.Browser.Filter; using SafeExamBrowser.Settings.Browser.Filter;
using SafeExamBrowser.Settings.Browser.Proxy; using SafeExamBrowser.Settings.Browser.Proxy;
using BrowserSettings = SafeExamBrowser.Settings.Browser.BrowserSettings; using BrowserSettings = SafeExamBrowser.Settings.Browser.BrowserSettings;
@ -29,6 +30,7 @@ namespace SafeExamBrowser.Browser.UnitTests.Handlers
private Mock<IRequestFilter> filter; private Mock<IRequestFilter> filter;
private Mock<ILogger> logger; private Mock<ILogger> logger;
private BrowserSettings settings; private BrowserSettings settings;
private WindowSettings windowSettings;
private ResourceHandler resourceHandler; private ResourceHandler resourceHandler;
private Mock<IText> text; private Mock<IText> text;
private TestableRequestHandler sut; private TestableRequestHandler sut;
@ -40,10 +42,11 @@ namespace SafeExamBrowser.Browser.UnitTests.Handlers
filter = new Mock<IRequestFilter>(); filter = new Mock<IRequestFilter>();
logger = new Mock<ILogger>(); logger = new Mock<ILogger>();
settings = new BrowserSettings(); settings = new BrowserSettings();
windowSettings = new WindowSettings();
text = new Mock<IText>(); text = new Mock<IText>();
resourceHandler = new ResourceHandler(appConfig, settings, filter.Object, logger.Object, text.Object); resourceHandler = new ResourceHandler(appConfig, filter.Object, logger.Object, settings, windowSettings, text.Object);
sut = new TestableRequestHandler(appConfig, filter.Object, logger.Object, settings, resourceHandler, text.Object); sut = new TestableRequestHandler(appConfig, filter.Object, logger.Object, resourceHandler, settings, windowSettings, text.Object);
} }
[TestMethod] [TestMethod]
@ -201,9 +204,10 @@ namespace SafeExamBrowser.Browser.UnitTests.Handlers
AppConfig appConfig, AppConfig appConfig,
IRequestFilter filter, IRequestFilter filter,
ILogger logger, ILogger logger,
BrowserSettings settings,
ResourceHandler resourceHandler, ResourceHandler resourceHandler,
IText text) : base(appConfig, filter, logger, settings, resourceHandler, text) BrowserSettings settings,
WindowSettings windowSettings,
IText text) : base(appConfig, filter, logger, resourceHandler, settings, windowSettings, text)
{ {
} }

View file

@ -16,6 +16,7 @@ using SafeExamBrowser.Browser.Contracts.Filters;
using SafeExamBrowser.Configuration.Contracts; using SafeExamBrowser.Configuration.Contracts;
using SafeExamBrowser.I18n.Contracts; using SafeExamBrowser.I18n.Contracts;
using SafeExamBrowser.Logging.Contracts; using SafeExamBrowser.Logging.Contracts;
using SafeExamBrowser.Settings.Browser;
using SafeExamBrowser.Settings.Browser.Filter; using SafeExamBrowser.Settings.Browser.Filter;
using BrowserSettings = SafeExamBrowser.Settings.Browser.BrowserSettings; using BrowserSettings = SafeExamBrowser.Settings.Browser.BrowserSettings;
using Request = SafeExamBrowser.Browser.Contracts.Filters.Request; using Request = SafeExamBrowser.Browser.Contracts.Filters.Request;
@ -27,9 +28,10 @@ namespace SafeExamBrowser.Browser.UnitTests.Handlers
public class ResourceHandlerTests public class ResourceHandlerTests
{ {
private AppConfig appConfig; private AppConfig appConfig;
private BrowserSettings settings;
private Mock<IRequestFilter> filter; private Mock<IRequestFilter> filter;
private Mock<ILogger> logger; private Mock<ILogger> logger;
private BrowserSettings settings;
private WindowSettings windowSettings;
private Mock<IText> text; private Mock<IText> text;
private TestableResourceHandler sut; private TestableResourceHandler sut;
@ -37,12 +39,13 @@ namespace SafeExamBrowser.Browser.UnitTests.Handlers
public void Initialize() public void Initialize()
{ {
appConfig = new AppConfig(); appConfig = new AppConfig();
settings = new BrowserSettings();
filter = new Mock<IRequestFilter>(); filter = new Mock<IRequestFilter>();
logger = new Mock<ILogger>(); logger = new Mock<ILogger>();
settings = new BrowserSettings();
windowSettings = new WindowSettings();
text = new Mock<IText>(); text = new Mock<IText>();
sut = new TestableResourceHandler(appConfig, settings, filter.Object, logger.Object, text.Object); sut = new TestableResourceHandler(appConfig, filter.Object, logger.Object, settings, windowSettings, text.Object);
} }
[TestMethod] [TestMethod]
@ -156,7 +159,13 @@ namespace SafeExamBrowser.Browser.UnitTests.Handlers
private class TestableResourceHandler : ResourceHandler private class TestableResourceHandler : ResourceHandler
{ {
internal TestableResourceHandler(AppConfig appConfig, BrowserSettings settings, IRequestFilter filter, ILogger logger, IText text) : base(appConfig, settings, filter, logger, text) internal TestableResourceHandler(
AppConfig appConfig,
IRequestFilter filter,
ILogger logger,
BrowserSettings settings,
WindowSettings windowSettings,
IText text) : base(appConfig, filter, logger, settings, windowSettings, text)
{ {
} }

View file

@ -21,6 +21,7 @@ using SafeExamBrowser.Browser.Events;
using SafeExamBrowser.Configuration.Contracts; using SafeExamBrowser.Configuration.Contracts;
using SafeExamBrowser.I18n.Contracts; using SafeExamBrowser.I18n.Contracts;
using SafeExamBrowser.Logging.Contracts; using SafeExamBrowser.Logging.Contracts;
using SafeExamBrowser.Settings.Browser;
using SafeExamBrowser.Settings.Browser.Proxy; using SafeExamBrowser.Settings.Browser.Proxy;
using SafeExamBrowser.Settings.Logging; using SafeExamBrowser.Settings.Logging;
using SafeExamBrowser.UserInterface.Contracts; using SafeExamBrowser.UserInterface.Contracts;
@ -339,7 +340,7 @@ namespace SafeExamBrowser.Browser
private void Instance_PopupRequested(PopupRequestedEventArgs args) private void Instance_PopupRequested(PopupRequestedEventArgs args)
{ {
logger.Info($"Received request to create new instance for '{args.Url}'..."); logger.Info($"Received request to create new instance{(settings.AdditionalWindow.UrlPolicy.CanLog() ? $" for '{args.Url}'" : "")}...");
CreateNewInstance(args.Url); CreateNewInstance(args.Url);
} }

View file

@ -123,13 +123,13 @@ namespace SafeExamBrowser.Browser
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}");
var downloadHandler = new DownloadHandler(appConfig, settings, downloadLogger); var downloadHandler = new DownloadHandler(appConfig, downloadLogger, settings, WindowSettings);
var keyboardHandler = new KeyboardHandler(); var keyboardHandler = new KeyboardHandler();
var lifeSpanHandler = new LifeSpanHandler(); var lifeSpanHandler = new LifeSpanHandler();
var requestFilter = new RequestFilter(); var requestFilter = new RequestFilter();
var requestLogger = logger.CloneFor($"{nameof(RequestHandler)} #{Id}"); var requestLogger = logger.CloneFor($"{nameof(RequestHandler)} #{Id}");
var resourceHandler = new ResourceHandler(appConfig, settings, requestFilter, logger, text); var resourceHandler = new ResourceHandler(appConfig, requestFilter, logger, settings, WindowSettings, text);
var requestHandler = new RequestHandler(appConfig, requestFilter, requestLogger, settings, resourceHandler, text); var requestHandler = new RequestHandler(appConfig, requestFilter, requestLogger, resourceHandler, settings, WindowSettings, text);
Icon = new BrowserIconResource(); Icon = new BrowserIconResource();
@ -191,7 +191,7 @@ namespace SafeExamBrowser.Browser
rule.Initialize(new FilterRuleSettings { Expression = settings.StartUrl, Result = FilterResult.Allow }); rule.Initialize(new FilterRuleSettings { Expression = settings.StartUrl, Result = FilterResult.Allow });
requestFilter.Load(rule); requestFilter.Load(rule);
logger.Debug($"Automatically created filter rule to allow start URL '{settings.StartUrl}'."); logger.Debug($"Automatically created filter rule to allow start URL{(WindowSettings.UrlPolicy.CanLog() ? $" '{settings.StartUrl}'" : "")}.");
} }
} }
} }
@ -219,30 +219,37 @@ namespace SafeExamBrowser.Browser
private void Control_AddressChanged(string address) private void Control_AddressChanged(string address)
{ {
logger.Debug($"Navigated to '{address}'."); logger.Debug($"Navigated{(WindowSettings.UrlPolicy.CanLog() ? $" to '{address}'" : "")}.");
window.UpdateAddress(address); window.UpdateAddress(address);
if (WindowSettings.UrlPolicy == UrlPolicy.Always || WindowSettings.UrlPolicy == UrlPolicy.BeforeTitle)
{
Title = address;
window.UpdateTitle(address);
TitleChanged?.Invoke(address);
}
} }
private void Control_LoadFailed(int errorCode, string errorText, string url) private void Control_LoadFailed(int errorCode, string errorText, string url)
{ {
if (errorCode == (int) CefErrorCode.None) if (errorCode == (int) CefErrorCode.None)
{ {
logger.Info($"Request for '{url}' was successful."); logger.Info($"Request{(WindowSettings.UrlPolicy.CanLog() ? $" for '{url}'" : "")} was successful.");
} }
else if (errorCode == (int) CefErrorCode.Aborted) else if (errorCode == (int) CefErrorCode.Aborted)
{ {
logger.Info($"Request for '{url}' was aborted."); logger.Info($"Request{(WindowSettings.UrlPolicy.CanLog() ? $" for '{url}'" : "")} was aborted.");
} }
else if (errorCode == (int) CefErrorCode.UnknownUrlScheme) else if (errorCode == (int) CefErrorCode.UnknownUrlScheme)
{ {
logger.Info($"Request for '{url}' contains unknown URL scheme and will be handled by the OS."); logger.Info($"Request{(WindowSettings.UrlPolicy.CanLog() ? $" for '{url}'" : "")} contains unknown URL scheme and will be handled by the OS.");
} }
else else
{ {
var title = text.Get(TextKey.Browser_LoadErrorTitle); var title = text.Get(TextKey.Browser_LoadErrorTitle);
var message = text.Get(TextKey.Browser_LoadErrorMessage).Replace("%%URL%%", url) + $" {errorText} ({errorCode})"; var message = text.Get(TextKey.Browser_LoadErrorMessage).Replace("%%URL%%", WindowSettings.UrlPolicy.CanLogError() ? url : "") + $" {errorText} ({errorCode})";
logger.Warn($"Request for '{url}' failed: {errorText} ({errorCode})."); logger.Warn($"Request{(WindowSettings.UrlPolicy.CanLogError() ? $" for '{url}'" : "")} failed: {errorText} ({errorCode}).");
Task.Run(() => messageBox.Show(message, title, icon: MessageBoxIcon.Error, parent: window)).ContinueWith(_ => control.NavigateBackwards()); Task.Run(() => messageBox.Show(message, title, icon: MessageBoxIcon.Error, parent: window)).ContinueWith(_ => control.NavigateBackwards());
} }
@ -257,9 +264,12 @@ namespace SafeExamBrowser.Browser
private void Control_TitleChanged(string title) private void Control_TitleChanged(string title)
{ {
Title = title; if (WindowSettings.UrlPolicy != UrlPolicy.Always)
window.UpdateTitle(Title); {
TitleChanged?.Invoke(Title); Title = title;
window.UpdateTitle(Title);
TitleChanged?.Invoke(Title);
}
} }
private void DialogHandler_DialogRequested(DialogRequestedEventArgs args) private void DialogHandler_DialogRequested(DialogRequestedEventArgs args)
@ -374,20 +384,20 @@ namespace SafeExamBrowser.Browser
{ {
case PopupPolicy.Allow: case PopupPolicy.Allow:
case PopupPolicy.AllowSameHost when sameHost: case PopupPolicy.AllowSameHost when sameHost:
logger.Debug($"Forwarding request to open new window for '{args.Url}'..."); logger.Debug($"Forwarding request to open new window{(WindowSettings.UrlPolicy.CanLog() ? $" for '{args.Url}'" : "")}...");
PopupRequested?.Invoke(args); PopupRequested?.Invoke(args);
break; break;
case PopupPolicy.AllowSameWindow: case PopupPolicy.AllowSameWindow:
case PopupPolicy.AllowSameHostAndWindow when sameHost: case PopupPolicy.AllowSameHostAndWindow when sameHost:
logger.Info($"Discarding request to open new window and loading '{args.Url}' directly..."); logger.Info($"Discarding request to open new window and loading{(WindowSettings.UrlPolicy.CanLog() ? $" '{args.Url}'" : "")} directly...");
control.NavigateTo(args.Url); control.NavigateTo(args.Url);
break; break;
case PopupPolicy.AllowSameHost when !sameHost: case PopupPolicy.AllowSameHost when !sameHost:
case PopupPolicy.AllowSameHostAndWindow when !sameHost: case PopupPolicy.AllowSameHostAndWindow when !sameHost:
logger.Info($"Blocked request to open new window for '{args.Url}' as it targets a different host."); logger.Info($"Blocked request to open new window{(WindowSettings.UrlPolicy.CanLog() ? $" for '{args.Url}'" : "")} as it targets a different host.");
break; break;
default: default:
logger.Info($"Blocked request to open new window for '{args.Url}'."); logger.Info($"Blocked request to open new window{(WindowSettings.UrlPolicy.CanLog() ? $" for '{args.Url}'" : "")}.");
break; break;
} }
} }
@ -412,17 +422,17 @@ namespace SafeExamBrowser.Browser
if (terminate) if (terminate)
{ {
logger.Info($"User confirmed termination via quit URL '{url}', forwarding request..."); logger.Info($"User confirmed termination via quit URL{(WindowSettings.UrlPolicy.CanLog() ? $" '{url}'" : "")}, forwarding request...");
TerminationRequested?.Invoke(); TerminationRequested?.Invoke();
} }
else else
{ {
logger.Info($"User aborted termination via quit URL '{url}'."); logger.Info($"User aborted termination via quit URL{(WindowSettings.UrlPolicy.CanLog() ? $" '{url}'" : "")}.");
} }
} }
else else
{ {
logger.Info($"Automatically requesting termination due to quit URL '{url}'..."); logger.Info($"Automatically requesting termination due to quit URL{(WindowSettings.UrlPolicy.CanLog() ? $" '{url}'" : "")}...");
TerminationRequested?.Invoke(); TerminationRequested?.Invoke();
} }
} }
@ -433,7 +443,7 @@ namespace SafeExamBrowser.Browser
{ {
Task.Run(() => Task.Run(() =>
{ {
var message = text.Get(TextKey.MessageBox_BrowserNavigationBlocked).Replace("%%URL%%", url); var message = text.Get(TextKey.MessageBox_BrowserNavigationBlocked).Replace("%%URL%%", WindowSettings.UrlPolicy.CanLogError() ? url : "");
var title = text.Get(TextKey.MessageBox_BrowserNavigationBlockedTitle); var title = text.Get(TextKey.MessageBox_BrowserNavigationBlockedTitle);
control.TitleChanged -= Control_TitleChanged; control.TitleChanged -= Control_TitleChanged;

View file

@ -15,6 +15,7 @@ using SafeExamBrowser.Browser.Contracts.Events;
using SafeExamBrowser.Browser.Events; using SafeExamBrowser.Browser.Events;
using SafeExamBrowser.Configuration.Contracts; using SafeExamBrowser.Configuration.Contracts;
using SafeExamBrowser.Logging.Contracts; using SafeExamBrowser.Logging.Contracts;
using SafeExamBrowser.Settings.Browser;
using SafeExamBrowser.UserInterface.Contracts.Browser.Data; using SafeExamBrowser.UserInterface.Contracts.Browser.Data;
using Syroot.Windows.IO; using Syroot.Windows.IO;
using BrowserSettings = SafeExamBrowser.Settings.Browser.BrowserSettings; using BrowserSettings = SafeExamBrowser.Settings.Browser.BrowserSettings;
@ -25,6 +26,7 @@ namespace SafeExamBrowser.Browser.Handlers
{ {
private AppConfig appConfig; private AppConfig appConfig;
private BrowserSettings settings; private BrowserSettings settings;
private WindowSettings windowSettings;
private ConcurrentDictionary<int, DownloadFinishedCallback> callbacks; private ConcurrentDictionary<int, DownloadFinishedCallback> callbacks;
private ConcurrentDictionary<int, Guid> downloads; private ConcurrentDictionary<int, Guid> downloads;
private ILogger logger; private ILogger logger;
@ -32,13 +34,14 @@ namespace SafeExamBrowser.Browser.Handlers
internal event DownloadRequestedEventHandler ConfigurationDownloadRequested; internal event DownloadRequestedEventHandler ConfigurationDownloadRequested;
internal event DownloadUpdatedEventHandler DownloadUpdated; internal event DownloadUpdatedEventHandler DownloadUpdated;
internal DownloadHandler(AppConfig appConfig, BrowserSettings settings, ILogger logger) internal DownloadHandler(AppConfig appConfig, ILogger logger, BrowserSettings settings, WindowSettings windowSettings)
{ {
this.appConfig = appConfig; this.appConfig = appConfig;
this.callbacks = new ConcurrentDictionary<int, DownloadFinishedCallback>(); this.callbacks = new ConcurrentDictionary<int, DownloadFinishedCallback>();
this.downloads = new ConcurrentDictionary<int, Guid>(); this.downloads = new ConcurrentDictionary<int, Guid>();
this.logger = logger; this.logger = logger;
this.settings = settings; this.settings = settings;
this.windowSettings = windowSettings;
} }
public void OnBeforeDownload(IWebBrowser webBrowser, IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback) public void OnBeforeDownload(IWebBrowser webBrowser, IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
@ -52,7 +55,7 @@ namespace SafeExamBrowser.Browser.Handlers
isConfigurationFile |= string.Equals(appConfig.ConfigurationFileExtension, uriExtension, StringComparison.OrdinalIgnoreCase); isConfigurationFile |= string.Equals(appConfig.ConfigurationFileExtension, uriExtension, StringComparison.OrdinalIgnoreCase);
isConfigurationFile |= string.Equals(appConfig.ConfigurationFileMimeType, downloadItem.MimeType, StringComparison.OrdinalIgnoreCase); isConfigurationFile |= string.Equals(appConfig.ConfigurationFileMimeType, downloadItem.MimeType, StringComparison.OrdinalIgnoreCase);
logger.Debug($"Detected download request for '{uri}'."); logger.Debug($"Detected download request{(windowSettings.UrlPolicy.CanLog() ? $" for '{uri}'" : "")}.");
if (isConfigurationFile) if (isConfigurationFile)
{ {
@ -64,7 +67,7 @@ namespace SafeExamBrowser.Browser.Handlers
} }
else else
{ {
logger.Info($"Aborted download request for '{uri}', as downloading is not allowed."); logger.Info($"Aborted download request{(windowSettings.UrlPolicy.CanLog() ? $" for '{uri}'" : "")}, as downloading is not allowed.");
} }
} }
@ -88,7 +91,7 @@ namespace SafeExamBrowser.Browser.Handlers
if (downloadItem.IsComplete || downloadItem.IsCancelled) if (downloadItem.IsComplete || downloadItem.IsCancelled)
{ {
logger.Debug($"Download of '{downloadItem.Url}' {(downloadItem.IsComplete ? "is complete" : "was cancelled")}."); logger.Debug($"Download of '{downloadItem.FullPath}' {(downloadItem.IsComplete ? "is complete" : "was cancelled")}.");
if (callbacks.TryRemove(downloadItem.Id, out DownloadFinishedCallback finished) && finished != null) if (callbacks.TryRemove(downloadItem.Id, out DownloadFinishedCallback finished) && finished != null)
{ {

View file

@ -14,6 +14,7 @@ using SafeExamBrowser.Browser.Events;
using SafeExamBrowser.Configuration.Contracts; using SafeExamBrowser.Configuration.Contracts;
using SafeExamBrowser.I18n.Contracts; using SafeExamBrowser.I18n.Contracts;
using SafeExamBrowser.Logging.Contracts; using SafeExamBrowser.Logging.Contracts;
using SafeExamBrowser.Settings.Browser;
using SafeExamBrowser.Settings.Browser.Filter; using SafeExamBrowser.Settings.Browser.Filter;
using BrowserSettings = SafeExamBrowser.Settings.Browser.BrowserSettings; using BrowserSettings = SafeExamBrowser.Settings.Browser.BrowserSettings;
using Request = SafeExamBrowser.Browser.Contracts.Filters.Request; using Request = SafeExamBrowser.Browser.Contracts.Filters.Request;
@ -26,6 +27,7 @@ namespace SafeExamBrowser.Browser.Handlers
private ILogger logger; private ILogger logger;
private string quitUrlPattern; private string quitUrlPattern;
private ResourceHandler resourceHandler; private ResourceHandler resourceHandler;
private WindowSettings windowSettings;
private BrowserSettings settings; private BrowserSettings settings;
internal event UrlEventHandler QuitUrlVisited; internal event UrlEventHandler QuitUrlVisited;
@ -35,14 +37,16 @@ namespace SafeExamBrowser.Browser.Handlers
AppConfig appConfig, AppConfig appConfig,
IRequestFilter filter, IRequestFilter filter,
ILogger logger, ILogger logger,
BrowserSettings settings,
ResourceHandler resourceHandler, ResourceHandler resourceHandler,
BrowserSettings settings,
WindowSettings windowSettings,
IText text) IText text)
{ {
this.filter = filter; this.filter = filter;
this.logger = logger; this.logger = logger;
this.settings = settings;
this.resourceHandler = resourceHandler; this.resourceHandler = resourceHandler;
this.settings = settings;
this.windowSettings = windowSettings;
} }
protected override bool GetAuthCredentials(IWebBrowser webBrowser, IBrowser browser, string originUrl, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback) protected override bool GetAuthCredentials(IWebBrowser webBrowser, IBrowser browser, string originUrl, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback)
@ -105,7 +109,7 @@ namespace SafeExamBrowser.Browser.Handlers
if (isQuitUrl) if (isQuitUrl)
{ {
logger.Debug($"Detected quit URL '{request.Url}'."); logger.Debug($"Detected quit URL{(windowSettings.UrlPolicy.CanLog() ? $"'{request.Url}'" : "")}.");
} }
} }
@ -123,7 +127,7 @@ namespace SafeExamBrowser.Browser.Handlers
if (result == FilterResult.Block) if (result == FilterResult.Block)
{ {
block = true; block = true;
logger.Info($"Blocked main request for '{request.Url}' ({request.ResourceType}, {request.TransitionType})."); logger.Info($"Blocked main request{(windowSettings.UrlPolicy.CanLog() ? $" for '{request.Url}'" : "")} ({request.ResourceType}, {request.TransitionType}).");
} }
} }
@ -134,7 +138,7 @@ namespace SafeExamBrowser.Browser.Handlers
if (result == FilterResult.Block) if (result == FilterResult.Block)
{ {
block = true; block = true;
logger.Info($"Blocked content request for '{request.Url}' ({request.ResourceType}, {request.TransitionType})."); logger.Info($"Blocked content request{(windowSettings.UrlPolicy.CanLog() ? $" for '{request.Url}'" : "")} ({request.ResourceType}, {request.TransitionType}).");
} }
} }

View file

@ -22,6 +22,7 @@ using SafeExamBrowser.Browser.Pages;
using SafeExamBrowser.Configuration.Contracts; using SafeExamBrowser.Configuration.Contracts;
using SafeExamBrowser.I18n.Contracts; using SafeExamBrowser.I18n.Contracts;
using SafeExamBrowser.Logging.Contracts; using SafeExamBrowser.Logging.Contracts;
using SafeExamBrowser.Settings.Browser;
using SafeExamBrowser.Settings.Browser.Filter; using SafeExamBrowser.Settings.Browser.Filter;
using BrowserSettings = SafeExamBrowser.Settings.Browser.BrowserSettings; using BrowserSettings = SafeExamBrowser.Settings.Browser.BrowserSettings;
using Request = SafeExamBrowser.Browser.Contracts.Filters.Request; using Request = SafeExamBrowser.Browser.Contracts.Filters.Request;
@ -39,11 +40,18 @@ namespace SafeExamBrowser.Browser.Handlers
private ILogger logger; private ILogger logger;
private IResourceHandler pageHandler; private IResourceHandler pageHandler;
private BrowserSettings settings; private BrowserSettings settings;
private WindowSettings windowSettings;
private IText text; private IText text;
internal event SessionIdentifierDetectedEventHandler SessionIdentifierDetected; internal event SessionIdentifierDetectedEventHandler SessionIdentifierDetected;
internal ResourceHandler(AppConfig appConfig, BrowserSettings settings, IRequestFilter filter, ILogger logger, IText text) internal ResourceHandler(
AppConfig appConfig,
IRequestFilter filter,
ILogger logger,
BrowserSettings settings,
WindowSettings windowSettings,
IText text)
{ {
this.appConfig = appConfig; this.appConfig = appConfig;
this.algorithm = new SHA256Managed(); this.algorithm = new SHA256Managed();
@ -51,6 +59,7 @@ namespace SafeExamBrowser.Browser.Handlers
this.htmlLoader = new HtmlLoader(text); this.htmlLoader = new HtmlLoader(text);
this.logger = logger; this.logger = logger;
this.settings = settings; this.settings = settings;
this.windowSettings = windowSettings;
this.text = text; this.text = text;
} }
@ -138,7 +147,7 @@ namespace SafeExamBrowser.Browser.Handlers
if (result == FilterResult.Block) if (result == FilterResult.Block)
{ {
block = true; block = true;
logger.Info($"Blocked content request for '{request.Url}' ({request.ResourceType}, {request.TransitionType})."); logger.Info($"Blocked content request{(windowSettings.UrlPolicy.CanLog() ? $" for '{request.Url}'" : "")} ({request.ResourceType}, {request.TransitionType}).");
} }
} }
@ -183,7 +192,7 @@ namespace SafeExamBrowser.Browser.Handlers
if (redirect) if (redirect)
{ {
logger.Info($"Redirecting to '{url}' to disable PDF reader toolbar."); logger.Info($"Redirecting{(windowSettings.UrlPolicy.CanLog() ? $" to '{url}'" : "")} to disable PDF reader toolbar.");
} }
return redirect; return redirect;

View file

@ -57,6 +57,9 @@ namespace SafeExamBrowser.Configuration.ConfigurationData.DataMapping
case Keys.Browser.AdditionalWindow.ShowReloadWarning: case Keys.Browser.AdditionalWindow.ShowReloadWarning:
MapShowReloadWarningAdditionalWindow(settings, value); MapShowReloadWarningAdditionalWindow(settings, value);
break; break;
case Keys.Browser.AdditionalWindow.UrlPolicy:
MapUrlPolicy(settings.Browser.AdditionalWindow, value);
break;
case Keys.Browser.AdditionalWindow.WindowHeight: case Keys.Browser.AdditionalWindow.WindowHeight:
MapWindowHeightAdditionalWindow(settings, value); MapWindowHeightAdditionalWindow(settings, value);
break; break;
@ -102,6 +105,9 @@ namespace SafeExamBrowser.Configuration.ConfigurationData.DataMapping
case Keys.Browser.MainWindow.ShowReloadWarning: case Keys.Browser.MainWindow.ShowReloadWarning:
MapShowReloadWarning(settings, value); MapShowReloadWarning(settings, value);
break; break;
case Keys.Browser.MainWindow.UrlPolicy:
MapUrlPolicy(settings.Browser.MainWindow, value);
break;
case Keys.Browser.MainWindow.WindowHeight: case Keys.Browser.MainWindow.WindowHeight:
MapWindowHeightMainWindow(settings, value); MapWindowHeightMainWindow(settings, value);
break; break;
@ -434,6 +440,33 @@ namespace SafeExamBrowser.Configuration.ConfigurationData.DataMapping
} }
} }
private void MapUrlPolicy(WindowSettings settings, object value)
{
const int ALWAYS = 3;
const int BEFORE_TITLE = 2;
const int LOAD_ERROR = 1;
const int NEVER = 0;
if (value is int policy)
{
switch (policy)
{
case ALWAYS:
settings.UrlPolicy = UrlPolicy.Always;
break;
case BEFORE_TITLE:
settings.UrlPolicy = UrlPolicy.BeforeTitle;
break;
case LOAD_ERROR:
settings.UrlPolicy = UrlPolicy.LoadError;
break;
case NEVER:
settings.UrlPolicy = UrlPolicy.Never;
break;
}
}
}
private void MapUserAgentMode(IDictionary<string, object> rawData, AppSettings settings) private void MapUserAgentMode(IDictionary<string, object> rawData, AppSettings settings)
{ {
const int DEFAULT = 0; const int DEFAULT = 0;

View file

@ -114,6 +114,7 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
settings.Browser.AdditionalWindow.RelativeWidth = 50; settings.Browser.AdditionalWindow.RelativeWidth = 50;
settings.Browser.AdditionalWindow.ShowReloadWarning = false; settings.Browser.AdditionalWindow.ShowReloadWarning = false;
settings.Browser.AdditionalWindow.ShowToolbar = false; settings.Browser.AdditionalWindow.ShowToolbar = false;
settings.Browser.AdditionalWindow.UrlPolicy = UrlPolicy.Never;
settings.Browser.AllowConfigurationDownloads = true; settings.Browser.AllowConfigurationDownloads = true;
settings.Browser.AllowCustomDownAndUploadLocation = false; settings.Browser.AllowCustomDownAndUploadLocation = false;
settings.Browser.AllowDownloads = true; settings.Browser.AllowDownloads = true;
@ -136,6 +137,7 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
settings.Browser.MainWindow.RelativeWidth = 100; settings.Browser.MainWindow.RelativeWidth = 100;
settings.Browser.MainWindow.ShowReloadWarning = true; settings.Browser.MainWindow.ShowReloadWarning = true;
settings.Browser.MainWindow.ShowToolbar = false; settings.Browser.MainWindow.ShowToolbar = false;
settings.Browser.MainWindow.UrlPolicy = UrlPolicy.Never;
settings.Browser.PopupPolicy = PopupPolicy.Allow; settings.Browser.PopupPolicy = PopupPolicy.Allow;
settings.Browser.Proxy.Policy = ProxyPolicy.System; settings.Browser.Proxy.Policy = ProxyPolicy.System;
settings.Browser.ResetOnQuitUrl = false; settings.Browser.ResetOnQuitUrl = false;

View file

@ -78,6 +78,7 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
internal const string AllowNavigation = "newBrowserWindowNavigation"; internal const string AllowNavigation = "newBrowserWindowNavigation";
internal const string AllowReload = "newBrowserWindowAllowReload"; internal const string AllowReload = "newBrowserWindowAllowReload";
internal const string ShowReloadWarning = "newBrowserWindowShowReloadWarning"; internal const string ShowReloadWarning = "newBrowserWindowShowReloadWarning";
internal const string UrlPolicy = "newBrowserWindowShowURL";
internal const string WindowHeight = "newBrowserWindowByLinkHeight"; internal const string WindowHeight = "newBrowserWindowByLinkHeight";
internal const string WindowWidth = "newBrowserWindowByLinkWidth"; internal const string WindowWidth = "newBrowserWindowByLinkWidth";
internal const string WindowPosition = "newBrowserWindowByLinkPositioning"; internal const string WindowPosition = "newBrowserWindowByLinkPositioning";
@ -100,6 +101,7 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
internal const string AllowNavigation = "allowBrowsingBackForward"; internal const string AllowNavigation = "allowBrowsingBackForward";
internal const string AllowReload = "browserWindowAllowReload"; internal const string AllowReload = "browserWindowAllowReload";
internal const string ShowReloadWarning = "showReloadWarning"; internal const string ShowReloadWarning = "showReloadWarning";
internal const string UrlPolicy = "browserWindowShowURL";
internal const string WindowHeight = "mainBrowserWindowHeight"; internal const string WindowHeight = "mainBrowserWindowHeight";
internal const string WindowMode = "browserViewMode"; internal const string WindowMode = "browserViewMode";
internal const string WindowWidth = "mainBrowserWindowWidth"; internal const string WindowWidth = "mainBrowserWindowWidth";

View file

@ -0,0 +1,55 @@
/*
* Copyright (c) 2020 ETH Zürich, Educational Development and Technology (LET)
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
namespace SafeExamBrowser.Settings.Browser
{
/// <summary>
/// Defines all policies for handling of URLs in the user interface and log.
/// </summary>
public enum UrlPolicy
{
/// <summary>
/// Always show the URL of a resource instead of the title. Log URLs normally.
/// </summary>
Always,
/// <summary>
/// Show the URL until the title of a resource is available. Log URLs normally.
/// </summary>
BeforeTitle,
/// <summary>
/// Only show the URL on load errors, otherwise show the title of a resource. Only log URLs in error messages.
/// </summary>
LoadError,
/// <summary>
/// Never show the URL of a resource and do not log any URLs.
/// </summary>
Never
}
public static class UrlPolicyExtensions
{
/// <summary>
/// Indicates whether URLs may be logged normally.
/// </summary>
public static bool CanLog(this UrlPolicy policy)
{
return policy == UrlPolicy.Always || policy == UrlPolicy.BeforeTitle;
}
/// <summary>
/// Indicates whether URLs may be logged in case of an error.
/// </summary>
public static bool CanLogError(this UrlPolicy policy)
{
return policy.CanLog() || policy == UrlPolicy.LoadError;
}
}
}

View file

@ -80,5 +80,10 @@ namespace SafeExamBrowser.Settings.Browser
/// Determines whether the window toolbar is visible. /// Determines whether the window toolbar is visible.
/// </summary> /// </summary>
public bool ShowToolbar { get; set; } public bool ShowToolbar { get; set; }
/// <summary>
/// Determines how URLs are handled in the user interface and log.
/// </summary>
public UrlPolicy UrlPolicy { get; set; }
} }
} }

View file

@ -59,6 +59,7 @@
<Compile Include="Applications\WhitelistApplication.cs" /> <Compile Include="Applications\WhitelistApplication.cs" />
<Compile Include="Browser\FilterSettings.cs" /> <Compile Include="Browser\FilterSettings.cs" />
<Compile Include="Browser\BrowserSettings.cs" /> <Compile Include="Browser\BrowserSettings.cs" />
<Compile Include="Browser\UrlPolicy.cs" />
<Compile Include="Browser\WindowPosition.cs" /> <Compile Include="Browser\WindowPosition.cs" />
<Compile Include="Browser\WindowSettings.cs" /> <Compile Include="Browser\WindowSettings.cs" />
<Compile Include="Browser\Filter\FilterResult.cs" /> <Compile Include="Browser\Filter\FilterResult.cs" />

View file

@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:fa="http://schemas.fontawesome.io/icons/" xmlns:fa="http://schemas.fontawesome.io/icons/"
xmlns:local="clr-namespace:SafeExamBrowser.UserInterface.Desktop.Controls" xmlns:local="clr-namespace:SafeExamBrowser.UserInterface.Desktop.Controls"
mc:Ignorable="d" Title="BrowserWindow" Background="#FFF0F0F0" Height="500" Width="750" MinHeight="250" MinWidth="250" Icon="../Images/SafeExamBrowser.ico"> mc:Ignorable="d" Background="#FFF0F0F0" Height="500" Width="750" MinHeight="250" MinWidth="250" Icon="../Images/SafeExamBrowser.ico">
<Window.Resources> <Window.Resources>
<ResourceDictionary> <ResourceDictionary>
<ResourceDictionary.MergedDictionaries> <ResourceDictionary.MergedDictionaries>

View file

@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:fa="http://schemas.fontawesome.io/icons/" xmlns:fa="http://schemas.fontawesome.io/icons/"
xmlns:local="clr-namespace:SafeExamBrowser.UserInterface.Mobile.Controls" xmlns:local="clr-namespace:SafeExamBrowser.UserInterface.Mobile.Controls"
mc:Ignorable="d" Title="BrowserWindow" Background="#FFF0F0F0" FontSize="16" Height="500" Width="750" MinHeight="250" MinWidth="250" Icon="../Images/SafeExamBrowser.ico"> mc:Ignorable="d" Background="#FFF0F0F0" FontSize="16" Height="500" Width="750" MinHeight="250" MinWidth="250" Icon="../Images/SafeExamBrowser.ico">
<Window.Resources> <Window.Resources>
<ResourceDictionary> <ResourceDictionary>
<ResourceDictionary.MergedDictionaries> <ResourceDictionary.MergedDictionaries>

View file

@ -145,6 +145,8 @@ namespace SebWindowsConfig
public const String KeyNewBrowserWindowByLinkWidth = "newBrowserWindowByLinkWidth"; public const String KeyNewBrowserWindowByLinkWidth = "newBrowserWindowByLinkWidth";
public const String KeyNewBrowserWindowByLinkHeight = "newBrowserWindowByLinkHeight"; public const String KeyNewBrowserWindowByLinkHeight = "newBrowserWindowByLinkHeight";
public const String KeyNewBrowserWindowByLinkPositioning = "newBrowserWindowByLinkPositioning"; public const String KeyNewBrowserWindowByLinkPositioning = "newBrowserWindowByLinkPositioning";
public const String KeyNewBrowserWindowUrlPolicy = "newBrowserWindowShowURL";
public const String KeyMainBrowserWindowUrlPolicy = "browserWindowShowURL";
public const String KeyEnablePlugIns = "enablePlugIns"; public const String KeyEnablePlugIns = "enablePlugIns";
public const String KeyEnableJava = "enableJava"; public const String KeyEnableJava = "enableJava";
public const String KeyEnableJavaScript = "enableJavaScript"; public const String KeyEnableJavaScript = "enableJavaScript";
@ -658,7 +660,9 @@ namespace SebWindowsConfig
SEBSettings.settingsDefault.Add(SEBSettings.KeyNewBrowserWindowByLinkWidth , "1000"); SEBSettings.settingsDefault.Add(SEBSettings.KeyNewBrowserWindowByLinkWidth , "1000");
SEBSettings.settingsDefault.Add(SEBSettings.KeyNewBrowserWindowByLinkHeight , "100%"); SEBSettings.settingsDefault.Add(SEBSettings.KeyNewBrowserWindowByLinkHeight , "100%");
SEBSettings.settingsDefault.Add(SEBSettings.KeyNewBrowserWindowByLinkPositioning , 2); SEBSettings.settingsDefault.Add(SEBSettings.KeyNewBrowserWindowByLinkPositioning , 2);
SEBSettings.settingsDefault.Add(SEBSettings.KeyNewBrowserWindowUrlPolicy , 0);
SEBSettings.settingsDefault.Add(SEBSettings.KeyMainBrowserWindowUrlPolicy, 0);
SEBSettings.settingsDefault.Add(SEBSettings.KeyEnablePlugIns , true); SEBSettings.settingsDefault.Add(SEBSettings.KeyEnablePlugIns , true);
SEBSettings.settingsDefault.Add(SEBSettings.KeyEnableJava , false); SEBSettings.settingsDefault.Add(SEBSettings.KeyEnableJava , false);
SEBSettings.settingsDefault.Add(SEBSettings.KeyEnableJavaScript , true); SEBSettings.settingsDefault.Add(SEBSettings.KeyEnableJavaScript , true);

View file

@ -30,8 +30,8 @@ namespace SebWindowsConfig
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SebWindowsConfigForm)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SebWindowsConfigForm));
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle();
this.openFileDialogSebConfigFile = new System.Windows.Forms.OpenFileDialog(); this.openFileDialogSebConfigFile = new System.Windows.Forms.OpenFileDialog();
this.saveFileDialogSebConfigFile = new System.Windows.Forms.SaveFileDialog(); this.saveFileDialogSebConfigFile = new System.Windows.Forms.SaveFileDialog();
this.imageListTabIcons = new System.Windows.Forms.ImageList(this.components); this.imageListTabIcons = new System.Windows.Forms.ImageList(this.components);
@ -229,6 +229,9 @@ namespace SebWindowsConfig
this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.checkBoxMonitorProcesses = new System.Windows.Forms.CheckBox(); this.checkBoxMonitorProcesses = new System.Windows.Forms.CheckBox();
this.tabPageExam = new System.Windows.Forms.TabPage(); this.tabPageExam = new System.Windows.Forms.TabPage();
this.groupBox17 = new System.Windows.Forms.GroupBox();
this.label23 = new System.Windows.Forms.Label();
this.checkBoxUseStartUrlQuery = new System.Windows.Forms.CheckBox();
this.groupBox15 = new System.Windows.Forms.GroupBox(); this.groupBox15 = new System.Windows.Forms.GroupBox();
this.label22 = new System.Windows.Forms.Label(); this.label22 = new System.Windows.Forms.Label();
this.textBoxReconfigurationUrl = new System.Windows.Forms.TextBox(); this.textBoxReconfigurationUrl = new System.Windows.Forms.TextBox();
@ -275,6 +278,18 @@ namespace SebWindowsConfig
this.checkBoxOpenDownloads = new System.Windows.Forms.CheckBox(); this.checkBoxOpenDownloads = new System.Windows.Forms.CheckBox();
this.checkBoxAllowDownUploads = new System.Windows.Forms.CheckBox(); this.checkBoxAllowDownUploads = new System.Windows.Forms.CheckBox();
this.tabPageBrowser = new System.Windows.Forms.TabPage(); this.tabPageBrowser = new System.Windows.Forms.TabPage();
this.groupBox19 = new System.Windows.Forms.GroupBox();
this.label25 = new System.Windows.Forms.Label();
this.comboBoxUrlPolicyNewWindow = new System.Windows.Forms.ComboBox();
this.checkBoxAllowNavigationNewWindow = new System.Windows.Forms.CheckBox();
this.checkBoxAllowReloadNewWindow = new System.Windows.Forms.CheckBox();
this.checkBoxShowReloadWarningNewWindow = new System.Windows.Forms.CheckBox();
this.groupBox18 = new System.Windows.Forms.GroupBox();
this.label24 = new System.Windows.Forms.Label();
this.comboBoxUrlPolicyMainWindow = new System.Windows.Forms.ComboBox();
this.checkBoxAllowBrowsingBackForward = new System.Windows.Forms.CheckBox();
this.checkBoxShowReloadWarning = new System.Windows.Forms.CheckBox();
this.checkBoxAllowReload = new System.Windows.Forms.CheckBox();
this.label12 = new System.Windows.Forms.Label(); this.label12 = new System.Windows.Forms.Label();
this.textBoxUserAgent = new System.Windows.Forms.TextBox(); this.textBoxUserAgent = new System.Windows.Forms.TextBox();
this.label11 = new System.Windows.Forms.Label(); this.label11 = new System.Windows.Forms.Label();
@ -299,16 +314,10 @@ namespace SebWindowsConfig
this.groupBox11 = new System.Windows.Forms.GroupBox(); this.groupBox11 = new System.Windows.Forms.GroupBox();
this.checkBoxAllowFind = new System.Windows.Forms.CheckBox(); this.checkBoxAllowFind = new System.Windows.Forms.CheckBox();
this.checkBoxAllowPdfReaderToolbar = new System.Windows.Forms.CheckBox(); this.checkBoxAllowPdfReaderToolbar = new System.Windows.Forms.CheckBox();
this.checkBoxShowReloadWarningNewWindow = new System.Windows.Forms.CheckBox();
this.checkBoxAllowReloadNewWindow = new System.Windows.Forms.CheckBox();
this.checkBoxAllowVideoCapture = new System.Windows.Forms.CheckBox(); this.checkBoxAllowVideoCapture = new System.Windows.Forms.CheckBox();
this.checkBoxAllowReload = new System.Windows.Forms.CheckBox();
this.checkBoxAllowNavigationNewWindow = new System.Windows.Forms.CheckBox();
this.checkBoxAllowAudioCapture = new System.Windows.Forms.CheckBox(); this.checkBoxAllowAudioCapture = new System.Windows.Forms.CheckBox();
this.checkBoxShowReloadWarning = new System.Windows.Forms.CheckBox();
this.checkBoxDisableLocalStorage = new System.Windows.Forms.CheckBox(); this.checkBoxDisableLocalStorage = new System.Windows.Forms.CheckBox();
this.checkBoxRemoveProfile = new System.Windows.Forms.CheckBox(); this.checkBoxRemoveProfile = new System.Windows.Forms.CheckBox();
this.checkBoxAllowBrowsingBackForward = new System.Windows.Forms.CheckBox();
this.checkBoxEnablePlugIns = new System.Windows.Forms.CheckBox(); this.checkBoxEnablePlugIns = new System.Windows.Forms.CheckBox();
this.checkBoxBlockPopUpWindows = new System.Windows.Forms.CheckBox(); this.checkBoxBlockPopUpWindows = new System.Windows.Forms.CheckBox();
this.checkBoxEnableJavaScript = new System.Windows.Forms.CheckBox(); this.checkBoxEnableJavaScript = new System.Windows.Forms.CheckBox();
@ -447,9 +456,6 @@ namespace SebWindowsConfig
this.editDuplicateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.editDuplicateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.configureClientToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.configureClientToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.applyAndStartSEBToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.applyAndStartSEBToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.groupBox17 = new System.Windows.Forms.GroupBox();
this.checkBoxUseStartUrlQuery = new System.Windows.Forms.CheckBox();
this.label23 = new System.Windows.Forms.Label();
this.tabPageHookedKeys.SuspendLayout(); this.tabPageHookedKeys.SuspendLayout();
this.groupBoxFunctionKeys.SuspendLayout(); this.groupBoxFunctionKeys.SuspendLayout();
this.groupBoxSpecialKeys.SuspendLayout(); this.groupBoxSpecialKeys.SuspendLayout();
@ -477,6 +483,7 @@ namespace SebWindowsConfig
this.groupBoxProhibitedProcess.SuspendLayout(); this.groupBoxProhibitedProcess.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridViewProhibitedProcesses)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridViewProhibitedProcesses)).BeginInit();
this.tabPageExam.SuspendLayout(); this.tabPageExam.SuspendLayout();
this.groupBox17.SuspendLayout();
this.groupBox15.SuspendLayout(); this.groupBox15.SuspendLayout();
this.groupBox2.SuspendLayout(); this.groupBox2.SuspendLayout();
this.groupBox9.SuspendLayout(); this.groupBox9.SuspendLayout();
@ -484,6 +491,8 @@ namespace SebWindowsConfig
this.groupBox7.SuspendLayout(); this.groupBox7.SuspendLayout();
this.tabPageDownUploads.SuspendLayout(); this.tabPageDownUploads.SuspendLayout();
this.tabPageBrowser.SuspendLayout(); this.tabPageBrowser.SuspendLayout();
this.groupBox19.SuspendLayout();
this.groupBox18.SuspendLayout();
this.groupBox14.SuspendLayout(); this.groupBox14.SuspendLayout();
this.groupBox13.SuspendLayout(); this.groupBox13.SuspendLayout();
this.groupBox12.SuspendLayout(); this.groupBox12.SuspendLayout();
@ -505,7 +514,6 @@ namespace SebWindowsConfig
this.groupBoxExitSequence.SuspendLayout(); this.groupBoxExitSequence.SuspendLayout();
this.tabControlSebWindowsConfig.SuspendLayout(); this.tabControlSebWindowsConfig.SuspendLayout();
this.menuStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout();
this.groupBox17.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// openFileDialogSebConfigFile // openFileDialogSebConfigFile
@ -1820,8 +1828,8 @@ namespace SebWindowsConfig
// //
// Type // Type
// //
dataGridViewCellStyle3.BackColor = System.Drawing.Color.Silver; dataGridViewCellStyle11.BackColor = System.Drawing.Color.Silver;
this.Type.DefaultCellStyle = dataGridViewCellStyle3; this.Type.DefaultCellStyle = dataGridViewCellStyle11;
this.Type.HeaderText = "Type"; this.Type.HeaderText = "Type";
this.Type.Name = "Type"; this.Type.Name = "Type";
this.Type.ReadOnly = true; this.Type.ReadOnly = true;
@ -3032,6 +3040,38 @@ namespace SebWindowsConfig
this.tabPageExam.Text = " Exam"; this.tabPageExam.Text = " Exam";
this.tabPageExam.UseVisualStyleBackColor = true; this.tabPageExam.UseVisualStyleBackColor = true;
// //
// groupBox17
//
this.groupBox17.Controls.Add(this.label23);
this.groupBox17.Controls.Add(this.checkBoxUseStartUrlQuery);
this.groupBox17.Location = new System.Drawing.Point(605, 471);
this.groupBox17.Name = "groupBox17";
this.groupBox17.Size = new System.Drawing.Size(610, 86);
this.groupBox17.TabIndex = 124;
this.groupBox17.TabStop = false;
this.groupBox17.Text = "Query String Parameter";
//
// label23
//
this.label23.Location = new System.Drawing.Point(12, 24);
this.label23.Name = "label23";
this.label23.Size = new System.Drawing.Size(592, 27);
this.label23.TabIndex = 1;
this.label23.Text = resources.GetString("label23.Text");
//
// checkBoxUseStartUrlQuery
//
this.checkBoxUseStartUrlQuery.AutoSize = true;
this.checkBoxUseStartUrlQuery.Location = new System.Drawing.Point(15, 59);
this.checkBoxUseStartUrlQuery.Name = "checkBoxUseStartUrlQuery";
this.checkBoxUseStartUrlQuery.Size = new System.Drawing.Size(133, 17);
this.checkBoxUseStartUrlQuery.TabIndex = 0;
this.checkBoxUseStartUrlQuery.Text = "Allow Query Parameter";
this.toolTip1.SetToolTip(this.checkBoxUseStartUrlQuery, "If a seb(s):// link contains an additional query string, SEB appends it to the ex" +
"am\'s Start URL");
this.checkBoxUseStartUrlQuery.UseVisualStyleBackColor = true;
this.checkBoxUseStartUrlQuery.CheckedChanged += new System.EventHandler(this.checkBoxUseStartUrlQuery_CheckedChanged);
//
// groupBox15 // groupBox15
// //
this.groupBox15.Controls.Add(this.label22); this.groupBox15.Controls.Add(this.label22);
@ -3597,6 +3637,8 @@ namespace SebWindowsConfig
// //
// tabPageBrowser // tabPageBrowser
// //
this.tabPageBrowser.Controls.Add(this.groupBox19);
this.tabPageBrowser.Controls.Add(this.groupBox18);
this.tabPageBrowser.Controls.Add(this.label12); this.tabPageBrowser.Controls.Add(this.label12);
this.tabPageBrowser.Controls.Add(this.textBoxUserAgent); this.tabPageBrowser.Controls.Add(this.textBoxUserAgent);
this.tabPageBrowser.Controls.Add(this.label11); this.tabPageBrowser.Controls.Add(this.label11);
@ -3621,6 +3663,156 @@ namespace SebWindowsConfig
this.tabPageBrowser.Text = "Browser"; this.tabPageBrowser.Text = "Browser";
this.tabPageBrowser.UseVisualStyleBackColor = true; this.tabPageBrowser.UseVisualStyleBackColor = true;
// //
// groupBox19
//
this.groupBox19.Controls.Add(this.label25);
this.groupBox19.Controls.Add(this.comboBoxUrlPolicyNewWindow);
this.groupBox19.Controls.Add(this.checkBoxAllowNavigationNewWindow);
this.groupBox19.Controls.Add(this.checkBoxAllowReloadNewWindow);
this.groupBox19.Controls.Add(this.checkBoxShowReloadWarningNewWindow);
this.groupBox19.Location = new System.Drawing.Point(281, 342);
this.groupBox19.Name = "groupBox19";
this.groupBox19.Size = new System.Drawing.Size(265, 108);
this.groupBox19.TabIndex = 128;
this.groupBox19.TabStop = false;
this.groupBox19.Text = "Restrictions in Additional Windows";
//
// label25
//
this.label25.AutoSize = true;
this.label25.Location = new System.Drawing.Point(38, 82);
this.label25.Name = "label25";
this.label25.Size = new System.Drawing.Size(64, 13);
this.label25.TabIndex = 15;
this.label25.Text = "Show URLs";
this.toolTip1.SetToolTip(this.label25, "For some exam scenarios, you might want to keep URLs secret");
//
// comboBoxUrlPolicyNewWindow
//
this.comboBoxUrlPolicyNewWindow.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxUrlPolicyNewWindow.FormattingEnabled = true;
this.comboBoxUrlPolicyNewWindow.Location = new System.Drawing.Point(126, 79);
this.comboBoxUrlPolicyNewWindow.Name = "comboBoxUrlPolicyNewWindow";
this.comboBoxUrlPolicyNewWindow.Size = new System.Drawing.Size(121, 21);
this.comboBoxUrlPolicyNewWindow.TabIndex = 14;
this.toolTip1.SetToolTip(this.comboBoxUrlPolicyNewWindow, "For some exam scenarios, you might want to keep URLs secret");
this.comboBoxUrlPolicyNewWindow.SelectedIndexChanged += new System.EventHandler(this.comboBoxUrlPolicyNewWindow_SelectedIndexChanged);
//
// checkBoxAllowNavigationNewWindow
//
this.checkBoxAllowNavigationNewWindow.AutoSize = true;
this.checkBoxAllowNavigationNewWindow.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.checkBoxAllowNavigationNewWindow.Location = new System.Drawing.Point(12, 20);
this.checkBoxAllowNavigationNewWindow.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxAllowNavigationNewWindow.Name = "checkBoxAllowNavigationNewWindow";
this.checkBoxAllowNavigationNewWindow.Size = new System.Drawing.Size(206, 17);
this.checkBoxAllowNavigationNewWindow.TabIndex = 8;
this.checkBoxAllowNavigationNewWindow.Text = "Allow navigating in additional windows";
this.toolTip1.SetToolTip(this.checkBoxAllowNavigationNewWindow, resources.GetString("checkBoxAllowNavigationNewWindow.ToolTip"));
this.checkBoxAllowNavigationNewWindow.UseVisualStyleBackColor = true;
this.checkBoxAllowNavigationNewWindow.CheckedChanged += new System.EventHandler(this.checkBoxAllowNavigationNewWindow_CheckedChanged);
//
// checkBoxAllowReloadNewWindow
//
this.checkBoxAllowReloadNewWindow.AutoSize = true;
this.checkBoxAllowReloadNewWindow.Location = new System.Drawing.Point(12, 41);
this.checkBoxAllowReloadNewWindow.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxAllowReloadNewWindow.Name = "checkBoxAllowReloadNewWindow";
this.checkBoxAllowReloadNewWindow.Size = new System.Drawing.Size(186, 17);
this.checkBoxAllowReloadNewWindow.TabIndex = 12;
this.checkBoxAllowReloadNewWindow.Text = "Allow reload in additional windows";
this.toolTip1.SetToolTip(this.checkBoxAllowReloadNewWindow, "Allow reloading additional windows with F5 or reload button (if displayed)");
this.checkBoxAllowReloadNewWindow.UseVisualStyleBackColor = true;
this.checkBoxAllowReloadNewWindow.CheckedChanged += new System.EventHandler(this.checkBoxAllowReloadNewWindow_CheckedChanged);
//
// checkBoxShowReloadWarningNewWindow
//
this.checkBoxShowReloadWarningNewWindow.AutoSize = true;
this.checkBoxShowReloadWarningNewWindow.Location = new System.Drawing.Point(12, 60);
this.checkBoxShowReloadWarningNewWindow.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxShowReloadWarningNewWindow.Name = "checkBoxShowReloadWarningNewWindow";
this.checkBoxShowReloadWarningNewWindow.Size = new System.Drawing.Size(228, 17);
this.checkBoxShowReloadWarningNewWindow.TabIndex = 13;
this.checkBoxShowReloadWarningNewWindow.Text = "Show reload warning in additional windows";
this.toolTip1.SetToolTip(this.checkBoxShowReloadWarningNewWindow, "User has to confirm reloading a web page with F5 or reload button");
this.checkBoxShowReloadWarningNewWindow.UseVisualStyleBackColor = true;
this.checkBoxShowReloadWarningNewWindow.CheckedChanged += new System.EventHandler(this.checkBoxShowReloadWarningNewWindow_CheckedChanged);
//
// groupBox18
//
this.groupBox18.Controls.Add(this.label24);
this.groupBox18.Controls.Add(this.comboBoxUrlPolicyMainWindow);
this.groupBox18.Controls.Add(this.checkBoxAllowBrowsingBackForward);
this.groupBox18.Controls.Add(this.checkBoxShowReloadWarning);
this.groupBox18.Controls.Add(this.checkBoxAllowReload);
this.groupBox18.Location = new System.Drawing.Point(24, 342);
this.groupBox18.Name = "groupBox18";
this.groupBox18.Size = new System.Drawing.Size(239, 108);
this.groupBox18.TabIndex = 127;
this.groupBox18.TabStop = false;
this.groupBox18.Text = "Restrictions in Exam Window";
//
// label24
//
this.label24.AutoSize = true;
this.label24.Location = new System.Drawing.Point(21, 82);
this.label24.Name = "label24";
this.label24.Size = new System.Drawing.Size(64, 13);
this.label24.TabIndex = 11;
this.label24.Text = "Show URLs";
this.toolTip1.SetToolTip(this.label24, "For some exam scenarios, you might want to keep URLs secret");
//
// comboBoxUrlPolicyMainWindow
//
this.comboBoxUrlPolicyMainWindow.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxUrlPolicyMainWindow.FormattingEnabled = true;
this.comboBoxUrlPolicyMainWindow.Location = new System.Drawing.Point(102, 80);
this.comboBoxUrlPolicyMainWindow.Name = "comboBoxUrlPolicyMainWindow";
this.comboBoxUrlPolicyMainWindow.Size = new System.Drawing.Size(121, 21);
this.comboBoxUrlPolicyMainWindow.TabIndex = 10;
this.toolTip1.SetToolTip(this.comboBoxUrlPolicyMainWindow, "For some exam scenarios, you might want to keep URLs secret");
this.comboBoxUrlPolicyMainWindow.SelectedIndexChanged += new System.EventHandler(this.comboBoxUrlPolicyMainWindow_SelectedIndexChanged);
//
// checkBoxAllowBrowsingBackForward
//
this.checkBoxAllowBrowsingBackForward.AutoSize = true;
this.checkBoxAllowBrowsingBackForward.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.checkBoxAllowBrowsingBackForward.Location = new System.Drawing.Point(14, 20);
this.checkBoxAllowBrowsingBackForward.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxAllowBrowsingBackForward.Name = "checkBoxAllowBrowsingBackForward";
this.checkBoxAllowBrowsingBackForward.Size = new System.Drawing.Size(209, 17);
this.checkBoxAllowBrowsingBackForward.TabIndex = 4;
this.checkBoxAllowBrowsingBackForward.Text = "Allow navigating back/forward in exam";
this.toolTip1.SetToolTip(this.checkBoxAllowBrowsingBackForward, resources.GetString("checkBoxAllowBrowsingBackForward.ToolTip"));
this.checkBoxAllowBrowsingBackForward.UseVisualStyleBackColor = true;
this.checkBoxAllowBrowsingBackForward.CheckedChanged += new System.EventHandler(this.checkBoxAllowBrowsingBackForward_CheckedChanged);
//
// checkBoxShowReloadWarning
//
this.checkBoxShowReloadWarning.AutoSize = true;
this.checkBoxShowReloadWarning.Location = new System.Drawing.Point(14, 59);
this.checkBoxShowReloadWarning.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxShowReloadWarning.Name = "checkBoxShowReloadWarning";
this.checkBoxShowReloadWarning.Size = new System.Drawing.Size(164, 17);
this.checkBoxShowReloadWarning.TabIndex = 5;
this.checkBoxShowReloadWarning.Text = "Show reload warning in exam";
this.toolTip1.SetToolTip(this.checkBoxShowReloadWarning, "User has to confirm reloading a web page with F5 or reload button");
this.checkBoxShowReloadWarning.UseVisualStyleBackColor = true;
this.checkBoxShowReloadWarning.CheckedChanged += new System.EventHandler(this.checkBoxShowReloadWarning_CheckedChanged);
//
// checkBoxAllowReload
//
this.checkBoxAllowReload.AutoSize = true;
this.checkBoxAllowReload.Location = new System.Drawing.Point(14, 40);
this.checkBoxAllowReload.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxAllowReload.Name = "checkBoxAllowReload";
this.checkBoxAllowReload.Size = new System.Drawing.Size(122, 17);
this.checkBoxAllowReload.TabIndex = 9;
this.checkBoxAllowReload.Text = "Allow reload in exam";
this.toolTip1.SetToolTip(this.checkBoxAllowReload, "Allow reload in the exam window with F5 or reload button (if displayed)");
this.checkBoxAllowReload.UseVisualStyleBackColor = true;
this.checkBoxAllowReload.CheckedChanged += new System.EventHandler(this.checkBoxAllowReload_CheckedChanged);
//
// label12 // label12
// //
this.label12.AutoSize = true; this.label12.AutoSize = true;
@ -3891,23 +4083,17 @@ namespace SebWindowsConfig
// //
this.groupBox11.Controls.Add(this.checkBoxAllowFind); this.groupBox11.Controls.Add(this.checkBoxAllowFind);
this.groupBox11.Controls.Add(this.checkBoxAllowPdfReaderToolbar); this.groupBox11.Controls.Add(this.checkBoxAllowPdfReaderToolbar);
this.groupBox11.Controls.Add(this.checkBoxShowReloadWarningNewWindow);
this.groupBox11.Controls.Add(this.checkBoxAllowReloadNewWindow);
this.groupBox11.Controls.Add(this.checkBoxAllowVideoCapture); this.groupBox11.Controls.Add(this.checkBoxAllowVideoCapture);
this.groupBox11.Controls.Add(this.checkBoxAllowReload);
this.groupBox11.Controls.Add(this.checkBoxAllowNavigationNewWindow);
this.groupBox11.Controls.Add(this.checkBoxAllowAudioCapture); this.groupBox11.Controls.Add(this.checkBoxAllowAudioCapture);
this.groupBox11.Controls.Add(this.checkBoxShowReloadWarning);
this.groupBox11.Controls.Add(this.checkBoxDisableLocalStorage); this.groupBox11.Controls.Add(this.checkBoxDisableLocalStorage);
this.groupBox11.Controls.Add(this.checkBoxRemoveProfile); this.groupBox11.Controls.Add(this.checkBoxRemoveProfile);
this.groupBox11.Controls.Add(this.checkBoxAllowBrowsingBackForward);
this.groupBox11.Controls.Add(this.checkBoxEnablePlugIns); this.groupBox11.Controls.Add(this.checkBoxEnablePlugIns);
this.groupBox11.Controls.Add(this.checkBoxBlockPopUpWindows); this.groupBox11.Controls.Add(this.checkBoxBlockPopUpWindows);
this.groupBox11.Controls.Add(this.checkBoxEnableJavaScript); this.groupBox11.Controls.Add(this.checkBoxEnableJavaScript);
this.groupBox11.Controls.Add(this.checkBoxEnableJava); this.groupBox11.Controls.Add(this.checkBoxEnableJava);
this.groupBox11.Location = new System.Drawing.Point(24, 202); this.groupBox11.Location = new System.Drawing.Point(24, 202);
this.groupBox11.Name = "groupBox11"; this.groupBox11.Name = "groupBox11";
this.groupBox11.Size = new System.Drawing.Size(522, 187); this.groupBox11.Size = new System.Drawing.Size(522, 113);
this.groupBox11.TabIndex = 71; this.groupBox11.TabIndex = 71;
this.groupBox11.TabStop = false; this.groupBox11.TabStop = false;
this.groupBox11.Text = "Browser security"; this.groupBox11.Text = "Browser security";
@ -3915,7 +4101,7 @@ namespace SebWindowsConfig
// checkBoxAllowFind // checkBoxAllowFind
// //
this.checkBoxAllowFind.AutoSize = true; this.checkBoxAllowFind.AutoSize = true;
this.checkBoxAllowFind.Location = new System.Drawing.Point(14, 81); this.checkBoxAllowFind.Location = new System.Drawing.Point(14, 24);
this.checkBoxAllowFind.Name = "checkBoxAllowFind"; this.checkBoxAllowFind.Name = "checkBoxAllowFind";
this.checkBoxAllowFind.Size = new System.Drawing.Size(106, 17); this.checkBoxAllowFind.Size = new System.Drawing.Size(106, 17);
this.checkBoxAllowFind.TabIndex = 15; this.checkBoxAllowFind.TabIndex = 15;
@ -3926,7 +4112,7 @@ namespace SebWindowsConfig
// checkBoxAllowPdfReaderToolbar // checkBoxAllowPdfReaderToolbar
// //
this.checkBoxAllowPdfReaderToolbar.AutoSize = true; this.checkBoxAllowPdfReaderToolbar.AutoSize = true;
this.checkBoxAllowPdfReaderToolbar.Location = new System.Drawing.Point(14, 114); this.checkBoxAllowPdfReaderToolbar.Location = new System.Drawing.Point(14, 49);
this.checkBoxAllowPdfReaderToolbar.Name = "checkBoxAllowPdfReaderToolbar"; this.checkBoxAllowPdfReaderToolbar.Name = "checkBoxAllowPdfReaderToolbar";
this.checkBoxAllowPdfReaderToolbar.Size = new System.Drawing.Size(485, 17); this.checkBoxAllowPdfReaderToolbar.Size = new System.Drawing.Size(485, 17);
this.checkBoxAllowPdfReaderToolbar.TabIndex = 14; this.checkBoxAllowPdfReaderToolbar.TabIndex = 14;
@ -3935,32 +4121,6 @@ namespace SebWindowsConfig
this.checkBoxAllowPdfReaderToolbar.UseVisualStyleBackColor = true; this.checkBoxAllowPdfReaderToolbar.UseVisualStyleBackColor = true;
this.checkBoxAllowPdfReaderToolbar.CheckedChanged += new System.EventHandler(this.checkBoxAllowPdfReaderToolbar_CheckedChanged); this.checkBoxAllowPdfReaderToolbar.CheckedChanged += new System.EventHandler(this.checkBoxAllowPdfReaderToolbar_CheckedChanged);
// //
// checkBoxShowReloadWarningNewWindow
//
this.checkBoxShowReloadWarningNewWindow.AutoSize = true;
this.checkBoxShowReloadWarningNewWindow.Location = new System.Drawing.Point(259, 59);
this.checkBoxShowReloadWarningNewWindow.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxShowReloadWarningNewWindow.Name = "checkBoxShowReloadWarningNewWindow";
this.checkBoxShowReloadWarningNewWindow.Size = new System.Drawing.Size(228, 17);
this.checkBoxShowReloadWarningNewWindow.TabIndex = 13;
this.checkBoxShowReloadWarningNewWindow.Text = "Show reload warning in additional windows";
this.toolTip1.SetToolTip(this.checkBoxShowReloadWarningNewWindow, "User has to confirm reloading a web page with F5 or reload button");
this.checkBoxShowReloadWarningNewWindow.UseVisualStyleBackColor = true;
this.checkBoxShowReloadWarningNewWindow.CheckedChanged += new System.EventHandler(this.checkBoxShowReloadWarningNewWindow_CheckedChanged);
//
// checkBoxAllowReloadNewWindow
//
this.checkBoxAllowReloadNewWindow.AutoSize = true;
this.checkBoxAllowReloadNewWindow.Location = new System.Drawing.Point(259, 40);
this.checkBoxAllowReloadNewWindow.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxAllowReloadNewWindow.Name = "checkBoxAllowReloadNewWindow";
this.checkBoxAllowReloadNewWindow.Size = new System.Drawing.Size(186, 17);
this.checkBoxAllowReloadNewWindow.TabIndex = 12;
this.checkBoxAllowReloadNewWindow.Text = "Allow reload in additional windows";
this.toolTip1.SetToolTip(this.checkBoxAllowReloadNewWindow, "Allow reloading additional windows with F5 or reload button (if displayed)");
this.checkBoxAllowReloadNewWindow.UseVisualStyleBackColor = true;
this.checkBoxAllowReloadNewWindow.CheckedChanged += new System.EventHandler(this.checkBoxAllowReloadNewWindow_CheckedChanged);
//
// checkBoxAllowVideoCapture // checkBoxAllowVideoCapture
// //
this.checkBoxAllowVideoCapture.AutoSize = true; this.checkBoxAllowVideoCapture.AutoSize = true;
@ -3976,33 +4136,6 @@ namespace SebWindowsConfig
this.checkBoxAllowVideoCapture.Visible = false; this.checkBoxAllowVideoCapture.Visible = false;
this.checkBoxAllowVideoCapture.CheckedChanged += new System.EventHandler(this.checkBoxAllowVideoCapture_CheckedChanged); this.checkBoxAllowVideoCapture.CheckedChanged += new System.EventHandler(this.checkBoxAllowVideoCapture_CheckedChanged);
// //
// checkBoxAllowReload
//
this.checkBoxAllowReload.AutoSize = true;
this.checkBoxAllowReload.Location = new System.Drawing.Point(14, 40);
this.checkBoxAllowReload.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxAllowReload.Name = "checkBoxAllowReload";
this.checkBoxAllowReload.Size = new System.Drawing.Size(122, 17);
this.checkBoxAllowReload.TabIndex = 9;
this.checkBoxAllowReload.Text = "Allow reload in exam";
this.toolTip1.SetToolTip(this.checkBoxAllowReload, "Allow reload in the exam window with F5 or reload button (if displayed)");
this.checkBoxAllowReload.UseVisualStyleBackColor = true;
this.checkBoxAllowReload.CheckedChanged += new System.EventHandler(this.checkBoxAllowReload_CheckedChanged);
//
// checkBoxAllowNavigationNewWindow
//
this.checkBoxAllowNavigationNewWindow.AutoSize = true;
this.checkBoxAllowNavigationNewWindow.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.checkBoxAllowNavigationNewWindow.Location = new System.Drawing.Point(259, 19);
this.checkBoxAllowNavigationNewWindow.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxAllowNavigationNewWindow.Name = "checkBoxAllowNavigationNewWindow";
this.checkBoxAllowNavigationNewWindow.Size = new System.Drawing.Size(206, 17);
this.checkBoxAllowNavigationNewWindow.TabIndex = 8;
this.checkBoxAllowNavigationNewWindow.Text = "Allow navigating in additional windows";
this.toolTip1.SetToolTip(this.checkBoxAllowNavigationNewWindow, resources.GetString("checkBoxAllowNavigationNewWindow.ToolTip"));
this.checkBoxAllowNavigationNewWindow.UseVisualStyleBackColor = true;
this.checkBoxAllowNavigationNewWindow.CheckedChanged += new System.EventHandler(this.checkBoxAllowNavigationNewWindow_CheckedChanged);
//
// checkBoxAllowAudioCapture // checkBoxAllowAudioCapture
// //
this.checkBoxAllowAudioCapture.AutoSize = true; this.checkBoxAllowAudioCapture.AutoSize = true;
@ -4018,19 +4151,6 @@ namespace SebWindowsConfig
this.checkBoxAllowAudioCapture.Visible = false; this.checkBoxAllowAudioCapture.Visible = false;
this.checkBoxAllowAudioCapture.CheckedChanged += new System.EventHandler(this.checkBoxAllowAudioCapture_CheckedChanged); this.checkBoxAllowAudioCapture.CheckedChanged += new System.EventHandler(this.checkBoxAllowAudioCapture_CheckedChanged);
// //
// checkBoxShowReloadWarning
//
this.checkBoxShowReloadWarning.AutoSize = true;
this.checkBoxShowReloadWarning.Location = new System.Drawing.Point(14, 59);
this.checkBoxShowReloadWarning.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxShowReloadWarning.Name = "checkBoxShowReloadWarning";
this.checkBoxShowReloadWarning.Size = new System.Drawing.Size(164, 17);
this.checkBoxShowReloadWarning.TabIndex = 5;
this.checkBoxShowReloadWarning.Text = "Show reload warning in exam";
this.toolTip1.SetToolTip(this.checkBoxShowReloadWarning, "User has to confirm reloading a web page with F5 or reload button");
this.checkBoxShowReloadWarning.UseVisualStyleBackColor = true;
this.checkBoxShowReloadWarning.CheckedChanged += new System.EventHandler(this.checkBoxShowReloadWarning_CheckedChanged);
//
// checkBoxDisableLocalStorage // checkBoxDisableLocalStorage
// //
this.checkBoxDisableLocalStorage.AutoSize = true; this.checkBoxDisableLocalStorage.AutoSize = true;
@ -4049,7 +4169,7 @@ namespace SebWindowsConfig
// //
// checkBoxRemoveProfile // checkBoxRemoveProfile
// //
this.checkBoxRemoveProfile.Location = new System.Drawing.Point(14, 137); this.checkBoxRemoveProfile.Location = new System.Drawing.Point(14, 66);
this.checkBoxRemoveProfile.Name = "checkBoxRemoveProfile"; this.checkBoxRemoveProfile.Name = "checkBoxRemoveProfile";
this.checkBoxRemoveProfile.Size = new System.Drawing.Size(481, 36); this.checkBoxRemoveProfile.Size = new System.Drawing.Size(481, 36);
this.checkBoxRemoveProfile.TabIndex = 6; this.checkBoxRemoveProfile.TabIndex = 6;
@ -4059,20 +4179,6 @@ namespace SebWindowsConfig
this.checkBoxRemoveProfile.UseVisualStyleBackColor = true; this.checkBoxRemoveProfile.UseVisualStyleBackColor = true;
this.checkBoxRemoveProfile.CheckedChanged += new System.EventHandler(this.checkBoxRemoveProfile_CheckedChanged); this.checkBoxRemoveProfile.CheckedChanged += new System.EventHandler(this.checkBoxRemoveProfile_CheckedChanged);
// //
// checkBoxAllowBrowsingBackForward
//
this.checkBoxAllowBrowsingBackForward.AutoSize = true;
this.checkBoxAllowBrowsingBackForward.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.checkBoxAllowBrowsingBackForward.Location = new System.Drawing.Point(14, 20);
this.checkBoxAllowBrowsingBackForward.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxAllowBrowsingBackForward.Name = "checkBoxAllowBrowsingBackForward";
this.checkBoxAllowBrowsingBackForward.Size = new System.Drawing.Size(209, 17);
this.checkBoxAllowBrowsingBackForward.TabIndex = 4;
this.checkBoxAllowBrowsingBackForward.Text = "Allow navigating back/forward in exam";
this.toolTip1.SetToolTip(this.checkBoxAllowBrowsingBackForward, resources.GetString("checkBoxAllowBrowsingBackForward.ToolTip"));
this.checkBoxAllowBrowsingBackForward.UseVisualStyleBackColor = true;
this.checkBoxAllowBrowsingBackForward.CheckedChanged += new System.EventHandler(this.checkBoxAllowBrowsingBackForward_CheckedChanged);
//
// checkBoxEnablePlugIns // checkBoxEnablePlugIns
// //
this.checkBoxEnablePlugIns.AutoSize = true; this.checkBoxEnablePlugIns.AutoSize = true;
@ -4150,7 +4256,7 @@ namespace SebWindowsConfig
// labelUseSEBWithoutBrowser // labelUseSEBWithoutBrowser
// //
this.labelUseSEBWithoutBrowser.AutoSize = true; this.labelUseSEBWithoutBrowser.AutoSize = true;
this.labelUseSEBWithoutBrowser.Location = new System.Drawing.Point(55, 435); this.labelUseSEBWithoutBrowser.Location = new System.Drawing.Point(55, 497);
this.labelUseSEBWithoutBrowser.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); this.labelUseSEBWithoutBrowser.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.labelUseSEBWithoutBrowser.Name = "labelUseSEBWithoutBrowser"; this.labelUseSEBWithoutBrowser.Name = "labelUseSEBWithoutBrowser";
this.labelUseSEBWithoutBrowser.Size = new System.Drawing.Size(436, 13); this.labelUseSEBWithoutBrowser.Size = new System.Drawing.Size(436, 13);
@ -4161,7 +4267,7 @@ namespace SebWindowsConfig
// checkBoxUseSebWithoutBrowser // checkBoxUseSebWithoutBrowser
// //
this.checkBoxUseSebWithoutBrowser.AutoSize = true; this.checkBoxUseSebWithoutBrowser.AutoSize = true;
this.checkBoxUseSebWithoutBrowser.Location = new System.Drawing.Point(38, 415); this.checkBoxUseSebWithoutBrowser.Location = new System.Drawing.Point(38, 477);
this.checkBoxUseSebWithoutBrowser.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1); this.checkBoxUseSebWithoutBrowser.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxUseSebWithoutBrowser.Name = "checkBoxUseSebWithoutBrowser"; this.checkBoxUseSebWithoutBrowser.Name = "checkBoxUseSebWithoutBrowser";
this.checkBoxUseSebWithoutBrowser.Size = new System.Drawing.Size(185, 17); this.checkBoxUseSebWithoutBrowser.Size = new System.Drawing.Size(185, 17);
@ -4189,11 +4295,11 @@ namespace SebWindowsConfig
this.checkBoxBlockLinksHTML.Location = new System.Drawing.Point(281, 40); this.checkBoxBlockLinksHTML.Location = new System.Drawing.Point(281, 40);
this.checkBoxBlockLinksHTML.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1); this.checkBoxBlockLinksHTML.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxBlockLinksHTML.Name = "checkBoxBlockLinksHTML"; this.checkBoxBlockLinksHTML.Name = "checkBoxBlockLinksHTML";
this.checkBoxBlockLinksHTML.Size = new System.Drawing.Size(248, 17); this.checkBoxBlockLinksHTML.Size = new System.Drawing.Size(218, 17);
this.checkBoxBlockLinksHTML.TabIndex = 1; this.checkBoxBlockLinksHTML.TabIndex = 1;
this.checkBoxBlockLinksHTML.Text = "block when directing to a different server (Mac)"; this.checkBoxBlockLinksHTML.Text = "block when directing to a different server";
this.toolTip1.SetToolTip(this.checkBoxBlockLinksHTML, "Hyperlinks which direct to a different host than the one of the current main page" + this.toolTip1.SetToolTip(this.checkBoxBlockLinksHTML, "Links which direct to a different host than the one of the current main page will" +
" will be ignored."); " be ignored.");
this.checkBoxBlockLinksHTML.UseVisualStyleBackColor = true; this.checkBoxBlockLinksHTML.UseVisualStyleBackColor = true;
this.checkBoxBlockLinksHTML.CheckedChanged += new System.EventHandler(this.checkBoxBlockLinksHTML_CheckedChanged); this.checkBoxBlockLinksHTML.CheckedChanged += new System.EventHandler(this.checkBoxBlockLinksHTML_CheckedChanged);
// //
@ -4420,8 +4526,8 @@ namespace SebWindowsConfig
// spellCheckerDictionaryFilesColumn // spellCheckerDictionaryFilesColumn
// //
this.spellCheckerDictionaryFilesColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; this.spellCheckerDictionaryFilesColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True; dataGridViewCellStyle12.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.spellCheckerDictionaryFilesColumn.DefaultCellStyle = dataGridViewCellStyle4; this.spellCheckerDictionaryFilesColumn.DefaultCellStyle = dataGridViewCellStyle12;
this.spellCheckerDictionaryFilesColumn.HeaderText = "Files"; this.spellCheckerDictionaryFilesColumn.HeaderText = "Files";
this.spellCheckerDictionaryFilesColumn.Name = "spellCheckerDictionaryFilesColumn"; this.spellCheckerDictionaryFilesColumn.Name = "spellCheckerDictionaryFilesColumn";
this.spellCheckerDictionaryFilesColumn.ReadOnly = true; this.spellCheckerDictionaryFilesColumn.ReadOnly = true;
@ -5818,38 +5924,6 @@ namespace SebWindowsConfig
this.applyAndStartSEBToolStripMenuItem.Visible = false; this.applyAndStartSEBToolStripMenuItem.Visible = false;
this.applyAndStartSEBToolStripMenuItem.Click += new System.EventHandler(this.applyAndStartSEBToolStripMenuItem_Click); this.applyAndStartSEBToolStripMenuItem.Click += new System.EventHandler(this.applyAndStartSEBToolStripMenuItem_Click);
// //
// groupBox17
//
this.groupBox17.Controls.Add(this.label23);
this.groupBox17.Controls.Add(this.checkBoxUseStartUrlQuery);
this.groupBox17.Location = new System.Drawing.Point(605, 471);
this.groupBox17.Name = "groupBox17";
this.groupBox17.Size = new System.Drawing.Size(610, 86);
this.groupBox17.TabIndex = 124;
this.groupBox17.TabStop = false;
this.groupBox17.Text = "Query String Parameter";
//
// checkBoxUseStartUrlQuery
//
this.checkBoxUseStartUrlQuery.AutoSize = true;
this.checkBoxUseStartUrlQuery.Location = new System.Drawing.Point(15, 59);
this.checkBoxUseStartUrlQuery.Name = "checkBoxUseStartUrlQuery";
this.checkBoxUseStartUrlQuery.Size = new System.Drawing.Size(133, 17);
this.checkBoxUseStartUrlQuery.TabIndex = 0;
this.checkBoxUseStartUrlQuery.Text = "Allow Query Parameter";
this.toolTip1.SetToolTip(this.checkBoxUseStartUrlQuery, "If a seb(s):// link contains an additional query string, SEB appends it to the ex" +
"am\'s Start URL");
this.checkBoxUseStartUrlQuery.UseVisualStyleBackColor = true;
this.checkBoxUseStartUrlQuery.CheckedChanged += new System.EventHandler(this.checkBoxUseStartUrlQuery_CheckedChanged);
//
// label23
//
this.label23.Location = new System.Drawing.Point(12, 24);
this.label23.Name = "label23";
this.label23.Size = new System.Drawing.Size(592, 27);
this.label23.TabIndex = 1;
this.label23.Text = resources.GetString("label23.Text");
//
// SebWindowsConfigForm // SebWindowsConfigForm
// //
this.AllowDrop = true; this.AllowDrop = true;
@ -5917,6 +5991,8 @@ namespace SebWindowsConfig
((System.ComponentModel.ISupportInitialize)(this.dataGridViewProhibitedProcesses)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridViewProhibitedProcesses)).EndInit();
this.tabPageExam.ResumeLayout(false); this.tabPageExam.ResumeLayout(false);
this.tabPageExam.PerformLayout(); this.tabPageExam.PerformLayout();
this.groupBox17.ResumeLayout(false);
this.groupBox17.PerformLayout();
this.groupBox15.ResumeLayout(false); this.groupBox15.ResumeLayout(false);
this.groupBox15.PerformLayout(); this.groupBox15.PerformLayout();
this.groupBox2.ResumeLayout(false); this.groupBox2.ResumeLayout(false);
@ -5931,6 +6007,10 @@ namespace SebWindowsConfig
this.tabPageDownUploads.PerformLayout(); this.tabPageDownUploads.PerformLayout();
this.tabPageBrowser.ResumeLayout(false); this.tabPageBrowser.ResumeLayout(false);
this.tabPageBrowser.PerformLayout(); this.tabPageBrowser.PerformLayout();
this.groupBox19.ResumeLayout(false);
this.groupBox19.PerformLayout();
this.groupBox18.ResumeLayout(false);
this.groupBox18.PerformLayout();
this.groupBox14.ResumeLayout(false); this.groupBox14.ResumeLayout(false);
this.groupBox14.PerformLayout(); this.groupBox14.PerformLayout();
this.groupBox13.ResumeLayout(false); this.groupBox13.ResumeLayout(false);
@ -5969,8 +6049,6 @@ namespace SebWindowsConfig
this.tabControlSebWindowsConfig.ResumeLayout(false); this.tabControlSebWindowsConfig.ResumeLayout(false);
this.menuStrip1.ResumeLayout(false); this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout(); this.menuStrip1.PerformLayout();
this.groupBox17.ResumeLayout(false);
this.groupBox17.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@ -6397,6 +6475,12 @@ namespace SebWindowsConfig
private System.Windows.Forms.GroupBox groupBox17; private System.Windows.Forms.GroupBox groupBox17;
private System.Windows.Forms.Label label23; private System.Windows.Forms.Label label23;
private System.Windows.Forms.CheckBox checkBoxUseStartUrlQuery; private System.Windows.Forms.CheckBox checkBoxUseStartUrlQuery;
private System.Windows.Forms.GroupBox groupBox19;
private System.Windows.Forms.Label label25;
private System.Windows.Forms.ComboBox comboBoxUrlPolicyNewWindow;
private System.Windows.Forms.GroupBox groupBox18;
private System.Windows.Forms.Label label24;
private System.Windows.Forms.ComboBox comboBoxUrlPolicyMainWindow;
} }
} }

View file

@ -527,6 +527,9 @@ namespace SebWindowsConfig
checkBoxSetVolumeLevel.Checked = ((bool) SEBSettings.settingsCurrent[SEBSettings.KeyAudioSetVolumeLevel]); checkBoxSetVolumeLevel.Checked = ((bool) SEBSettings.settingsCurrent[SEBSettings.KeyAudioSetVolumeLevel]);
trackBarVolumeLevel.Value = ((int) SEBSettings.settingsCurrent[SEBSettings.KeyAudioVolumeLevel]); trackBarVolumeLevel.Value = ((int) SEBSettings.settingsCurrent[SEBSettings.KeyAudioVolumeLevel]);
comboBoxUrlPolicyMainWindow.SelectedIndex = (int) SEBSettings.settingsCurrent[SEBSettings.KeyMainBrowserWindowUrlPolicy];
comboBoxUrlPolicyNewWindow.SelectedIndex = (int) SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowUrlPolicy];
// Group "Down/Uploads" // Group "Down/Uploads"
checkBoxAllowDownUploads.Checked = (Boolean)SEBSettings.settingsCurrent[SEBSettings.KeyAllowDownUploads]; checkBoxAllowDownUploads.Checked = (Boolean)SEBSettings.settingsCurrent[SEBSettings.KeyAllowDownUploads];
checkBoxAllowCustomDownloadLocation.Checked = (Boolean)SEBSettings.settingsCurrent[SEBSettings.KeyAllowCustomDownUploadLocation]; checkBoxAllowCustomDownloadLocation.Checked = (Boolean)SEBSettings.settingsCurrent[SEBSettings.KeyAllowCustomDownUploadLocation];
@ -4614,5 +4617,15 @@ namespace SebWindowsConfig
{ {
SEBSettings.settingsCurrent[SEBSettings.KeyUseStartUrlQuery] = checkBoxUseStartUrlQuery.Checked; SEBSettings.settingsCurrent[SEBSettings.KeyUseStartUrlQuery] = checkBoxUseStartUrlQuery.Checked;
} }
private void comboBoxUrlPolicyMainWindow_SelectedIndexChanged(object sender, EventArgs e)
{
SEBSettings.settingsCurrent[SEBSettings.KeyMainBrowserWindowUrlPolicy] = comboBoxUrlPolicyMainWindow.SelectedIndex;
}
private void comboBoxUrlPolicyNewWindow_SelectedIndexChanged(object sender, EventArgs e)
{
SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowUrlPolicy] = comboBoxUrlPolicyNewWindow.SelectedIndex;
}
} }
} }

File diff suppressed because it is too large Load diff

View file

@ -437,6 +437,16 @@ namespace SebWindowsConfig
comboBoxNewBrowserWindowHeight .Items.AddRange(StringWindowHeight); comboBoxNewBrowserWindowHeight .Items.AddRange(StringWindowHeight);
listBoxNewBrowserWindowPositioning .Items.AddRange(StringWindowPositioning); listBoxNewBrowserWindowPositioning .Items.AddRange(StringWindowPositioning);
comboBoxUrlPolicyMainWindow.Items.Add("Never");
comboBoxUrlPolicyMainWindow.Items.Add("OnlyLoadError");
comboBoxUrlPolicyMainWindow.Items.Add("BeforeTitle");
comboBoxUrlPolicyMainWindow.Items.Add("Always");
comboBoxUrlPolicyNewWindow.Items.Add("Never");
comboBoxUrlPolicyNewWindow.Items.Add("OnlyLoadError");
comboBoxUrlPolicyNewWindow.Items.Add("BeforeTitle");
comboBoxUrlPolicyNewWindow.Items.Add("Always");
comboBoxTaskBarHeight.Items.AddRange(StringTaskBarHeight); comboBoxTaskBarHeight.Items.AddRange(StringTaskBarHeight);
listBoxOpenLinksHTML.Items.AddRange(StringPolicyLinkOpening); listBoxOpenLinksHTML.Items.AddRange(StringPolicyLinkOpening);