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

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

Issue 845203002: Don't return Windows newlines through the PDF GetSelectedText JS API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@addMissingFeatures
Patch Set: Created 5 years, 11 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 | « pdf/out_of_process_instance.cc ('k') | 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 8
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 2232 matching lines...) Expand 10 before | Expand all | Expand 10 after
2243 } 2243 }
2244 2244
2245 void PDFiumEngine::InvalidateAllPages() { 2245 void PDFiumEngine::InvalidateAllPages() {
2246 CancelPaints(); 2246 CancelPaints();
2247 StopFind(); 2247 StopFind();
2248 LoadPageInfo(true); 2248 LoadPageInfo(true);
2249 client_->Invalidate(pp::Rect(plugin_size_)); 2249 client_->Invalidate(pp::Rect(plugin_size_));
2250 } 2250 }
2251 2251
2252 std::string PDFiumEngine::GetSelectedText() { 2252 std::string PDFiumEngine::GetSelectedText() {
2253 if (!HasPermission(PDFEngine::PERMISSION_COPY))
2254 return std::string();
2255
2253 base::string16 result; 2256 base::string16 result;
2254 base::string16 new_line_char = base::UTF8ToUTF16("\n"); 2257 base::string16 new_line_char = base::UTF8ToUTF16("\n");
2255 for (size_t i = 0; i < selection_.size(); ++i) { 2258 for (size_t i = 0; i < selection_.size(); ++i) {
2256 if (i > 0 && 2259 if (i > 0 &&
2257 selection_[i - 1].page_index() > selection_[i].page_index()) { 2260 selection_[i - 1].page_index() > selection_[i].page_index()) {
2258 result = selection_[i].GetText() + new_line_char + result; 2261 result = selection_[i].GetText() + new_line_char + result;
2259 } else { 2262 } else {
2260 if (i > 0) 2263 if (i > 0)
2261 result.append(new_line_char); 2264 result.append(new_line_char);
2262 result.append(selection_[i].GetText()); 2265 result.append(selection_[i].GetText());
(...skipping 1074 matching lines...) Expand 10 before | Expand all | Expand 10 after
3337 *region = NULL; 3340 *region = NULL;
3338 return; 3341 return;
3339 } 3342 }
3340 3343
3341 buffer += location.y() * (*stride); 3344 buffer += location.y() * (*stride);
3342 buffer += (location.x() + page_offset_.x()) * 4; 3345 buffer += (location.x() + page_offset_.x()) * 4;
3343 *region = buffer; 3346 *region = buffer;
3344 } 3347 }
3345 3348
3346 void PDFiumEngine::OnSelectionChanged() { 3349 void PDFiumEngine::OnSelectionChanged() {
3347 if (HasPermission(PDFEngine::PERMISSION_COPY)) 3350 pp::PDF::SetSelectedText(GetPluginInstance(), GetSelectedText().c_str());
3348 pp::PDF::SetSelectedText(GetPluginInstance(), GetSelectedText().c_str());
3349 } 3351 }
3350 3352
3351 void PDFiumEngine::RotateInternal() { 3353 void PDFiumEngine::RotateInternal() {
3352 // Store the current find index so that we can resume finding at that 3354 // Store the current find index so that we can resume finding at that
3353 // particular index after we have recomputed the find results. 3355 // particular index after we have recomputed the find results.
3354 std::string current_find_text = current_find_text_; 3356 std::string current_find_text = current_find_text_;
3355 if (current_find_index_.valid()) 3357 if (current_find_index_.valid())
3356 resume_find_index_.SetIndex(current_find_index_.GetIndex()); 3358 resume_find_index_.SetIndex(current_find_index_.GetIndex());
3357 else 3359 else
3358 resume_find_index_.Invalidate(); 3360 resume_find_index_.Invalidate();
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after
3914 double* height) { 3916 double* height) {
3915 FPDF_DOCUMENT doc = FPDF_LoadMemDocument(pdf_buffer, pdf_buffer_size, NULL); 3917 FPDF_DOCUMENT doc = FPDF_LoadMemDocument(pdf_buffer, pdf_buffer_size, NULL);
3916 if (!doc) 3918 if (!doc)
3917 return false; 3919 return false;
3918 bool success = FPDF_GetPageSizeByIndex(doc, page_number, width, height) != 0; 3920 bool success = FPDF_GetPageSizeByIndex(doc, page_number, width, height) != 0;
3919 FPDF_CloseDocument(doc); 3921 FPDF_CloseDocument(doc);
3920 return success; 3922 return success;
3921 } 3923 }
3922 3924
3923 } // namespace chrome_pdf 3925 } // namespace chrome_pdf
OLDNEW
« no previous file with comments | « pdf/out_of_process_instance.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698