Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 PDFium Authors. All rights reserved. | 1 // Copyright 2016 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "core/fpdfapi/parser/cpdf_array.h" | 5 #include "core/fpdfapi/parser/cpdf_array.h" |
| 6 #include "core/fpdfapi/parser/cpdf_boolean.h" | 6 #include "core/fpdfapi/parser/cpdf_boolean.h" |
| 7 #include "core/fpdfapi/parser/cpdf_dictionary.h" | 7 #include "core/fpdfapi/parser/cpdf_dictionary.h" |
| 8 #include "core/fpdfapi/parser/cpdf_name.h" | 8 #include "core/fpdfapi/parser/cpdf_name.h" |
| 9 #include "core/fpdfapi/parser/cpdf_null.h" | 9 #include "core/fpdfapi/parser/cpdf_null.h" |
| 10 #include "core/fpdfapi/parser/cpdf_number.h" | 10 #include "core/fpdfapi/parser/cpdf_number.h" |
| (...skipping 704 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 715 CPDF_String* str_obj = new CPDF_String("Adsfdsf 343434 %&&*\n", false); | 715 CPDF_String* str_obj = new CPDF_String("Adsfdsf 343434 %&&*\n", false); |
| 716 CPDF_Name* name_obj = new CPDF_Name("Title:"); | 716 CPDF_Name* name_obj = new CPDF_Name("Title:"); |
| 717 CPDF_Null* null_obj = new CPDF_Null(); | 717 CPDF_Null* null_obj = new CPDF_Null(); |
| 718 CPDF_Object* indirect_objs[] = {boolean_obj, int_obj, float_obj, | 718 CPDF_Object* indirect_objs[] = {boolean_obj, int_obj, float_obj, |
| 719 str_obj, name_obj, null_obj}; | 719 str_obj, name_obj, null_obj}; |
| 720 unsigned int obj_nums[] = {2, 4, 7, 2345, 799887, 1}; | 720 unsigned int obj_nums[] = {2, 4, 7, 2345, 799887, 1}; |
| 721 std::unique_ptr<CPDF_Array> arr(new CPDF_Array); | 721 std::unique_ptr<CPDF_Array> arr(new CPDF_Array); |
| 722 std::unique_ptr<CPDF_Array> arr1(new CPDF_Array); | 722 std::unique_ptr<CPDF_Array> arr1(new CPDF_Array); |
| 723 // Create two arrays of references by different AddReference() APIs. | 723 // Create two arrays of references by different AddReference() APIs. |
| 724 for (size_t i = 0; i < FX_ArraySize(indirect_objs); ++i) { | 724 for (size_t i = 0; i < FX_ArraySize(indirect_objs); ++i) { |
| 725 // All the indirect objects inserted will be owned by holder. | 725 holder->ReplaceIndirectObjectIfHigherGeneration( |
| 726 holder->ReplaceIndirectObjectIfHigherGeneration(obj_nums[i], | 726 obj_nums[i], pdfium::WrapUnique<CPDF_Object>(indirect_objs[i])); |
| 727 indirect_objs[i]); | |
| 728 arr->AddReference(holder.get(), obj_nums[i]); | 727 arr->AddReference(holder.get(), obj_nums[i]); |
| 729 arr1->AddReference(holder.get(), indirect_objs[i]->GetObjNum()); | 728 arr1->AddReference(holder.get(), indirect_objs[i]->GetObjNum()); |
|
Lei Zhang
2016/11/04 22:04:36
Didn't we just give away |indirect_objs[i]| above?
Tom Sepez
2016/11/04 22:44:03
No, that's why WrapUnique() has to be viewed with
| |
| 730 } | 729 } |
| 731 // Check indirect objects. | 730 // Check indirect objects. |
| 732 for (size_t i = 0; i < FX_ArraySize(obj_nums); ++i) | 731 for (size_t i = 0; i < FX_ArraySize(obj_nums); ++i) |
| 733 EXPECT_EQ(indirect_objs[i], holder->GetOrParseIndirectObject(obj_nums[i])); | 732 EXPECT_EQ(indirect_objs[i], holder->GetOrParseIndirectObject(obj_nums[i])); |
| 734 // Check arrays. | 733 // Check arrays. |
| 735 EXPECT_EQ(arr->GetCount(), arr1->GetCount()); | 734 EXPECT_EQ(arr->GetCount(), arr1->GetCount()); |
| 736 for (size_t i = 0; i < arr->GetCount(); ++i) { | 735 for (size_t i = 0; i < arr->GetCount(); ++i) { |
| 737 EXPECT_EQ(CPDF_Object::REFERENCE, arr->GetObjectAt(i)->GetType()); | 736 EXPECT_EQ(CPDF_Object::REFERENCE, arr->GetObjectAt(i)->GetType()); |
| 738 EXPECT_EQ(indirect_objs[i], arr->GetObjectAt(i)->GetDirect()); | 737 EXPECT_EQ(indirect_objs[i], arr->GetObjectAt(i)->GetDirect()); |
| 739 EXPECT_EQ(indirect_objs[i], arr->GetDirectObjectAt(i)); | 738 EXPECT_EQ(indirect_objs[i], arr->GetDirectObjectAt(i)); |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 870 dict->SetFor("clams", pObj); | 869 dict->SetFor("clams", pObj); |
| 871 dict->ConvertToIndirectObjectFor("clams", &objects_holder); | 870 dict->ConvertToIndirectObjectFor("clams", &objects_holder); |
| 872 CPDF_Object* pRef = dict->GetObjectFor("clams"); | 871 CPDF_Object* pRef = dict->GetObjectFor("clams"); |
| 873 CPDF_Object* pNum = dict->GetDirectObjectFor("clams"); | 872 CPDF_Object* pNum = dict->GetDirectObjectFor("clams"); |
| 874 EXPECT_TRUE(pRef->IsReference()); | 873 EXPECT_TRUE(pRef->IsReference()); |
| 875 EXPECT_TRUE(pNum->IsNumber()); | 874 EXPECT_TRUE(pNum->IsNumber()); |
| 876 EXPECT_NE(pObj, pRef); | 875 EXPECT_NE(pObj, pRef); |
| 877 EXPECT_EQ(pObj, pNum); | 876 EXPECT_EQ(pObj, pNum); |
| 878 EXPECT_EQ(42, dict->GetIntegerFor("clams")); | 877 EXPECT_EQ(42, dict->GetIntegerFor("clams")); |
| 879 } | 878 } |
| OLD | NEW |