diff options
Diffstat (limited to 'browser/base/content/test/general/browser_tab_drag_drop_perwindow.js')
-rw-r--r-- | browser/base/content/test/general/browser_tab_drag_drop_perwindow.js | 216 |
1 files changed, 0 insertions, 216 deletions
diff --git a/browser/base/content/test/general/browser_tab_drag_drop_perwindow.js b/browser/base/content/test/general/browser_tab_drag_drop_perwindow.js deleted file mode 100644 index a8fc34083..000000000 --- a/browser/base/content/test/general/browser_tab_drag_drop_perwindow.js +++ /dev/null @@ -1,216 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -requestLongerTimeout(2); - -const EVENTUTILS_URL = "chrome://mochikit/content/tests/SimpleTest/EventUtils.js"; -var EventUtils = {}; - -Services.scriptloader.loadSubScript(EVENTUTILS_URL, EventUtils); - -/** - * Tests that tabs from Private Browsing windows cannot be dragged - * into non-private windows, and vice-versa. - */ -add_task(function* test_dragging_private_windows() { - let normalWin = yield BrowserTestUtils.openNewBrowserWindow(); - let privateWin = - yield BrowserTestUtils.openNewBrowserWindow({private: true}); - - let normalTab = - yield BrowserTestUtils.openNewForegroundTab(normalWin.gBrowser); - let privateTab = - yield BrowserTestUtils.openNewForegroundTab(privateWin.gBrowser); - - let effect = EventUtils.synthesizeDrop(normalTab, privateTab, - [[{type: TAB_DROP_TYPE, data: normalTab}]], - null, normalWin, privateWin); - is(effect, "none", "Should not be able to drag a normal tab to a private window"); - - effect = EventUtils.synthesizeDrop(privateTab, normalTab, - [[{type: TAB_DROP_TYPE, data: privateTab}]], - null, privateWin, normalWin); - is(effect, "none", "Should not be able to drag a private tab to a normal window"); - - normalWin.gBrowser.swapBrowsersAndCloseOther(normalTab, privateTab); - is(normalWin.gBrowser.tabs.length, 2, - "Prevent moving a normal tab to a private tabbrowser"); - is(privateWin.gBrowser.tabs.length, 2, - "Prevent accepting a normal tab in a private tabbrowser"); - - privateWin.gBrowser.swapBrowsersAndCloseOther(privateTab, normalTab); - is(privateWin.gBrowser.tabs.length, 2, - "Prevent moving a private tab to a normal tabbrowser"); - is(normalWin.gBrowser.tabs.length, 2, - "Prevent accepting a private tab in a normal tabbrowser"); - - yield BrowserTestUtils.closeWindow(normalWin); - yield BrowserTestUtils.closeWindow(privateWin); -}); - -/** - * Tests that tabs from e10s windows cannot be dragged into non-e10s - * windows, and vice-versa. - */ -add_task(function* test_dragging_e10s_windows() { - if (!gMultiProcessBrowser) { - return; - } - - let remoteWin = yield BrowserTestUtils.openNewBrowserWindow({remote: true}); - let nonRemoteWin = yield BrowserTestUtils.openNewBrowserWindow({remote: false}); - - let remoteTab = - yield BrowserTestUtils.openNewForegroundTab(remoteWin.gBrowser); - let nonRemoteTab = - yield BrowserTestUtils.openNewForegroundTab(nonRemoteWin.gBrowser); - - let effect = EventUtils.synthesizeDrop(remoteTab, nonRemoteTab, - [[{type: TAB_DROP_TYPE, data: remoteTab}]], - null, remoteWin, nonRemoteWin); - is(effect, "none", "Should not be able to drag a remote tab to a non-e10s window"); - - effect = EventUtils.synthesizeDrop(nonRemoteTab, remoteTab, - [[{type: TAB_DROP_TYPE, data: nonRemoteTab}]], - null, nonRemoteWin, remoteWin); - is(effect, "none", "Should not be able to drag a non-remote tab to an e10s window"); - - remoteWin.gBrowser.swapBrowsersAndCloseOther(remoteTab, nonRemoteTab); - is(remoteWin.gBrowser.tabs.length, 2, - "Prevent moving a normal tab to a private tabbrowser"); - is(nonRemoteWin.gBrowser.tabs.length, 2, - "Prevent accepting a normal tab in a private tabbrowser"); - - nonRemoteWin.gBrowser.swapBrowsersAndCloseOther(nonRemoteTab, remoteTab); - is(nonRemoteWin.gBrowser.tabs.length, 2, - "Prevent moving a private tab to a normal tabbrowser"); - is(remoteWin.gBrowser.tabs.length, 2, - "Prevent accepting a private tab in a normal tabbrowser"); - - yield BrowserTestUtils.closeWindow(remoteWin); - yield BrowserTestUtils.closeWindow(nonRemoteWin); -}); - -/** - * Tests that remoteness-blacklisted tabs from e10s windows can - * be dragged between e10s windows. - */ -add_task(function* test_dragging_blacklisted() { - if (!gMultiProcessBrowser) { - return; - } - - let remoteWin1 = yield BrowserTestUtils.openNewBrowserWindow({remote: true}); - remoteWin1.gBrowser.myID = "remoteWin1"; - let remoteWin2 = yield BrowserTestUtils.openNewBrowserWindow({remote: true}); - remoteWin2.gBrowser.myID = "remoteWin2"; - - // Anything under chrome://mochitests/content/ will be blacklisted, and - // open in the parent process. - const BLACKLISTED_URL = getRootDirectory(gTestPath) + - "browser_tab_drag_drop_perwindow.js"; - let blacklistedTab = - yield BrowserTestUtils.openNewForegroundTab(remoteWin1.gBrowser, - BLACKLISTED_URL); - - ok(blacklistedTab.linkedBrowser, "Newly created tab should have a browser."); - - ok(!blacklistedTab.linkedBrowser.isRemoteBrowser, - `Expected a non-remote browser for URL: ${BLACKLISTED_URL}`); - - let otherTab = - yield BrowserTestUtils.openNewForegroundTab(remoteWin2.gBrowser); - - let effect = EventUtils.synthesizeDrop(blacklistedTab, otherTab, - [[{type: TAB_DROP_TYPE, data: blacklistedTab}]], - null, remoteWin1, remoteWin2); - is(effect, "move", "Should be able to drag the blacklisted tab."); - - // The synthesized drop should also do the work of swapping the - // browsers, so no need to call swapBrowsersAndCloseOther manually. - - is(remoteWin1.gBrowser.tabs.length, 1, - "Should have moved the blacklisted tab out of this window."); - is(remoteWin2.gBrowser.tabs.length, 3, - "Should have inserted the blacklisted tab into the other window."); - - // The currently selected tab in the second window should be the - // one we just dragged in. - let draggedBrowser = remoteWin2.gBrowser.selectedBrowser; - ok(!draggedBrowser.isRemoteBrowser, - "The browser we just dragged in should not be remote."); - - is(draggedBrowser.currentURI.spec, BLACKLISTED_URL, - `Expected the URL of the dragged in tab to be ${BLACKLISTED_URL}`); - - yield BrowserTestUtils.closeWindow(remoteWin1); - yield BrowserTestUtils.closeWindow(remoteWin2); -}); - - -/** - * Tests that tabs dragged between windows dispatch TabOpen and TabClose - * events with the appropriate adoption details. - */ -add_task(function* test_dragging_adoption_events() { - let win1 = yield BrowserTestUtils.openNewBrowserWindow(); - let win2 = yield BrowserTestUtils.openNewBrowserWindow(); - - let tab1 = yield BrowserTestUtils.openNewForegroundTab(win1.gBrowser); - let tab2 = yield BrowserTestUtils.openNewForegroundTab(win2.gBrowser); - - let awaitCloseEvent = BrowserTestUtils.waitForEvent(tab1, "TabClose"); - let awaitOpenEvent = BrowserTestUtils.waitForEvent(win2, "TabOpen"); - - let effect = EventUtils.synthesizeDrop(tab1, tab2, - [[{type: TAB_DROP_TYPE, data: tab1}]], - null, win1, win2); - is(effect, "move", "Tab should be moved from win1 to win2."); - - let closeEvent = yield awaitCloseEvent; - let openEvent = yield awaitOpenEvent; - - is(openEvent.detail.adoptedTab, tab1, "New tab adopted old tab"); - is(closeEvent.detail.adoptedBy, openEvent.target, "Old tab adopted by new tab"); - - yield BrowserTestUtils.closeWindow(win1); - yield BrowserTestUtils.closeWindow(win2); -}); - - -/** - * Tests that per-site zoom settings remain active after a tab is - * dragged between windows. - */ -add_task(function* test_dragging_zoom_handling() { - const ZOOM_FACTOR = 1.62; - - let win1 = yield BrowserTestUtils.openNewBrowserWindow(); - let win2 = yield BrowserTestUtils.openNewBrowserWindow(); - - let tab1 = yield BrowserTestUtils.openNewForegroundTab(win1.gBrowser); - let tab2 = yield BrowserTestUtils.openNewForegroundTab(win2.gBrowser, - "http://example.com/"); - - win2.FullZoom.setZoom(ZOOM_FACTOR); - FullZoomHelper.zoomTest(tab2, ZOOM_FACTOR, - "Original tab should have correct zoom factor"); - - let effect = EventUtils.synthesizeDrop(tab2, tab1, - [[{type: TAB_DROP_TYPE, data: tab2}]], - null, win2, win1); - is(effect, "move", "Tab should be moved from win2 to win1."); - - // Delay slightly to make sure we've finished executing any promise - // chains in the zoom code. - yield new Promise(resolve => setTimeout(resolve, 0)); - - FullZoomHelper.zoomTest(win1.gBrowser.selectedTab, ZOOM_FACTOR, - "Dragged tab should have correct zoom factor"); - - win1.FullZoom.reset(); - - yield BrowserTestUtils.closeWindow(win1); - yield BrowserTestUtils.closeWindow(win2); -}); |