1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
3 * You can obtain one at http://mozilla.org/MPL/2.0/. */
7 waitForExplicitFinish();
9 let scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"].
10 getService(Ci.mozIJSSubScriptLoader);
12 scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js", chromeUtils);
14 function testOnWindow(aIsPrivate, aCallback) {
15 whenNewWindowLoaded({private: aIsPrivate}, function(win) {
16 executeSoon(function() aCallback(win));
20 testOnWindow(false, function(aNormalWindow) {
21 testOnWindow(true, function(aPrivateWindow) {
22 // Open a tab in each window
23 let normalTab = aNormalWindow.gBrowser.addTab("about:blank", {skipAnimation: true});
24 let privateTab = aPrivateWindow.gBrowser.addTab("about:blank", {skipAnimation: true});
26 let effect = chromeUtils.synthesizeDrop(normalTab, privateTab,
27 [[{type: TAB_DROP_TYPE, data: normalTab}]],
28 null, aNormalWindow, EventUtils, aPrivateWindow);
29 is(effect, "none", "Should not be able to drag a normal tab to a private window");
31 effect = chromeUtils.synthesizeDrop(privateTab, normalTab,
32 [[{type: TAB_DROP_TYPE, data: privateTab}]],
33 null, aPrivateWindow, EventUtils, aNormalWindow);
34 is(effect, "none", "Should not be able to drag a private tab to a normal window");
36 aNormalWindow.gBrowser.swapBrowsersAndCloseOther(normalTab, privateTab);
37 is(aNormalWindow.gBrowser.tabs.length, 2, "Prevent moving a normal tab to a private tabbrowser");
38 is(aPrivateWindow.gBrowser.tabs.length, 2, "Prevent accepting a normal tab in a private tabbrowser");
40 aPrivateWindow.gBrowser.swapBrowsersAndCloseOther(privateTab, normalTab);
41 is(aPrivateWindow.gBrowser.tabs.length, 2, "Prevent moving a private tab to a normal tabbrowser");
42 is(aNormalWindow.gBrowser.tabs.length, 2, "Prevent accepting a private tab in a normal tabbrowser");
44 aNormalWindow.close();
45 aPrivateWindow.close();