Index: pdf/pdfium/pdfium_engine.cc |
diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc |
index 8ab5a1bb67b2f5d879aeaf7561377195c36ad1c2..ce6b110e727320cc406608aff10f813ab93cc68e 100644 |
--- a/pdf/pdfium/pdfium_engine.cc |
+++ b/pdf/pdfium/pdfium_engine.cc |
@@ -594,6 +594,7 @@ void SetUpV8() { |
gin::IsolateHolder::Initialize(gin::IsolateHolder::kNonStrictMode, |
gin::IsolateHolder::kStableV8Extras, |
gin::ArrayBufferAllocator::SharedInstance()); |
+ DCHECK(!g_isolate_holder); |
g_isolate_holder = new gin::IsolateHolder(base::ThreadTaskRunnerHandle::Get(), |
gin::IsolateHolder::kSingleThread); |
g_isolate_holder->isolate()->Enter(); |
@@ -616,6 +617,10 @@ int GetBlockForJpeg(void* param, |
return 1; |
} |
+std::string WideStringToString(FPDF_WIDESTRING wide_string) { |
+ return base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(wide_string)); |
+} |
+ |
} // namespace |
bool InitializeSDK() { |
@@ -795,16 +800,11 @@ void PDFiumEngine::Form_EmailTo(FPDF_FORMFILLINFO* param, |
FPDF_WIDESTRING cc, |
FPDF_WIDESTRING bcc, |
FPDF_WIDESTRING message) { |
- std::string to_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(to)); |
- std::string subject_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(subject)); |
- std::string cc_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(cc)); |
- std::string bcc_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(bcc)); |
- std::string message_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(message)); |
+ std::string to_str = WideStringToString(to); |
+ std::string subject_str = WideStringToString(subject); |
+ std::string cc_str = WideStringToString(cc); |
+ std::string bcc_str = WideStringToString(bcc); |
+ std::string message_str = WideStringToString(message); |
PDFiumEngine* engine = static_cast<PDFiumEngine*>(param); |
engine->client_->Email(to_str, cc_str, bcc_str, subject_str, message_str); |
@@ -892,16 +892,11 @@ FPDF_BOOL PDFiumEngine::Form_PostRequestURL(FPDF_FORMFILLINFO* param, |
FPDF_WIDESTRING encode, |
FPDF_WIDESTRING header, |
FPDF_BSTR* response) { |
- std::string url_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(url)); |
- std::string data_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(data)); |
- std::string content_type_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(content_type)); |
- std::string encode_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(encode)); |
- std::string header_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(header)); |
+ std::string url_str = WideStringToString(url); |
+ std::string data_str = WideStringToString(data); |
+ std::string content_type_str = WideStringToString(content_type); |
+ std::string encode_str = WideStringToString(encode); |
+ std::string header_str = WideStringToString(header); |
std::string javascript = "alert(\"Post:" + url_str + "," + data_str + "," + |
content_type_str + "," + encode_str + "," + |
@@ -913,12 +908,9 @@ FPDF_BOOL PDFiumEngine::Form_PutRequestURL(FPDF_FORMFILLINFO* param, |
FPDF_WIDESTRING url, |
FPDF_WIDESTRING data, |
FPDF_WIDESTRING encode) { |
- std::string url_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(url)); |
- std::string data_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(data)); |
- std::string encode_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(encode)); |
+ std::string url_str = WideStringToString(url); |
+ std::string data_str = WideStringToString(data); |
+ std::string encode_str = WideStringToString(encode); |
std::string javascript = |
"alert(\"Put:" + url_str + "," + data_str + "," + encode_str + "\")"; |
@@ -930,8 +922,7 @@ void PDFiumEngine::Form_UploadTo(FPDF_FORMFILLINFO* param, |
FPDF_FILEHANDLER* file_handle, |
int file_flag, |
FPDF_WIDESTRING to) { |
- std::string to_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(to)); |
+ std::string to_str = WideStringToString(to); |
// TODO: needs the full implementation of form uploading |
} |
@@ -954,8 +945,7 @@ FPDF_FILEHANDLER* PDFiumEngine::Form_OpenFile(FPDF_FORMFILLINFO* param, |
void PDFiumEngine::Form_GotoURL(FPDF_FORMFILLINFO* param, |
FPDF_DOCUMENT document, |
FPDF_WIDESTRING url) { |
- std::string url_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(url)); |
+ std::string url_str = WideStringToString(url); |
// TODO: needs to implement GOTO URL action |
} |
@@ -1367,10 +1357,9 @@ pp::Resource PDFiumEngine::PrintPages( |
if (HasPermission(PDFEngine::PERMISSION_PRINT_HIGH_QUALITY) && |
(print_settings.format & PP_PRINTOUTPUTFORMAT_PDF)) { |
return PrintPagesAsPDF(page_ranges, page_range_count, print_settings); |
- } else if (HasPermission(PDFEngine::PERMISSION_PRINT_LOW_QUALITY)) { |
- return PrintPagesAsRasterPDF(page_ranges, page_range_count, print_settings); |
} |
- |
+ if (HasPermission(PDFEngine::PERMISSION_PRINT_LOW_QUALITY)) |
+ return PrintPagesAsRasterPDF(page_ranges, page_range_count, print_settings); |
return pp::Resource(); |
} |
@@ -2205,23 +2194,15 @@ bool PDFiumEngine::SelectFindResult(bool forward) { |
resume_find_index_.Invalidate(); |
} else if (current_find_index_.valid()) { |
size_t current_index = current_find_index_.GetIndex(); |
- if (forward) { |
- if (current_index >= last_index) { |
- current_find_index_.Invalidate(); |
- client_->NotifySelectedFindResultChanged(-1); |
- client_->NotifyNumberOfFindResultsChanged(find_results_.size(), true); |
- return true; |
- } |
- new_index = current_index + 1; |
- } else { |
- if (current_find_index_.GetIndex() == 0) { |
- current_find_index_.Invalidate(); |
- client_->NotifySelectedFindResultChanged(-1); |
- client_->NotifyNumberOfFindResultsChanged(find_results_.size(), true); |
- return true; |
- } |
- new_index = current_index - 1; |
+ if ((forward && current_index >= last_index) || |
+ (!forward && current_index == 0)) { |
+ current_find_index_.Invalidate(); |
+ client_->NotifySelectedFindResultChanged(-1); |
+ client_->NotifyNumberOfFindResultsChanged(find_results_.size(), true); |
+ return true; |
} |
+ int increment = forward ? 1 : -1; |
+ new_index = current_index + increment; |
} else { |
new_index = forward ? 0 : last_index; |
} |
@@ -3730,8 +3711,7 @@ int PDFiumEngine::Form_Alert(IPDF_JSPLATFORM* param, |
}; |
PDFiumEngine* engine = static_cast<PDFiumEngine*>(param); |
- std::string message_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(message)); |
+ std::string message_str = WideStringToString(message); |
if (type == ALERT_TYPE_OK) { |
engine->client_->Alert(message_str); |
return ALERT_RESULT_OK; |
@@ -3755,10 +3735,8 @@ int PDFiumEngine::Form_Response(IPDF_JSPLATFORM* param, |
FPDF_BOOL password, |
void* response, |
int length) { |
- std::string question_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(question)); |
- std::string default_str = base::UTF16ToUTF8( |
- reinterpret_cast<const base::char16*>(default_response)); |
+ std::string question_str = WideStringToString(question); |
+ std::string default_str = WideStringToString(default_response); |
PDFiumEngine* engine = static_cast<PDFiumEngine*>(param); |
std::string rv = engine->client_->Prompt(question_str, default_str); |
@@ -3792,16 +3770,11 @@ void PDFiumEngine::Form_Mail(IPDF_JSPLATFORM* param, |
FPDF_WIDESTRING message) { |
// Note: |mail_data| and |length| are ignored. We don't handle attachments; |
// there is no way with mailto. |
- std::string to_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(to)); |
- std::string cc_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(cc)); |
- std::string bcc_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(bcc)); |
- std::string subject_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(subject)); |
- std::string message_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(message)); |
+ std::string to_str = WideStringToString(to); |
+ std::string cc_str = WideStringToString(cc); |
+ std::string bcc_str = WideStringToString(bcc); |
+ std::string subject_str = WideStringToString(subject); |
+ std::string message_str = WideStringToString(message); |
PDFiumEngine* engine = static_cast<PDFiumEngine*>(param); |
engine->client_->Email(to_str, cc_str, bcc_str, subject_str, message_str); |
@@ -3826,8 +3799,7 @@ void PDFiumEngine::Form_SubmitForm(IPDF_JSPLATFORM* param, |
void* form_data, |
int length, |
FPDF_WIDESTRING url) { |
- std::string url_str = |
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(url)); |
+ std::string url_str = WideStringToString(url); |
PDFiumEngine* engine = static_cast<PDFiumEngine*>(param); |
engine->client_->SubmitForm(url_str, form_data, length); |
} |