| OLD | NEW |
| 1 // Copyright (c) 2015 PDFium Authors. All rights reserved. | 1 // Copyright (c) 2015 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 "testing/embedder_test.h" | 5 #include "testing/embedder_test.h" |
| 6 | 6 |
| 7 #include <limits.h> | 7 #include <limits.h> |
| 8 | 8 |
| 9 #include <list> | 9 #include <list> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 | 90 |
| 91 #ifdef PDF_ENABLE_V8 | 91 #ifdef PDF_ENABLE_V8 |
| 92 v8::V8::ShutdownPlatform(); | 92 v8::V8::ShutdownPlatform(); |
| 93 delete platform_; | 93 delete platform_; |
| 94 #endif // PDF_ENABLE_V8 | 94 #endif // PDF_ENABLE_V8 |
| 95 | 95 |
| 96 delete loader_; | 96 delete loader_; |
| 97 free(file_contents_); | 97 free(file_contents_); |
| 98 } | 98 } |
| 99 | 99 |
| 100 bool EmbedderTest::OpenDocument(const std::string& filename) { | 100 bool EmbedderTest::OpenDocument(const std::string& filename, |
| 101 bool must_linearize) { |
| 101 std::string file_path; | 102 std::string file_path; |
| 102 if (!PathService::GetTestFilePath(filename, &file_path)) | 103 if (!PathService::GetTestFilePath(filename, &file_path)) |
| 103 return false; | 104 return false; |
| 104 file_contents_ = GetFileContents(file_path.c_str(), &file_length_); | 105 file_contents_ = GetFileContents(file_path.c_str(), &file_length_); |
| 105 if (!file_contents_) | 106 if (!file_contents_) |
| 106 return false; | 107 return false; |
| 107 | 108 |
| 108 loader_ = new TestLoader(file_contents_, file_length_); | 109 loader_ = new TestLoader(file_contents_, file_length_); |
| 109 file_access_.m_FileLen = static_cast<unsigned long>(file_length_); | 110 file_access_.m_FileLen = static_cast<unsigned long>(file_length_); |
| 110 file_access_.m_GetBlock = TestLoader::GetBlock; | 111 file_access_.m_GetBlock = TestLoader::GetBlock; |
| 111 file_access_.m_Param = loader_; | 112 file_access_.m_Param = loader_; |
| 112 | 113 |
| 113 file_avail_.version = 1; | 114 file_avail_.version = 1; |
| 114 file_avail_.IsDataAvail = Is_Data_Avail; | 115 file_avail_.IsDataAvail = Is_Data_Avail; |
| 115 | 116 |
| 116 hints_.version = 1; | 117 hints_.version = 1; |
| 117 hints_.AddSegment = Add_Segment; | 118 hints_.AddSegment = Add_Segment; |
| 118 | 119 |
| 119 avail_ = FPDFAvail_Create(&file_avail_, &file_access_); | 120 avail_ = FPDFAvail_Create(&file_avail_, &file_access_); |
| 120 (void)FPDFAvail_IsDocAvail(avail_, &hints_); | |
| 121 | 121 |
| 122 if (!FPDFAvail_IsLinearized(avail_)) | 122 if (FPDFAvail_IsLinearized(avail_) == PDF_LINEARIZED) { |
| 123 document_ = FPDFAvail_GetDocument(avail_, nullptr); |
| 124 if (!document_) { |
| 125 return false; |
| 126 } |
| 127 int32_t nRet = PDF_DATA_NOTAVAIL; |
| 128 while (nRet == PDF_DATA_NOTAVAIL) { |
| 129 nRet = FPDFAvail_IsDocAvail(avail_, &hints_); |
| 130 } |
| 131 if (nRet == PDF_DATA_ERROR) { |
| 132 return false; |
| 133 } |
| 134 nRet = FPDFAvail_IsFormAvail(avail_, &hints_); |
| 135 if (nRet == PDF_FORM_ERROR || nRet == PDF_FORM_NOTAVAIL) { |
| 136 return false; |
| 137 } |
| 138 int page_count = FPDF_GetPageCount(document_); |
| 139 for (int i = 0; i < page_count; ++i) { |
| 140 nRet = PDF_DATA_NOTAVAIL; |
| 141 while (nRet == PDF_DATA_NOTAVAIL) { |
| 142 nRet = FPDFAvail_IsPageAvail(avail_, i, &hints_); |
| 143 } |
| 144 if (nRet == PDF_DATA_ERROR) { |
| 145 return false; |
| 146 } |
| 147 } |
| 148 } else { |
| 149 if (must_linearize) { |
| 150 return false; |
| 151 } |
| 123 document_ = FPDF_LoadCustomDocument(&file_access_, nullptr); | 152 document_ = FPDF_LoadCustomDocument(&file_access_, nullptr); |
| 124 else | 153 if (!document_) { |
| 125 document_ = FPDFAvail_GetDocument(avail_, nullptr); | 154 return false; |
| 126 | 155 } |
| 127 if (!document_) | 156 } |
| 128 return false; | |
| 129 | 157 |
| 130 int docType = DOCTYPE_PDF; | 158 int docType = DOCTYPE_PDF; |
| 131 if (FPDF_HasXFAField(document_, &docType)) { | 159 if (FPDF_HasXFAField(document_, &docType)) { |
| 132 if (docType != DOCTYPE_PDF) | 160 if (docType != DOCTYPE_PDF) |
| 133 (void)FPDF_LoadXFA(document_); | 161 (void)FPDF_LoadXFA(document_); |
| 134 } | 162 } |
| 135 | 163 |
| 136 (void)FPDF_GetDocPermissions(document_); | 164 (void)FPDF_GetDocPermissions(document_); |
| 137 (void)FPDFAvail_IsFormAvail(avail_, &hints_); | |
| 138 | 165 |
| 139 IPDF_JSPLATFORM* platform = static_cast<IPDF_JSPLATFORM*>(this); | 166 IPDF_JSPLATFORM* platform = static_cast<IPDF_JSPLATFORM*>(this); |
| 140 memset(platform, 0, sizeof(IPDF_JSPLATFORM)); | 167 memset(platform, 0, sizeof(IPDF_JSPLATFORM)); |
| 141 platform->version = 2; | 168 platform->version = 2; |
| 142 platform->app_alert = AlertTrampoline; | 169 platform->app_alert = AlertTrampoline; |
| 143 | 170 |
| 144 FPDF_FORMFILLINFO* formfillinfo = static_cast<FPDF_FORMFILLINFO*>(this); | 171 FPDF_FORMFILLINFO* formfillinfo = static_cast<FPDF_FORMFILLINFO*>(this); |
| 145 memset(formfillinfo, 0, sizeof(FPDF_FORMFILLINFO)); | 172 memset(formfillinfo, 0, sizeof(FPDF_FORMFILLINFO)); |
| 146 #ifdef PDF_ENABLE_XFA | 173 #ifdef PDF_ENABLE_XFA |
| 147 formfillinfo->version = 2; | 174 formfillinfo->version = 2; |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 } | 297 } |
| 271 | 298 |
| 272 // Can't use gtest-provided main since we need to stash the path to the | 299 // Can't use gtest-provided main since we need to stash the path to the |
| 273 // executable in order to find the external V8 binary data files. | 300 // executable in order to find the external V8 binary data files. |
| 274 int main(int argc, char** argv) { | 301 int main(int argc, char** argv) { |
| 275 g_exe_path_ = argv[0]; | 302 g_exe_path_ = argv[0]; |
| 276 testing::InitGoogleTest(&argc, argv); | 303 testing::InitGoogleTest(&argc, argv); |
| 277 testing::InitGoogleMock(&argc, argv); | 304 testing::InitGoogleMock(&argc, argv); |
| 278 return RUN_ALL_TESTS(); | 305 return RUN_ALL_TESTS(); |
| 279 } | 306 } |
| OLD | NEW |