@@ -248,3 +248,32 @@ function testPreventDropOutside() {
248248 // Assert also that the drop effect is set to 'none'.
249249 assertEquals ( 'none' , dt . dropEffect ) ;
250250}
251+
252+ function testEffectAllowedExceptionIsCaught ( ) {
253+ var preventDefault = false ;
254+ var expectedfiles = [ { fileName : 'file1.jpg' } ] ;
255+ var dt = { types : [ 'Files' ] , files : expectedfiles } ;
256+
257+ // We construct a mock DataTransfer object that define a setter will throw
258+ // SCRIPT65535 when attempt to set property effectAllowed to simulate IE Bug
259+ // #811625. See more: https://github.com/google/closure-library/issues/485.
260+ Object . defineProperty ( dt , 'effectAllowed' ,
261+ { set : function ( v ) { throw new Error ( "SCRIPT65535" ) ; } } ) ;
262+
263+ // Assert that default actions are prevented on dragenter.
264+ textarea . dispatchEvent ( new goog . events . BrowserEvent ( {
265+ preventDefault : function ( ) { preventDefault = true ; } ,
266+ type : goog . events . EventType . DRAGENTER ,
267+ dataTransfer : dt
268+ } ) ) ;
269+ assertTrue ( preventDefault ) ;
270+ preventDefault = false ;
271+
272+ // Assert that default actions are prevented on dragover.
273+ textarea . dispatchEvent ( new goog . events . BrowserEvent ( {
274+ preventDefault : function ( ) { preventDefault = true ; } ,
275+ type : goog . events . EventType . DRAGOVER ,
276+ dataTransfer : dt
277+ } ) ) ;
278+ assertTrue ( preventDefault ) ;
279+ }
0 commit comments