mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 03:15:11 +00:00
Bug 984037 - Make sure we respect the general.autoScroll pref (r=felipe)
This commit is contained in:
parent
359cc5f512
commit
82aff32319
@ -107,14 +107,20 @@ let ClickEventHandler = {
|
||||
}
|
||||
}
|
||||
|
||||
let [enabled] = sendSyncMessage("Autoscroll:Start",
|
||||
{scrolldir: this._scrolldir,
|
||||
screenX: event.screenX,
|
||||
screenY: event.screenY});
|
||||
if (!enabled) {
|
||||
this._scrollable = null;
|
||||
return;
|
||||
}
|
||||
|
||||
Cc["@mozilla.org/eventlistenerservice;1"]
|
||||
.getService(Ci.nsIEventListenerService)
|
||||
.addSystemEventListener(global, "mousemove", this, true);
|
||||
addEventListener("pagehide", this, true);
|
||||
|
||||
sendAsyncMessage("Autoscroll:Start", {scrolldir: this._scrolldir,
|
||||
screenX: event.screenX,
|
||||
screenY: event.screenY});
|
||||
this._ignoreMouseEvents = true;
|
||||
this._startX = event.screenX;
|
||||
this._startY = event.screenY;
|
||||
|
@ -1,5 +1,6 @@
|
||||
[DEFAULT]
|
||||
|
||||
[browser_autoscroll_disabled.js]
|
||||
[browser_browserDrop.js]
|
||||
[browser_bug295977_autoscroll_overflow.js]
|
||||
[browser_bug594509.js]
|
||||
|
77
toolkit/content/tests/browser/browser_autoscroll_disabled.js
Normal file
77
toolkit/content/tests/browser/browser_autoscroll_disabled.js
Normal file
@ -0,0 +1,77 @@
|
||||
function test()
|
||||
{
|
||||
const kPrefName_AutoScroll = "general.autoScroll";
|
||||
Services.prefs.setBoolPref(kPrefName_AutoScroll, false);
|
||||
|
||||
var doc;
|
||||
|
||||
function startLoad(dataUri) {
|
||||
gBrowser.selectedBrowser.addEventListener("pageshow", onLoad, false);
|
||||
gBrowser.loadURI(dataUri);
|
||||
}
|
||||
|
||||
function onLoad() {
|
||||
gBrowser.selectedBrowser.removeEventListener("pageshow", onLoad, false);
|
||||
waitForFocus(onFocus, content);
|
||||
}
|
||||
|
||||
function onFocus() {
|
||||
doc = gBrowser.contentDocument;
|
||||
runChecks();
|
||||
}
|
||||
|
||||
function endTest() {
|
||||
// restore the changed prefs
|
||||
if (Services.prefs.prefHasUserValue(kPrefName_AutoScroll))
|
||||
Services.prefs.clearUserPref(kPrefName_AutoScroll);
|
||||
|
||||
// cleaning-up
|
||||
gBrowser.addTab("about:blank");
|
||||
gBrowser.removeCurrentTab();
|
||||
|
||||
// waitForFocus() fixes a failure in the next test if the latter runs too soon.
|
||||
waitForFocus(finish);
|
||||
}
|
||||
|
||||
waitForExplicitFinish();
|
||||
|
||||
let dataUri = 'data:text/html,<html><body id="i" style="overflow-y: scroll"><div style="height: 2000px"></div>\
|
||||
<iframe id="iframe" style="display: none;"></iframe>\
|
||||
</body></html>';
|
||||
startLoad(dataUri);
|
||||
|
||||
function runChecks() {
|
||||
var elem = doc.getElementById('i');
|
||||
// Skip the first callback as it's the same callback that the browser
|
||||
// uses to kick off the scrolling.
|
||||
var skipFrames = 1;
|
||||
var checkScroll = function () {
|
||||
if (skipFrames--) {
|
||||
window.mozRequestAnimationFrame(checkScroll);
|
||||
return;
|
||||
}
|
||||
ok(elem.scrollTop == 0, "element should not have scrolled vertically");
|
||||
ok(elem.scrollLeft == 0, "element should not have scrolled horizontally");
|
||||
|
||||
endTest();
|
||||
};
|
||||
EventUtils.synthesizeMouse(elem, 50, 50, { button: 1 },
|
||||
gBrowser.contentWindow);
|
||||
|
||||
var iframe = gBrowser.contentDocument.getElementById("iframe");
|
||||
var e = iframe.contentDocument.createEvent("pagetransition");
|
||||
e.initPageTransitionEvent("pagehide", true, true, false);
|
||||
iframe.contentDocument.dispatchEvent(e);
|
||||
iframe.contentDocument.documentElement.dispatchEvent(e);
|
||||
|
||||
EventUtils.synthesizeMouse(elem, 100, 100,
|
||||
{ type: "mousemove", clickCount: "0" },
|
||||
gBrowser.contentWindow);
|
||||
/*
|
||||
* if scrolling didn’t work, we wouldn’t do any redraws and thus time out.
|
||||
* so request and force redraws to get the chance to check for scrolling at
|
||||
* all.
|
||||
*/
|
||||
window.mozRequestAnimationFrame(checkScroll);
|
||||
}
|
||||
}
|
@ -851,9 +851,12 @@
|
||||
let data = aMessage.data;
|
||||
switch (aMessage.name) {
|
||||
case "Autoscroll:Start": {
|
||||
if (!this.autoscrollEnabled) {
|
||||
return false;
|
||||
}
|
||||
let pos = this.mapScreenCoordinatesFromContent(data.screenX, data.screenY);
|
||||
this.startScroll(data.scrolldir, pos.x, pos.y);
|
||||
break;
|
||||
return true;
|
||||
}
|
||||
case "Autoscroll:Cancel":
|
||||
this._autoScrollPopup.hidePopup();
|
||||
|
Loading…
Reference in New Issue
Block a user