Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
const TESTCASE_URI = TEST_BASE_HTTPS + "media-rules.html";
const PREF_SHOW_AT_RULES_SIDEBAR = "devtools.styleeditor.showAtRulesSidebar";
const PREF_SIDEBAR_WIDTH = "devtools.styleeditor.atRulesSidebarWidth";
const PREF_NAV_WIDTH = "devtools.styleeditor.navSidebarWidth";
// Initial widths for the navigation and media sidebars, which will be set via
// the corresponding preferences.
// The widths should remain between the current min-width and max-width for the
// styleeditor sidebars (currently 100px and 400px).
const NAV_WIDTH = 210;
const MEDIA_WIDTH = 250;
// Test that sidebar in the styleeditor can be resized.
add_task(async function () {
await pushPref(PREF_SHOW_AT_RULES_SIDEBAR, true);
await pushPref(PREF_NAV_WIDTH, NAV_WIDTH);
await pushPref(PREF_SIDEBAR_WIDTH, MEDIA_WIDTH);
const { panel, ui } = await openStyleEditorForURL(TESTCASE_URI);
const doc = panel.panelWindow.document;
info("Open editor for inline sheet with @media rules to have both splitters");
const inlineMediaEditor = ui.editors[3];
inlineMediaEditor.summary.querySelector(".stylesheet-name").click();
await inlineMediaEditor.getSourceEditor();
info("Check the initial widths of side panels match the preferences values");
const navSidebar = doc.querySelector(".splitview-controller");
is(navSidebar.clientWidth, NAV_WIDTH);
const mediaSidebar = doc.querySelector(
".splitview-active .stylesheet-sidebar"
);
is(mediaSidebar.clientWidth, MEDIA_WIDTH);
info(
"Resize the navigation splitter and check the navigation sidebar is updated"
);
const navSplitter = doc.querySelector(".devtools-side-splitter");
dragElement(navSplitter, { startX: 1, startY: 10, deltaX: 50, deltaY: 0 });
is(navSidebar.clientWidth, NAV_WIDTH + 50);
info("Resize the media splitter and check the media sidebar is updated");
const mediaSplitter = doc.querySelector(
".splitview-active .devtools-side-splitter"
);
dragElement(mediaSplitter, { startX: 1, startY: 10, deltaX: -50, deltaY: 0 });
is(mediaSidebar.clientWidth, MEDIA_WIDTH + 50);
});
/* Helpers */
function dragElement(el, { startX, startY, deltaX, deltaY }) {
const win = el.ownerGlobal;
const endX = startX + deltaX;
const endY = startY + deltaY;
EventUtils.synthesizeMouse(el, startX, startY, { type: "mousedown" }, win);
EventUtils.synthesizeMouse(el, endX, endY, { type: "mousemove" }, win);
EventUtils.synthesizeMouse(el, endX, endY, { type: "mouseup" }, win);
}