@@ -132,5 +132,64 @@ public async Task AddAndInvokeClickHandlerWillChangeCapturedValue()
132132 var clicked = service . Engine . GetOrCreateJint ( document ) . GetValue ( "clicked" ) . AsBoolean ( ) ;
133133 Assert . IsTrue ( clicked ) ;
134134 }
135+
136+ [ Test ]
137+ public async Task AddAndInvokeClickHandlerWithStringFunctionWontWork ( )
138+ {
139+ var service = new JavaScriptProvider ( ) ;
140+ var cfg = Configuration . Default . With ( service ) ;
141+ var html = @"<!doctype html>
142+ <html>
143+ <body>
144+ <script>
145+ var clicked = false;
146+ document.onclick = 'clicked = true;';
147+ document.onclick();
148+ </script>
149+ </body>" ;
150+ var document = await BrowsingContext . New ( cfg ) . OpenAsync ( m => m . Content ( html ) ) ;
151+ var clicked = service . Engine . GetOrCreateJint ( document ) . GetValue ( "clicked" ) . AsBoolean ( ) ;
152+ Assert . IsFalse ( clicked ) ;
153+ }
154+
155+ [ Test ]
156+ public async Task SetTimeoutWithNormalFunction ( )
157+ {
158+ var service = new JavaScriptProvider ( ) ;
159+ var cfg = Configuration . Default . With ( service ) ;
160+ var html = @"<!doctype html>
161+ <html>
162+ <body>
163+ <script>
164+ var completed = false;
165+ setTimeout(function () {
166+ completed = true;
167+ }, 0);
168+ </script>
169+ </body>" ;
170+ var document = await BrowsingContext . New ( cfg ) . OpenAsync ( m => m . Content ( html ) ) ;
171+ await Task . Delay ( 100 ) ;
172+ var result = service . Engine . GetOrCreateJint ( document ) . GetValue ( "completed" ) . AsBoolean ( ) ;
173+ Assert . IsTrue ( result ) ;
174+ }
175+
176+ [ Test ]
177+ public async Task SetTimeoutWithStringAsFunction ( )
178+ {
179+ var service = new JavaScriptProvider ( ) ;
180+ var cfg = Configuration . Default . With ( service ) ;
181+ var html = @"<!doctype html>
182+ <html>
183+ <body>
184+ <script>
185+ var completed = false;
186+ setTimeout('completed = true;', 0);
187+ </script>
188+ </body>" ;
189+ var document = await BrowsingContext . New ( cfg ) . OpenAsync ( m => m . Content ( html ) ) ;
190+ await Task . Delay ( 100 ) ;
191+ var result = service . Engine . GetOrCreateJint ( document ) . GetValue ( "completed" ) . AsBoolean ( ) ;
192+ Assert . IsTrue ( result ) ;
193+ }
135194 }
136195}
0 commit comments