mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 868906 - Make GetChildFrameContainingOffset() stable. r=roc
This commit is contained in:
parent
18e978a375
commit
ca5677b644
@ -797,6 +797,8 @@ nsDisplayListBuilder::EnterPresShell(nsIFrame* aReferenceFrame,
|
|||||||
|
|
||||||
nsRefPtr<nsCaret> caret = state->mPresShell->GetCaret();
|
nsRefPtr<nsCaret> caret = state->mPresShell->GetCaret();
|
||||||
state->mCaretFrame = caret->GetCaretFrame();
|
state->mCaretFrame = caret->GetCaretFrame();
|
||||||
|
NS_ASSERTION(state->mCaretFrame == caret->GetCaretFrame(),
|
||||||
|
"GetCaretFrame() is unstable");
|
||||||
|
|
||||||
if (state->mCaretFrame) {
|
if (state->mCaretFrame) {
|
||||||
// Check if the dirty rect intersects with the caret's dirty rect.
|
// Check if the dirty rect intersects with the caret's dirty rect.
|
||||||
|
54
layout/generic/crashtests/868906.html
Normal file
54
layout/generic/crashtests/868906.html
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html class="reftest-wait">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<script>
|
||||||
|
|
||||||
|
function boom()
|
||||||
|
{
|
||||||
|
var root = document.documentElement;
|
||||||
|
while(root.firstChild) { root.removeChild(root.firstChild); }
|
||||||
|
root.appendChild(document.createElement("body"));
|
||||||
|
root.offsetHeight;
|
||||||
|
|
||||||
|
var bigText = document.createTextNode("");
|
||||||
|
bigText.data += "\u202D";
|
||||||
|
bigText.data += "A";
|
||||||
|
bigText.data += "\x1C";
|
||||||
|
bigText.data += "\u062A";
|
||||||
|
bigText.data += "E";
|
||||||
|
bigText.data += "\u062E";
|
||||||
|
bigText.data += " ";
|
||||||
|
bigText.data += "\u202D";
|
||||||
|
bigText.data += "X";
|
||||||
|
bigText.data += "\x1C";
|
||||||
|
bigText.data += "Y";
|
||||||
|
root.appendChild(bigText);
|
||||||
|
|
||||||
|
var smallText = document.createTextNode("Z");
|
||||||
|
root.appendChild(smallText);
|
||||||
|
|
||||||
|
root.focus();
|
||||||
|
|
||||||
|
function del()
|
||||||
|
{
|
||||||
|
var range = document.createRange();
|
||||||
|
range.setStart(root, 0);
|
||||||
|
range.setEnd(bigText, bigText.data.length);
|
||||||
|
range.deleteContents();
|
||||||
|
}
|
||||||
|
|
||||||
|
del();
|
||||||
|
|
||||||
|
function finish() {
|
||||||
|
document.documentElement.removeAttribute('class');
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(finish, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body onload="boom();"></body>
|
||||||
|
</html>
|
@ -461,4 +461,5 @@ load 849603.html
|
|||||||
test-pref(layout.css.flexbox.enabled,true) load 851396-1.html
|
test-pref(layout.css.flexbox.enabled,true) load 851396-1.html
|
||||||
test-pref(layout.css.flexbox.enabled,true) load 854263-1.html
|
test-pref(layout.css.flexbox.enabled,true) load 854263-1.html
|
||||||
test-pref(layout.css.flexbox.enabled,true) load 862947-1.html
|
test-pref(layout.css.flexbox.enabled,true) load 862947-1.html
|
||||||
|
needs-focus pref(accessibility.browsewithcaret,true) load 868906.html
|
||||||
test-pref(layout.css.flexbox.enabled,true) load 866547-1.html
|
test-pref(layout.css.flexbox.enabled,true) load 866547-1.html
|
||||||
|
@ -6345,6 +6345,9 @@ nsTextFrame::GetChildFrameContainingOffset(int32_t aContentOffset,
|
|||||||
if (aContentOffset == next->GetContentOffset()) {
|
if (aContentOffset == next->GetContentOffset()) {
|
||||||
if (aHint) {
|
if (aHint) {
|
||||||
f = next;
|
f = next;
|
||||||
|
if (f->GetContentLength() == 0) {
|
||||||
|
continue; // use the last of the empty frames with this offset
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -6358,6 +6361,9 @@ nsTextFrame::GetChildFrameContainingOffset(int32_t aContentOffset,
|
|||||||
if (aContentOffset == f->GetContentOffset()) {
|
if (aContentOffset == f->GetContentOffset()) {
|
||||||
if (!aHint) {
|
if (!aHint) {
|
||||||
f = prev;
|
f = prev;
|
||||||
|
if (f->GetContentLength() == 0) {
|
||||||
|
continue; // use the first of the empty frames with this offset
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user