Started implementing the browser component.
This commit is contained in:
parent
94f356b77a
commit
429685463b
28 changed files with 467 additions and 8 deletions
|
@ -7,7 +7,11 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using CefSharp;
|
||||||
using SafeExamBrowser.Contracts.Behaviour;
|
using SafeExamBrowser.Contracts.Behaviour;
|
||||||
|
using SafeExamBrowser.Contracts.Configuration;
|
||||||
using SafeExamBrowser.Contracts.UserInterface;
|
using SafeExamBrowser.Contracts.UserInterface;
|
||||||
|
|
||||||
namespace SafeExamBrowser.Browser
|
namespace SafeExamBrowser.Browser
|
||||||
|
@ -15,6 +19,25 @@ namespace SafeExamBrowser.Browser
|
||||||
public class BrowserApplicationController : IApplicationController
|
public class BrowserApplicationController : IApplicationController
|
||||||
{
|
{
|
||||||
private ITaskbarButton button;
|
private ITaskbarButton button;
|
||||||
|
private IList<IApplicationInstance> instances = new List<IApplicationInstance>();
|
||||||
|
private ISettings settings;
|
||||||
|
private IUiElementFactory uiFactory;
|
||||||
|
|
||||||
|
public BrowserApplicationController(ISettings settings, IUiElementFactory uiFactory)
|
||||||
|
{
|
||||||
|
this.settings = settings;
|
||||||
|
this.uiFactory = uiFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Initialize()
|
||||||
|
{
|
||||||
|
var cefSettings = new CefSettings
|
||||||
|
{
|
||||||
|
CachePath = settings.BrowserCachePath
|
||||||
|
};
|
||||||
|
|
||||||
|
Cef.Initialize(cefSettings, true, null);
|
||||||
|
}
|
||||||
|
|
||||||
public void RegisterApplicationButton(ITaskbarButton button)
|
public void RegisterApplicationButton(ITaskbarButton button)
|
||||||
{
|
{
|
||||||
|
@ -22,9 +45,32 @@ namespace SafeExamBrowser.Browser
|
||||||
this.button.OnClick += ButtonClick;
|
this.button.OnClick += ButtonClick;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Terminate()
|
||||||
|
{
|
||||||
|
Cef.Shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
private void ButtonClick(Guid? instanceId = null)
|
private void ButtonClick(Guid? instanceId = null)
|
||||||
{
|
{
|
||||||
button.RegisterInstance(new BrowserApplicationInstance("A new instance. Yaji..."));
|
if (instanceId.HasValue)
|
||||||
|
{
|
||||||
|
instances.FirstOrDefault(i => i.Id == instanceId)?.Window?.BringToForeground();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CreateNewInstance();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CreateNewInstance()
|
||||||
|
{
|
||||||
|
var control = new BrowserControl("www.duckduckgo.com");
|
||||||
|
var window = uiFactory.CreateBrowserWindow(control);
|
||||||
|
var instance = new BrowserApplicationInstance("DuckDuckGo");
|
||||||
|
|
||||||
|
instances.Add(instance);
|
||||||
|
instance.RegisterWindow(window);
|
||||||
|
button.RegisterInstance(instance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using SafeExamBrowser.Contracts.Configuration;
|
using SafeExamBrowser.Contracts.Configuration;
|
||||||
|
using SafeExamBrowser.Contracts.UserInterface;
|
||||||
|
|
||||||
namespace SafeExamBrowser.Browser
|
namespace SafeExamBrowser.Browser
|
||||||
{
|
{
|
||||||
|
@ -15,11 +16,17 @@ namespace SafeExamBrowser.Browser
|
||||||
{
|
{
|
||||||
public Guid Id { get; private set; }
|
public Guid Id { get; private set; }
|
||||||
public string Name { get; private set; }
|
public string Name { get; private set; }
|
||||||
|
public IWindow Window { get; private set; }
|
||||||
|
|
||||||
public BrowserApplicationInstance(string name)
|
public BrowserApplicationInstance(string name)
|
||||||
{
|
{
|
||||||
Id = Guid.NewGuid();
|
Id = Guid.NewGuid();
|
||||||
Name = name;
|
Name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RegisterWindow(IWindow window)
|
||||||
|
{
|
||||||
|
Window = window;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
21
SafeExamBrowser.Browser/BrowserControl.cs
Normal file
21
SafeExamBrowser.Browser/BrowserControl.cs
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2017 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/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using CefSharp.Wpf;
|
||||||
|
using SafeExamBrowser.Contracts.UserInterface;
|
||||||
|
|
||||||
|
namespace SafeExamBrowser.Browser
|
||||||
|
{
|
||||||
|
class BrowserControl : ChromiumWebBrowser, IBrowserControl
|
||||||
|
{
|
||||||
|
public BrowserControl(string url)
|
||||||
|
{
|
||||||
|
Address = url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="..\packages\CefSharp.Wpf.57.0.0\build\CefSharp.Wpf.props" Condition="Exists('..\packages\CefSharp.Wpf.57.0.0\build\CefSharp.Wpf.props')" />
|
||||||
|
<Import Project="..\packages\CefSharp.Common.57.0.0\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.57.0.0\build\CefSharp.Common.props')" />
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
@ -11,6 +13,8 @@
|
||||||
<AssemblyName>SafeExamBrowser.Browser</AssemblyName>
|
<AssemblyName>SafeExamBrowser.Browser</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<NuGetPackageImportStamp>
|
||||||
|
</NuGetPackageImportStamp>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
@ -29,20 +33,43 @@
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\x86\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Reference Include="PresentationCore" />
|
||||||
|
<Reference Include="PresentationFramework" />
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xaml" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
<Reference Include="System.Data" />
|
<Reference Include="System.Data" />
|
||||||
<Reference Include="System.Net.Http" />
|
<Reference Include="System.Net.Http" />
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="WindowsBase" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="BrowserApplicationController.cs" />
|
<Compile Include="BrowserApplicationController.cs" />
|
||||||
<Compile Include="BrowserApplicationInfo.cs" />
|
<Compile Include="BrowserApplicationInfo.cs" />
|
||||||
<Compile Include="BrowserApplicationInstance.cs" />
|
<Compile Include="BrowserApplicationInstance.cs" />
|
||||||
|
<Compile Include="BrowserControl.cs" />
|
||||||
<Compile Include="BrowserIconResource.cs" />
|
<Compile Include="BrowserIconResource.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -58,5 +85,23 @@
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</Resource>
|
</Resource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<Import Project="..\packages\cef.redist.x64.3.2987.1601\build\cef.redist.x64.targets" Condition="Exists('..\packages\cef.redist.x64.3.2987.1601\build\cef.redist.x64.targets')" />
|
||||||
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Error Condition="!Exists('..\packages\cef.redist.x64.3.2987.1601\build\cef.redist.x64.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x64.3.2987.1601\build\cef.redist.x64.targets'))" />
|
||||||
|
<Error Condition="!Exists('..\packages\cef.redist.x86.3.2987.1601\build\cef.redist.x86.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x86.3.2987.1601\build\cef.redist.x86.targets'))" />
|
||||||
|
<Error Condition="!Exists('..\packages\CefSharp.Common.57.0.0\build\CefSharp.Common.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.57.0.0\build\CefSharp.Common.props'))" />
|
||||||
|
<Error Condition="!Exists('..\packages\CefSharp.Common.57.0.0\build\CefSharp.Common.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.57.0.0\build\CefSharp.Common.targets'))" />
|
||||||
|
<Error Condition="!Exists('..\packages\CefSharp.Wpf.57.0.0\build\CefSharp.Wpf.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Wpf.57.0.0\build\CefSharp.Wpf.props'))" />
|
||||||
|
<Error Condition="!Exists('..\packages\CefSharp.Wpf.57.0.0\build\CefSharp.Wpf.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Wpf.57.0.0\build\CefSharp.Wpf.targets'))" />
|
||||||
|
</Target>
|
||||||
|
<Import Project="..\packages\cef.redist.x86.3.2987.1601\build\cef.redist.x86.targets" Condition="Exists('..\packages\cef.redist.x86.3.2987.1601\build\cef.redist.x86.targets')" />
|
||||||
|
<Import Project="..\packages\CefSharp.Common.57.0.0\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.57.0.0\build\CefSharp.Common.targets')" />
|
||||||
|
<Import Project="..\packages\CefSharp.Wpf.57.0.0\build\CefSharp.Wpf.targets" Condition="Exists('..\packages\CefSharp.Wpf.57.0.0\build\CefSharp.Wpf.targets')" />
|
||||||
</Project>
|
</Project>
|
7
SafeExamBrowser.Browser/packages.config
Normal file
7
SafeExamBrowser.Browser/packages.config
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="cef.redist.x64" version="3.2987.1601" targetFramework="net452" />
|
||||||
|
<package id="cef.redist.x86" version="3.2987.1601" targetFramework="net452" />
|
||||||
|
<package id="CefSharp.Common" version="57.0.0" targetFramework="net452" />
|
||||||
|
<package id="CefSharp.Wpf" version="57.0.0" targetFramework="net452" />
|
||||||
|
</packages>
|
|
@ -29,6 +29,24 @@
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\x86\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
|
|
|
@ -15,11 +15,21 @@ namespace SafeExamBrowser.Configuration
|
||||||
{
|
{
|
||||||
public class Settings : ISettings
|
public class Settings : ISettings
|
||||||
{
|
{
|
||||||
|
private const string AppDataFolder = "SafeExamBrowser";
|
||||||
|
|
||||||
|
public string BrowserCachePath
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), AppDataFolder, "Cache");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string LogFolderPath
|
public string LogFolderPath
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SafeExamBrowser", "Logs");
|
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), AppDataFolder, "Logs");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,9 +12,19 @@ namespace SafeExamBrowser.Contracts.Behaviour
|
||||||
{
|
{
|
||||||
public interface IApplicationController
|
public interface IApplicationController
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Performs any initialization work, if necessary.
|
||||||
|
/// </summary>
|
||||||
|
void Initialize();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Registers the taskbar button for this application.
|
/// Registers the taskbar button for this application.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void RegisterApplicationButton(ITaskbarButton button);
|
void RegisterApplicationButton(ITaskbarButton button);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Performs any termination work, e.g. freeing of resources.
|
||||||
|
/// </summary>
|
||||||
|
void Terminate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using SafeExamBrowser.Contracts.UserInterface;
|
||||||
|
|
||||||
namespace SafeExamBrowser.Contracts.Configuration
|
namespace SafeExamBrowser.Contracts.Configuration
|
||||||
{
|
{
|
||||||
|
@ -21,5 +22,15 @@ namespace SafeExamBrowser.Contracts.Configuration
|
||||||
/// The name or (document) title of the application instance.
|
/// The name or (document) title of the application instance.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
string Name { get; }
|
string Name { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The main window of the application instance.
|
||||||
|
/// </summary>
|
||||||
|
IWindow Window { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Registers the given window as the main window of the application instance.
|
||||||
|
/// </summary>
|
||||||
|
void RegisterWindow(IWindow window);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,11 @@ namespace SafeExamBrowser.Contracts.Configuration
|
||||||
{
|
{
|
||||||
public interface ISettings
|
public interface ISettings
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The path where the browser cache is to be stored.
|
||||||
|
/// </summary>
|
||||||
|
string BrowserCachePath { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The path where the log files are to be stored.
|
/// The path where the log files are to be stored.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -29,6 +29,24 @@
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\x86\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
|
@ -64,6 +82,8 @@
|
||||||
<Compile Include="Monitoring\IMouseInterceptor.cs" />
|
<Compile Include="Monitoring\IMouseInterceptor.cs" />
|
||||||
<Compile Include="Monitoring\IProcessMonitor.cs" />
|
<Compile Include="Monitoring\IProcessMonitor.cs" />
|
||||||
<Compile Include="Monitoring\IWindowMonitor.cs" />
|
<Compile Include="Monitoring\IWindowMonitor.cs" />
|
||||||
|
<Compile Include="UserInterface\IBrowserControl.cs" />
|
||||||
|
<Compile Include="UserInterface\IBrowserWindow.cs" />
|
||||||
<Compile Include="UserInterface\IMessageBox.cs" />
|
<Compile Include="UserInterface\IMessageBox.cs" />
|
||||||
<Compile Include="UserInterface\ITaskbarNotification.cs" />
|
<Compile Include="UserInterface\ITaskbarNotification.cs" />
|
||||||
<Compile Include="UserInterface\ISplashScreen.cs" />
|
<Compile Include="UserInterface\ISplashScreen.cs" />
|
||||||
|
@ -72,6 +92,7 @@
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="UserInterface\ITaskbarButton.cs" />
|
<Compile Include="UserInterface\ITaskbarButton.cs" />
|
||||||
<Compile Include="UserInterface\IUiElementFactory.cs" />
|
<Compile Include="UserInterface\IUiElementFactory.cs" />
|
||||||
|
<Compile Include="UserInterface\IWindow.cs" />
|
||||||
<Compile Include="UserInterface\MessageBoxAction.cs" />
|
<Compile Include="UserInterface\MessageBoxAction.cs" />
|
||||||
<Compile Include="UserInterface\MessageBoxIcon.cs" />
|
<Compile Include="UserInterface\MessageBoxIcon.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
14
SafeExamBrowser.Contracts/UserInterface/IBrowserControl.cs
Normal file
14
SafeExamBrowser.Contracts/UserInterface/IBrowserControl.cs
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2017 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.Contracts.UserInterface
|
||||||
|
{
|
||||||
|
public interface IBrowserControl
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
14
SafeExamBrowser.Contracts/UserInterface/IBrowserWindow.cs
Normal file
14
SafeExamBrowser.Contracts/UserInterface/IBrowserWindow.cs
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2017 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.Contracts.UserInterface
|
||||||
|
{
|
||||||
|
public interface IBrowserWindow : IWindow
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
|
@ -18,6 +18,11 @@ namespace SafeExamBrowser.Contracts.UserInterface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
ITaskbarButton CreateApplicationButton(IApplicationInfo info);
|
ITaskbarButton CreateApplicationButton(IApplicationInfo info);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a new browser window loaded with the given browser control.
|
||||||
|
/// </summary>
|
||||||
|
IBrowserWindow CreateBrowserWindow(IBrowserControl control);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a taskbar notification, initialized with the given notification information.
|
/// Creates a taskbar notification, initialized with the given notification information.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
18
SafeExamBrowser.Contracts/UserInterface/IWindow.cs
Normal file
18
SafeExamBrowser.Contracts/UserInterface/IWindow.cs
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2017 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.Contracts.UserInterface
|
||||||
|
{
|
||||||
|
public interface IWindow
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Brings the window to the foreground.
|
||||||
|
/// </summary>
|
||||||
|
void BringToForeground();
|
||||||
|
}
|
||||||
|
}
|
|
@ -37,6 +37,24 @@
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\x86\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Castle.Core, Version=4.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
|
<Reference Include="Castle.Core, Version=4.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Castle.Core.4.1.0\lib\net45\Castle.Core.dll</HintPath>
|
<HintPath>..\packages\Castle.Core.4.1.0\lib\net45\Castle.Core.dll</HintPath>
|
||||||
|
|
|
@ -45,13 +45,17 @@ namespace SafeExamBrowser.Core.Behaviour.Operations
|
||||||
|
|
||||||
var browserButton = uiFactory.CreateApplicationButton(browserInfo);
|
var browserButton = uiFactory.CreateApplicationButton(browserInfo);
|
||||||
|
|
||||||
|
browserController.Initialize();
|
||||||
browserController.RegisterApplicationButton(browserButton);
|
browserController.RegisterApplicationButton(browserButton);
|
||||||
|
|
||||||
taskbar.AddButton(browserButton);
|
taskbar.AddButton(browserButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Revert()
|
public void Revert()
|
||||||
{
|
{
|
||||||
// Nothing to do here so far...
|
logger.Info("Terminating browser...");
|
||||||
|
browserController.Terminate();
|
||||||
|
logger.Info("Browser successfully terminated.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,24 @@
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\x86\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
|
|
|
@ -29,6 +29,24 @@
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\x86\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
|
|
12
SafeExamBrowser.UserInterface/BrowserWindow.xaml
Normal file
12
SafeExamBrowser.UserInterface/BrowserWindow.xaml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<Window x:Class="SafeExamBrowser.UserInterface.BrowserWindow"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
xmlns:local="clr-namespace:SafeExamBrowser.UserInterface"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
Title="BrowserWindow" Height="300" Width="300">
|
||||||
|
<ContentControl x:Name="BrowserContainer">
|
||||||
|
|
||||||
|
</ContentControl>
|
||||||
|
</Window>
|
31
SafeExamBrowser.UserInterface/BrowserWindow.xaml.cs
Normal file
31
SafeExamBrowser.UserInterface/BrowserWindow.xaml.cs
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2017 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/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System.Windows;
|
||||||
|
using SafeExamBrowser.Contracts.UserInterface;
|
||||||
|
|
||||||
|
namespace SafeExamBrowser.UserInterface
|
||||||
|
{
|
||||||
|
public partial class BrowserWindow : Window, IBrowserWindow
|
||||||
|
{
|
||||||
|
public BrowserWindow(IBrowserControl browserControl)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
if (browserControl is UIElement)
|
||||||
|
{
|
||||||
|
BrowserContainer.Content = browserControl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void BringToForeground()
|
||||||
|
{
|
||||||
|
Activate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -35,7 +35,7 @@ namespace SafeExamBrowser.UserInterface.Controls
|
||||||
{
|
{
|
||||||
Icon.Content = IconResourceLoader.Load(info.IconResource);
|
Icon.Content = IconResourceLoader.Load(info.IconResource);
|
||||||
Text.Text = instance.Name;
|
Text.Text = instance.Name;
|
||||||
Button.ToolTip = $"{instance.Name} - {info.Tooltip}";
|
Button.ToolTip = $"{instance.Name} - {info.Name}";
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Button_Click(object sender, RoutedEventArgs e)
|
private void Button_Click(object sender, RoutedEventArgs e)
|
||||||
|
|
|
@ -30,6 +30,24 @@
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\x86\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Data" />
|
<Reference Include="System.Data" />
|
||||||
|
@ -47,6 +65,9 @@
|
||||||
<Reference Include="PresentationFramework" />
|
<Reference Include="PresentationFramework" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="BrowserWindow.xaml.cs">
|
||||||
|
<DependentUpon>BrowserWindow.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Controls\ApplicationInstanceButton.xaml.cs">
|
<Compile Include="Controls\ApplicationInstanceButton.xaml.cs">
|
||||||
<DependentUpon>ApplicationInstanceButton.xaml</DependentUpon>
|
<DependentUpon>ApplicationInstanceButton.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
@ -95,6 +116,10 @@
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Page Include="BrowserWindow.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
<Page Include="Controls\ApplicationInstanceButton.xaml">
|
<Page Include="Controls\ApplicationInstanceButton.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
|
|
@ -22,9 +22,9 @@ namespace SafeExamBrowser.UserInterface
|
||||||
return new ApplicationButton(info);
|
return new ApplicationButton(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Show(string message, string title, MessageBoxAction action = MessageBoxAction.Confirm, MessageBoxIcon icon = MessageBoxIcon.Information)
|
public IBrowserWindow CreateBrowserWindow(IBrowserControl control)
|
||||||
{
|
{
|
||||||
MessageBox.Show(message, title, ToButton(action), ToImage(icon));
|
return new BrowserWindow(control);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ITaskbarNotification CreateNotification(INotificationInfo info)
|
public ITaskbarNotification CreateNotification(INotificationInfo info)
|
||||||
|
@ -57,6 +57,11 @@ namespace SafeExamBrowser.UserInterface
|
||||||
return splashScreen;
|
return splashScreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Show(string message, string title, MessageBoxAction action = MessageBoxAction.Confirm, MessageBoxIcon icon = MessageBoxIcon.Information)
|
||||||
|
{
|
||||||
|
MessageBox.Show(message, title, ToButton(action), ToImage(icon));
|
||||||
|
}
|
||||||
|
|
||||||
private MessageBoxButton ToButton(MessageBoxAction action)
|
private MessageBoxButton ToButton(MessageBoxAction action)
|
||||||
{
|
{
|
||||||
switch (action)
|
switch (action)
|
||||||
|
|
|
@ -29,6 +29,24 @@
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\x86\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 15
|
# Visual Studio 15
|
||||||
VisualStudioVersion = 15.0.26430.14
|
VisualStudioVersion = 15.0.26430.15
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SafeExamBrowser", "SafeExamBrowser\SafeExamBrowser.csproj", "{E3AED2F8-B5DF-45D1-AC19-48066923D6D8}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SafeExamBrowser", "SafeExamBrowser\SafeExamBrowser.csproj", "{E3AED2F8-B5DF-45D1-AC19-48066923D6D8}"
|
||||||
EndProject
|
EndProject
|
||||||
|
@ -30,45 +30,83 @@ EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
Release|Any CPU = Release|Any CPU
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Release|x86 = Release|x86
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{E3AED2F8-B5DF-45D1-AC19-48066923D6D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{E3AED2F8-B5DF-45D1-AC19-48066923D6D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{E3AED2F8-B5DF-45D1-AC19-48066923D6D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{E3AED2F8-B5DF-45D1-AC19-48066923D6D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{E3AED2F8-B5DF-45D1-AC19-48066923D6D8}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{E3AED2F8-B5DF-45D1-AC19-48066923D6D8}.Debug|x86.Build.0 = Debug|x86
|
||||||
{E3AED2F8-B5DF-45D1-AC19-48066923D6D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{E3AED2F8-B5DF-45D1-AC19-48066923D6D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{E3AED2F8-B5DF-45D1-AC19-48066923D6D8}.Release|Any CPU.Build.0 = Release|Any CPU
|
{E3AED2F8-B5DF-45D1-AC19-48066923D6D8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{E3AED2F8-B5DF-45D1-AC19-48066923D6D8}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{E3AED2F8-B5DF-45D1-AC19-48066923D6D8}.Release|x86.Build.0 = Release|x86
|
||||||
{3D6FDBB6-A4AF-4626-BB2B-BF329D44F9CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{3D6FDBB6-A4AF-4626-BB2B-BF329D44F9CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{3D6FDBB6-A4AF-4626-BB2B-BF329D44F9CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{3D6FDBB6-A4AF-4626-BB2B-BF329D44F9CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{3D6FDBB6-A4AF-4626-BB2B-BF329D44F9CC}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{3D6FDBB6-A4AF-4626-BB2B-BF329D44F9CC}.Debug|x86.Build.0 = Debug|x86
|
||||||
{3D6FDBB6-A4AF-4626-BB2B-BF329D44F9CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{3D6FDBB6-A4AF-4626-BB2B-BF329D44F9CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{3D6FDBB6-A4AF-4626-BB2B-BF329D44F9CC}.Release|Any CPU.Build.0 = Release|Any CPU
|
{3D6FDBB6-A4AF-4626-BB2B-BF329D44F9CC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{3D6FDBB6-A4AF-4626-BB2B-BF329D44F9CC}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{3D6FDBB6-A4AF-4626-BB2B-BF329D44F9CC}.Release|x86.Build.0 = Release|x86
|
||||||
{E1BE031A-4354-41E7-83E8-843DED4489FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{E1BE031A-4354-41E7-83E8-843DED4489FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{E1BE031A-4354-41E7-83E8-843DED4489FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{E1BE031A-4354-41E7-83E8-843DED4489FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{E1BE031A-4354-41E7-83E8-843DED4489FF}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{E1BE031A-4354-41E7-83E8-843DED4489FF}.Debug|x86.Build.0 = Debug|x86
|
||||||
{E1BE031A-4354-41E7-83E8-843DED4489FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{E1BE031A-4354-41E7-83E8-843DED4489FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{E1BE031A-4354-41E7-83E8-843DED4489FF}.Release|Any CPU.Build.0 = Release|Any CPU
|
{E1BE031A-4354-41E7-83E8-843DED4489FF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{E1BE031A-4354-41E7-83E8-843DED4489FF}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{E1BE031A-4354-41E7-83E8-843DED4489FF}.Release|x86.Build.0 = Release|x86
|
||||||
{48B9F2A1-B87D-40F0-BEC9-399E8909860F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{48B9F2A1-B87D-40F0-BEC9-399E8909860F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{48B9F2A1-B87D-40F0-BEC9-399E8909860F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{48B9F2A1-B87D-40F0-BEC9-399E8909860F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{48B9F2A1-B87D-40F0-BEC9-399E8909860F}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{48B9F2A1-B87D-40F0-BEC9-399E8909860F}.Debug|x86.Build.0 = Debug|x86
|
||||||
{48B9F2A1-B87D-40F0-BEC9-399E8909860F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{48B9F2A1-B87D-40F0-BEC9-399E8909860F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{48B9F2A1-B87D-40F0-BEC9-399E8909860F}.Release|Any CPU.Build.0 = Release|Any CPU
|
{48B9F2A1-B87D-40F0-BEC9-399E8909860F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{48B9F2A1-B87D-40F0-BEC9-399E8909860F}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{48B9F2A1-B87D-40F0-BEC9-399E8909860F}.Release|x86.Build.0 = Release|x86
|
||||||
{47DA5933-BEF8-4729-94E6-ABDE2DB12262}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{47DA5933-BEF8-4729-94E6-ABDE2DB12262}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{47DA5933-BEF8-4729-94E6-ABDE2DB12262}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{47DA5933-BEF8-4729-94E6-ABDE2DB12262}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{47DA5933-BEF8-4729-94E6-ABDE2DB12262}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{47DA5933-BEF8-4729-94E6-ABDE2DB12262}.Debug|x86.Build.0 = Debug|x86
|
||||||
{47DA5933-BEF8-4729-94E6-ABDE2DB12262}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{47DA5933-BEF8-4729-94E6-ABDE2DB12262}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{47DA5933-BEF8-4729-94E6-ABDE2DB12262}.Release|Any CPU.Build.0 = Release|Any CPU
|
{47DA5933-BEF8-4729-94E6-ABDE2DB12262}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{47DA5933-BEF8-4729-94E6-ABDE2DB12262}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{47DA5933-BEF8-4729-94E6-ABDE2DB12262}.Release|x86.Build.0 = Release|x86
|
||||||
{04E653F1-98E6-4E34-9DD7-7F2BC1A8B767}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{04E653F1-98E6-4E34-9DD7-7F2BC1A8B767}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{04E653F1-98E6-4E34-9DD7-7F2BC1A8B767}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{04E653F1-98E6-4E34-9DD7-7F2BC1A8B767}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{04E653F1-98E6-4E34-9DD7-7F2BC1A8B767}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{04E653F1-98E6-4E34-9DD7-7F2BC1A8B767}.Debug|x86.Build.0 = Debug|x86
|
||||||
{04E653F1-98E6-4E34-9DD7-7F2BC1A8B767}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{04E653F1-98E6-4E34-9DD7-7F2BC1A8B767}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{04E653F1-98E6-4E34-9DD7-7F2BC1A8B767}.Release|Any CPU.Build.0 = Release|Any CPU
|
{04E653F1-98E6-4E34-9DD7-7F2BC1A8B767}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{04E653F1-98E6-4E34-9DD7-7F2BC1A8B767}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{04E653F1-98E6-4E34-9DD7-7F2BC1A8B767}.Release|x86.Build.0 = Release|x86
|
||||||
{EF563531-4EB5-44B9-A5EC-D6D6F204469B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{EF563531-4EB5-44B9-A5EC-D6D6F204469B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{EF563531-4EB5-44B9-A5EC-D6D6F204469B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{EF563531-4EB5-44B9-A5EC-D6D6F204469B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{EF563531-4EB5-44B9-A5EC-D6D6F204469B}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{EF563531-4EB5-44B9-A5EC-D6D6F204469B}.Debug|x86.Build.0 = Debug|x86
|
||||||
{EF563531-4EB5-44B9-A5EC-D6D6F204469B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{EF563531-4EB5-44B9-A5EC-D6D6F204469B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{EF563531-4EB5-44B9-A5EC-D6D6F204469B}.Release|Any CPU.Build.0 = Release|Any CPU
|
{EF563531-4EB5-44B9-A5EC-D6D6F204469B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{EF563531-4EB5-44B9-A5EC-D6D6F204469B}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{EF563531-4EB5-44B9-A5EC-D6D6F204469B}.Release|x86.Build.0 = Release|x86
|
||||||
{C388C4DD-A159-457D-AF92-89F7AD185109}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{C388C4DD-A159-457D-AF92-89F7AD185109}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{C388C4DD-A159-457D-AF92-89F7AD185109}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{C388C4DD-A159-457D-AF92-89F7AD185109}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{C388C4DD-A159-457D-AF92-89F7AD185109}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{C388C4DD-A159-457D-AF92-89F7AD185109}.Debug|x86.Build.0 = Debug|x86
|
||||||
{C388C4DD-A159-457D-AF92-89F7AD185109}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{C388C4DD-A159-457D-AF92-89F7AD185109}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{C388C4DD-A159-457D-AF92-89F7AD185109}.Release|Any CPU.Build.0 = Release|Any CPU
|
{C388C4DD-A159-457D-AF92-89F7AD185109}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{C388C4DD-A159-457D-AF92-89F7AD185109}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{C388C4DD-A159-457D-AF92-89F7AD185109}.Release|x86.Build.0 = Release|x86
|
||||||
{73724659-4150-4792-A94E-42F5F3C1B696}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{73724659-4150-4792-A94E-42F5F3C1B696}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{73724659-4150-4792-A94E-42F5F3C1B696}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{73724659-4150-4792-A94E-42F5F3C1B696}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{73724659-4150-4792-A94E-42F5F3C1B696}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{73724659-4150-4792-A94E-42F5F3C1B696}.Debug|x86.Build.0 = Debug|x86
|
||||||
{73724659-4150-4792-A94E-42F5F3C1B696}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{73724659-4150-4792-A94E-42F5F3C1B696}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{73724659-4150-4792-A94E-42F5F3C1B696}.Release|Any CPU.Build.0 = Release|Any CPU
|
{73724659-4150-4792-A94E-42F5F3C1B696}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{73724659-4150-4792-A94E-42F5F3C1B696}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{73724659-4150-4792-A94E-42F5F3C1B696}.Release|x86.Build.0 = Release|x86
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
|
@ -46,7 +46,6 @@ namespace SafeExamBrowser
|
||||||
|
|
||||||
public void BuildObjectGraph()
|
public void BuildObjectGraph()
|
||||||
{
|
{
|
||||||
browserController = new BrowserApplicationController();
|
|
||||||
browserInfo = new BrowserApplicationInfo();
|
browserInfo = new BrowserApplicationInfo();
|
||||||
logger = new Logger();
|
logger = new Logger();
|
||||||
settings = new Settings();
|
settings = new Settings();
|
||||||
|
@ -58,6 +57,7 @@ namespace SafeExamBrowser
|
||||||
|
|
||||||
text = new Text(textResource);
|
text = new Text(textResource);
|
||||||
aboutInfo = new AboutNotificationInfo(text);
|
aboutInfo = new AboutNotificationInfo(text);
|
||||||
|
browserController = new BrowserApplicationController(settings, uiFactory);
|
||||||
processMonitor = new ProcessMonitor(new ModuleLogger(logger, typeof(ProcessMonitor)));
|
processMonitor = new ProcessMonitor(new ModuleLogger(logger, typeof(ProcessMonitor)));
|
||||||
windowMonitor = new WindowMonitor(new ModuleLogger(logger, typeof(WindowMonitor)));
|
windowMonitor = new WindowMonitor(new ModuleLogger(logger, typeof(WindowMonitor)));
|
||||||
workingArea = new WorkingArea(new ModuleLogger(logger, typeof(WorkingArea)));
|
workingArea = new WorkingArea(new ModuleLogger(logger, typeof(WorkingArea)));
|
||||||
|
|
|
@ -54,6 +54,26 @@
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ApplicationIcon>SafeExamBrowser.ico</ApplicationIcon>
|
<ApplicationIcon>SafeExamBrowser.ico</ApplicationIcon>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
<Prefer32Bit>true</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\x86\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
<Prefer32Bit>true</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Data" />
|
<Reference Include="System.Data" />
|
||||||
|
|
Loading…
Reference in a new issue