Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Side by Side Diff: core/fpdfapi/parser/cpdf_object_unittest.cpp

Issue 2477003002: Pass object to ReplaceIndirectObjectIfHigherGeneration() by unique_ptr. (Closed)
Patch Set: Fix issuse Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/fpdfapi/parser/cpdf_number.h ('k') | core/fpdfapi/parser/cpdf_parser.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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());
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());
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 }
OLDNEW
« no previous file with comments | « core/fpdfapi/parser/cpdf_number.h ('k') | core/fpdfapi/parser/cpdf_parser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698