Bug 1409446 - Work around the dual-ancestor case that WR doesn't handle yet. r=mstange

Bug 1409442 is tracking a change that will allow scroll layers to have
multiple ancestors. Without that, there are cases we cannot properly
handle, and so we need to ignore a clip in those scenarios. This patch
makes sure we do that instead of crashing.

MozReview-Commit-ID: 7AU4uyzT6if

--HG--
extra : rebase_source : d483c2a7ecff5cd488a53fa5e6b6da55cc3a1e29
This commit is contained in:
Kartikaya Gupta 2017-10-24 15:45:59 -04:00
parent 9b3a9d0d62
commit 4fcc51960c

View File

@ -241,8 +241,19 @@ ScrollingLayersHelper::RecurseAndDefineAsr(nsDisplayItem* aItem,
}
}
}
MOZ_ASSERT(it != aCache.end());
ids.second = Some(it->second);
// If |it == aCache.end()| here then we have run into a case where the
// scroll layer was previously defined a specific parent clip, and
// now here it has a different parent clip. Gecko can create display
// lists like this because it treats the ASR chain and clipping chain
// more independently, but we can't yet represent this in WR. This is
// tracked by bug 1409442. For now we'll just leave ids.second as
// Nothing() which will effectively ignore the clip |aChain|. Once WR
// supports multiple ancestors on a scroll layer we can deal with this
// better. The layout/reftests/text/wordwrap-08.html has a Text display
// item that exercises this case.
if (it != aCache.end()) {
ids.second = Some(it->second);
}
}
}
return ids;