Skip to content

Commit 3248fb8

Browse files
committed
Restructured
1 parent c5e19e8 commit 3248fb8

26 files changed

Lines changed: 237 additions & 233 deletions

src/AngleSharp.Js.Tests/ComponentTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
namespace AngleSharp.Js.Tests
22
{
3+
using AngleSharp.Scripting;
34
using AngleSharp.Xml;
45
using NUnit.Framework;
56
using System;

src/AngleSharp.Js.Tests/FireEventTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ namespace AngleSharp.Js.Tests
22
{
33
using AngleSharp.Dom;
44
using AngleSharp.Dom.Events;
5+
using AngleSharp.Scripting;
56
using NUnit.Framework;
67
using System.Threading.Tasks;
78

src/AngleSharp.Js.Tests/InteractionTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
namespace AngleSharp.Js.Tests
22
{
33
using AngleSharp.Dom;
4+
using AngleSharp.Scripting;
45
using Jint.Runtime;
56
using NUnit.Framework;
67
using System;
File renamed without changes.
File renamed without changes.
File renamed without changes.

src/AngleSharp.Js/EventAttributeObserver.cs renamed to src/AngleSharp.Js/Dom/EventAttributeObserver.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
namespace AngleSharp.Js
1+
namespace AngleSharp.Js.Dom
22
{
33
using AngleSharp.Dom;
44
using AngleSharp.Html.Dom;
5+
using AngleSharp.Scripting;
56
using Jint.Native;
67
using Jint.Native.Function;
78
using System;
@@ -98,22 +99,20 @@ private void RegisterEventCallback<TElement>(String eventName)
9899
var engine = _service.GetOrCreateInstance(document);
99100
var jint = engine.Jint;
100101
jint.EnterExecutionContext(engine.Lexicals, engine.Variables, engine.Window);
101-
var instance = jint.Function.Construct(new JsValue[] { "event", value }) as FunctionInstance;
102+
var instance = jint.Function.Construct(new JsValue[] { "event", value });
102103
jint.LeaveExecutionContext();
103104

104-
if (instance != null)
105+
if (instance is FunctionInstance functor)
105106
{
106-
element.AddEventListener(eventName, instance.ToListener(engine));
107+
element.AddEventListener(eventName, functor.ToListener(engine));
107108
}
108109
}
109110
});
110111
}
111112

112113
void IAttributeObserver.NotifyChange(IElement host, String name, String value)
113114
{
114-
var observer = default(Action<IElement, String>);
115-
116-
if (_observers.TryGetValue(name, out observer))
115+
if (_observers.TryGetValue(name, out var observer))
117116
{
118117
observer.Invoke(host, value);
119118
}

src/AngleSharp.Js/DomDelegates.cs renamed to src/AngleSharp.Js/Extensions/DomDelegates.cs

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ namespace AngleSharp.Js
22
{
33
using AngleSharp.Dom;
44
using AngleSharp.Dom.Events;
5-
using Jint.Runtime;
65
using Jint.Native;
76
using Jint.Native.Function;
7+
using Jint.Runtime;
88
using System;
99
using System.Linq;
1010
using System.Linq.Expressions;
@@ -17,40 +17,35 @@ static class DomDelegates
1717

1818
public static Delegate ToDelegate(this Type type, FunctionInstance function, EngineInstance engine)
1919
{
20-
if (type == typeof(DomEventHandler))
20+
if (type != typeof(DomEventHandler))
2121
{
22-
return function.ToListener(engine);
22+
var method = typeof(DomDelegates).GetRuntimeMethod("ToCallback", ToCallbackSignature).MakeGenericMethod(type);
23+
return method.Invoke(null, new Object[] { function, engine }) as Delegate;
2324
}
2425

25-
var method = typeof(DomDelegates).GetRuntimeMethod("ToCallback", ToCallbackSignature).MakeGenericMethod(type);
26-
return method.Invoke(null, new Object[] { function, engine }) as Delegate;
26+
return function.ToListener(engine);
2727
}
2828

29-
public static DomEventHandler ToListener(this FunctionInstance function, EngineInstance engine)
29+
public static DomEventHandler ToListener(this FunctionInstance function, EngineInstance engine) => (obj, ev) =>
3030
{
31-
return (obj, ev) =>
32-
{
33-
var objAsJs = obj.ToJsValue(engine);
34-
var evAsJs = ev.ToJsValue(engine);
31+
var objAsJs = obj.ToJsValue(engine);
32+
var evAsJs = ev.ToJsValue(engine);
3533

36-
try
37-
{
38-
function.Call(objAsJs, new[] { evAsJs });
39-
}
40-
catch (JavaScriptException jsException)
41-
{
42-
var window = (IWindow) engine.Window.Value;
43-
window.Fire<ErrorEvent>(
44-
e => e.Init(null, jsException.LineNumber, jsException.Column, jsException));
45-
}
46-
};
47-
}
34+
try
35+
{
36+
function.Call(objAsJs, new[] { evAsJs });
37+
}
38+
catch (JavaScriptException jsException)
39+
{
40+
var window = (IWindow)engine.Window.Value;
41+
window.Fire<ErrorEvent>(e => e.Init(null, jsException.LineNumber, jsException.Column, jsException));
42+
}
43+
};
4844

4945
public static T ToCallback<T>(this FunctionInstance function, EngineInstance engine)
5046
{
51-
var type = typeof(T);
52-
var methodInfo = type.GetRuntimeMethods().First(m => m.Name == "Invoke");
53-
var convert = typeof(Extensions).GetRuntimeMethod("ToJsValue", ToJsValueSignature);
47+
var methodInfo = typeof(T).GetRuntimeMethods().First(m => m.Name == "Invoke");
48+
var convert = typeof(EngineExtensions).GetRuntimeMethod("ToJsValue", ToJsValueSignature);
5449
var mps = methodInfo.GetParameters();
5550
var parameters = new ParameterExpression[mps.Length];
5651

0 commit comments

Comments
 (0)