Fix build of pdf_hint_table_fuzzer.

Restore CPDF_Dictionary default constructor.
Use it in places where reasonable in the code.

TBR=dsinclair@chromium.org
TBR=thestig@chromium.org

Review-Url: https://codereview.chromium.org/2383843002
diff --git a/core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp b/core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp
index 5b9699d..5696fc0 100644
--- a/core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp
+++ b/core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp
@@ -19,6 +19,9 @@
 #include "third_party/base/logging.h"
 #include "third_party/base/stl_util.h"
 
+CPDF_Dictionary::CPDF_Dictionary()
+    : CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>()) {}
+
 CPDF_Dictionary::CPDF_Dictionary(const CFX_WeakPtr<CFX_ByteStringPool>& pPool)
     : m_pPool(pPool) {}
 
diff --git a/core/fpdfapi/fpdf_parser/cpdf_dictionary.h b/core/fpdfapi/fpdf_parser/cpdf_dictionary.h
index 07903f5..e3fd594 100644
--- a/core/fpdfapi/fpdf_parser/cpdf_dictionary.h
+++ b/core/fpdfapi/fpdf_parser/cpdf_dictionary.h
@@ -23,6 +23,7 @@
   using iterator = std::map<CFX_ByteString, CPDF_Object*>::iterator;
   using const_iterator = std::map<CFX_ByteString, CPDF_Object*>::const_iterator;
 
+  CPDF_Dictionary();
   explicit CPDF_Dictionary(const CFX_WeakPtr<CFX_ByteStringPool>& pPool);
 
   // CPDF_Object.
diff --git a/core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp b/core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp
index beeb8f3..9b70209 100644
--- a/core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp
+++ b/core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp
@@ -66,7 +66,7 @@
     m_ArrayObj->InsertAt(0, new CPDF_Number(8902));
     m_ArrayObj->InsertAt(1, new CPDF_Name("address"));
     // Dictionary object.
-    m_DictObj = new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>());
+    m_DictObj = new CPDF_Dictionary();
     m_DictObj->SetFor("bool", new CPDF_Boolean(false));
     m_DictObj->SetFor("num", new CPDF_Number(0.23f));
     // Stream object.
@@ -74,7 +74,7 @@
     size_t buf_len = FX_ArraySize(content);
     uint8_t* buf = reinterpret_cast<uint8_t*>(malloc(buf_len));
     memcpy(buf, content, buf_len);
-    m_StreamDictObj = new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>());
+    m_StreamDictObj = new CPDF_Dictionary();
     m_StreamDictObj->SetFor("key1", new CPDF_String(L" test dict"));
     m_StreamDictObj->SetFor("key2", new CPDF_Number(-1));
     CPDF_Stream* stream_obj = new CPDF_Stream(buf, buf_len, m_StreamDictObj);
@@ -553,7 +553,7 @@
     CPDF_Dictionary* vals[3];
     ScopedArray arr(new CPDF_Array);
     for (size_t i = 0; i < 3; ++i) {
-      vals[i] = new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>());
+      vals[i] = new CPDF_Dictionary();
       for (size_t j = 0; j < 3; ++j) {
         std::string key("key");
         char buf[33];
@@ -580,7 +580,7 @@
     CPDF_Stream* stream_vals[3];
     ScopedArray arr(new CPDF_Array);
     for (size_t i = 0; i < 3; ++i) {
-      vals[i] = new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>());
+      vals[i] = new CPDF_Dictionary();
       for (size_t j = 0; j < 3; ++j) {
         std::string key("key");
         char buf[33];
@@ -625,13 +625,11 @@
     arr_val->AddNumber(1);
     arr_val->AddNumber(2);
     arr->InsertAt(11, arr_val);
-    CPDF_Dictionary* dict_val =
-        new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>());
+    CPDF_Dictionary* dict_val = new CPDF_Dictionary();
     dict_val->SetFor("key1", new CPDF_String("Linda", false));
     dict_val->SetFor("key2", new CPDF_String("Zoe", false));
     arr->InsertAt(12, dict_val);
-    CPDF_Dictionary* stream_dict =
-        new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>());
+    CPDF_Dictionary* stream_dict = new CPDF_Dictionary();
     stream_dict->SetFor("key1", new CPDF_String("John", false));
     stream_dict->SetFor("key2", new CPDF_String("King", false));
     uint8_t data[] = "A stream for test";
