Skip to content

Commit 4b07dd4

Browse files
author
Riku Ayanokoji
committed
Added test case for PR#486
1 parent 572dbc8 commit 4b07dd4

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

closure/goog/events/filedrophandler_test.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,3 +248,49 @@ function testPreventDropOutside() {
248248
// Assert also that the drop effect is set to 'none'.
249249
assertEquals('none', dt.dropEffect);
250250
}
251+
252+
function testIEBugNo811625() {
253+
// See more at https://github.com/google/closure-library/issues/485
254+
// or https://connect.microsoft.com/IE/feedback/details/811625/cant-get-datatransfer-effectallowed-set-in-another-window-raises-a-script65535-error
255+
var preventDefault = false;
256+
var expectedfiles = [{ fileName: 'file1.jpg' }];
257+
var dt = { types: ['Files'], files: expectedfiles };
258+
// we construct a mock DataTransfer object and define a setter will throw SCRIPT65535 when attempt to set effectAllowed to simulate the IEBug #811625
259+
dt.__defineSetter__('effectAllowed', function(v){
260+
throw new Error("SCRIPT65535: see more at https://connect.microsoft.com/IE/feedback/details/811625/cant-get-datatransfer-effectallowed-set-in-another-window-raises-a-script65535-error")
261+
})
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+
preventDefault = false;
280+
// Assert that the drop effect is set to 'copy'.
281+
assertEquals('copy', dt.dropEffect);
282+
283+
// Assert that default actions are prevented on drop.
284+
textarea.dispatchEvent(new goog.events.BrowserEvent({
285+
preventDefault: function() { preventDefault = true; },
286+
type: goog.events.EventType.DROP,
287+
dataTransfer: dt
288+
}));
289+
assertTrue(preventDefault);
290+
291+
// Assert that DROP has been fired.
292+
assertTrue(dnd);
293+
assertEquals(1, files.length);
294+
assertEquals(expectedfiles[0].fileName, files[0].fileName);
295+
}
296+

0 commit comments

Comments
 (0)