зеркало из 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", `
|
||||
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>
|
||||
|
|
|
@ -524,7 +524,7 @@ IsBlockNode(nsIContent* aContent)
|
|||
}
|
||||
|
||||
static bool
|
||||
IsVisibleNode(nsINode* aNode)
|
||||
IsDisplayedNode(nsINode* aNode)
|
||||
{
|
||||
if (!aNode->IsContent()) {
|
||||
return false;
|
||||
|
@ -536,6 +536,22 @@ IsVisibleNode(nsINode* aNode)
|
|||
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();
|
||||
}
|
||||
|
||||
|
@ -544,7 +560,7 @@ SkipNode(nsIContent* aContent)
|
|||
{
|
||||
nsIContent* content = aContent;
|
||||
while (content) {
|
||||
if (!IsVisibleNode(content) ||
|
||||
if (!IsDisplayedNode(content) ||
|
||||
content->IsComment() ||
|
||||
content->IsAnyOfHTMLElements(nsGkAtoms::script,
|
||||
nsGkAtoms::noframes,
|
||||
|
|
Загрузка…
Ссылка в новой задаче