browser_dragimage.js (2071B)
1 const TEST_URI = "dragimage.html"; 2 3 add_setup(async function () { 4 await SpecialPowers.pushPrefEnv({ 5 set: [["test.wait300msAfterTabSwitch", true]], 6 }); 7 }); 8 9 // This test checks that dragging an image onto the same document 10 // does not drop it, even when the page cancels the dragover event. 11 add_task(async function dragimage_remote_tab() { 12 var tab = await BrowserTestUtils.openNewForegroundTab( 13 gBrowser, 14 "http://www.example.com/browser/dom/events/test/" + TEST_URI 15 ); 16 17 let dropHappened = false; 18 let oldHandler = tab.linkedBrowser.droppedLinkHandler; 19 tab.linkedBrowser.droppedLinkHandler = () => { 20 dropHappened = true; 21 }; 22 23 await SpecialPowers.spawn(tab.linkedBrowser, [], async () => { 24 let image = content.document.body.firstElementChild; 25 let target = content.document.body.lastElementChild; 26 27 await EventUtils.synthesizePlainDragAndDrop({ 28 srcElement: image, 29 destElement: target, 30 srcWindow: content, 31 destWindow: content, 32 id: content.windowUtils.DEFAULT_MOUSE_POINTER_ID, 33 }); 34 }); 35 36 tab.linkedBrowser.droppedLinkHandler = oldHandler; 37 38 ok(!dropHappened, "drop did not occur"); 39 40 BrowserTestUtils.removeTab(tab); 41 }); 42 43 // This test checks the same but with an in-process page. 44 add_task(async function dragimage_local_tab() { 45 var tab = await BrowserTestUtils.openNewForegroundTab( 46 gBrowser, 47 getRootDirectory(gTestPath) + TEST_URI 48 ); 49 50 let dropHappened = false; 51 let oldHandler = tab.linkedBrowser.droppedLinkHandler; 52 tab.linkedBrowser.droppedLinkHandler = () => { 53 dropHappened = true; 54 }; 55 56 let image = tab.linkedBrowser.contentDocument.body.firstElementChild; 57 let target = tab.linkedBrowser.contentDocument.body.lastElementChild; 58 59 await EventUtils.synthesizePlainDragAndDrop({ 60 srcElement: image, 61 destElement: target, 62 srcWindow: tab.linkedBrowser.contentWindow, 63 destWindow: tab.linkedBrowser.contentWindow, 64 }); 65 66 tab.linkedBrowser.droppedLinkHandler = oldHandler; 67 68 ok(!dropHappened, "drop did not occur"); 69 70 BrowserTestUtils.removeTab(tab); 71 });