OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium 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 "pdf/pdfium/pdfium_engine.h" | 5 #include "pdf/pdfium/pdfium_engine.h" |
6 | 6 |
7 #include <math.h> | 7 #include <math.h> |
8 | 8 |
9 #include "base/i18n/icu_encoding_detection.h" | 9 #include "base/i18n/icu_encoding_detection.h" |
10 #include "base/i18n/icu_string_conversions.h" | 10 #include "base/i18n/icu_string_conversions.h" |
(...skipping 923 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
934 | 934 |
935 FPDF_FILEHANDLER* PDFiumEngine::Form_OpenFile(FPDF_FORMFILLINFO* param, | 935 FPDF_FILEHANDLER* PDFiumEngine::Form_OpenFile(FPDF_FORMFILLINFO* param, |
936 int file_flag, | 936 int file_flag, |
937 FPDF_WIDESTRING url, | 937 FPDF_WIDESTRING url, |
938 const char* mode) { | 938 const char* mode) { |
939 std::string url_str = "NULL"; | 939 std::string url_str = "NULL"; |
940 if (url != NULL) { | 940 if (url != NULL) { |
941 url_str = | 941 url_str = |
942 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(url)); | 942 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(url)); |
943 } | 943 } |
944 // TODO: need to implement open file from the url | 944 // TODO: need to implement open file from the url |
945 // Use a file path for the ease of testing | 945 // Use a file path for the ease of testing |
946 FILE* file = fopen(XFA_TESTFILE("tem.txt"), mode); | 946 FILE* file = fopen(XFA_TESTFILE("tem.txt"), mode); |
947 FPDF_FILE* file_wrapper = new FPDF_FILE; | 947 FPDF_FILE* file_wrapper = new FPDF_FILE; |
948 file_wrapper->file = file; | 948 file_wrapper->file = file; |
949 file_wrapper->file_handler.clientData = file_wrapper; | 949 file_wrapper->file_handler.clientData = file_wrapper; |
950 file_wrapper->file_handler.Flush = Sample_Flush; | 950 file_wrapper->file_handler.Flush = Sample_Flush; |
951 file_wrapper->file_handler.GetSize = Sample_GetSize; | 951 file_wrapper->file_handler.GetSize = Sample_GetSize; |
952 file_wrapper->file_handler.ReadBlock = Sample_ReadBlock; | 952 file_wrapper->file_handler.ReadBlock = Sample_ReadBlock; |
953 file_wrapper->file_handler.Release = Sample_Release; | 953 file_wrapper->file_handler.Release = Sample_Release; |
954 file_wrapper->file_handler.Truncate = Sample_Truncate; | 954 file_wrapper->file_handler.Truncate = Sample_Truncate; |
955 file_wrapper->file_handler.WriteBlock = Sample_WriteBlock; | 955 file_wrapper->file_handler.WriteBlock = Sample_WriteBlock; |
(...skipping 29 matching lines...) Expand all Loading... |
985 return file_avail->loader->IsDataAvailable(offset, size); | 985 return file_avail->loader->IsDataAvailable(offset, size); |
986 } | 986 } |
987 | 987 |
988 void PDFiumEngine::AddSegment(FX_DOWNLOADHINTS* param, | 988 void PDFiumEngine::AddSegment(FX_DOWNLOADHINTS* param, |
989 size_t offset, size_t size) { | 989 size_t offset, size_t size) { |
990 PDFiumEngine::DownloadHints* download_hints = | 990 PDFiumEngine::DownloadHints* download_hints = |
991 static_cast<PDFiumEngine::DownloadHints*>(param); | 991 static_cast<PDFiumEngine::DownloadHints*>(param); |
992 return download_hints->loader->RequestData(offset, size); | 992 return download_hints->loader->RequestData(offset, size); |
993 } | 993 } |
994 | 994 |
995 bool PDFiumEngine::New(const char* url) { | |
996 url_ = url; | |
997 headers_ = std::string(); | |
998 return true; | |
999 } | |
1000 | |
1001 bool PDFiumEngine::New(const char* url, | 995 bool PDFiumEngine::New(const char* url, |
1002 const char* headers) { | 996 const char* headers) { |
1003 url_ = url; | 997 url_ = url; |
1004 if (!headers) | 998 if (!headers) |
1005 headers_ = std::string(); | 999 headers_.clear(); |
1006 else | 1000 else |
1007 headers_ = headers; | 1001 headers_ = headers; |
1008 return true; | 1002 return true; |
1009 } | 1003 } |
1010 | 1004 |
1011 void PDFiumEngine::PageOffsetUpdated(const pp::Point& page_offset) { | 1005 void PDFiumEngine::PageOffsetUpdated(const pp::Point& page_offset) { |
1012 page_offset_ = page_offset; | 1006 page_offset_ = page_offset; |
1013 } | 1007 } |
1014 | 1008 |
1015 void PDFiumEngine::PluginSizeUpdated(const pp::Size& size) { | 1009 void PDFiumEngine::PluginSizeUpdated(const pp::Size& size) { |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1236 called_do_document_action_ = true; | 1230 called_do_document_action_ = true; |
1237 | 1231 |
1238 // These can only be called now, as the JS might end up needing a page. | 1232 // These can only be called now, as the JS might end up needing a page. |
1239 FORM_DoDocumentJSAction(form_); | 1233 FORM_DoDocumentJSAction(form_); |
1240 FORM_DoDocumentOpenAction(form_); | 1234 FORM_DoDocumentOpenAction(form_); |
1241 if (most_visible_page_ != -1) { | 1235 if (most_visible_page_ != -1) { |
1242 FPDF_PAGE new_page = pages_[most_visible_page_]->GetPage(); | 1236 FPDF_PAGE new_page = pages_[most_visible_page_]->GetPage(); |
1243 FORM_DoPageAAction(new_page, form_, FPDFPAGE_AACTION_OPEN); | 1237 FORM_DoPageAAction(new_page, form_, FPDFPAGE_AACTION_OPEN); |
1244 } | 1238 } |
1245 | 1239 |
1246 if (doc_) // This can only happen if loading |doc_| fails. | 1240 if (doc_) // This can only happen if loading |doc_| fails. |
1247 client_->DocumentLoadComplete(pages_.size()); | 1241 client_->DocumentLoadComplete(pages_.size()); |
1248 } | 1242 } |
1249 | 1243 |
1250 void PDFiumEngine::UnsupportedFeature(int type) { | 1244 void PDFiumEngine::UnsupportedFeature(int type) { |
1251 std::string feature; | 1245 std::string feature; |
1252 switch (type) { | 1246 switch (type) { |
1253 #ifndef PDF_USE_XFA | 1247 #ifndef PDF_USE_XFA |
1254 case FPDF_UNSP_DOC_XFAFORM: | 1248 case FPDF_UNSP_DOC_XFAFORM: |
1255 feature = "XFA"; | 1249 feature = "XFA"; |
1256 break; | 1250 break; |
(...skipping 739 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1996 last_character_index_to_search_ = old_selection[0].char_index(); | 1990 last_character_index_to_search_ = old_selection[0].char_index(); |
1997 character_to_start_searching_from = old_selection[0].char_index(); | 1991 character_to_start_searching_from = old_selection[0].char_index(); |
1998 last_page_to_search_ = next_page_to_search_; | 1992 last_page_to_search_ = next_page_to_search_; |
1999 } | 1993 } |
2000 } | 1994 } |
2001 | 1995 |
2002 int current_page = next_page_to_search_; | 1996 int current_page = next_page_to_search_; |
2003 | 1997 |
2004 if (pages_[current_page]->available()) { | 1998 if (pages_[current_page]->available()) { |
2005 base::string16 str = base::UTF8ToUTF16(text); | 1999 base::string16 str = base::UTF8ToUTF16(text); |
2006 // Don't use PDFium to search for now, since it doesn't support unicode text
. | 2000 // Don't use PDFium to search for now, since it doesn't support unicode |
2007 // Leave the code for now to avoid bit-rot, in case it's fixed later. | 2001 // text. Leave the code for now to avoid bit-rot, in case it's fixed later. |
2008 if (0) { | 2002 if (0) { |
2009 SearchUsingPDFium( | 2003 SearchUsingPDFium( |
2010 str, case_sensitive, first_search, character_to_start_searching_from, | 2004 str, case_sensitive, first_search, character_to_start_searching_from, |
2011 current_page); | 2005 current_page); |
2012 } else { | 2006 } else { |
2013 SearchUsingICU( | 2007 SearchUsingICU( |
2014 str, case_sensitive, first_search, character_to_start_searching_from, | 2008 str, case_sensitive, first_search, character_to_start_searching_from, |
2015 current_page); | 2009 current_page); |
2016 } | 2010 } |
2017 | 2011 |
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2476 | 2470 |
2477 // Convert |page_size| back to points. | 2471 // Convert |page_size| back to points. |
2478 size->set_width( | 2472 size->set_width( |
2479 ConvertUnit(page_size.width(), kPixelsPerInch, kPointsPerInch)); | 2473 ConvertUnit(page_size.width(), kPixelsPerInch, kPointsPerInch)); |
2480 size->set_height( | 2474 size->set_height( |
2481 ConvertUnit(page_size.height(), kPixelsPerInch, kPointsPerInch)); | 2475 ConvertUnit(page_size.height(), kPixelsPerInch, kPointsPerInch)); |
2482 return true; | 2476 return true; |
2483 } | 2477 } |
2484 | 2478 |
2485 void PDFiumEngine::AppendBlankPages(int num_pages) { | 2479 void PDFiumEngine::AppendBlankPages(int num_pages) { |
2486 DCHECK(num_pages != 0); | 2480 DCHECK_NE(num_pages, 0); |
2487 | 2481 |
2488 if (!doc_) | 2482 if (!doc_) |
2489 return; | 2483 return; |
2490 | 2484 |
2491 selection_.clear(); | 2485 selection_.clear(); |
2492 pending_pages_.clear(); | 2486 pending_pages_.clear(); |
2493 | 2487 |
2494 // Delete all pages except the first one. | 2488 // Delete all pages except the first one. |
2495 while (pages_.size() > 1) { | 2489 while (pages_.size() > 1) { |
2496 delete pages_.back(); | 2490 delete pages_.back(); |
(...skipping 1522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4019 double* height) { | 4013 double* height) { |
4020 FPDF_DOCUMENT doc = FPDF_LoadMemDocument(pdf_buffer, pdf_buffer_size, NULL); | 4014 FPDF_DOCUMENT doc = FPDF_LoadMemDocument(pdf_buffer, pdf_buffer_size, NULL); |
4021 if (!doc) | 4015 if (!doc) |
4022 return false; | 4016 return false; |
4023 bool success = FPDF_GetPageSizeByIndex(doc, page_number, width, height) != 0; | 4017 bool success = FPDF_GetPageSizeByIndex(doc, page_number, width, height) != 0; |
4024 FPDF_CloseDocument(doc); | 4018 FPDF_CloseDocument(doc); |
4025 return success; | 4019 return success; |
4026 } | 4020 } |
4027 | 4021 |
4028 } // namespace chrome_pdf | 4022 } // namespace chrome_pdf |
OLD | NEW |