Index: third_party/WebKit/Source/platform/transforms/TransformOperationsTest.cpp |
diff --git a/third_party/WebKit/Source/platform/transforms/TransformOperationsTest.cpp b/third_party/WebKit/Source/platform/transforms/TransformOperationsTest.cpp |
index f1f6245c86252820ebf14f6691d47ec1a5bf062d..cf6bdd1201ace8ac27acd0967d368b0f72b7aedb 100644 |
--- a/third_party/WebKit/Source/platform/transforms/TransformOperationsTest.cpp |
+++ b/third_party/WebKit/Source/platform/transforms/TransformOperationsTest.cpp |
@@ -508,4 +508,36 @@ TEST(TransformOperationsTest, AbsoluteSequenceBoundsTest) { |
FloatBox(-7, -3, 2, 15, 23, 20), bounds); |
} |
+TEST(TransformOperationsTest, ZoomTest) { |
+ double zoomFactor = 1.25; |
+ |
+ FloatPoint3D originalPoint(2, 3, 4); |
+ |
+ TransformOperations ops; |
+ ops.operations().append(TranslateTransformOperation::create( |
+ Length(1, Fixed), Length(2, Fixed), 3, TransformOperation::Translate3D)); |
+ ops.operations().append(PerspectiveTransformOperation::create(1234)); |
+ ops.operations().append( |
+ Matrix3DTransformOperation::create(TransformationMatrix( |
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16))); |
+ |
+ // Apply unzoomed ops to unzoomed units, then zoom in |
+ FloatPoint3D unzoomedPoint = originalPoint; |
+ TransformOperations unzoomedOps = ops; |
+ TransformationMatrix unzoomedMatrix; |
+ ops.apply(FloatSize(0, 0), unzoomedMatrix); |
+ FloatPoint3D result1 = unzoomedMatrix.mapPoint(unzoomedPoint); |
+ result1.scale(zoomFactor, zoomFactor, zoomFactor); |
+ |
+ // Apply zoomed ops to zoomed units |
+ FloatPoint3D zoomedPoint = originalPoint; |
+ zoomedPoint.scale(zoomFactor, zoomFactor, zoomFactor); |
+ TransformOperations zoomedOps = ops.zoom(zoomFactor); |
+ TransformationMatrix zoomedMatrix; |
+ zoomedOps.apply(FloatSize(0, 0), zoomedMatrix); |
+ FloatPoint3D result2 = zoomedMatrix.mapPoint(zoomedPoint); |
+ |
+ EXPECT_EQ(result1, result2); |
+} |
+ |
} // namespace blink |