diff options
author | tsepez <tsepez@chromium.org> | 2016-11-09 13:28:26 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-11-09 13:28:26 -0800 |
commit | 335cf093231c984a23cb9ea113148ea1f19621ba (patch) | |
tree | e9c7803b0ce71269beb3d423549a2d6a0ac7784a /core/fpdfapi/parser/cpdf_object_unittest.cpp | |
parent | 3ff4deea307c38462393e4f83dabe32949338168 (diff) | |
download | pdfium-335cf093231c984a23cb9ea113148ea1f19621ba.tar.xz |
Return unique_ptr from CPDF_Object::Clone().
Because that's what clone does. There are numerous
release() calls that will go away as more code is
converted.
Review-Url: https://codereview.chromium.org/2484033002
Diffstat (limited to 'core/fpdfapi/parser/cpdf_object_unittest.cpp')
-rw-r--r-- | core/fpdfapi/parser/cpdf_object_unittest.cpp | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/core/fpdfapi/parser/cpdf_object_unittest.cpp b/core/fpdfapi/parser/cpdf_object_unittest.cpp index 1bcf6164be..b40a8e373d 100644 --- a/core/fpdfapi/parser/cpdf_object_unittest.cpp +++ b/core/fpdfapi/parser/cpdf_object_unittest.cpp @@ -91,10 +91,11 @@ class PDFObjectsTest : public testing::Test { // Indirect references to indirect objects. m_ObjHolder.reset(new CPDF_IndirectObjectHolder()); - m_IndirectObjs = {boolean_true_obj->Clone(), number_int_obj->Clone(), - str_spec_obj->Clone(), name_obj->Clone(), - m_ArrayObj->Clone(), m_DictObj->Clone(), - stream_obj->Clone()}; + m_IndirectObjs = { + boolean_true_obj->Clone().release(), number_int_obj->Clone().release(), + str_spec_obj->Clone().release(), name_obj->Clone().release(), + m_ArrayObj->Clone().release(), m_DictObj->Clone().release(), + stream_obj->Clone().release()}; for (size_t i = 0; i < m_IndirectObjs.size(); ++i) { m_ObjHolder->AddIndirectObject(m_IndirectObjs[i]); m_RefObjs.emplace_back(new CPDF_Reference( @@ -268,13 +269,13 @@ TEST_F(PDFObjectsTest, GetArray) { TEST_F(PDFObjectsTest, Clone) { // Check for direct objects. for (size_t i = 0; i < m_DirectObjs.size(); ++i) { - std::unique_ptr<CPDF_Object> obj(m_DirectObjs[i]->Clone()); + std::unique_ptr<CPDF_Object> obj = m_DirectObjs[i]->Clone(); EXPECT_TRUE(Equal(m_DirectObjs[i].get(), obj.get())); } // Check indirect references. for (const auto& it : m_RefObjs) { - std::unique_ptr<CPDF_Object> obj(it->Clone()); + std::unique_ptr<CPDF_Object> obj = it->Clone(); EXPECT_TRUE(Equal(it.get(), obj.get())); } } @@ -751,11 +752,12 @@ TEST(PDFArrayTest, CloneDirectObject) { ASSERT_TRUE(obj); EXPECT_TRUE(obj->IsReference()); - CPDF_Object* cloned_array_object = array->CloneDirectObject(); + std::unique_ptr<CPDF_Object> cloned_array_object = array->CloneDirectObject(); ASSERT_TRUE(cloned_array_object); ASSERT_TRUE(cloned_array_object->IsArray()); - std::unique_ptr<CPDF_Array> cloned_array(cloned_array_object->AsArray()); + std::unique_ptr<CPDF_Array> cloned_array = + ToArray(std::move(cloned_array_object)); ASSERT_EQ(1U, cloned_array->GetCount()); CPDF_Object* cloned_obj = cloned_array->GetObjectAt(0); EXPECT_FALSE(cloned_obj); @@ -785,12 +787,12 @@ TEST(PDFDictionaryTest, CloneDirectObject) { ASSERT_TRUE(obj); EXPECT_TRUE(obj->IsReference()); - CPDF_Object* cloned_dict_object = dict->CloneDirectObject(); + std::unique_ptr<CPDF_Object> cloned_dict_object = dict->CloneDirectObject(); ASSERT_TRUE(cloned_dict_object); ASSERT_TRUE(cloned_dict_object->IsDictionary()); - std::unique_ptr<CPDF_Dictionary> cloned_dict( - cloned_dict_object->AsDictionary()); + std::unique_ptr<CPDF_Dictionary> cloned_dict = + ToDictionary(std::move(cloned_dict_object)); ASSERT_EQ(1U, cloned_dict->GetCount()); CPDF_Object* cloned_obj = cloned_dict->GetObjectFor("foo"); EXPECT_FALSE(cloned_obj); @@ -805,7 +807,7 @@ TEST(PDFObjectTest, CloneCheckLoop) { arr_obj->InsertAt(0, dict_obj); // Clone this object to see whether stack overflow will be triggered. - std::unique_ptr<CPDF_Array> cloned_array(arr_obj->Clone()->AsArray()); + std::unique_ptr<CPDF_Array> cloned_array = ToArray(arr_obj->Clone()); // Cloned object should be the same as the original. ASSERT_TRUE(cloned_array); EXPECT_EQ(1u, cloned_array->GetCount()); @@ -823,7 +825,7 @@ TEST(PDFObjectTest, CloneCheckLoop) { dict_obj->SetFor("stream", stream_obj.get()); // Clone this object to see whether stack overflow will be triggered. - std::unique_ptr<CPDF_Stream> cloned_stream(stream_obj->Clone()->AsStream()); + std::unique_ptr<CPDF_Stream> cloned_stream = ToStream(stream_obj->Clone()); // Cloned object should be the same as the original. ASSERT_TRUE(cloned_stream); CPDF_Object* cloned_dict = cloned_stream->GetDict(); @@ -849,8 +851,8 @@ TEST(PDFObjectTest, CloneCheckLoop) { EXPECT_EQ(dict_obj, elem0->AsReference()->GetDirect()); // Clone this object to see whether stack overflow will be triggered. - std::unique_ptr<CPDF_Dictionary> cloned_dict( - ToDictionary(dict_obj->CloneDirectObject())); + std::unique_ptr<CPDF_Dictionary> cloned_dict = + ToDictionary(dict_obj->CloneDirectObject()); // Cloned object should be the same as the original. ASSERT_TRUE(cloned_dict); CPDF_Object* cloned_arr = cloned_dict->GetObjectFor("arr"); |