Skip to content

Commit e5dda41

Browse files
committed
Integrated navigator service
1 parent 6d7c707 commit e5dda41

File tree

4 files changed

+39
-6
lines changed

4 files changed

+39
-6
lines changed

AngleSharp.Scripting.JavaScript/AngleSharp.Scripting.JavaScript.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@
6969
<Compile Include="Extensions.cs" />
7070
<Compile Include="JavaScriptEngine.cs" />
7171
<Compile Include="Properties\AssemblyInfo.cs" />
72-
<Compile Include="ScriptingService.cs" />
72+
<Compile Include="Services\ScriptingService.cs" />
73+
<Compile Include="Services\NavigatorService.cs" />
7374
<Compile Include="SystemTypeConverter.cs" />
7475
<Compile Include="UnresolvedConverter.cs" />
7576
</ItemGroup>

AngleSharp.Scripting.JavaScript/ConfigurationExtensions.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
namespace AngleSharp
22
{
3-
using AngleSharp.Scripting.JavaScript;
3+
using AngleSharp.Scripting.JavaScript.Services;
4+
using AngleSharp.Services;
45
using System.Linq;
56

67
/// <summary>
@@ -10,7 +11,8 @@ public static class ConfigurationExtensions
1011
{
1112
/// <summary>
1213
/// Sets scripting to true, registers the JavaScript engine and returns
13-
/// a new configuration with the scripting service.
14+
/// a new configuration with the scripting service and possible
15+
/// auxiliary services, if not yet registered.
1416
/// </summary>
1517
/// <param name="configuration">The configuration to use.</param>
1618
/// <returns>The new configuration.</returns>
@@ -19,6 +21,13 @@ public static IConfiguration WithJavaScript(this IConfiguration configuration)
1921
if (!configuration.Services.OfType<ScriptingService>().Any())
2022
{
2123
var service = new ScriptingService();
24+
25+
if (!configuration.Services.OfType<INavigatorService>().Any())
26+
{
27+
var navigator = new NavigatorService();
28+
configuration = configuration.With(navigator);
29+
}
30+
2231
return configuration.With(service);
2332
}
2433

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
namespace AngleSharp.Scripting.JavaScript.Services
2+
{
3+
using AngleSharp.Dom;
4+
using AngleSharp.Dom.Navigator;
5+
using AngleSharp.Scripting.JavaScript.Dom;
6+
using AngleSharp.Services;
7+
8+
/// <summary>
9+
/// Represents the service for a navigator.
10+
/// </summary>
11+
public class NavigatorService : INavigatorService
12+
{
13+
/// <summary>
14+
/// Creates an INavigator object for the provided window.
15+
/// </summary>
16+
/// <param name="window">The window that needs an INavigator.</param>
17+
/// <returns>The INavigator instance for the window.</returns>
18+
public virtual INavigator Create(IWindow window)
19+
{
20+
return new Navigator();
21+
}
22+
}
23+
}

AngleSharp.Scripting.JavaScript/ScriptingService.cs renamed to AngleSharp.Scripting.JavaScript/Services/ScriptingService.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace AngleSharp.Scripting.JavaScript
1+
namespace AngleSharp.Scripting.JavaScript.Services
22
{
33
using AngleSharp.Network;
44
using AngleSharp.Services;
@@ -8,7 +8,7 @@
88
/// <summary>
99
/// Represents the service for the JavaScript engine.
1010
/// </summary>
11-
public sealed class ScriptingService : IScriptingService
11+
public class ScriptingService : IScriptingService
1212
{
1313
readonly JavaScriptEngine _engine;
1414

@@ -33,7 +33,7 @@ public JavaScriptEngine Engine
3333
/// </summary>
3434
/// <param name="mimeType">The mime-type.</param>
3535
/// <returns>The contained engine.</returns>
36-
public IScriptEngine GetEngine(String mimeType)
36+
public virtual IScriptEngine GetEngine(String mimeType)
3737
{
3838
if (MimeTypes.IsJavaScript(mimeType))
3939
return _engine;

0 commit comments

Comments
 (0)