mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
183 lines
7.6 KiB
JavaScript
183 lines
7.6 KiB
JavaScript
// Bug 489158 - --browser-chrome Mochitests on Fennec [preferences]
|
|
|
|
|
|
var gTests = [];
|
|
var gCurrentTest = null;
|
|
var initialDragOffset = null;
|
|
var finalDragOffset = null;
|
|
let x = {};
|
|
let y = {};
|
|
|
|
|
|
function dragElement(element,x1,y1,x2,y2)
|
|
{
|
|
EventUtils.synthesizeMouse(element, x1, y1, { type: "mousedown" });
|
|
EventUtils.synthesizeMouse(element, x2, y2, { type: "mousemove" });
|
|
EventUtils.synthesizeMouse(element, x2, y2, { type: "mouseup" });
|
|
}
|
|
|
|
function doubleClick(element,x,y)
|
|
{
|
|
EventUtils.synthesizeMouse(element, x, y, {});
|
|
EventUtils.synthesizeMouse(element, x, y, {});
|
|
}
|
|
|
|
function test() {
|
|
// The "runNextTest" approach is async, so we need to call "waitForExplicitFinish()"
|
|
// We call "finish()" when the tests are finished
|
|
waitForExplicitFinish();
|
|
|
|
// Start the tests
|
|
runNextTest();
|
|
}
|
|
//------------------------------------------------------------------------------
|
|
// Iterating tests by shifting test out one by one as runNextTest is called.
|
|
function runNextTest() {
|
|
// Run the next test until all tests completed
|
|
if (gTests.length > 0) {
|
|
gCurrentTest = gTests.shift();
|
|
info(gCurrentTest.desc);
|
|
gCurrentTest.run();
|
|
}
|
|
else {
|
|
// Cleanup. All tests are completed at this point
|
|
finish();
|
|
}
|
|
}
|
|
// ------------------Verifying panning of preferences list----------------------
|
|
gTests.push({
|
|
desc: "Test basic panning of Preferences",
|
|
_currenttab : null,
|
|
_contentScrollbox : document.getElementById("controls-scrollbox")
|
|
.boxObject.QueryInterface(Components.interfaces.nsIScrollBoxObject),
|
|
_prefsScrollbox : document.getAnonymousElementByAttribute(document.getElementById("prefs-list"),
|
|
"anonid", "main-box").boxObject.QueryInterface(Components.interfaces.nsIScrollBoxObject),
|
|
|
|
run: function(){
|
|
this._currenttab = Browser.addTab("about:blank",true);
|
|
function handleEvent() {
|
|
gCurrentTest._currenttab.browser.removeEventListener("load", handleEvent, true);
|
|
gCurrentTest.onPageLoad();
|
|
};
|
|
this._currenttab.browser.addEventListener("load", handleEvent , true);
|
|
},
|
|
|
|
onPageLoad: function(){
|
|
// check whether the right sidebar is invisible
|
|
let controls = document.getElementById("controls-scrollbox");
|
|
|
|
// Assign offsets while panning
|
|
initialDragOffset = document.getElementById("tabs-container").getBoundingClientRect().width;
|
|
finalDragOffset = initialDragOffset + document.getElementById("browser-controls")
|
|
.getBoundingClientRect().width;
|
|
|
|
gCurrentTest._contentScrollbox.getPosition(x,y);
|
|
ok((x.value==initialDragOffset & y.value==0),"The right sidebar must be invisible",
|
|
"Got "+x.value+" "+y.value+", expected " + initialDragOffset + ",0");
|
|
|
|
// Reveal right sidebar
|
|
let w = controls.clientWidth;
|
|
let h = controls.clientHeight;
|
|
dragElement(controls,w/2, h/2, w/4, h/2);
|
|
|
|
// check whether the right sidebar has appeared
|
|
gCurrentTest._contentScrollbox.getPosition(x,y);
|
|
ok((x.value==finalDragOffset & y.value==0),"The right sidebar must be visible",
|
|
"Got "+x.value+" "+y.value+", expected "+ finalDragOffset +",0");
|
|
|
|
// check to see if the preference open button is visible and not depressed
|
|
var prefsOpen = document.getElementById("tool-panel-open");
|
|
is(prefsOpen.hidden, false, "Preferences open button must be visible");
|
|
is(prefsOpen.checked, false, "Preferences open button must not be depressed");
|
|
|
|
// check if preferences pane is invisble
|
|
is(document.getElementById("panel-container").hidden,true, "Preferences panel is invisble");
|
|
|
|
// click on the prefs button to go the preferences pane
|
|
var prefsClick = document.getElementById("tool-panel-open");
|
|
prefsClick.click();
|
|
waitFor(gCurrentTest.onPrefsView, function() { return document.getElementById("panel-container").hidden == false; });
|
|
},
|
|
|
|
onPrefsView: function(){
|
|
let prefsList = document.getElementById("prefs-list");
|
|
let w = prefsList.clientWidth;
|
|
let h = prefsList.clientHeight;
|
|
|
|
//check whether the preferences panel is visible
|
|
var prefsContainer = document.getElementById("panel-container");
|
|
is(prefsContainer.hidden, false, "Preferences panel must now be visble");
|
|
|
|
// Check if preferences container is visible
|
|
is(document.getElementById("panel-container").hidden, false, "Preferences panel should be visible");
|
|
|
|
// check if side buttons are visible 6.Verify preference button is depressed and others are not
|
|
is(document.getElementById("tool-addons").hidden, false, "Addons button must be visible");
|
|
is(document.getElementById("tool-addons").checked, false, "Addons button must not be pressed");
|
|
|
|
is(document.getElementById("tool-downloads").hidden, false, "Downloads button must be visible");
|
|
is(document.getElementById("tool-downloads").checked, false, "Downloads button must not be pressed");
|
|
|
|
is(document.getElementById("tool-preferences").hidden, false, "Preferences button must be visible");
|
|
is(document.getElementById("tool-preferences").checked, true, "Preferences button must be pressed");
|
|
|
|
// Verify back button is exists, is visible and is depressed
|
|
is(document.getElementById("tool-panel-close").hidden, false, "Panel close button must be visible");
|
|
is(document.getElementById("tool-panel-close").checked, false, "Panel close button must not be pressed");
|
|
|
|
// Now pan preferences pane up/down, left/right
|
|
// check whether it is in correct position
|
|
gCurrentTest._prefsScrollbox.getPosition(x,y);
|
|
ok((x.value==0 & y.value==0),"The preferences pane should be visble","Got "+x.value+" "+y.value+", expected 0,0");
|
|
|
|
// Move preferences pane upexpected "+ finalDragOffset +"
|
|
dragElement(prefsList,w/2,h/2,w/2,h/4);
|
|
|
|
// Check whether it is moved up to the correct view, height should be 104
|
|
gCurrentTest._prefsScrollbox.getPosition(x,y);
|
|
ok((x.value==0 & y.value==104),"Preferences pane is panned up","Got "+x.value+" "+y.value+", expected 0,104");
|
|
|
|
// Move preferences pane down
|
|
dragElement(prefsList,w/2,h/4,w/2,h/2);
|
|
|
|
// Check whether it goes back to old position
|
|
gCurrentTest._prefsScrollbox.getPosition(x,y);
|
|
ok((x.value==0 & y.value==0),"Preferences pane is panned down","Got "+x.value+" "+y.value+", expected 0,0");
|
|
|
|
// Now check whether it is not panned right/left
|
|
// Move the preferences pane right
|
|
dragElement(prefsList,w/2,h/2,w/4,h/2);
|
|
|
|
gCurrentTest._prefsScrollbox.getPosition(x,y);
|
|
ok((x.value==0 & y.value==0),"Preferences pane is not panned left","Got "+x.value+" "+y.value+", expected 0,0");
|
|
|
|
// Move the preferences pane left
|
|
dragElement(prefsList,w/4,h/2,w/2,h/2);
|
|
|
|
gCurrentTest._prefsScrollbox.getPosition(x,y);
|
|
ok((x.value==0 & y.value==0),"Preferences pane is not panned right","Got "+x.value+" "+y.value+", expected 0,0");
|
|
|
|
// Close the preferences pane
|
|
var prefClose = document.getElementById("tool-panel-close");
|
|
prefClose.click();
|
|
waitFor(gCurrentTest.finish, function () { return document.getElementById("panel-container").hidden == true; });
|
|
},
|
|
|
|
finish: function(){
|
|
// check whether the preferences pane has disappeared
|
|
is(document.getElementById("panel-container").hidden, true, "Preference pane is now invisible");
|
|
|
|
//check if the right sidebar is still visible
|
|
gCurrentTest._contentScrollbox.getPosition(x,y);
|
|
ok((x.value==finalDragOffset & y.value==0),"The right sidebar is still visible",
|
|
"Got "+x.value+" "+y.value+", expected "+ finalDragOffset +",0");
|
|
|
|
// check whether the preferences open button is not depressed
|
|
var prefsOpen = document.getElementById("tool-panel-open");
|
|
is(prefsOpen.checked, false, "Preferences open button must not be depressed");
|
|
|
|
Browser.closeTab(this._currenttab);
|
|
runNextTest();
|
|
}
|
|
});
|