forked from mirrors/gecko-dev
This is done by making the RDM APIs used by the style editor and its test for this feature the same across old and new RDM, so that the test will work with either version. MozReview-Commit-ID: CdM6qeZQqni --HG-- extra : rebase_source : 01623eead39ed58ebd07684ca4ccd12b2a343d9e
121 lines
3.7 KiB
JavaScript
121 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);
|
|
});
|