mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 21:05:36 +00:00
Bug 653899 - Don't send MouseMove messages to pages without touch listeners [r=mfinkle]
This commit is contained in:
parent
52818b7b2b
commit
878db847e2
@ -1722,13 +1722,14 @@ const ContentTouchHandler = {
|
||||
},
|
||||
|
||||
receiveMessage: function receiveMessage(aMessage) {
|
||||
if (aMessage.json.messageId != this._messageId)
|
||||
let json = aMessage.json;
|
||||
if (json.messageId != this._messageId)
|
||||
return;
|
||||
|
||||
switch (aMessage.name) {
|
||||
case "Browser:ContextMenu":
|
||||
// Long tap
|
||||
let contextMenu = { name: aMessage.name, json: aMessage.json, target: aMessage.target };
|
||||
let contextMenu = { name: aMessage.name, json: json, target: aMessage.target };
|
||||
if (ContextHelper.showPopup(contextMenu)) {
|
||||
// Stop all input sequences
|
||||
let event = document.createEvent("Events");
|
||||
@ -1737,20 +1738,20 @@ const ContentTouchHandler = {
|
||||
}
|
||||
break;
|
||||
case "Browser:CaptureEvents":
|
||||
this.contentMightCaptureMouse = true;
|
||||
this.contentMightCaptureMouse = json.contentMightCaptureMouse;
|
||||
if (this.touchTimeout) {
|
||||
clearTimeout(this.touchTimeout);
|
||||
this.touchTimeout = null;
|
||||
}
|
||||
|
||||
if (aMessage.json.click)
|
||||
if (json.click)
|
||||
this.clickPrevented = true;
|
||||
|
||||
if (this.canCancelPan)
|
||||
Elements.browsers.customDragger.contentMouseCapture = aMessage.json.panning;
|
||||
Elements.browsers.customDragger.contentMouseCapture = json.panning;
|
||||
break;
|
||||
case "Browser:CanCaptureMouse:Return":
|
||||
ContentTouchHandler.contentMightCaptureMouse = aMessage.json.contentMightCaptureMouse;
|
||||
ContentTouchHandler.contentMightCaptureMouse = json.contentMightCaptureMouse;
|
||||
break;
|
||||
}
|
||||
},
|
||||
@ -1850,7 +1851,8 @@ const ContentTouchHandler = {
|
||||
},
|
||||
|
||||
tapMove: function tapMove(aX, aY) {
|
||||
this._dispatchMouseEvent("Browser:MouseMove", aX, aY);
|
||||
if (this.contentMightCaptureMouse)
|
||||
this._dispatchMouseEvent("Browser:MouseMove", aX, aY);
|
||||
},
|
||||
|
||||
tapDouble: function tapDouble(aX, aY, aModifiers) {
|
||||
|
@ -1214,11 +1214,18 @@ var TouchEventHandler = {
|
||||
},
|
||||
|
||||
receiveMessage: function(aMessage) {
|
||||
if (!content.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindowUtils)
|
||||
.mayHaveTouchEventListeners || Util.isParentProcess())
|
||||
if (Util.isParentProcess())
|
||||
return;
|
||||
|
||||
if (!content.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils).mayHaveTouchEventListeners) {
|
||||
sendAsyncMessage("Browser:CaptureEvents", {
|
||||
messageId: json.messageId,
|
||||
click: false, panning: false,
|
||||
contentMightCaptureMouse: false
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
let json = aMessage.json;
|
||||
let cancelled = false;
|
||||
|
||||
@ -1244,6 +1251,7 @@ var TouchEventHandler = {
|
||||
|
||||
if (this.isCancellable) {
|
||||
sendAsyncMessage("Browser:CaptureEvents", { messageId: json.messageId,
|
||||
contentMightCaptureMouse: true,
|
||||
click: cancelled && aMessage.name == "Browser:MouseDown",
|
||||
panning: cancelled });
|
||||
// Panning can be cancelled only during the "touchstart" event and the
|
||||
|
Loading…
Reference in New Issue
Block a user