@@ -24,7 +24,8 @@ function createIframe(done) {
2424}
2525
2626describe ( 'integration' , function ( ) {
27- var defaultStackSize = 0 ;
27+ var timeoutStackDepth = 0 ;
28+ var eventHandlerStackDepth = 0 ;
2829
2930 before ( function ( done ) {
3031 // Before running any tests, throw/catch a known error
@@ -37,10 +38,32 @@ describe('integration', function () {
3738 iframe . contentWindow . foo ( ) ;
3839 } catch ( e ) {
3940 var trace = Raven . TraceKit . computeStackTrace ( e ) ;
40- defaultStackSize = trace . stack . length ;
41- document . body . removeChild ( iframe ) ;
42- done ( ) ;
41+ timeoutStackDepth = trace . stack . length ;
42+ }
43+
44+ var doc = iframe . contentWindow . document ;
45+ var div = doc . createElement ( 'div' ) ;
46+ doc . body . appendChild ( div ) ;
47+ div . addEventListener ( 'click' , function ( ) {
48+ try {
49+ foo ( ) ;
50+ } catch ( e ) {
51+ var trace = Raven . TraceKit . computeStackTrace ( e ) ;
52+ eventHandlerStackDepth = trace . stack . length ;
53+ }
54+ } , false ) ;
55+
56+ var evt ;
57+ if ( doc . createEvent ) {
58+ evt = doc . createEvent ( 'MouseEvents' ) ;
59+ evt . initEvent ( 'click' , true , false ) ;
60+ div . dispatchEvent ( evt ) ;
61+ } else if ( doc . createEventObject ) {
62+ div . fireEvent ( 'onclick' ) ;
4363 }
64+
65+ document . body . removeChild ( iframe ) ;
66+ done ( ) ;
4467 } ) ;
4568 } ) ;
4669 } ) ;
@@ -114,7 +137,7 @@ describe('integration', function () {
114137 } ,
115138 function ( ) {
116139 var ravenData = iframe . contentWindow . ravenData ;
117- assert . equal ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , defaultStackSize + 1 ) ;
140+ assert . equal ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , eventHandlerStackDepth + 2 ) ;
118141 }
119142 ) ;
120143 } ) ;
@@ -131,7 +154,7 @@ describe('integration', function () {
131154 } ,
132155 function ( ) {
133156 var ravenData = iframe . contentWindow . ravenData ;
134- assert . equal ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , defaultStackSize ) ;
157+ assert . equal ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , timeoutStackDepth ) ;
135158 }
136159 ) ;
137160 } ) ;
@@ -149,7 +172,7 @@ describe('integration', function () {
149172 } ,
150173 function ( ) {
151174 var ravenData = iframe . contentWindow . ravenData ;
152- assert . equal ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , defaultStackSize ) ;
175+ assert . equal ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , timeoutStackDepth ) ;
153176 }
154177 ) ;
155178 } ) ;
@@ -168,7 +191,7 @@ describe('integration', function () {
168191 } ,
169192 function ( ) {
170193 var ravenData = iframe . contentWindow . ravenData ;
171- assert . equal ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , defaultStackSize ) ;
194+ assert . equal ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , timeoutStackDepth ) ;
172195 }
173196 ) ;
174197 } ) ;
0 commit comments