fune/browser/base/content/test/general/browser_drag.js
James Teh f606e110b6 Bug 1692110 part 3: Don't run accessibility checks for click events generated by drag/drop. r=places-reviewers,ayeddi,Gijs,Standard8
Drag/drop generates click events, but these aren't actually a click event intended to activate a control.
Therefore, we don't want to run accessibility checks for the target.
To achieve this, EventUtils.synthesizeDropAfterDragOver instructs AccessibilityUtils to ignore click events while the event is being sent.
This requires that EventUtils has the reference to AccessibilityUtils set by the browser test harness.
As such, some tests had to be adjusted so that they use EventUtils from the browser test scope, rather than loading their own copy of EventUtils.

Depends on D190004

Differential Revision: https://phabricator.services.mozilla.com/D185776
2023-10-09 18:20:12 +00:00

58 lines
1.6 KiB
JavaScript

async function test() {
waitForExplicitFinish();
// ---- Test dragging the proxy icon ---
var value = content.location.href;
var urlString = value + "\n" + content.document.title;
var htmlString = '<a href="' + value + '">' + value + "</a>";
var expected = [
[
{ type: "text/x-moz-url", data: urlString },
{ type: "text/uri-list", data: value },
{ type: "text/plain", data: value },
{ type: "text/html", data: htmlString },
],
];
// set the valid attribute so dropping is allowed
var oldstate = gURLBar.getAttribute("pageproxystate");
gURLBar.setPageProxyState("valid");
let result = await EventUtils.synthesizePlainDragAndCancel(
{
srcElement: document.getElementById("identity-icon-box"),
},
expected
);
ok(result === true, "dragging dataTransfer should be expected");
gURLBar.setPageProxyState(oldstate);
// Now, the identity information panel is opened by the proxy icon click.
// We need to close it for next tests.
EventUtils.synthesizeKey("VK_ESCAPE", {}, window);
// now test dragging onto a tab
var tab = BrowserTestUtils.addTab(gBrowser, "about:blank", {
skipAnimation: true,
});
var browser = gBrowser.getBrowserForTab(tab);
browser.addEventListener(
"load",
function () {
is(
browser.contentWindow.location,
"http://mochi.test:8888/",
"drop on tab"
);
gBrowser.removeTab(tab);
finish();
},
true
);
EventUtils.synthesizeDrop(
tab,
tab,
[[{ type: "text/uri-list", data: "http://mochi.test:8888/" }]],
"copy",
window
);
}