122 lines
3.7 KiB
JavaScript
122 lines
3.7 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
add_task(function* () {
|
|
let tab = yield addTab("data:text/html;charset=utf8,Test RDM custom presets");
|
|
|
|
let { rdm, manager } = yield openRDM(tab);
|
|
|
|
let oldPrompt = Services.prompt;
|
|
Services.prompt = {
|
|
value: "",
|
|
returnBool: true,
|
|
prompt: function (parent, dialogTitle, text, value, checkMsg, checkState) {
|
|
value.value = this.value;
|
|
return this.returnBool;
|
|
}
|
|
};
|
|
|
|
registerCleanupFunction(() => {
|
|
Services.prompt = oldPrompt;
|
|
});
|
|
|
|
// Is it open?
|
|
let container = gBrowser.getBrowserContainer();
|
|
is(container.getAttribute("responsivemode"), "true",
|
|
"Should be in responsive mode.");
|
|
|
|
ok(rdm, "RDM instance should be attached to the tab.");
|
|
|
|
// Tries to add a custom preset and cancel the prompt
|
|
let idx = rdm.menulist.selectedIndex;
|
|
let presetCount = rdm.presets.length;
|
|
|
|
Services.prompt.value = "";
|
|
Services.prompt.returnBool = false;
|
|
rdm.addbutton.doCommand();
|
|
|
|
is(idx, rdm.menulist.selectedIndex,
|
|
"selected item shouldn't change after add preset and cancel");
|
|
is(presetCount, rdm.presets.length,
|
|
"number of presets shouldn't change after add preset and cancel");
|
|
|
|
// Adds the custom preset with "Testing preset"
|
|
Services.prompt.value = "Testing preset";
|
|
Services.prompt.returnBool = true;
|
|
|
|
let resized = once(manager, "content-resize");
|
|
let customHeight = 123, customWidth = 456;
|
|
rdm.startResizing({});
|
|
rdm.setViewportSize({
|
|
width: customWidth,
|
|
height: customHeight,
|
|
});
|
|
rdm.stopResizing({});
|
|
|
|
rdm.addbutton.doCommand();
|
|
yield resized;
|
|
|
|
yield closeRDM(rdm);
|
|
|
|
({rdm} = yield openRDM(tab));
|
|
is(container.getAttribute("responsivemode"), "true",
|
|
"Should be in responsive mode.");
|
|
|
|
let presetLabel = "456" + "\u00D7" + "123 (Testing preset)";
|
|
let customPresetIndex = yield getPresetIndex(rdm, manager, presetLabel);
|
|
ok(customPresetIndex >= 0, "(idx = " + customPresetIndex + ") should be the" +
|
|
" previously added preset in the list of items");
|
|
|
|
yield setPresetIndex(rdm, manager, customPresetIndex);
|
|
|
|
let browser = gBrowser.selectedBrowser;
|
|
yield ContentTask.spawn(browser, null, function* () {
|
|
let {innerWidth, innerHeight} = content;
|
|
Assert.equal(innerWidth, 456, "Selecting preset should change the width");
|
|
Assert.equal(innerHeight, 123, "Selecting preset should change the height");
|
|
});
|
|
|
|
info(`menulist count: ${rdm.menulist.itemCount}`);
|
|
|
|
rdm.removebutton.doCommand();
|
|
|
|
yield setPresetIndex(rdm, manager, 2);
|
|
let deletedPresetA = rdm.menulist.selectedItem.getAttribute("label");
|
|
rdm.removebutton.doCommand();
|
|
|
|
yield setPresetIndex(rdm, manager, 2);
|
|
let deletedPresetB = rdm.menulist.selectedItem.getAttribute("label");
|
|
rdm.removebutton.doCommand();
|
|
|
|
yield closeRDM(rdm);
|
|
({rdm} = yield openRDM(tab));
|
|
|
|
customPresetIndex = yield getPresetIndex(rdm, manager, deletedPresetA);
|
|
is(customPresetIndex, -1,
|
|
"Deleted preset " + deletedPresetA + " should not be in the list anymore");
|
|
|
|
customPresetIndex = yield getPresetIndex(rdm, manager, deletedPresetB);
|
|
is(customPresetIndex, -1,
|
|
"Deleted preset " + deletedPresetB + " should not be in the list anymore");
|
|
|
|
yield closeRDM(rdm);
|
|
});
|
|
|
|
var getPresetIndex = Task.async(function* (rdm, manager, presetLabel) {
|
|
var testOnePreset = Task.async(function* (c) {
|
|
if (c == 0) {
|
|
return -1;
|
|
}
|
|
yield setPresetIndex(rdm, manager, c);
|
|
|
|
let item = rdm.menulist.firstChild.childNodes[c];
|
|
if (item.getAttribute("label") === presetLabel) {
|
|
return c;
|
|
}
|
|
return testOnePreset(c - 1);
|
|
});
|
|
return testOnePreset(rdm.menulist.firstChild.childNodes.length - 4);
|
|
});
|