@@ -770,7 +768,7 @@
 
 TEST(PDFDictionaryTest, CloneDirectObject) {
   CPDF_IndirectObjectHolder objects_holder;
-  ScopedDict dict(new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>()));
+  ScopedDict dict(new CPDF_Dictionary());
   dict->SetReferenceFor("foo", &objects_holder, 1234);
   ASSERT_EQ(1U, dict->GetCount());
   CPDF_Object* obj = dict->GetObjectFor("foo");
@@ -792,8 +790,7 @@
     // Create an object with a reference loop.
     ScopedArray arr_obj(new CPDF_Array);
     // Dictionary object.
-    CPDF_Dictionary* dict_obj =
-        new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>());
+    CPDF_Dictionary* dict_obj = new CPDF_Dictionary();
     dict_obj->SetFor("arr", arr_obj.get());
     arr_obj->InsertAt(0, dict_obj);
 
@@ -811,8 +808,7 @@
   {
     CPDF_IndirectObjectHolder objects_holder;
     // Create an object with a reference loop.
-    CPDF_Dictionary* dict_obj =
-        new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>());
+    CPDF_Dictionary* dict_obj = new CPDF_Dictionary();
     CPDF_Array* arr_obj = new CPDF_Array;
     objects_holder.AddIndirectObject(dict_obj);
     EXPECT_EQ(1u, dict_obj->GetObjNum());
diff --git a/core/fpdfapi/fpdf_parser/cpdf_stream.cpp b/core/fpdfapi/fpdf_parser/cpdf_stream.cpp
index 88d0420..4f6d046 100644
--- a/core/fpdfapi/fpdf_parser/cpdf_stream.cpp
+++ b/core/fpdfapi/fpdf_parser/cpdf_stream.cpp
@@ -93,7 +93,7 @@
     FXSYS_memcpy(m_pDataBuf.get(), pData, size);
   m_dwSize = size;
   if (!m_pDict)
-    m_pDict.reset(new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>()));
+    m_pDict.reset(new CPDF_Dictionary());
   m_pDict->SetIntegerFor("Length", size);
   m_pDict->RemoveFor("Filter");
   m_pDict->RemoveFor("DecodeParms");
diff --git a/core/fpdfdoc/cpdf_filespec_unittest.cpp b/core/fpdfdoc/cpdf_filespec_unittest.cpp
index c0f08dc..3daba53 100644
--- a/core/fpdfdoc/cpdf_filespec_unittest.cpp
+++ b/core/fpdfdoc/cpdf_filespec_unittest.cpp
@@ -105,7 +105,7 @@
     };
     // Keyword fields in reverse order of precedence to retrieve the file name.
     const char* const keywords[5] = {"Unix", "Mac", "DOS", "F", "UF"};
-    ScopedDict dict_obj(new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>()));
+    ScopedDict dict_obj(new CPDF_Dictionary());
     CPDF_FileSpec file_spec(dict_obj.get());
     CFX_WideString file_name;
     for (int i = 0; i < 5; ++i) {
@@ -155,7 +155,7 @@
   EXPECT_TRUE(file_name == test_data.input);
 
   // Dictionary object.
-  ScopedDict dict_obj(new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>()));
+  ScopedDict dict_obj(new CPDF_Dictionary());
   CPDF_FileSpec file_spec2(dict_obj.get());
   file_spec2.SetFileName(test_data.input);
   // Check internal object value.
diff --git a/core/fpdfdoc/cpdf_formfield_unittest.cpp b/core/fpdfdoc/cpdf_formfield_unittest.cpp
index 1fe5ee3..42391d1 100644
--- a/core/fpdfdoc/cpdf_formfield_unittest.cpp
+++ b/core/fpdfdoc/cpdf_formfield_unittest.cpp
@@ -12,29 +12,25 @@
   EXPECT_TRUE(name.IsEmpty());
 
   CPDF_IndirectObjectHolder obj_holder;
