@@ -132,5 +132,64 @@ public async Task AddAndInvokeClickHandlerWillChangeCapturedValue()
132
132
var clicked = service . Engine . GetOrCreateJint ( document ) . GetValue ( "clicked" ) . AsBoolean ( ) ;
133
133
Assert . IsTrue ( clicked ) ;
134
134
}
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
+ }
135
194
}
136
195
}
0 commit comments