172 lines
5.5 KiB
JavaScript
172 lines
5.5 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const kWidgetId = "pbm-only-test-widget";
|
|
|
|
function assertWidgetExists(aWindow, aExists) {
|
|
if (aExists) {
|
|
ok(
|
|
aWindow.document.getElementById(kWidgetId),
|
|
"Should have found test widget in the window"
|
|
);
|
|
} else {
|
|
is(
|
|
aWindow.document.getElementById(kWidgetId),
|
|
null,
|
|
"Should not have found test widget in the window"
|
|
);
|
|
}
|
|
}
|
|
|
|
// A widget that is created with hideInNonPrivateBrowsing undefined should
|
|
// have that value default to false.
|
|
add_task(function () {
|
|
let wrapper = CustomizableUI.createWidget({
|
|
id: kWidgetId,
|
|
});
|
|
ok(
|
|
!wrapper.hideInNonPrivateBrowsing,
|
|
"hideInNonPrivateBrowsing should have defaulted to false."
|
|
);
|
|
CustomizableUI.destroyWidget(kWidgetId);
|
|
});
|
|
|
|
// Add a widget via the API with hideInNonPrivateBrowsing set to true
|
|
// and ensure it does not appear in pre-existing or newly created
|
|
// non-private windows.
|
|
add_task(async function () {
|
|
let plain1 = await openAndLoadWindow();
|
|
let private1 = await openAndLoadWindow({ private: true });
|
|
CustomizableUI.createWidget({
|
|
id: kWidgetId,
|
|
removable: true,
|
|
hideInNonPrivateBrowsing: true,
|
|
});
|
|
CustomizableUI.addWidgetToArea(kWidgetId, CustomizableUI.AREA_NAVBAR);
|
|
assertWidgetExists(plain1, false);
|
|
assertWidgetExists(private1, true);
|
|
|
|
// Now open up some new windows. The widget should not exist in the new
|
|
// plain window, but exist in the new private window.
|
|
let plain2 = await openAndLoadWindow();
|
|
let private2 = await openAndLoadWindow({ private: true });
|
|
assertWidgetExists(plain2, false);
|
|
assertWidgetExists(private2, true);
|
|
|
|
// Try moving the widget around and make sure it doesn't get added
|
|
// to the non-private windows. We'll start by appending it to the tabstrip.
|
|
CustomizableUI.addWidgetToArea(kWidgetId, CustomizableUI.AREA_TABSTRIP);
|
|
assertWidgetExists(plain1, false);
|
|
assertWidgetExists(plain2, false);
|
|
assertWidgetExists(private1, true);
|
|
assertWidgetExists(private2, true);
|
|
|
|
// And then move it to the beginning of the tabstrip.
|
|
CustomizableUI.moveWidgetWithinArea(kWidgetId, 0);
|
|
assertWidgetExists(plain1, false);
|
|
assertWidgetExists(plain2, false);
|
|
assertWidgetExists(private1, true);
|
|
assertWidgetExists(private2, true);
|
|
|
|
CustomizableUI.removeWidgetFromArea(kWidgetId);
|
|
assertWidgetExists(plain1, false);
|
|
assertWidgetExists(plain2, false);
|
|
assertWidgetExists(private1, false);
|
|
assertWidgetExists(private2, false);
|
|
|
|
await Promise.all(
|
|
[plain1, plain2, private1, private2].map(promiseWindowClosed)
|
|
);
|
|
|
|
CustomizableUI.destroyWidget(kWidgetId);
|
|
});
|
|
|
|
// Add a widget via the API with hideInNonPrivateBrowsing set to false,
|
|
// and ensure that it appears in pre-existing or newly created
|
|
// private browsing windows.
|
|
add_task(async function () {
|
|
let plain1 = await openAndLoadWindow();
|
|
let private1 = await openAndLoadWindow({ private: true });
|
|
|
|
CustomizableUI.createWidget({
|
|
id: kWidgetId,
|
|
removable: true,
|
|
hideInNonPrivateBrowsing: false,
|
|
});
|
|
CustomizableUI.addWidgetToArea(kWidgetId, CustomizableUI.AREA_NAVBAR);
|
|
assertWidgetExists(plain1, true);
|
|
assertWidgetExists(private1, true);
|
|
|
|
// Now open up some new windows. The widget should exist in the new
|
|
// plain window, but not the new private window.
|
|
let plain2 = await openAndLoadWindow();
|
|
let private2 = await openAndLoadWindow({ private: true });
|
|
|
|
assertWidgetExists(plain2, true);
|
|
assertWidgetExists(private2, true);
|
|
|
|
// Try moving the widget around and make sure it doesn't get added
|
|
// to the private windows. We'll start by appending it to the tabstrip.
|
|
CustomizableUI.addWidgetToArea(kWidgetId, CustomizableUI.AREA_TABSTRIP);
|
|
assertWidgetExists(plain1, true);
|
|
assertWidgetExists(plain2, true);
|
|
assertWidgetExists(private1, true);
|
|
assertWidgetExists(private2, true);
|
|
|
|
// And then move it to the beginning of the tabstrip.
|
|
CustomizableUI.moveWidgetWithinArea(kWidgetId, 0);
|
|
assertWidgetExists(plain1, true);
|
|
assertWidgetExists(plain2, true);
|
|
assertWidgetExists(private1, true);
|
|
assertWidgetExists(private2, true);
|
|
|
|
CustomizableUI.removeWidgetFromArea(kWidgetId);
|
|
assertWidgetExists(plain1, false);
|
|
assertWidgetExists(plain2, false);
|
|
assertWidgetExists(private1, false);
|
|
assertWidgetExists(private2, false);
|
|
|
|
await Promise.all(
|
|
[plain1, plain2, private1, private2].map(promiseWindowClosed)
|
|
);
|
|
|
|
CustomizableUI.destroyWidget(kWidgetId);
|
|
});
|
|
|
|
// Add a widget via the API with hideInNonPrivateBrowsing set to true
|
|
// and ensure it does not appear in the list of unused widgets in private
|
|
// windows.
|
|
add_task(async function testPrivateBrowsingCustomizeModeWidget() {
|
|
CustomizableUI.createWidget({
|
|
id: kWidgetId,
|
|
hideInNonPrivateBrowsing: true,
|
|
});
|
|
|
|
let normalWidgetArray = CustomizableUI.getUnusedWidgets(gNavToolbox.palette);
|
|
normalWidgetArray = normalWidgetArray.map(w => w.id);
|
|
is(
|
|
normalWidgetArray.indexOf(kWidgetId),
|
|
-1,
|
|
"Widget should not appear as unused in non-private window"
|
|
);
|
|
|
|
let privateWindow = await openAndLoadWindow({ private: true });
|
|
let privateWidgetArray = CustomizableUI.getUnusedWidgets(
|
|
privateWindow.gNavToolbox.palette
|
|
);
|
|
privateWidgetArray = privateWidgetArray.map(w => w.id);
|
|
Assert.greater(
|
|
privateWidgetArray.indexOf(kWidgetId),
|
|
-1,
|
|
"Widget should appear as unused in private window"
|
|
);
|
|
await promiseWindowClosed(privateWindow);
|
|
|
|
CustomizableUI.destroyWidget(kWidgetId);
|
|
});
|
|
|
|
add_task(async function asyncCleanup() {
|
|
await resetCustomization();
|
|
});
|