зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1593362 - Bail out from nsFrame::HandleDrag if the corresponding nsFrameSelection has been already destroyed. r=masayuki
Differential Revision: https://phabricator.services.mozilla.com/D56109 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
0815480479
Коммит
c93ea7f424
|
@ -4820,6 +4820,10 @@ NS_IMETHODIMP nsFrame::HandleDrag(nsPresContext* aPresContext,
|
|||
"HandleDrag can only handle mouse event");
|
||||
|
||||
RefPtr<nsFrameSelection> frameselection = GetFrameSelection();
|
||||
if (!frameselection) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
bool mouseDown = frameselection->GetDragState();
|
||||
if (!mouseDown) {
|
||||
return NS_OK;
|
||||
|
|
|
@ -104,6 +104,7 @@ support-files = file_bug1307853.html
|
|||
support-files = file_bug1566783.html
|
||||
[test_contained_plugin_transplant.html]
|
||||
skip-if = os=='win'
|
||||
[test_crash_on_mouse_move.html]
|
||||
[test_dynamic_reflow_root_disallowal.html]
|
||||
[test_flex_interrupt.html]
|
||||
[test_image_selection.html]
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>
|
||||
This is a crash test to make sure handling mouse move events on an input
|
||||
element doesn't crash even if the input type has been changed during the
|
||||
events
|
||||
</title>
|
||||
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script src="/tests/SimpleTest/EventUtils.js"></script>
|
||||
<link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none"></div>
|
||||
<input style="width:1000px;height:300px"
|
||||
onmousemove="this.setAttribute('type','text')"
|
||||
id="formPassword" type="password" disabled/>
|
||||
<pre id="test"></pre>
|
||||
</body>
|
||||
<script>
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
window.onload = () => {
|
||||
const position = formPassword.getBoundingClientRect();
|
||||
for (let i = 0; i < 100; i++) {
|
||||
synthesizeMouseAtPoint(position.x + i, position.y + i,
|
||||
{ type: "mousemove" });
|
||||
|
||||
}
|
||||
ok(true, "mouse movement on a input element whose type is going to be " +
|
||||
"changed by the mouse movement doesn't crash");
|
||||
SimpleTest.finish();
|
||||
}
|
||||
</script>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче