@@ -67,5 +67,69 @@ public async Task InvokeLoadEventFromJsAndCustomEventFromJsAndCs()
67
67
Assert . AreEqual ( "c" , log . Get ( "2" ) . AsString ( ) ) ;
68
68
Assert . AreEqual ( "d" , log . Get ( "3" ) . AsString ( ) ) ;
69
69
}
70
+
71
+ [ Test ]
72
+ public async Task AddClickHandlerClassicallyWillExecute ( )
73
+ {
74
+ var service = new ScriptingService ( ) ;
75
+ var cfg = Configuration . Default . With ( service ) ;
76
+ var html = @"<!doctype html>
77
+ <html>
78
+ <body>
79
+ <script>
80
+ var clicked = false;
81
+ document.onclick = function () {
82
+ clicked = true;
83
+ };
84
+ document.dispatchEvent(new MouseEvent('click'));
85
+ </script>
86
+ </body>" ;
87
+ var document = await BrowsingContext . New ( cfg ) . OpenAsync ( m => m . Content ( html ) ) ;
88
+ var clicked = service . Engine . GetJint ( document ) . GetValue ( "clicked" ) . AsBoolean ( ) ;
89
+ Assert . IsTrue ( clicked ) ;
90
+ }
91
+
92
+ [ Test ]
93
+ public async Task AddAndRemoveClickHandlerWontExecute ( )
94
+ {
95
+ var service = new ScriptingService ( ) ;
96
+ var cfg = Configuration . Default . With ( service ) ;
97
+ var html = @"<!doctype html>
98
+ <html>
99
+ <body>
100
+ <script>
101
+ var clicked = false;
102
+ document.onclick = function () {
103
+ clicked = true;
104
+ };
105
+ document.onclick = undefined;
106
+ document.dispatchEvent(new MouseEvent('click'));
107
+ </script>
108
+ </body>" ;
109
+ var document = await BrowsingContext . New ( cfg ) . OpenAsync ( m => m . Content ( html ) ) ;
110
+ var clicked = service . Engine . GetJint ( document ) . GetValue ( "clicked" ) . AsBoolean ( ) ;
111
+ Assert . IsFalse ( clicked ) ;
112
+ }
113
+
114
+ [ Test ]
115
+ public async Task AddAndInvokeClickHandlerWillChangeCapturedValue ( )
116
+ {
117
+ var service = new ScriptingService ( ) ;
118
+ var cfg = Configuration . Default . With ( service ) ;
119
+ var html = @"<!doctype html>
120
+ <html>
121
+ <body>
122
+ <script>
123
+ var clicked = false;
124
+ document.onclick = function () {
125
+ clicked = true;
126
+ };
127
+ document.onclick();
128
+ </script>
129
+ </body>" ;
130
+ var document = await BrowsingContext . New ( cfg ) . OpenAsync ( m => m . Content ( html ) ) ;
131
+ var clicked = service . Engine . GetJint ( document ) . GetValue ( "clicked" ) . AsBoolean ( ) ;
132
+ Assert . IsTrue ( clicked ) ;
133
+ }
70
134
}
71
135
}
0 commit comments