Closed Bug 695964 Opened 13 years ago Closed 9 years ago

"ASSERTION: Can't get a delta for an untransformed frame!" with transform, svg:foreignObject

Categories

(Core :: Layout, defect)

x86_64
macOS
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME
Tracking Status
b2g-v2.5 --- fixed

People

(Reporter: jruderman, Unassigned)

References

Details

(Keywords: assertion, testcase)

Attachments

(2 files)

Attached image testcase
###!!! ASSERTION: Can't get a delta for an untransformed frame!: 'aFrame->GetStyleDisplay()->HasTransform()', file layout/base/nsDisplayList.cpp, line 2370

###!!! ASSERTION: If we don't have a transform, then we must be at least attempting to preserve the transforms of our children: 'aFrame->GetStyleDisplay()->mTransformStyle == NS_STYLE_TRANSFORM_STYLE_PRESERVE_3D', file layout/base/nsDisplayList.cpp, line 2518
Attached file stack trace
nsSVGForeignObjectFrame::IsTransformed is overridden to always return true, which is what we we're checking in nsFrame::FinishAndStoreOverflow.

nsDisplayTransform::GetResultingTransformMatrix requires GetStyleDisplay()->HasTransform() to be true, which it isn't

I'm not sure what the proper behaviour here is, why are foreign objects returning true for transformed when they don't have a transform?
If it's not actually transformed maybe we can make it return false?
http://mxr.mozilla.org/mozilla-central/source/layout/svg/base/src/nsSVGForeignObjectFrame.h#84

This looks like an intentional change?

The default implementation would be returning false here, I'm not sure why it has an override.
Perhaps it was just simpler than checking if it actually had a non-identity transform?
Modified assertion still happens on trunk:

###!!! ASSERTION: If we don't have a transform, then we must have another reason to have an nsDisplayTransform created: 'aFrame->GetStyleDisplay()->mTransformStyle == NS_STYLE_TRANSFORM_STYLE_PRESERVE_3D || aFrame->GetStyleDisplay()->mBackfaceVisibility == NS_STYLE_BACKFACE_VISIBILITY_HIDDEN', file layout/base/nsDisplayList.cpp, line 2557
No longer asserts on trunk.
Status: NEW → RESOLVED
Closed: 9 years ago
Flags: in-testsuite+
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: