Rework CPDF_Colorspace static methods and args.

Follow-up as promised in CL review of
    https://pdfium-review.googlesource.com/c/pdfium/+/84634

-- Remove unused form of Load() method.
-- Rename methods that can only return stock colorspaces.
-- Pass string to AllocateColorSpace().
-- Make AllocateColorSpace() private apart from tests.

Change-Id: I03cd0775bdc7a2e58fda8b90127738cde6adfc13
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/84670
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_colorspace.cpp b/core/fpdfapi/page/cpdf_colorspace.cpp
index fd2a80d..5ab6f40 100644
--- a/core/fpdfapi/page/cpdf_colorspace.cpp
+++ b/core/fpdfapi/page/cpdf_colorspace.cpp
@@ -468,7 +468,7 @@
 }
 
 // static
-RetainPtr<CPDF_ColorSpace> CPDF_ColorSpace::ColorspaceFromName(
+RetainPtr<CPDF_ColorSpace> CPDF_ColorSpace::GetStockCSForName(
     const ByteString& name) {
   if (name == "DeviceRGB" || name == "RGB")
     return GetStockCS(Family::kDeviceRGB);
@@ -487,13 +487,6 @@
 }
 
 // static
-RetainPtr<CPDF_ColorSpace> CPDF_ColorSpace::Load(CPDF_Document* pDoc,
-                                                 CPDF_Object* pObj) {
-  std::set<const CPDF_Object*> visited;
-  return Load(pDoc, pObj, &visited);
-}
-
-// static
 RetainPtr<CPDF_ColorSpace> CPDF_ColorSpace::Load(
     CPDF_Document* pDoc,
     const CPDF_Object* pObj,
@@ -507,7 +500,7 @@
   ScopedSetInsertion<const CPDF_Object*> insertion(pVisited, pObj);
 
   if (pObj->IsName())
-    return ColorspaceFromName(pObj->GetString());
+    return GetStockCSForName(pObj->GetString());
 
   if (const CPDF_Stream* pStream = pObj->AsStream()) {
     const CPDF_Dictionary* pDict = pStream->GetDict();
@@ -519,7 +512,7 @@
       CPDF_Name* pValue = ToName(it.second.Get());
       if (pValue) {
         RetainPtr<CPDF_ColorSpace> pRet =
-            ColorspaceFromName(pValue->GetString());
+            GetStockCSForName(pValue->GetString());
         if (pRet)
           return pRet;
       }
@@ -537,10 +530,10 @@
 
   ByteString familyname = pFamilyObj->GetString();
   if (pArray->size() == 1)
-    return ColorspaceFromName(familyname);
+    return GetStockCSForName(familyname);
 
   RetainPtr<CPDF_ColorSpace> pCS =
-      CPDF_ColorSpace::AllocateColorSpaceForID(pDoc, familyname.GetID());
+      CPDF_ColorSpace::AllocateColorSpace(pDoc, familyname.AsStringView());
   if (!pCS)
     return nullptr;
 
@@ -553,10 +546,10 @@
 }
 
 // static
-RetainPtr<CPDF_ColorSpace> CPDF_ColorSpace::AllocateColorSpaceForID(
+RetainPtr<CPDF_ColorSpace> CPDF_ColorSpace::AllocateColorSpace(
     CPDF_Document* pDocument,
-    uint32_t family_id) {
-  switch (family_id) {
+    ByteStringView bsFamilyName) {
+  switch (bsFamilyName.GetID()) {
     case FXBSTR_ID('C', 'a', 'l', 'G'):
       return pdfium::MakeRetain<CPDF_CalGray>(pDocument);
     case FXBSTR_ID('C', 'a', 'l', 'R'):
diff --git a/core/fpdfapi/page/cpdf_colorspace.h b/core/fpdfapi/page/cpdf_colorspace.h
index c4bf8d4..f0a9e60 100644
--- a/core/fpdfapi/page/cpdf_colorspace.h
+++ b/core/fpdfapi/page/cpdf_colorspace.h
@@ -69,9 +69,7 @@
   };
 
   static RetainPtr<CPDF_ColorSpace> GetStockCS(Family family);
-  static RetainPtr<CPDF_ColorSpace> ColorspaceFromName(const ByteString& name);
-  static RetainPtr<CPDF_ColorSpace> Load(CPDF_Document* pDoc,
-                                         CPDF_Object* pObj);
+  static RetainPtr<CPDF_ColorSpace> GetStockCSForName(const ByteString& name);
   static RetainPtr<CPDF_ColorSpace> Load(
       CPDF_Document* pDoc,
       const CPDF_Object* pObj,
@@ -145,6 +143,13 @@
   uint32_t m_dwStdConversion = 0;
 
  private:
+  friend class CPDF_CalGray_TranslateImageLine_Test;
+  friend class CPDF_CalRGB_TranslateImageLine_Test;
+
+  static RetainPtr<CPDF_ColorSpace> AllocateColorSpace(
+      CPDF_Document* pDocument,
+      ByteStringView bsFamilyName);
+
   uint32_t m_nComponents = 0;
 };
 
diff --git a/core/fpdfapi/page/cpdf_colorspace_unittest.cpp b/core/fpdfapi/page/cpdf_colorspace_unittest.cpp
index 879c85f..77f26a3 100644
--- a/core/fpdfapi/page/cpdf_colorspace_unittest.cpp
+++ b/core/fpdfapi/page/cpdf_colorspace_unittest.cpp
@@ -14,8 +14,8 @@
   const uint8_t kSrc[12] = {255, 0, 0, 0, 255, 0, 0, 0, 255, 128, 128, 128};
   const uint8_t kExpect[12] = {255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0};
 
-  RetainPtr<CPDF_ColorSpace> pCal = CPDF_ColorSpace::AllocateColorSpaceForID(
-      nullptr, FXBSTR_ID('C', 'a', 'l', 'G'));
+  RetainPtr<CPDF_ColorSpace> pCal =
+      CPDF_ColorSpace::AllocateColorSpace(nullptr, "CalG");
   ASSERT_TRUE(pCal);
 
   uint8_t dst[12];
@@ -37,8 +37,8 @@
   const uint8_t kExpectNomask[12] = {0,   0, 255, 0,   255, 0,
                                      255, 0, 0,   128, 128, 128};
 
-  RetainPtr<CPDF_ColorSpace> pCal = CPDF_ColorSpace::AllocateColorSpaceForID(
-      nullptr, FXBSTR_ID('C', 'a', 'l', 'R'));
+  RetainPtr<CPDF_ColorSpace> pCal =
+      CPDF_ColorSpace::AllocateColorSpace(nullptr, "CalR");
   ASSERT_TRUE(pCal);
 
   uint8_t dst[12];
diff --git a/core/fpdfapi/page/cpdf_docpagedata.cpp b/core/fpdfapi/page/cpdf_docpagedata.cpp
index d50b833..3aff7b4 100644
--- a/core/fpdfapi/page/cpdf_docpagedata.cpp
+++ b/core/fpdfapi/page/cpdf_docpagedata.cpp
@@ -268,7 +268,7 @@
 
   if (pCSObj->IsName()) {
     ByteString name = pCSObj->GetString();
-    RetainPtr<CPDF_ColorSpace> pCS = CPDF_ColorSpace::ColorspaceFromName(name);
+    RetainPtr<CPDF_ColorSpace> pCS = CPDF_ColorSpace::GetStockCSForName(name);
     if (!pCS && pResources) {
       const CPDF_Dictionary* pList = pResources->GetDictFor("ColorSpace");
       if (pList) {