зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1771503 - Disable the 'two layers that scroll together' assertion for matrices with Inf or NaN elements. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D149466
This commit is contained in:
Родитель
5ff21efe97
Коммит
5d687c962b
|
@ -1510,6 +1510,18 @@ class Matrix4x4Typed {
|
|||
_44 = UnspecifiedNaN<T>();
|
||||
}
|
||||
|
||||
// Verifies that the matrix contains no Infs or NaNs
|
||||
bool IsFinite() const {
|
||||
return mozilla::IsFinite(_11) && mozilla::IsFinite(_12) &&
|
||||
mozilla::IsFinite(_13) && mozilla::IsFinite(_14) &&
|
||||
mozilla::IsFinite(_21) && mozilla::IsFinite(_22) &&
|
||||
mozilla::IsFinite(_23) && mozilla::IsFinite(_24) &&
|
||||
mozilla::IsFinite(_31) && mozilla::IsFinite(_32) &&
|
||||
mozilla::IsFinite(_33) && mozilla::IsFinite(_34) &&
|
||||
mozilla::IsFinite(_41) && mozilla::IsFinite(_42) &&
|
||||
mozilla::IsFinite(_43) && mozilla::IsFinite(_44);
|
||||
}
|
||||
|
||||
void SkewXY(double aXSkew, double aYSkew) {
|
||||
// XXX Is double precision really necessary here
|
||||
T tanX = SafeTangent(aXSkew);
|
||||
|
|
|
@ -1322,8 +1322,10 @@ HitTestingTreeNode* APZCTreeManager::PrepareNodeForLayer(
|
|||
// In such cases, go with the one that does not include the perspective
|
||||
// component; the perspective transform is remembered and applied to the
|
||||
// children instead.
|
||||
if (!aAncestorTransform.CombinedTransform().FuzzyEqualsMultiplicative(
|
||||
apzc->GetAncestorTransform())) {
|
||||
auto ancestorTransform = aAncestorTransform.CombinedTransform();
|
||||
auto existingAncestorTransform = apzc->GetAncestorTransform();
|
||||
if (!ancestorTransform.FuzzyEqualsMultiplicative(
|
||||
existingAncestorTransform)) {
|
||||
typedef TreeBuildingState::DeferredTransformMap::value_type PairType;
|
||||
if (!aAncestorTransform.ContainsPerspectiveTransform() &&
|
||||
!apzc->AncestorTransformContainsPerspective()) {
|
||||
|
@ -1333,9 +1335,16 @@ HitTestingTreeNode* APZCTreeManager::PrepareNodeForLayer(
|
|||
// cases, it's expected that different instances can have different
|
||||
// transforms, since each page renders a different part of the item.
|
||||
if (!aLayer.Metadata().IsPaginatedPresentation()) {
|
||||
MOZ_ASSERT(false,
|
||||
"Two layers that scroll together have different ancestor "
|
||||
"transforms");
|
||||
if (ancestorTransform.IsFinite() &&
|
||||
existingAncestorTransform.IsFinite()) {
|
||||
MOZ_ASSERT(
|
||||
false,
|
||||
"Two layers that scroll together have different ancestor "
|
||||
"transforms");
|
||||
} else {
|
||||
MOZ_ASSERT(ancestorTransform.IsFinite() ==
|
||||
existingAncestorTransform.IsFinite());
|
||||
}
|
||||
}
|
||||
} else if (!aAncestorTransform.ContainsPerspectiveTransform()) {
|
||||
aState.mPerspectiveTransformsDeferredToChildren.insert(
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
* {
|
||||
transform: matrix3d(130, -7052, 1000, 35803, 122, 7197, 197, 126, 201, 64, 38, -69, 5.727476671737168, 124, 22882, 168.04863081346616);
|
||||
overflow: auto clip ! important;
|
||||
padding-right: 39%;
|
||||
min-inline-size: min-content;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<table>
|
||||
<th>
|
||||
<fieldset>
|
||||
<textarea cols='4096' autofocus></textarea>
|
||||
</fieldset>
|
||||
</th>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
|
@ -568,3 +568,4 @@ pref(layout.accessiblecaret.enabled,true) load 1746989.html
|
|||
load 1752649.html
|
||||
load 1753779.html
|
||||
pref(layout.css.backdrop-filter.enabled,true) load 1755790.html
|
||||
load 1771503.html
|
||||
|
|
Загрузка…
Ссылка в новой задаче