-  CPDF_Dictionary* root =
-      new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>());
+  CPDF_Dictionary* root = new CPDF_Dictionary();
   obj_holder.AddIndirectObject(root);
   root->SetNameFor("T", "foo");
   name = FPDF_GetFullName(root);
   EXPECT_STREQ("foo", name.UTF8Encode().c_str());
 
-  CPDF_Dictionary* dict1 =
-      new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>());
+  CPDF_Dictionary* dict1 = new CPDF_Dictionary();
   root->SetReferenceFor("Parent", &obj_holder,
                         obj_holder.AddIndirectObject(dict1));
   dict1->SetNameFor("T", "bar");
   name = FPDF_GetFullName(root);
   EXPECT_STREQ("bar.foo", name.UTF8Encode().c_str());
 
-  CPDF_Dictionary* dict2 =
-      new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>());
+  CPDF_Dictionary* dict2 = new CPDF_Dictionary();
   dict1->SetFor("Parent", dict2);
   name = FPDF_GetFullName(root);
   EXPECT_STREQ("bar.foo", name.UTF8Encode().c_str());
 
-  CPDF_Dictionary* dict3 =
-      new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>());
+  CPDF_Dictionary* dict3 = new CPDF_Dictionary();
   dict2->SetReferenceFor("Parent", &obj_holder,
                          obj_holder.AddIndirectObject(dict3));
   dict3->SetNameFor("T", "qux");
diff --git a/core/fxge/dib/fx_dib_engine_unittest.cpp b/core/fxge/dib/fx_dib_engine_unittest.cpp
index 105c342..b7c79c3 100644
--- a/core/fxge/dib/fx_dib_engine_unittest.cpp
+++ b/core/fxge/dib/fx_dib_engine_unittest.cpp
@@ -16,7 +16,7 @@
 TEST(CStretchEngine, OverflowInCtor) {
   FX_RECT clip_rect;
   std::unique_ptr<CPDF_Dictionary, ReleaseDeleter<CPDF_Dictionary>> dict_obj(
-      new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>()));
+      new CPDF_Dictionary());
   dict_obj->SetFor("Width", new CPDF_Number(71000));
   dict_obj->SetFor("Height", new CPDF_Number(12500));
   std::unique_ptr<CPDF_Stream, ReleaseDeleter<CPDF_Stream>> stream(
diff --git a/fpdfsdk/fpdfdoc_unittest.cpp b/fpdfsdk/fpdfdoc_unittest.cpp
index e39b732..70d136b 100644
--- a/fpdfsdk/fpdfdoc_unittest.cpp
+++ b/fpdfsdk/fpdfdoc_unittest.cpp
@@ -64,7 +64,7 @@
     m_pDoc = WrapUnique(new CPDF_TestPdfDocument());
     m_pIndirectObjs = m_pDoc->GetHolder();
     // Setup the root directory.
-    m_pRootObj.reset(new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>()));
+    m_pRootObj.reset(new CPDF_Dictionary());
     m_pDoc->SetRoot(m_pRootObj.get());
   }
 
@@ -79,8 +79,7 @@
     std::vector<DictObjInfo> info;
     for (int i = 0; i < num; ++i) {
       // Objects created will be released by the document.
-      CPDF_Dictionary* obj(
-          new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>()));
+      CPDF_Dictionary* obj = new CPDF_Dictionary();
       info.push_back({m_pIndirectObjs->AddIndirectObject(obj), obj});
     }
     return info;
@@ -104,8 +103,7 @@
   }
   {
     // Empty bookmark tree.
-    m_pRootObj->SetFor("Outlines",
-                       new CPDF_Dictionary(CFX_WeakPtr<CFX_ByteStringPool>()));
+    m_pRootObj->SetFor("Outlines", new CPDF_Dictionary());
     std::unique_ptr<unsigned short, pdfium::FreeDeleter> title =
         GetFPDFWideString(L"");
     EXPECT_EQ(nullptr, FPDFBookmark_Find(m_pDoc.get(), title.get()));