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

Side by Side Diff: pdf/pdfium/pdfium_engine.cc

Issue 2872083002: Add a WideStringToString() helper function to PDFiumEngine. (Closed)
Patch Set: self review Created 3 years, 7 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 FPDF_GetMetaText(doc, key.c_str(), string_adapter.GetData(), size)); 587 FPDF_GetMetaText(doc, key.c_str(), string_adapter.GetData(), size));
588 return base::UTF16ToUTF8(value); 588 return base::UTF16ToUTF8(value);
589 } 589 }
590 590
591 gin::IsolateHolder* g_isolate_holder = nullptr; 591 gin::IsolateHolder* g_isolate_holder = nullptr;
592 592
593 void SetUpV8() { 593 void SetUpV8() {
594 gin::IsolateHolder::Initialize(gin::IsolateHolder::kNonStrictMode, 594 gin::IsolateHolder::Initialize(gin::IsolateHolder::kNonStrictMode,
595 gin::IsolateHolder::kStableV8Extras, 595 gin::IsolateHolder::kStableV8Extras,
596 gin::ArrayBufferAllocator::SharedInstance()); 596 gin::ArrayBufferAllocator::SharedInstance());
597 DCHECK(!g_isolate_holder);
597 g_isolate_holder = new gin::IsolateHolder(base::ThreadTaskRunnerHandle::Get(), 598 g_isolate_holder = new gin::IsolateHolder(base::ThreadTaskRunnerHandle::Get(),
598 gin::IsolateHolder::kSingleThread); 599 gin::IsolateHolder::kSingleThread);
599 g_isolate_holder->isolate()->Enter(); 600 g_isolate_holder->isolate()->Enter();
600 } 601 }
601 602
602 void TearDownV8() { 603 void TearDownV8() {
603 g_isolate_holder->isolate()->Exit(); 604 g_isolate_holder->isolate()->Exit();
604 delete g_isolate_holder; 605 delete g_isolate_holder;
605 g_isolate_holder = nullptr; 606 g_isolate_holder = nullptr;
606 } 607 }
607 608
608 int GetBlockForJpeg(void* param, 609 int GetBlockForJpeg(void* param,
609 unsigned long pos, 610 unsigned long pos,
610 unsigned char* buf, 611 unsigned char* buf,
611 unsigned long size) { 612 unsigned long size) {
612 std::vector<uint8_t>* data_vector = static_cast<std::vector<uint8_t>*>(param); 613 std::vector<uint8_t>* data_vector = static_cast<std::vector<uint8_t>*>(param);
613 if (pos + size < pos || pos + size > data_vector->size()) 614 if (pos + size < pos || pos + size > data_vector->size())
614 return 0; 615 return 0;
615 memcpy(buf, data_vector->data() + pos, size); 616 memcpy(buf, data_vector->data() + pos, size);
616 return 1; 617 return 1;
617 } 618 }
618 619
620 std::string WideStringToString(FPDF_WIDESTRING wide_string) {
621 return base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(wide_string));
622 }
623
619 } // namespace 624 } // namespace
620 625
621 bool InitializeSDK() { 626 bool InitializeSDK() {
622 SetUpV8(); 627 SetUpV8();
623 628
624 FPDF_LIBRARY_CONFIG config; 629 FPDF_LIBRARY_CONFIG config;
625 config.version = 2; 630 config.version = 2;
626 config.m_pUserFontPaths = nullptr; 631 config.m_pUserFontPaths = nullptr;
627 config.m_pIsolate = v8::Isolate::GetCurrent(); 632 config.m_pIsolate = v8::Isolate::GetCurrent();
628 config.m_v8EmbedderSlot = gin::kEmbedderPDFium; 633 config.m_v8EmbedderSlot = gin::kEmbedderPDFium;
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
788 793
789 #if defined(PDF_ENABLE_XFA) 794 #if defined(PDF_ENABLE_XFA)
790 795
791 void PDFiumEngine::Form_EmailTo(FPDF_FORMFILLINFO* param, 796 void PDFiumEngine::Form_EmailTo(FPDF_FORMFILLINFO* param,
792 FPDF_FILEHANDLER* file_handler, 797 FPDF_FILEHANDLER* file_handler,
793 FPDF_WIDESTRING to, 798 FPDF_WIDESTRING to,
794 FPDF_WIDESTRING subject, 799 FPDF_WIDESTRING subject,
795 FPDF_WIDESTRING cc, 800 FPDF_WIDESTRING cc,
796 FPDF_WIDESTRING bcc, 801 FPDF_WIDESTRING bcc,
797 FPDF_WIDESTRING message) { 802 FPDF_WIDESTRING message) {
798 std::string to_str = 803 std::string to_str = WideStringToString(to);
799 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(to)); 804 std::string subject_str = WideStringToString(subject);
800 std::string subject_str = 805 std::string cc_str = WideStringToString(cc);
801 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(subject)); 806 std::string bcc_str = WideStringToString(bcc);
802 std::string cc_str = 807 std::string message_str = WideStringToString(message);
803 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(cc));
804 std::string bcc_str =
805 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(bcc));
806 std::string message_str =
807 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(message));
808 808
809 PDFiumEngine* engine = static_cast<PDFiumEngine*>(param); 809 PDFiumEngine* engine = static_cast<PDFiumEngine*>(param);
810 engine->client_->Email(to_str, cc_str, bcc_str, subject_str, message_str); 810 engine->client_->Email(to_str, cc_str, bcc_str, subject_str, message_str);
811 } 811 }
812 812
813 void PDFiumEngine::Form_DisplayCaret(FPDF_FORMFILLINFO* param, 813 void PDFiumEngine::Form_DisplayCaret(FPDF_FORMFILLINFO* param,
814 FPDF_PAGE page, 814 FPDF_PAGE page,
815 FPDF_BOOL visible, 815 FPDF_BOOL visible,
816 double left, 816 double left,
817 double top, 817 double top,
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
885 return false; 885 return false;
886 } 886 }
887 887
888 FPDF_BOOL PDFiumEngine::Form_PostRequestURL(FPDF_FORMFILLINFO* param, 888 FPDF_BOOL PDFiumEngine::Form_PostRequestURL(FPDF_FORMFILLINFO* param,
889 FPDF_WIDESTRING url, 889 FPDF_WIDESTRING url,
890 FPDF_WIDESTRING data, 890 FPDF_WIDESTRING data,
891 FPDF_WIDESTRING content_type, 891 FPDF_WIDESTRING content_type,
892 FPDF_WIDESTRING encode, 892 FPDF_WIDESTRING encode,
893 FPDF_WIDESTRING header, 893 FPDF_WIDESTRING header,
894 FPDF_BSTR* response) { 894 FPDF_BSTR* response) {
895 std::string url_str = 895 std::string url_str = WideStringToString(url);
896 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(url)); 896 std::string data_str = WideStringToString(data);
897 std::string data_str = 897 std::string content_type_str = WideStringToString(content_type);
898 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(data)); 898 std::string encode_str = WideStringToString(encode);
899 std::string content_type_str = 899 std::string header_str = WideStringToString(header);
900 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(content_type));
901 std::string encode_str =
902 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(encode));
903 std::string header_str =
904 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(header));
905 900
906 std::string javascript = "alert(\"Post:" + url_str + "," + data_str + "," + 901 std::string javascript = "alert(\"Post:" + url_str + "," + data_str + "," +
907 content_type_str + "," + encode_str + "," + 902 content_type_str + "," + encode_str + "," +
908 header_str + "\")"; 903 header_str + "\")";
909 return true; 904 return true;
910 } 905 }
911 906
912 FPDF_BOOL PDFiumEngine::Form_PutRequestURL(FPDF_FORMFILLINFO* param, 907 FPDF_BOOL PDFiumEngine::Form_PutRequestURL(FPDF_FORMFILLINFO* param,
913 FPDF_WIDESTRING url, 908 FPDF_WIDESTRING url,
914 FPDF_WIDESTRING data, 909 FPDF_WIDESTRING data,
915 FPDF_WIDESTRING encode) { 910 FPDF_WIDESTRING encode) {
916 std::string url_str = 911 std::string url_str = WideStringToString(url);
917 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(url)); 912 std::string data_str = WideStringToString(data);
918 std::string data_str = 913 std::string encode_str = WideStringToString(encode);
919 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(data));
920 std::string encode_str =
921 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(encode));
922 914
923 std::string javascript = 915 std::string javascript =
924 "alert(\"Put:" + url_str + "," + data_str + "," + encode_str + "\")"; 916 "alert(\"Put:" + url_str + "," + data_str + "," + encode_str + "\")";
925 917
926 return true; 918 return true;
927 } 919 }
928 920
929 void PDFiumEngine::Form_UploadTo(FPDF_FORMFILLINFO* param, 921 void PDFiumEngine::Form_UploadTo(FPDF_FORMFILLINFO* param,
930 FPDF_FILEHANDLER* file_handle, 922 FPDF_FILEHANDLER* file_handle,
931 int file_flag, 923 int file_flag,
932 FPDF_WIDESTRING to) { 924 FPDF_WIDESTRING to) {
933 std::string to_str = 925 std::string to_str = WideStringToString(to);
934 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(to));
935 // TODO: needs the full implementation of form uploading 926 // TODO: needs the full implementation of form uploading
936 } 927 }
937 928
938 FPDF_LPFILEHANDLER PDFiumEngine::Form_DownloadFromURL(FPDF_FORMFILLINFO* param, 929 FPDF_LPFILEHANDLER PDFiumEngine::Form_DownloadFromURL(FPDF_FORMFILLINFO* param,
939 FPDF_WIDESTRING url) { 930 FPDF_WIDESTRING url) {
940 // NOTE: Think hard about the security implications before allowing 931 // NOTE: Think hard about the security implications before allowing
941 // a PDF file to perform this action. 932 // a PDF file to perform this action.
942 return nullptr; 933 return nullptr;
943 } 934 }
944 935
945 FPDF_FILEHANDLER* PDFiumEngine::Form_OpenFile(FPDF_FORMFILLINFO* param, 936 FPDF_FILEHANDLER* PDFiumEngine::Form_OpenFile(FPDF_FORMFILLINFO* param,
946 int file_flag, 937 int file_flag,
947 FPDF_WIDESTRING url, 938 FPDF_WIDESTRING url,
948 const char* mode) { 939 const char* mode) {
949 // NOTE: Think hard about the security implications before allowing 940 // NOTE: Think hard about the security implications before allowing
950 // a PDF file to perform this action. 941 // a PDF file to perform this action.
951 return nullptr; 942 return nullptr;
952 } 943 }
953 944
954 void PDFiumEngine::Form_GotoURL(FPDF_FORMFILLINFO* param, 945 void PDFiumEngine::Form_GotoURL(FPDF_FORMFILLINFO* param,
955 FPDF_DOCUMENT document, 946 FPDF_DOCUMENT document,
956 FPDF_WIDESTRING url) { 947 FPDF_WIDESTRING url) {
957 std::string url_str = 948 std::string url_str = WideStringToString(url);
958 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(url));
959 // TODO: needs to implement GOTO URL action 949 // TODO: needs to implement GOTO URL action
960 } 950 }
961 951
962 int PDFiumEngine::Form_GetLanguage(FPDF_FORMFILLINFO* param, 952 int PDFiumEngine::Form_GetLanguage(FPDF_FORMFILLINFO* param,
963 void* language, 953 void* language,
964 int length) { 954 int length) {
965 return 0; 955 return 0;
966 } 956 }
967 957
968 #endif // defined(PDF_ENABLE_XFA) 958 #endif // defined(PDF_ENABLE_XFA)
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
1360 } 1350 }
1361 1351
1362 pp::Resource PDFiumEngine::PrintPages( 1352 pp::Resource PDFiumEngine::PrintPages(
1363 const PP_PrintPageNumberRange_Dev* page_ranges, 1353 const PP_PrintPageNumberRange_Dev* page_ranges,
1364 uint32_t page_range_count, 1354 uint32_t page_range_count,
1365 const PP_PrintSettings_Dev& print_settings) { 1355 const PP_PrintSettings_Dev& print_settings) {
1366 ScopedSubstFont scoped_subst_font(this); 1356 ScopedSubstFont scoped_subst_font(this);
1367 if (HasPermission(PDFEngine::PERMISSION_PRINT_HIGH_QUALITY) && 1357 if (HasPermission(PDFEngine::PERMISSION_PRINT_HIGH_QUALITY) &&
1368 (print_settings.format & PP_PRINTOUTPUTFORMAT_PDF)) { 1358 (print_settings.format & PP_PRINTOUTPUTFORMAT_PDF)) {
1369 return PrintPagesAsPDF(page_ranges, page_range_count, print_settings); 1359 return PrintPagesAsPDF(page_ranges, page_range_count, print_settings);
1370 } else if (HasPermission(PDFEngine::PERMISSION_PRINT_LOW_QUALITY)) { 1360 }
1361 if (HasPermission(PDFEngine::PERMISSION_PRINT_LOW_QUALITY))
1371 return PrintPagesAsRasterPDF(page_ranges, page_range_count, print_settings); 1362 return PrintPagesAsRasterPDF(page_ranges, page_range_count, print_settings);
1372 }
1373
1374 return pp::Resource(); 1363 return pp::Resource();
1375 } 1364 }
1376 1365
1377 FPDF_DOCUMENT PDFiumEngine::CreateSinglePageRasterPdf( 1366 FPDF_DOCUMENT PDFiumEngine::CreateSinglePageRasterPdf(
1378 double source_page_width, 1367 double source_page_width,
1379 double source_page_height, 1368 double source_page_height,
1380 const PP_PrintSettings_Dev& print_settings, 1369 const PP_PrintSettings_Dev& print_settings,
1381 PDFiumPage* page_to_print) { 1370 PDFiumPage* page_to_print) {
1382 FPDF_DOCUMENT temp_doc = FPDF_CreateNewDocument(); 1371 FPDF_DOCUMENT temp_doc = FPDF_CreateNewDocument();
1383 if (!temp_doc) 1372 if (!temp_doc)
(...skipping 814 matching lines...) Expand 10 before | Expand all | Expand 10 after
2198 2187
2199 // Move back/forward through the search locations we previously found. 2188 // Move back/forward through the search locations we previously found.
2200 size_t new_index; 2189 size_t new_index;
2201 const size_t last_index = find_results_.size() - 1; 2190 const size_t last_index = find_results_.size() - 1;
2202 2191
2203 if (resume_find_index_.valid()) { 2192 if (resume_find_index_.valid()) {
2204 new_index = resume_find_index_.GetIndex(); 2193 new_index = resume_find_index_.GetIndex();
2205 resume_find_index_.Invalidate(); 2194 resume_find_index_.Invalidate();
2206 } else if (current_find_index_.valid()) { 2195 } else if (current_find_index_.valid()) {
2207 size_t current_index = current_find_index_.GetIndex(); 2196 size_t current_index = current_find_index_.GetIndex();
2208 if (forward) { 2197 if ((forward && current_index >= last_index) ||
2209 if (current_index >= last_index) { 2198 (!forward && current_index == 0)) {
2210 current_find_index_.Invalidate(); 2199 current_find_index_.Invalidate();
2211 client_->NotifySelectedFindResultChanged(-1); 2200 client_->NotifySelectedFindResultChanged(-1);
2212 client_->NotifyNumberOfFindResultsChanged(find_results_.size(), true); 2201 client_->NotifyNumberOfFindResultsChanged(find_results_.size(), true);
2213 return true; 2202 return true;
2214 }
2215 new_index = current_index + 1;
2216 } else {
2217 if (current_find_index_.GetIndex() == 0) {
2218 current_find_index_.Invalidate();
2219 client_->NotifySelectedFindResultChanged(-1);
2220 client_->NotifyNumberOfFindResultsChanged(find_results_.size(), true);
2221 return true;
2222 }
2223 new_index = current_index - 1;
2224 } 2203 }
2204 int increment = forward ? 1 : -1;
2205 new_index = current_index + increment;
2225 } else { 2206 } else {
2226 new_index = forward ? 0 : last_index; 2207 new_index = forward ? 0 : last_index;
2227 } 2208 }
2228 current_find_index_.SetIndex(new_index); 2209 current_find_index_.SetIndex(new_index);
2229 2210
2230 // Update the selection before telling the client to scroll, since it could 2211 // Update the selection before telling the client to scroll, since it could
2231 // paint then. 2212 // paint then.
2232 selection_.clear(); 2213 selection_.clear();
2233 selection_.push_back(find_results_[current_find_index_.GetIndex()]); 2214 selection_.push_back(find_results_[current_find_index_.GetIndex()]);
2234 2215
(...skipping 1488 matching lines...) Expand 10 before | Expand all | Expand 10 after
3723 }; 3704 };
3724 3705
3725 enum AlertResult { 3706 enum AlertResult {
3726 ALERT_RESULT_OK = 1, 3707 ALERT_RESULT_OK = 1,
3727 ALERT_RESULT_CANCEL, 3708 ALERT_RESULT_CANCEL,
3728 ALERT_RESULT_NO, 3709 ALERT_RESULT_NO,
3729 ALERT_RESULT_YES 3710 ALERT_RESULT_YES
3730 }; 3711 };
3731 3712
3732 PDFiumEngine* engine = static_cast<PDFiumEngine*>(param); 3713 PDFiumEngine* engine = static_cast<PDFiumEngine*>(param);
3733 std::string message_str = 3714 std::string message_str = WideStringToString(message);
3734 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(message));
3735 if (type == ALERT_TYPE_OK) { 3715 if (type == ALERT_TYPE_OK) {
3736 engine->client_->Alert(message_str); 3716 engine->client_->Alert(message_str);
3737 return ALERT_RESULT_OK; 3717 return ALERT_RESULT_OK;
3738 } 3718 }
3739 3719
3740 bool rv = engine->client_->Confirm(message_str); 3720 bool rv = engine->client_->Confirm(message_str);
3741 if (type == ALERT_TYPE_OK_CANCEL) 3721 if (type == ALERT_TYPE_OK_CANCEL)
3742 return rv ? ALERT_RESULT_OK : ALERT_RESULT_CANCEL; 3722 return rv ? ALERT_RESULT_OK : ALERT_RESULT_CANCEL;
3743 return rv ? ALERT_RESULT_YES : ALERT_RESULT_NO; 3723 return rv ? ALERT_RESULT_YES : ALERT_RESULT_NO;
3744 } 3724 }
3745 3725
3746 void PDFiumEngine::Form_Beep(IPDF_JSPLATFORM* param, int type) { 3726 void PDFiumEngine::Form_Beep(IPDF_JSPLATFORM* param, int type) {
3747 // Beeps are annoying, and not possible using javascript, so ignore for now. 3727 // Beeps are annoying, and not possible using javascript, so ignore for now.
3748 } 3728 }
3749 3729
3750 int PDFiumEngine::Form_Response(IPDF_JSPLATFORM* param, 3730 int PDFiumEngine::Form_Response(IPDF_JSPLATFORM* param,
3751 FPDF_WIDESTRING question, 3731 FPDF_WIDESTRING question,
3752 FPDF_WIDESTRING title, 3732 FPDF_WIDESTRING title,
3753 FPDF_WIDESTRING default_response, 3733 FPDF_WIDESTRING default_response,
3754 FPDF_WIDESTRING label, 3734 FPDF_WIDESTRING label,
3755 FPDF_BOOL password, 3735 FPDF_BOOL password,
3756 void* response, 3736 void* response,
3757 int length) { 3737 int length) {
3758 std::string question_str = 3738 std::string question_str = WideStringToString(question);
3759 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(question)); 3739 std::string default_str = WideStringToString(default_response);
3760 std::string default_str = base::UTF16ToUTF8(
3761 reinterpret_cast<const base::char16*>(default_response));
3762 3740
3763 PDFiumEngine* engine = static_cast<PDFiumEngine*>(param); 3741 PDFiumEngine* engine = static_cast<PDFiumEngine*>(param);
3764 std::string rv = engine->client_->Prompt(question_str, default_str); 3742 std::string rv = engine->client_->Prompt(question_str, default_str);
3765 base::string16 rv_16 = base::UTF8ToUTF16(rv); 3743 base::string16 rv_16 = base::UTF8ToUTF16(rv);
3766 int rv_bytes = rv_16.size() * sizeof(base::char16); 3744 int rv_bytes = rv_16.size() * sizeof(base::char16);
3767 if (response) { 3745 if (response) {
3768 int bytes_to_copy = rv_bytes < length ? rv_bytes : length; 3746 int bytes_to_copy = rv_bytes < length ? rv_bytes : length;
3769 memcpy(response, rv_16.c_str(), bytes_to_copy); 3747 memcpy(response, rv_16.c_str(), bytes_to_copy);
3770 } 3748 }
3771 return rv_bytes; 3749 return rv_bytes;
(...skipping 13 matching lines...) Expand all
3785 void* mail_data, 3763 void* mail_data,
3786 int length, 3764 int length,
3787 FPDF_BOOL ui, 3765 FPDF_BOOL ui,
3788 FPDF_WIDESTRING to, 3766 FPDF_WIDESTRING to,
3789 FPDF_WIDESTRING subject, 3767 FPDF_WIDESTRING subject,
3790 FPDF_WIDESTRING cc, 3768 FPDF_WIDESTRING cc,
3791 FPDF_WIDESTRING bcc, 3769 FPDF_WIDESTRING bcc,
3792 FPDF_WIDESTRING message) { 3770 FPDF_WIDESTRING message) {
3793 // Note: |mail_data| and |length| are ignored. We don't handle attachments; 3771 // Note: |mail_data| and |length| are ignored. We don't handle attachments;
3794 // there is no way with mailto. 3772 // there is no way with mailto.
3795 std::string to_str = 3773 std::string to_str = WideStringToString(to);
3796 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(to)); 3774 std::string cc_str = WideStringToString(cc);
3797 std::string cc_str = 3775 std::string bcc_str = WideStringToString(bcc);
3798 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(cc)); 3776 std::string subject_str = WideStringToString(subject);
3799 std::string bcc_str = 3777 std::string message_str = WideStringToString(message);
3800 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(bcc));
3801 std::string subject_str =
3802 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(subject));
3803 std::string message_str =
3804 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(message));
3805 3778
3806 PDFiumEngine* engine = static_cast<PDFiumEngine*>(param); 3779 PDFiumEngine* engine = static_cast<PDFiumEngine*>(param);
3807 engine->client_->Email(to_str, cc_str, bcc_str, subject_str, message_str); 3780 engine->client_->Email(to_str, cc_str, bcc_str, subject_str, message_str);
3808 } 3781 }
3809 3782
3810 void PDFiumEngine::Form_Print(IPDF_JSPLATFORM* param, 3783 void PDFiumEngine::Form_Print(IPDF_JSPLATFORM* param,
3811 FPDF_BOOL ui, 3784 FPDF_BOOL ui,
3812 int start, 3785 int start,
3813 int end, 3786 int end,
3814 FPDF_BOOL silent, 3787 FPDF_BOOL silent,
3815 FPDF_BOOL shrink_to_fit, 3788 FPDF_BOOL shrink_to_fit,
3816 FPDF_BOOL print_as_image, 3789 FPDF_BOOL print_as_image,
3817 FPDF_BOOL reverse, 3790 FPDF_BOOL reverse,
3818 FPDF_BOOL annotations) { 3791 FPDF_BOOL annotations) {
3819 // No way to pass the extra information to the print dialog using JavaScript. 3792 // No way to pass the extra information to the print dialog using JavaScript.
3820 // Just opening it is fine for now. 3793 // Just opening it is fine for now.
3821 PDFiumEngine* engine = static_cast<PDFiumEngine*>(param); 3794 PDFiumEngine* engine = static_cast<PDFiumEngine*>(param);
3822 engine->client_->Print(); 3795 engine->client_->Print();
3823 } 3796 }
3824 3797
3825 void PDFiumEngine::Form_SubmitForm(IPDF_JSPLATFORM* param, 3798 void PDFiumEngine::Form_SubmitForm(IPDF_JSPLATFORM* param,
3826 void* form_data, 3799 void* form_data,
3827 int length, 3800 int length,
3828 FPDF_WIDESTRING url) { 3801 FPDF_WIDESTRING url) {
3829 std::string url_str = 3802 std::string url_str = WideStringToString(url);
3830 base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(url));
3831 PDFiumEngine* engine = static_cast<PDFiumEngine*>(param); 3803 PDFiumEngine* engine = static_cast<PDFiumEngine*>(param);
3832 engine->client_->SubmitForm(url_str, form_data, length); 3804 engine->client_->SubmitForm(url_str, form_data, length);
3833 } 3805 }
3834 3806
3835 void PDFiumEngine::Form_GotoPage(IPDF_JSPLATFORM* param, int page_number) { 3807 void PDFiumEngine::Form_GotoPage(IPDF_JSPLATFORM* param, int page_number) {
3836 PDFiumEngine* engine = static_cast<PDFiumEngine*>(param); 3808 PDFiumEngine* engine = static_cast<PDFiumEngine*>(param);
3837 engine->ScrollToPage(page_number); 3809 engine->ScrollToPage(page_number);
3838 } 3810 }
3839 3811
3840 int PDFiumEngine::Form_Browse(IPDF_JSPLATFORM* param, 3812 int PDFiumEngine::Form_Browse(IPDF_JSPLATFORM* param,
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
4119 FPDF_DOCUMENT doc = 4091 FPDF_DOCUMENT doc =
4120 FPDF_LoadMemDocument(pdf_buffer, pdf_buffer_size, nullptr); 4092 FPDF_LoadMemDocument(pdf_buffer, pdf_buffer_size, nullptr);
4121 if (!doc) 4093 if (!doc)
4122 return false; 4094 return false;
4123 bool success = FPDF_GetPageSizeByIndex(doc, page_number, width, height) != 0; 4095 bool success = FPDF_GetPageSizeByIndex(doc, page_number, width, height) != 0;
4124 FPDF_CloseDocument(doc); 4096 FPDF_CloseDocument(doc);
4125 return success; 4097 return success;
4126 } 4098 }
4127 4099
4128 } // namespace chrome_pdf 4100 } // namespace chrome_pdf
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698