blob: b08d23991cca4b894ba976c278f2cc3520d420b2 [file] [log] [blame]
<!doctype html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../../resources/gesture-util.js"></script>
<body onload="onLoad()">
<h2>Default action on Context Menu for misspelled word prevented</h2>
<p>
If there is
a contextmenu handler that prevents the default action then when mouse is
positioned on a misspelled word and right click is pressed, the misspelled word
should not be selected.
</p>
<div id="text" contenteditable>
Wellcome
</div>
<script>
function onLoad(){
let textDiv = document.getElementById("text");
let finishedContextMenuEvent = false;
textDiv.addEventListener("contextmenu", (event)=>{
event.preventDefault();
finishedContextMenuEvent = true;
});
function inject_actions(x, y){
return new Promise((resolve, reject)=>{
if(chrome.gpuBenchmarking){
chrome.gpuBenchmarking.pointerActionSequence( [
{source: 'mouse',
actions: [
{ name: 'pointerDown', x: x, y: y, button: 2 /*RIGHT button*/},
{ name: 'pointerUp', x: x, y: y, button: 2 /*RIGHT button*/}
]
}], resolve);
}
else
reject();
});
}
promise_test((test) => new Promise(async (resolve, reject)=>{
let bounding_rect = textDiv.getBoundingClientRect();
let x = bounding_rect.x;
let y = bounding_rect.y + 10;
// right click on misspelled word "Wellcome"
await inject_actions(x, y);
await waitFor(() => finishedContextMenuEvent, "ContextMenu event not fired");
test.step(() => {
let selection = getSelection();
assert_equals(selection.type, "Caret", "The cursor should be on text");
assert_true(selection.isCollapsed, "The selection should be empty");
});
resolve();
}), "No word selection if right click on misspelled word and contextmenu action prevented");
}
</script>
</body>