Fix FxgeSkiaEmbedderTest.RenderBigImageTwice test

Fixes FxgeSkiaEmbedderTest.RenderBigImageTwice test to render only half
of the page at a time, rather than squeezing the entire page into half
of the canvas (which doesn't exercise clipping).

Bug: pdfium:2034
Change-Id: I1c31ab266b9dfb9b0f40df2f7bab71d5fffb1e93
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/108432
Commit-Queue: K. Moon <kmoon@chromium.org>
Reviewed-by: Nigi <nigi@chromium.org>
diff --git a/core/fxge/skia/fx_skia_device_embeddertest.cpp b/core/fxge/skia/fx_skia_device_embeddertest.cpp
index b2f08bd..ad84ad9 100644
--- a/core/fxge/skia/fx_skia_device_embeddertest.cpp
+++ b/core/fxge/skia/fx_skia_device_embeddertest.cpp
@@ -28,6 +28,7 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/skia/include/core/SkCanvas.h"
 #include "third_party/skia/include/core/SkImage.h"
+#include "third_party/skia/include/core/SkSize.h"
 #include "third_party/skia/include/utils/SkNoDrawCanvas.h"
 
 namespace {
@@ -239,8 +240,14 @@
 }
 
 TEST_F(FxgeSkiaEmbedderTest, RenderBigImageTwice) {
-  static constexpr int kCanvasWidth = 306;
-  static constexpr int kCanvasHeight = 396;
+  static constexpr int kImageWidth = 5100;
+  static constexpr int kImageHeight = 6600;
+
+  // Page size that renders 20 image pixels per output pixel. This value evenly
+  // divides both the image width and half the image height.
+  static constexpr int kPageToImageFactor = 20;
+  static constexpr int kPageWidth = kImageWidth / kPageToImageFactor;
+  static constexpr int kPageHeight = kImageHeight / kPageToImageFactor;
 
   if (!CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) {
     GTEST_SKIP() << "Skia is not the default renderer";
@@ -251,19 +258,26 @@
   ASSERT_TRUE(page);
 
   std::set<int> image_ids;
-  NiceMock<MockCanvas> canvas(kCanvasWidth, kCanvasHeight);
+  NiceMock<MockCanvas> canvas(kPageWidth, kPageHeight / 2);
   EXPECT_CALL(canvas, onDrawImageRect2)
       .WillRepeatedly(WithArg<0>([&image_ids](const SkImage* image) {
         ASSERT_TRUE(image);
         image_ids.insert(image->uniqueID());
+
+        // TODO(crbug.com/pdfium/2034): Image dimensions should be clipped to
+        // 5100x3320. The extra `kPageToImageFactor` accounts for anti-aliasing.
+        EXPECT_EQ(SkISize::Make(kImageWidth, kImageHeight), image->dimensions())
+            << "Actual image dimensions: " << image->width() << "x"
+            << image->height();
       }));
 
+  // Render top half.
   RenderPageToSkCanvas(page, /*start_x=*/0, /*start_y=*/0,
-                       /*size_x=*/kCanvasWidth, /*size_y=*/kCanvasHeight / 2,
-                       &canvas);
-  RenderPageToSkCanvas(page, /*start_x=*/0, /*start_y=*/kCanvasHeight / 2,
-                       /*size_x=*/kCanvasWidth, /*size_y=*/kCanvasHeight / 2,
-                       &canvas);
+                       /*size_x=*/kPageWidth, /*size_y=*/kPageHeight, &canvas);
+
+  // Render bottom half.
+  RenderPageToSkCanvas(page, /*start_x=*/0, /*start_y=*/-kPageHeight / 2,
+                       /*size_x=*/kPageWidth, /*size_y=*/kPageHeight, &canvas);
 
   // TODO(crbug.com/pdfium/2034): This should be 1, not 2.
   EXPECT_THAT(image_ids, SizeIs(2));