Index: third_party/WebKit/Source/platform/geometry/TransformState.cpp |
diff --git a/third_party/WebKit/Source/platform/geometry/TransformState.cpp b/third_party/WebKit/Source/platform/geometry/TransformState.cpp |
index 9ec2073661391dd75f49b5aa40f7459213729c7b..03c9746f0072302a0c08219222d1f0b7d8683552 100644 |
--- a/third_party/WebKit/Source/platform/geometry/TransformState.cpp |
+++ b/third_party/WebKit/Source/platform/geometry/TransformState.cpp |
@@ -68,6 +68,9 @@ void TransformState::translateMappedCoordinates(const LayoutSize& offset) |
void TransformState::move(const LayoutSize& offset, TransformAccumulation accumulate) |
{ |
+ if (m_forceAccumulatingTransform) |
+ accumulate = AccumulateTransform; |
+ |
if (accumulate == FlattenTransform || !m_accumulatedTransform) { |
m_accumulatedOffset += offset; |
} else { |
@@ -108,6 +111,9 @@ void TransformState::applyTransform(const TransformationMatrix& transformFromCon |
if (wasClamped) |
*wasClamped = false; |
+ if (m_forceAccumulatingTransform) |
+ accumulate = AccumulateTransform; |
+ |
if (transformFromContainer.isIntegerTranslation()) { |
move(LayoutSize(LayoutUnit(transformFromContainer.e()), LayoutUnit(transformFromContainer.f())), accumulate); |
return; |
@@ -135,6 +141,7 @@ void TransformState::applyTransform(const TransformationMatrix& transformFromCon |
void TransformState::flatten(bool* wasClamped) |
{ |
+ ASSERT(!m_forceAccumulatingTransform); |
if (wasClamped) |
*wasClamped = false; |
@@ -180,6 +187,12 @@ FloatQuad TransformState::mappedQuad(bool* wasClamped) const |
return m_accumulatedTransform->inverse().projectQuad(quad, wasClamped); |
} |
+const TransformationMatrix& TransformState::accumulatedTransform() const |
+{ |
+ ASSERT(m_forceAccumulatingTransform && m_accumulatingTransform); |
+ return *m_accumulatedTransform; |
+} |
+ |
void TransformState::flattenWithTransform(const TransformationMatrix& t, bool* wasClamped) |
{ |
if (m_direction == ApplyTransformDirection) { |