gecko/mobile/chrome/tests/browser_dragger.js

90 lines
2.6 KiB
JavaScript

"use strict";
const testURL_01 = chromeRoot + "browser_blank_01.html";
const testURL_01_Remote = serverRoot + "browser_blank_01.html";
function test() {
waitForExplicitFinish();
runNextTest();
}
gTests.push({
desc: "Test that kinetic panning does not open sidebars.",
tab: null,
run: function() {
gCurrentTest.tab = Browser.addTab(testURL_01, true);
onMessageOnce(gCurrentTest.tab.browser.messageManager, "Browser:FirstPaint", gCurrentTest.checkPan);
},
checkPan: function() {
let browser = gCurrentTest.tab.browser;
let docWidth = browser.contentDocumentWidth * browser.scale;
let winWidth = window.innerWidth;
info("Browser document width is " + docWidth);
info("Window width is " + winWidth);
ok(docWidth <= winWidth,
"Sanity check. Blank document cannot be panned left or right.");
function dragAndCheck(dx) {
let dragger = Elements.browsers.customDragger;
try {
dragger.dragStart(0, 0, null, null);
dragger.dragMove(dx, 0, null, true);
let [leftVis, rightVis] = Browser.computeSidebarVisibility();
is(leftVis, 0, "Left sidebar is not visible");
is(rightVis, 0, "Right sidebar is not visible");
} finally {
// Be fail tolerant and hide sidebars in case tests failed.
Browser.hideSidebars();
dragger.dragStop();
}
}
dragAndCheck(-20);
dragAndCheck(20);
Browser._doCloseTab(gCurrentTest.tab);
runNextTest();
}
});
gTests.push({
desc: "Test that urlbar cannot be panned in when content is captured.",
tab: null,
run: function() {
gCurrentTest.tab = Browser.addTab(testURL_01_Remote, true);
Browser.selectedTab = gCurrentTest.tab;
onMessageOnce(gCurrentTest.tab.browser.messageManager, "MozScrolledAreaChanged", gCurrentTest.mouseMove);
},
mouseMove: function(json) {
let inputHandler = gCurrentTest.tab.browser.parentNode;
function fireMouseEvent(y, type) {
EventUtils.synthesizeMouse(inputHandler, 0, y, { type: type });
}
Browser.hideTitlebar();
let rect = Elements.browsers.getBoundingClientRect();
is(rect.top, 0, "Titlebar begins hidden");
let dragger = Elements.browsers.customDragger;
try {
dragger.contentCanCapture = true;
dragger.dragStart(0, 0, null, null);
dragger.dragMove(0, 20, null, true);
dragger.dragStop();
} finally {
dragger.contentCanCapture = false;
}
rect = Elements.browsers.getBoundingClientRect();
is(rect.top, 0, "Titlebar is still hidden");
Browser._doCloseTab(gCurrentTest.tab);
runNextTest();
}
});