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

Side by Side Diff: fpdfsdk/src/fpdf_ext.cpp

Issue 453133004: clang-format all code (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 6 years, 4 months 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
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 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 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "../include/fsdk_define.h" 7 #include "../include/fsdk_define.h"
8 #include "../include/fpdf_ext.h" 8 #include "../include/fpdf_ext.h"
9 9
10 #define FPDFSDK_UNSUPPORT_CALL 100 10 #define FPDFSDK_UNSUPPORT_CALL 100
11 11
12 class CFSDK_UnsupportInfo_Adapter 12 class CFSDK_UnsupportInfo_Adapter {
13 { 13 public:
14 public: 14 CFSDK_UnsupportInfo_Adapter(UNSUPPORT_INFO* unsp_info) {
15 » CFSDK_UnsupportInfo_Adapter(UNSUPPORT_INFO* unsp_info){ m_unsp_info = un sp_info;} 15 m_unsp_info = unsp_info;
16 //» FX_BOOL NeedToPauseNow(); 16 }
17 » void ReportError(int nErrorType); 17 //» FX_BOOL NeedToPauseNow();
18 18 void ReportError(int nErrorType);
19 private: 19
20 » UNSUPPORT_INFO* m_unsp_info; 20 private:
21 UNSUPPORT_INFO* m_unsp_info;
21 }; 22 };
22 23
23 void CFSDK_UnsupportInfo_Adapter::ReportError(int nErrorType) 24 void CFSDK_UnsupportInfo_Adapter::ReportError(int nErrorType) {
24 { 25 if (m_unsp_info && m_unsp_info->FSDK_UnSupport_Handler) {
25 if(m_unsp_info && m_unsp_info->FSDK_UnSupport_Handler) 26 m_unsp_info->FSDK_UnSupport_Handler(m_unsp_info, nErrorType);
26 { 27 }
27 m_unsp_info->FSDK_UnSupport_Handler(m_unsp_info,nErrorType); 28 }
28 } 29
29 } 30 void FreeUnsupportInfo(FX_LPVOID pData) {
30 31 CFSDK_UnsupportInfo_Adapter* pAdapter = (CFSDK_UnsupportInfo_Adapter*)pData;
31 void FreeUnsupportInfo(FX_LPVOID pData) 32 delete pAdapter;
32 { 33 }
33 CFSDK_UnsupportInfo_Adapter * pAdapter = (CFSDK_UnsupportInfo_Adapter *) pData; 34
34 delete pAdapter; 35 FX_BOOL FPDF_UnSupportError(int nError) {
35 } 36 CFSDK_UnsupportInfo_Adapter* pAdapter =
36 37 (CFSDK_UnsupportInfo_Adapter*)CPDF_ModuleMgr::Get()->GetPrivateData(
37 FX_BOOL FPDF_UnSupportError(int nError) 38 (void*)FPDFSDK_UNSUPPORT_CALL);
38 { 39
39 CFSDK_UnsupportInfo_Adapter * pAdapter = (CFSDK_UnsupportInfo_Adapter *) CPDF_ModuleMgr::Get()->GetPrivateData((void *)FPDFSDK_UNSUPPORT_CALL); 40 if (!pAdapter)
40 41 return FALSE;
41 if(!pAdapter) 42 pAdapter->ReportError(nError);
42 return FALSE; 43 return TRUE;
43 pAdapter->ReportError(nError); 44 }
44 return TRUE; 45
45 } 46 DLLEXPORT FPDF_BOOL STDCALL
46 47 FSDK_SetUnSpObjProcessHandler(UNSUPPORT_INFO* unsp_info) {
47 DLLEXPORT FPDF_BOOL STDCALL FSDK_SetUnSpObjProcessHandler(UNSUPPORT_INFO* unsp_i nfo) 48 if (!unsp_info || unsp_info->version != 1)
48 { 49 return FALSE;
49 if (!unsp_info || unsp_info->version!=1) 50 CFSDK_UnsupportInfo_Adapter* pAdapter =
50 return FALSE; 51 new CFSDK_UnsupportInfo_Adapter(unsp_info);
51 CFSDK_UnsupportInfo_Adapter * pAdapter = new CFSDK_UnsupportInfo_Adapter (unsp_info); 52
52 53 CPDF_ModuleMgr::Get()->SetPrivateData(
53 CPDF_ModuleMgr::Get()->SetPrivateData((void *)FPDFSDK_UNSUPPORT_CALL,pAd apter, &FreeUnsupportInfo); 54 (void*)FPDFSDK_UNSUPPORT_CALL, pAdapter, &FreeUnsupportInfo);
54 55
55 return TRUE; 56 return TRUE;
56 } 57 }
57 58
58 void CheckUnSupportAnnot(CPDF_Document * pDoc, CPDF_Annot* pPDFAnnot) 59 void CheckUnSupportAnnot(CPDF_Document* pDoc, CPDF_Annot* pPDFAnnot) {
59 { 60 CFX_ByteString cbSubType = pPDFAnnot->GetSubType();
60 CFX_ByteString cbSubType = pPDFAnnot->GetSubType(); 61 if (cbSubType.Compare("3D") == 0) {
61 if(cbSubType.Compare("3D") == 0) 62 FPDF_UnSupportError(FPDF_UNSP_ANNOT_3DANNOT);
62 { 63 } else if (cbSubType.Compare("Screen") == 0) {
63 FPDF_UnSupportError(FPDF_UNSP_ANNOT_3DANNOT); 64 CPDF_Dictionary* pAnnotDict = pPDFAnnot->m_pAnnotDict;
64 } 65 CFX_ByteString cbString;
65 else if(cbSubType.Compare("Screen") ==0) 66 if (pAnnotDict->KeyExist("IT"))
66 { 67 cbString = pAnnotDict->GetString("IT");
67 CPDF_Dictionary* pAnnotDict = pPDFAnnot->m_pAnnotDict; 68 if (cbString.Compare("Img") != 0)
68 CFX_ByteString cbString; 69 FPDF_UnSupportError(FPDF_UNSP_ANNOT_SCREEN_MEDIA);
69 if(pAnnotDict->KeyExist("IT")) 70 } else if (cbSubType.Compare("Movie") == 0) {
70 cbString = pAnnotDict->GetString("IT"); 71 FPDF_UnSupportError(FPDF_UNSP_ANNOT_MOVIE);
71 if(cbString.Compare("Img") != 0) 72 } else if (cbSubType.Compare("Sound") == 0) {
72 FPDF_UnSupportError(FPDF_UNSP_ANNOT_SCREEN_MEDIA); 73 FPDF_UnSupportError(FPDF_UNSP_ANNOT_SOUND);
73 } 74 } else if (cbSubType.Compare("RichMedia") == 0) {
74 else if(cbSubType.Compare("Movie") ==0) 75 FPDF_UnSupportError(FPDF_UNSP_ANNOT_SCREEN_RICHMEDIA);
75 { 76 } else if (cbSubType.Compare("FileAttachment") == 0) {
76 FPDF_UnSupportError(FPDF_UNSP_ANNOT_MOVIE); 77 FPDF_UnSupportError(FPDF_UNSP_ANNOT_ATTACHMENT);
77 } 78 } else if (cbSubType.Compare("Widget") == 0) {
78 else if(cbSubType.Compare("Sound") ==0) 79 CPDF_Dictionary* pAnnotDict = pPDFAnnot->m_pAnnotDict;
79 { 80 CFX_ByteString cbString;
80 FPDF_UnSupportError(FPDF_UNSP_ANNOT_SOUND); 81 if (pAnnotDict->KeyExist("FT")) {
81 } 82 cbString = pAnnotDict->GetString("FT");
82 else if(cbSubType.Compare("RichMedia") ==0) 83 }
83 { 84 if (cbString.Compare("Sig") == 0) {
84 FPDF_UnSupportError(FPDF_UNSP_ANNOT_SCREEN_RICHMEDIA); 85 FPDF_UnSupportError(FPDF_UNSP_ANNOT_SIG);
85 } 86 }
86 else if(cbSubType.Compare("FileAttachment") ==0) 87 }
87 { 88 }
88 FPDF_UnSupportError(FPDF_UNSP_ANNOT_ATTACHMENT); 89
89 } 90 FX_BOOL CheckSharedForm(CXML_Element* pElement, CFX_ByteString cbName) {
90 else if(cbSubType.Compare("Widget") ==0) 91 int count = pElement->CountAttrs();
91 { 92 int i = 0;
92 CPDF_Dictionary* pAnnotDict = pPDFAnnot->m_pAnnotDict; 93 for (i = 0; i < count; i++) {
93 CFX_ByteString cbString; 94 CFX_ByteString space, name;
94 if(pAnnotDict->KeyExist("FT")) 95 CFX_WideString value;
95 { 96 pElement->GetAttrByIndex(i, space, name, value);
96 cbString = pAnnotDict->GetString("FT"); 97 if (space == FX_BSTRC("xmlns") && name == FX_BSTRC("adhocwf") &&
97 } 98 value == L"http://ns.adobe.com/AcrobatAdhocWorkflow/1.0/") {
98 if(cbString.Compare("Sig") == 0) 99 CXML_Element* pVersion = pElement->GetElement("adhocwf", cbName);
99 { 100 if (!pVersion)
100 FPDF_UnSupportError(FPDF_UNSP_ANNOT_SIG); 101 continue;
101 } 102 CFX_WideString wsContent = pVersion->GetContent(0); // == 1.1
102 } 103 int nType = wsContent.GetInteger();
103 104 switch (nType) {
104 } 105 case 1:
105 106 FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDFORM_ACROBAT);
106 FX_BOOL CheckSharedForm(CXML_Element * pElement, CFX_ByteString cbName) 107 break;
107 { 108 case 2:
108 int count = pElement->CountAttrs(); 109 FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDFORM_FILESYSTEM);
109 int i=0; 110 break;
110 for (i = 0; i < count; i++) 111 case 0:
111 { 112 FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDFORM_EMAIL);
112 CFX_ByteString space, name; 113 break;
113 CFX_WideString value; 114 }
114 pElement->GetAttrByIndex(i, space, name, value); 115 }
115 if (space == FX_BSTRC("xmlns") && name == FX_BSTRC("adhocwf") && value == L"http://ns.adobe.com/AcrobatAdhocWorkflow/1.0/") 116 }
116 { 117
117 CXML_Element *pVersion = pElement->GetElement("adhocwf", cbName); 118 FX_DWORD nCount = pElement->CountChildren();
118 if (!pVersion) 119 for (i = 0; i < (int)nCount; i++) {
119 continue; 120 CXML_Element::ChildType childType = pElement->GetChildType(i);
120 CFX_WideString wsContent = pVersion->GetContent(0); // = = 1.1 121 if (childType == CXML_Element::Element) {
121 int nType = wsContent.GetInteger(); 122 CXML_Element* pChild = pElement->GetElement(i);
122 switch(nType) 123 if (CheckSharedForm(pChild, cbName))
123 { 124 return TRUE;
124 case 1: 125 }
125 FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDFORM_ACR OBAT); 126 }
126 break; 127 return FALSE;
127 case 2: 128 }
128 FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDFORM_FIL ESYSTEM); 129
129 break; 130 void CheckUnSupportError(CPDF_Document* pDoc, FX_DWORD err_code) {
130 case 0: 131 // Security
131 FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDFORM_EMA IL); 132 if (err_code == FPDF_ERR_SECURITY) {
132 break; 133 FPDF_UnSupportError(FPDF_UNSP_DOC_SECURITY);
133 } 134 return;
134 } 135 }
135 } 136 if (!pDoc)
136 137 return;
137 FX_DWORD nCount = pElement->CountChildren(); 138
138 for(i=0; i<(int)nCount; i++) 139 // Portfolios and Packages
139 { 140 CPDF_Dictionary* pRootDict = pDoc->GetRoot();
140 CXML_Element::ChildType childType = pElement->GetChildType(i); 141 if (pRootDict) {
141 if(childType == CXML_Element::Element) 142 CFX_ByteString cbString;
142 { 143 if (pRootDict->KeyExist("Collection")) {
143 CXML_Element * pChild = pElement->GetElement(i); 144 FPDF_UnSupportError(FPDF_UNSP_DOC_PORTABLECOLLECTION);
144 if(CheckSharedForm(pChild, cbName)) 145 return;
145 return TRUE; 146 }
146 } 147 if (pRootDict->KeyExist("Names")) {
147 } 148 CPDF_Dictionary* pNameDict = pRootDict->GetDict("Names");
148 return FALSE; 149 if (pNameDict && pNameDict->KeyExist("EmbeddedFiles")) {
149 } 150 FPDF_UnSupportError(FPDF_UNSP_DOC_ATTACHMENT);
150 151 return;
151 void CheckUnSupportError(CPDF_Document * pDoc, FX_DWORD err_code) 152 } else if (pNameDict && pNameDict->KeyExist("JavaScript")) {
152 { 153 CPDF_Dictionary* pJSDict = pNameDict->GetDict("JavaScript");
153 // Security 154 CPDF_Array* pArray = pJSDict ? pJSDict->GetArray("Names") : NULL;
154 if(err_code == FPDF_ERR_SECURITY) 155 if (pArray) {
155 { 156 int nCount = pArray->GetCount();
156 FPDF_UnSupportError(FPDF_UNSP_DOC_SECURITY); 157 for (int i = 0; i < nCount; i++) {
157 return ; 158 CFX_ByteString cbStr = pArray->GetString(i);
158 } 159 if (cbStr.Compare("com.adobe.acrobat.SharedReview.Register") == 0) {
159 if(!pDoc) 160 FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDREVIEW);
160 return ; 161 return;
161 162 }
162 // Portfolios and Packages 163 }
163 CPDF_Dictionary * pRootDict = pDoc->GetRoot(); 164 }
164 if(pRootDict) 165 }
165 { 166 }
166 CFX_ByteString cbString; 167 }
167 if(pRootDict->KeyExist("Collection")) 168
168 { 169 // SharedForm
169 FPDF_UnSupportError(FPDF_UNSP_DOC_PORTABLECOLLECTION); 170 CPDF_Metadata metaData;
170 return ; 171 metaData.LoadDoc(pDoc);
171 } 172 CXML_Element* pElement = metaData.GetRoot();
172 if(pRootDict->KeyExist("Names")) 173 if (pElement)
173 { 174 CheckSharedForm(pElement, "workflowType");
174 CPDF_Dictionary* pNameDict = pRootDict->GetDict("Names") ; 175
175 if (pNameDict && pNameDict->KeyExist("EmbeddedFiles")) 176 // XFA Forms
176 { 177 CPDF_InterForm* pInterForm = FX_NEW CPDF_InterForm(pDoc, FALSE);
177 FPDF_UnSupportError(FPDF_UNSP_DOC_ATTACHMENT); 178 if (pInterForm) {
178 return; 179 if (pInterForm->HasXFAForm()) {
179 } 180 FPDF_UnSupportError(FPDF_UNSP_DOC_XFAFORM);
180 else if (pNameDict && pNameDict->KeyExist("JavaScript")) 181 }
181 { 182 delete pInterForm;
182 CPDF_Dictionary* pJSDict = pNameDict->GetDict("J avaScript"); 183 }
183 CPDF_Array * pArray = pJSDict ? pJSDict->GetArra y("Names") : NULL; 184 }
184 if (pArray) { 185
185 int nCount = pArray->GetCount(); 186 DLLEXPORT int FPDFDoc_GetPageMode(FPDF_DOCUMENT document) {
186 for(int i=0; i<nCount; i++) 187 if (!document)
187 { 188 return PAGEMODE_UNKNOWN;
188 CFX_ByteString cbStr = pArray->G etString(i); 189 CPDF_Dictionary* pRoot = ((CPDF_Document*)document)->GetRoot();
189 if(cbStr.Compare("com.adobe.acro bat.SharedReview.Register") == 0) 190 if (!pRoot)
190 { 191 return PAGEMODE_UNKNOWN;
191 FPDF_UnSupportError(FPDF _UNSP_DOC_SHAREDREVIEW); 192 CPDF_Object* pName = pRoot->GetElement("PageMode");
192 return; 193 if (!pName)
193 } 194 return PAGEMODE_USENONE;
194 } 195 CFX_ByteString strPageMode = pName->GetString();
195 } 196
196 } 197 if (strPageMode.IsEmpty() || strPageMode.EqualNoCase(FX_BSTR("UseNone")))
197 } 198 return PAGEMODE_USENONE;
198 } 199 else if (strPageMode.EqualNoCase(FX_BSTR("UseOutlines")))
199 200 return PAGEMODE_USEOUTLINES;
200 // SharedForm 201 else if (strPageMode.EqualNoCase(FX_BSTR("UseThumbs")))
201 CPDF_Metadata metaData; 202 return PAGEMODE_USETHUMBS;
202 metaData.LoadDoc(pDoc); 203 else if (strPageMode.EqualNoCase(FX_BSTR("FullScreen")))
203 CXML_Element * pElement = metaData.GetRoot(); 204 return PAGEMODE_FULLSCREEN;
204 if(pElement) 205 else if (strPageMode.EqualNoCase(FX_BSTR("UseOC")))
205 CheckSharedForm(pElement, "workflowType"); 206 return PAGEMODE_USEOC;
206 207 else if (strPageMode.EqualNoCase(FX_BSTR("UseAttachments")))
207 208 return PAGEMODE_USEATTACHMENTS;
208 // XFA Forms 209
209 CPDF_InterForm * pInterForm = FX_NEW CPDF_InterForm(pDoc,FALSE); 210 return PAGEMODE_UNKNOWN;
210 if (pInterForm) 211 }
211 {
212 if(pInterForm->HasXFAForm())
213 {
214 FPDF_UnSupportError(FPDF_UNSP_DOC_XFAFORM);
215 }
216 delete pInterForm;
217 }
218 }
219
220 DLLEXPORT int FPDFDoc_GetPageMode(FPDF_DOCUMENT document)
221 {
222 if (!document) return PAGEMODE_UNKNOWN;
223 CPDF_Dictionary *pRoot = ((CPDF_Document*)document)->GetRoot();
224 if (!pRoot)
225 return PAGEMODE_UNKNOWN;
226 CPDF_Object* pName = pRoot->GetElement("PageMode");
227 if (!pName)
228 return PAGEMODE_USENONE;
229 CFX_ByteString strPageMode = pName->GetString();
230
231 if (strPageMode.IsEmpty()||strPageMode.EqualNoCase(FX_BSTR("UseNone")))
232 return PAGEMODE_USENONE;
233 else if (strPageMode.EqualNoCase(FX_BSTR("UseOutlines")))
234 return PAGEMODE_USEOUTLINES;
235 else if (strPageMode.EqualNoCase(FX_BSTR("UseThumbs")))
236 return PAGEMODE_USETHUMBS;
237 else if (strPageMode.EqualNoCase(FX_BSTR("FullScreen")))
238 return PAGEMODE_FULLSCREEN;
239 else if (strPageMode.EqualNoCase(FX_BSTR("UseOC")))
240 return PAGEMODE_USEOC;
241 else if (strPageMode.EqualNoCase(FX_BSTR("UseAttachments")))
242 return PAGEMODE_USEATTACHMENTS;
243
244 return PAGEMODE_UNKNOWN;
245 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698