summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/general/browser_tab_drag_drop_perwindow.js
diff options
context:
space:
mode:
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.js216
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);
-});