зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1457336: Skip only undisplayed nodes, not invisible nodes. r=mats
MozReview-Commit-ID: 5KgV1lqmim3
This commit is contained in:
Родитель
576df97088
Коммит
699a696c0f
|
@ -67,5 +67,13 @@ iframe.onload = t.step_func_done(function() {
|
||||||
testFindable(false, "me and me", `
|
testFindable(false, "me and me", `
|
||||||
me <fieldset>and</fieldset> me
|
me <fieldset>and</fieldset> me
|
||||||
`);
|
`);
|
||||||
|
|
||||||
|
testFindable(true, "This text should be visible", `
|
||||||
|
<div style="visibility: hidden">
|
||||||
|
<div style="visibility: visible">
|
||||||
|
This text should be visible
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`);
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -524,7 +524,7 @@ IsBlockNode(nsIContent* aContent)
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
IsVisibleNode(nsINode* aNode)
|
IsDisplayedNode(nsINode* aNode)
|
||||||
{
|
{
|
||||||
if (!aNode->IsContent()) {
|
if (!aNode->IsContent()) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -536,6 +536,22 @@ IsVisibleNode(nsINode* aNode)
|
||||||
return aNode->IsElement() && aNode->AsElement()->IsDisplayContents();
|
return aNode->IsElement() && aNode->AsElement()->IsDisplayContents();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
IsVisibleNode(nsINode* aNode)
|
||||||
|
{
|
||||||
|
if (!IsDisplayedNode(aNode)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsIFrame* frame = aNode->AsContent()->GetPrimaryFrame();
|
||||||
|
if (!frame) {
|
||||||
|
// display: contents
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return frame->StyleVisibility()->IsVisible();
|
return frame->StyleVisibility()->IsVisible();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -544,7 +560,7 @@ SkipNode(nsIContent* aContent)
|
||||||
{
|
{
|
||||||
nsIContent* content = aContent;
|
nsIContent* content = aContent;
|
||||||
while (content) {
|
while (content) {
|
||||||
if (!IsVisibleNode(content) ||
|
if (!IsDisplayedNode(content) ||
|
||||||
content->IsComment() ||
|
content->IsComment() ||
|
||||||
content->IsAnyOfHTMLElements(nsGkAtoms::script,
|
content->IsAnyOfHTMLElements(nsGkAtoms::script,
|
||||||
nsGkAtoms::noframes,
|
nsGkAtoms::noframes,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче