зеркало из https://github.com/mozilla/gecko-dev.git
Bug 603530 - Intermittent cascade of failure starting with browser_tabview_dragdrop.js | Test timed out [r=dolske,a=test]
--HG-- extra : rebase_source : 593da2ba26a89e1d9b7205847bac5c65bded41a4
This commit is contained in:
Родитель
b315cf565e
Коммит
c128f09413
|
@ -95,10 +95,8 @@ function addTest(contentWindow, groupOneId, groupTwoId, originalTab) {
|
|||
ok(tabItem, "The tab item exists");
|
||||
|
||||
// calculate the offsets
|
||||
let groupTwoRect = groupTwo.getBounds();
|
||||
let groupTwoRectCenter = groupTwoRect.center();
|
||||
let tabItemRect = tabItem.getBounds();
|
||||
let tabItemRectCenter = tabItemRect.center();
|
||||
let groupTwoRectCenter = groupTwo.getBounds().center();
|
||||
let tabItemRectCenter = tabItem.getBounds().center();
|
||||
let offsetX =
|
||||
Math.round(groupTwoRectCenter.x - tabItemRectCenter.x);
|
||||
let offsetY =
|
||||
|
@ -132,41 +130,23 @@ function addTest(contentWindow, groupOneId, groupTwoId, originalTab) {
|
|||
simulateDragDrop(tabItem.container, offsetX, offsetY, contentWindow);
|
||||
}
|
||||
|
||||
function simulateDragDrop(tabItem, offsetX, offsetY, contentWindow) {
|
||||
// enter drag mode
|
||||
let dataTransfer;
|
||||
function simulateDragDrop(element, offsetX, offsetY, contentWindow) {
|
||||
let rect = element.getBoundingClientRect();
|
||||
let startX = (rect.right - rect.left)/2;
|
||||
let startY = (rect.bottom - rect.top)/2;
|
||||
let incrementX = offsetX / 2;
|
||||
let incrementY = offsetY / 2;
|
||||
|
||||
EventUtils.synthesizeMouse(
|
||||
tabItem, 1, 1, { type: "mousedown" }, contentWindow);
|
||||
event = contentWindow.document.createEvent("DragEvents");
|
||||
event.initDragEvent(
|
||||
"dragenter", true, true, contentWindow, 0, 0, 0, 0, 0,
|
||||
false, false, false, false, 1, null, dataTransfer);
|
||||
tabItem.dispatchEvent(event);
|
||||
|
||||
// drag over
|
||||
if (offsetX || offsetY) {
|
||||
let Ci = Components.interfaces;
|
||||
let utils = contentWindow.QueryInterface(Ci.nsIInterfaceRequestor).
|
||||
getInterface(Ci.nsIDOMWindowUtils);
|
||||
let rect = tabItem.getBoundingClientRect();
|
||||
for (let i = 1; i <= 5; i++) {
|
||||
let left = rect.left + Math.round(i * offsetX / 5);
|
||||
let top = rect.top + Math.round(i * offsetY / 5);
|
||||
utils.sendMouseEvent("mousemove", left, top, 0, 1, 0);
|
||||
}
|
||||
event = contentWindow.document.createEvent("DragEvents");
|
||||
event.initDragEvent(
|
||||
"dragover", true, true, contentWindow, 0, 0, 0, 0, 0,
|
||||
false, false, false, false, 0, null, dataTransfer);
|
||||
tabItem.dispatchEvent(event);
|
||||
}
|
||||
element, startX, startY, { type: "mousedown" });
|
||||
|
||||
// drop
|
||||
EventUtils.synthesizeMouse(tabItem, 0, 0, { type: "mouseup" }, contentWindow);
|
||||
event = contentWindow.document.createEvent("DragEvents");
|
||||
event.initDragEvent(
|
||||
"drop", true, true, contentWindow, 0, 0, 0, 0, 0,
|
||||
false, false, false, false, 0, null, dataTransfer);
|
||||
tabItem.dispatchEvent(event);
|
||||
for (let i = 1; i <= 2; i++) {
|
||||
EventUtils.synthesizeMouse(
|
||||
element, (startX + incrementX * i), (startY + incrementY * i),
|
||||
{ type: "mousemove" });
|
||||
}
|
||||
|
||||
EventUtils.synthesizeMouse(
|
||||
element, (startX + incrementX * 2), (startY + incrementY * 2),
|
||||
{ type: "mouseup" });
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче