@@ -5,7 +5,6 @@ namespace AngleSharp.Js
55 using Jint . Native ;
66 using Jint . Native . Object ;
77 using Jint . Runtime . Descriptors ;
8- using Jint . Runtime . Descriptors . Specialized ;
98 using System ;
109 using System . Collections . Generic ;
1110 using System . Linq ;
@@ -36,13 +35,14 @@ public DomPrototypeInstance(EngineInstance engine, Type type)
3635 Prototype = engine . GetDomPrototype ( baseType ) ;
3736 }
3837
38+ public override String Class => _name ;
39+
3940 public Boolean TryGetFromIndex ( Object value , String index , out PropertyDescriptor result )
4041 {
4142 // If we have a numeric indexer and the property is numeric
42- var numericIndex = default ( Int32 ) ;
43- result = default ( PropertyDescriptor ) ;
43+ result = default ;
4444
45- if ( _numericIndexer != null && Int32 . TryParse ( index , out numericIndex ) )
45+ if ( _numericIndexer != null && Int32 . TryParse ( index , out var numericIndex ) )
4646 {
4747 var args = new Object [ ] { numericIndex } ;
4848
@@ -72,7 +72,7 @@ public Boolean TryGetFromIndex(Object value, String index, out PropertyDescripto
7272 // Eg. object.callMethod1() vs object['callMethod1'] is not necessarily the same if the object has a string indexer?? (I'm not an ECMA expert!)
7373 // node.attributes is one such object - has both a string and numeric indexer
7474 // This GetOwnProperty override might need an additional parameter to let us know this was called via an indexer
75- if ( _stringIndexer != null && ! HasProperty ( index ) )
75+ if ( _stringIndexer != null && ! Properties . ContainsKey ( index ) )
7676 {
7777 var args = new Object [ ] { index } ;
7878 var prop = _stringIndexer . GetMethod . Invoke ( value , args ) . ToJsValue ( _instance ) ;
@@ -118,7 +118,7 @@ private void SetEvents(IEnumerable<EventInfo> eventInfos)
118118 foreach ( var name in names . Select ( m => m . OfficialName ) )
119119 {
120120 var eventInstance = new DomEventInstance ( _instance , eventInfo ) ;
121- FastSetProperty ( name , new GetSetPropertyDescriptor ( eventInstance . Getter , eventInstance . Setter , false , false ) ) ;
121+ FastSetProperty ( name , new PropertyDescriptor ( eventInstance . Getter , eventInstance . Setter , false , false ) ) ;
122122 }
123123 }
124124 }
@@ -150,7 +150,7 @@ private void SetProperties(IEnumerable<PropertyInfo> properties)
150150
151151 foreach ( var name in names . Select ( m => m . OfficialName ) )
152152 {
153- FastSetProperty ( name , new GetSetPropertyDescriptor (
153+ FastSetProperty ( name , new PropertyDescriptor (
154154 new DomFunctionInstance ( _instance , property . GetMethod ) ,
155155 new DomFunctionInstance ( _instance , property . SetMethod ) , false , false ) ) ;
156156 }
@@ -169,7 +169,7 @@ private void SetMethods(IEnumerable<MethodInfo> methods)
169169 // If it already has a property with the given name (usually another method),
170170 // then convert that method to a two-layer method, which decides which one
171171 // to pick depending on the number (and probably types) of arguments.
172- if ( ! HasProperty ( name ) )
172+ if ( ! Properties . ContainsKey ( name ) )
173173 {
174174 var func = new DomFunctionInstance ( _instance , method ) ;
175175 FastAddProperty ( name , func , false , false , false ) ;
@@ -187,23 +187,23 @@ private void SetPseudoProperties()
187187 var unloadEventInstance = new DomEventInstance ( _instance ) ;
188188 var contextMenuEventInstance = new DomEventInstance ( _instance ) ;
189189
190- FastSetProperty ( "scrollLeft" , new PropertyDescriptor ( new JsNumber ( 0.0 ) , false , false , false ) ) ;
191- FastSetProperty ( "scrollTop" , new PropertyDescriptor ( new JsNumber ( 0.0 ) , false , false , false ) ) ;
192- FastSetProperty ( "scrollWidth" , new PropertyDescriptor ( new JsNumber ( 0.0 ) , false , false , false ) ) ;
193- FastSetProperty ( "scrollHeight" , new PropertyDescriptor ( new JsNumber ( 0.0 ) , false , false , false ) ) ;
194- FastSetProperty ( "clientLeft" , new PropertyDescriptor ( new JsNumber ( 0.0 ) , false , false , false ) ) ;
195- FastSetProperty ( "clientTop" , new PropertyDescriptor ( new JsNumber ( 0.0 ) , false , false , false ) ) ;
196- FastSetProperty ( "clientWidth" , new PropertyDescriptor ( new JsNumber ( 0.0 ) , false , false , false ) ) ;
197- FastSetProperty ( "clientHeight" , new PropertyDescriptor ( new JsNumber ( 0.0 ) , false , false , false ) ) ;
198- FastSetProperty ( "offsetLeft" , new PropertyDescriptor ( new JsNumber ( 0.0 ) , false , false , false ) ) ;
199- FastSetProperty ( "offsetTop" , new PropertyDescriptor ( new JsNumber ( 0.0 ) , false , false , false ) ) ;
200- FastSetProperty ( "offsetWidth" , new PropertyDescriptor ( new JsNumber ( 0.0 ) , false , false , false ) ) ;
201- FastSetProperty ( "offsetHeight" , new PropertyDescriptor ( new JsNumber ( 0.0 ) , false , false , false ) ) ;
202-
203- FastSetProperty ( "focusin" , new GetSetPropertyDescriptor ( focusInEventInstance . Getter , focusInEventInstance . Setter , false , false ) ) ;
204- FastSetProperty ( "focusout" , new GetSetPropertyDescriptor ( focusOutEventInstance . Getter , focusOutEventInstance . Setter , false , false ) ) ;
205- FastSetProperty ( "unload" , new GetSetPropertyDescriptor ( unloadEventInstance . Getter , unloadEventInstance . Setter , false , false ) ) ;
206- FastSetProperty ( "contextmenu" , new GetSetPropertyDescriptor ( contextMenuEventInstance . Getter , contextMenuEventInstance . Setter , false , false ) ) ;
190+ FastSetProperty ( "scrollLeft" , new PropertyDescriptor ( new JsValue ( 0.0 ) , false , false , false ) ) ;
191+ FastSetProperty ( "scrollTop" , new PropertyDescriptor ( new JsValue ( 0.0 ) , false , false , false ) ) ;
192+ FastSetProperty ( "scrollWidth" , new PropertyDescriptor ( new JsValue ( 0.0 ) , false , false , false ) ) ;
193+ FastSetProperty ( "scrollHeight" , new PropertyDescriptor ( new JsValue ( 0.0 ) , false , false , false ) ) ;
194+ FastSetProperty ( "clientLeft" , new PropertyDescriptor ( new JsValue ( 0.0 ) , false , false , false ) ) ;
195+ FastSetProperty ( "clientTop" , new PropertyDescriptor ( new JsValue ( 0.0 ) , false , false , false ) ) ;
196+ FastSetProperty ( "clientWidth" , new PropertyDescriptor ( new JsValue ( 0.0 ) , false , false , false ) ) ;
197+ FastSetProperty ( "clientHeight" , new PropertyDescriptor ( new JsValue ( 0.0 ) , false , false , false ) ) ;
198+ FastSetProperty ( "offsetLeft" , new PropertyDescriptor ( new JsValue ( 0.0 ) , false , false , false ) ) ;
199+ FastSetProperty ( "offsetTop" , new PropertyDescriptor ( new JsValue ( 0.0 ) , false , false , false ) ) ;
200+ FastSetProperty ( "offsetWidth" , new PropertyDescriptor ( new JsValue ( 0.0 ) , false , false , false ) ) ;
201+ FastSetProperty ( "offsetHeight" , new PropertyDescriptor ( new JsValue ( 0.0 ) , false , false , false ) ) ;
202+
203+ FastSetProperty ( "focusin" , new PropertyDescriptor ( focusInEventInstance . Getter , focusInEventInstance . Setter , false , false ) ) ;
204+ FastSetProperty ( "focusout" , new PropertyDescriptor ( focusOutEventInstance . Getter , focusOutEventInstance . Setter , false , false ) ) ;
205+ FastSetProperty ( "unload" , new PropertyDescriptor ( unloadEventInstance . Getter , unloadEventInstance . Setter , false , false ) ) ;
206+ FastSetProperty ( "contextmenu" , new PropertyDescriptor ( contextMenuEventInstance . Getter , contextMenuEventInstance . Setter , false , false ) ) ;
207207 }
208208 }
209209 }
0 commit comments