| Index: third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
|
| index e534ded2b24f23af1db7817f785e0cb248cc34ac..219c007694157f662490c3c689114e0b0f77218c 100644
|
| --- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
|
| @@ -26,7 +26,9 @@ struct PaintPropertyTreeBuilderContext {
|
| , clipForOutOfFlowPositioned(nullptr)
|
| , transformForFixedPositioned(nullptr)
|
| , clipForFixedPositioned(nullptr)
|
| - , currentEffect(nullptr) { }
|
| + , currentEffect(nullptr)
|
| + , preserving3d(false)
|
| + , backfaceHidden(false) { }
|
|
|
| // The combination of a transform and paint offset describes a linear space.
|
| // When a layout object recur to its children, the main context is expected to refer
|
| @@ -59,6 +61,9 @@ struct PaintPropertyTreeBuilderContext {
|
| // DOM descendant is also a stacking context descendant. Therefore, we don't need extra
|
| // bookkeeping for effect nodes and can generate the effect tree from a DOM-order traversal.
|
| EffectPaintPropertyNode* currentEffect;
|
| +
|
| + bool preserving3d;
|
| + bool backfaceHidden;
|
| };
|
|
|
| void PaintPropertyTreeBuilder::buildPropertyTrees(FrameView& rootFrame)
|
| @@ -322,13 +327,38 @@ PassOwnPtr<ObjectPaintProperties::LocalBorderBoxProperties> recordTreeContextIfN
|
| recordedContext->properties.transform = context.currentTransform;
|
| recordedContext->properties.clip = context.currentClip;
|
| recordedContext->properties.effect = context.currentEffect;
|
| + recordedContext->properties.backfaceHidden = context.backfaceHidden;
|
| return recordedContext.release();
|
| }
|
|
|
| void PaintPropertyTreeBuilder::walk(LayoutObject& object, const PaintPropertyTreeBuilderContext& context)
|
| {
|
| +
|
| +//fprintf(stderr, "walk trees, build propz.\n");
|
| +//if (object.node())
|
| +// object.node()->showTreeForThisInFlatTree();
|
| +//fprintf(stderr, "layout object %s\n\n", object.node() ? object.node()->nodeName().utf8().data() : "dunno");
|
| +
|
| PaintPropertyTreeBuilderContext localContext(context);
|
|
|
| + fprintf(stderr, "walking into %s, context.preserving3d %d, context.backfaceHidden %d, object.preserves3d %d, object.backfacehidden %d\n",
|
| + object.debugName().utf8().data(),
|
| + localContext.preserving3d,
|
| + localContext.backfaceHidden,
|
| + object.styleRef().preserves3D(),
|
| + object.hasHiddenBackface());
|
| +
|
| + localContext.preserving3d = object.styleRef().preserves3D();
|
| + if (localContext.preserving3d) {
|
| + if (object.hasTransformRelatedProperty())
|
| + localContext.backfaceHidden = object.hasHiddenBackface();
|
| + } else {
|
| + //if (object.hasTransformRelatedProperty())
|
| + localContext.backfaceHidden = false;
|
| + if (object.hasHiddenBackface())
|
| + localContext.backfaceHidden = true;
|
| + }
|
| +
|
| deriveBorderBoxFromContainerContext(object, localContext);
|
| RefPtr<TransformPaintPropertyNode> newTransformNodeForPaintOffsetTranslation = createPaintOffsetTranslationIfNeeded(object, localContext);
|
| RefPtr<TransformPaintPropertyNode> newTransformNodeForTransform = createTransformIfNeeded(object, localContext);
|
|
|