Unify CPDF_RenderContext constructor.

Stop peeking into page itself, let caller provide args.

Change-Id: Icfbe0f2272461c809c1cebdb5afd4636cd472002
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/64950
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/render/cpdf_rendercontext.cpp b/core/fpdfapi/render/cpdf_rendercontext.cpp
index 543eb62..e303aab 100644
--- a/core/fpdfapi/render/cpdf_rendercontext.cpp
+++ b/core/fpdfapi/render/cpdf_rendercontext.cpp
@@ -6,7 +6,6 @@
 
 #include "core/fpdfapi/render/cpdf_rendercontext.h"
 
-#include "core/fpdfapi/page/cpdf_page.h"
 #include "core/fpdfapi/page/cpdf_pageobject.h"
 #include "core/fpdfapi/page/cpdf_pageobjectholder.h"
 #include "core/fpdfapi/parser/cpdf_dictionary.h"
@@ -21,17 +20,14 @@
 #include "core/fxge/dib/cfx_dibitmap.h"
 #include "core/fxge/fx_dib.h"
 
-CPDF_RenderContext::CPDF_RenderContext(CPDF_Page* pPage)
-    : m_pDocument(pPage->GetDocument()),
-      m_pPageResources(pPage->m_pPageResources.Get()),
-      m_pPageCache(
-          static_cast<CPDF_PageRenderCache*>(pPage->GetRenderCache())) {}
-
 CPDF_RenderContext::CPDF_RenderContext(CPDF_Document* pDoc,
+                                       CPDF_Dictionary* pPageResources,
                                        CPDF_PageRenderCache* pPageCache)
-    : m_pDocument(pDoc), m_pPageResources(nullptr), m_pPageCache(pPageCache) {}
+    : m_pDocument(pDoc),
+      m_pPageResources(pPageResources),
+      m_pPageCache(pPageCache) {}
 
-CPDF_RenderContext::~CPDF_RenderContext() {}
+CPDF_RenderContext::~CPDF_RenderContext() = default;
 
 void CPDF_RenderContext::GetBackground(const RetainPtr<CFX_DIBitmap>& pBuffer,
                                        const CPDF_PageObject* pObj,
diff --git a/core/fpdfapi/render/cpdf_rendercontext.h b/core/fpdfapi/render/cpdf_rendercontext.h
index 679d11b..d9efbc4 100644
--- a/core/fpdfapi/render/cpdf_rendercontext.h
+++ b/core/fpdfapi/render/cpdf_rendercontext.h
@@ -15,7 +15,6 @@
 
 class CPDF_Dictionary;
 class CPDF_Document;
-class CPDF_Page;
 class CPDF_PageObject;
 class CPDF_PageObjectHolder;
 class CPDF_PageRenderCache;
@@ -36,8 +35,9 @@
     CFX_Matrix m_Matrix;
   };
 
-  explicit CPDF_RenderContext(CPDF_Page* pPage);
-  CPDF_RenderContext(CPDF_Document* pDoc, CPDF_PageRenderCache* pPageCache);
+  CPDF_RenderContext(CPDF_Document* pDoc,
+                     CPDF_Dictionary* pPageResources,
+                     CPDF_PageRenderCache* pPageCache);
   ~CPDF_RenderContext();
 
   void AppendLayer(CPDF_PageObjectHolder* pObjectHolder,
@@ -66,8 +66,8 @@
 
  protected:
   UnownedPtr<CPDF_Document> const m_pDocument;
-  RetainPtr<CPDF_Dictionary> m_pPageResources;
-  UnownedPtr<CPDF_PageRenderCache> m_pPageCache;
+  RetainPtr<CPDF_Dictionary> const m_pPageResources;
+  UnownedPtr<CPDF_PageRenderCache> const m_pPageCache;
   std::vector<Layer> m_Layers;
 };
 
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index b72602a..79d31b9 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -108,7 +108,7 @@
   options.GetOptions() = draw_options;
   options.GetOptions().bForceHalftone = true;
 
-  CPDF_RenderContext context(pDoc, pCache);
+  CPDF_RenderContext context(pDoc, nullptr, pCache);
   context.AppendLayer(pPatternForm, &mtPattern2Bitmap);
   context.Render(&bitmap_device, &options, nullptr);
 #if defined _SKIA_SUPPORT_PATHS_
diff --git a/core/fpdfdoc/cpdf_annot.cpp b/core/fpdfdoc/cpdf_annot.cpp
index 9142a90..f474074 100644
--- a/core/fpdfdoc/cpdf_annot.cpp
+++ b/core/fpdfdoc/cpdf_annot.cpp
@@ -18,6 +18,7 @@
 #include "core/fpdfapi/parser/cpdf_dictionary.h"
 #include "core/fpdfapi/parser/cpdf_document.h"
 #include "core/fpdfapi/parser/fpdf_parser_utility.h"
+#include "core/fpdfapi/render/cpdf_pagerendercache.h"
 #include "core/fpdfapi/render/cpdf_rendercontext.h"
 #include "core/fpdfapi/render/cpdf_renderoptions.h"
 #include "core/fpdfdoc/cpvt_generateap.h"
@@ -399,7 +400,9 @@
   if (!pForm)
     return false;
 
-  CPDF_RenderContext context(pPage);
+  CPDF_RenderContext context(
+      pPage->GetDocument(), pPage->m_pPageResources.Get(),
+      static_cast<CPDF_PageRenderCache*>(pPage->GetRenderCache()));
   context.AppendLayer(pForm, &matrix);
   context.Render(pDevice, pOptions, nullptr);
   return true;
diff --git a/fpdfsdk/fpdf_view.cpp b/fpdfsdk/fpdf_view.cpp
index e69d237..194e92f 100644
--- a/fpdfsdk/fpdf_view.cpp
+++ b/fpdfsdk/fpdf_view.cpp
@@ -109,7 +109,10 @@
   pContext->m_pDevice->SaveState();
   pContext->m_pDevice->SetBaseClip(clipping_rect);
   pContext->m_pDevice->SetClip_Rect(clipping_rect);
-  pContext->m_pContext = pdfium::MakeUnique<CPDF_RenderContext>(pPage);
+  pContext->m_pContext = pdfium::MakeUnique<CPDF_RenderContext>(
+      pPage->GetDocument(), pPage->m_pPageResources.Get(),
+      static_cast<CPDF_PageRenderCache*>(pPage->GetRenderCache()));
+
   pContext->m_pContext->AppendLayer(pPage, &matrix);
 
   if (flags & FPDF_ANNOT) {