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

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

Issue 555803002: PDF Viewer - Search results don't work after rotating pdf (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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/pdfium/pdfium_engine.h ('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 1611 matching lines...) Expand 10 before | Expand all | Expand 10 after
1622 // Only one page but didn't start midway. 1622 // Only one page but didn't start midway.
1623 ((pages_.size() == 1 && last_character_index_to_search_ == -1) || 1623 ((pages_.size() == 1 && last_character_index_to_search_ == -1) ||
1624 // Started midway, but only 1 page and we already looped around. 1624 // Started midway, but only 1 page and we already looped around.
1625 (pages_.size() == 1 && !first_search) || 1625 (pages_.size() == 1 && !first_search) ||
1626 // Started midway, and we've just looped around. 1626 // Started midway, and we've just looped around.
1627 (pages_.size() > 1 && current_page == next_page_to_search_)); 1627 (pages_.size() > 1 && current_page == next_page_to_search_));
1628 1628
1629 if (end_of_search) { 1629 if (end_of_search) {
1630 // Send the final notification. 1630 // Send the final notification.
1631 client_->NotifyNumberOfFindResultsChanged(find_results_.size(), true); 1631 client_->NotifyNumberOfFindResultsChanged(find_results_.size(), true);
1632
1633 // Restore find result state when find is started after rotation.
1634 if (find_result_state_.find_index_ != -1) {
raymes 2014/09/24 03:57:50 It doesn't look like we need a new struct, it look
Nikhil 2014/09/29 08:22:11 Thanks, I've modified the code accordingly. Please
1635 current_find_index_ = find_result_state_.find_index_ - 1;
1636 SelectFindResult(true);
1637 find_result_state_ = FindResultState();
1638 }
1632 } else { 1639 } else {
1633 pp::CompletionCallback callback = 1640 pp::CompletionCallback callback =
1634 find_factory_.NewCallback(&PDFiumEngine::ContinueFind); 1641 find_factory_.NewCallback(&PDFiumEngine::ContinueFind);
1635 pp::Module::Get()->core()->CallOnMainThread( 1642 pp::Module::Get()->core()->CallOnMainThread(
1636 0, callback, case_sensitive ? 1 : 0); 1643 0, callback, case_sensitive ? 1 : 0);
1637 } 1644 }
1638 } 1645 }
1639 1646
1640 void PDFiumEngine::SearchUsingPDFium(const base::string16& term, 1647 void PDFiumEngine::SearchUsingPDFium(const base::string16& term,
1641 bool case_sensitive, 1648 bool case_sensitive,
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
1825 CancelPaints(); 1832 CancelPaints();
1826 1833
1827 current_zoom_ = new_zoom_level; 1834 current_zoom_ = new_zoom_level;
1828 1835
1829 CalculateVisiblePages(); 1836 CalculateVisiblePages();
1830 UpdateTickMarks(); 1837 UpdateTickMarks();
1831 } 1838 }
1832 1839
1833 void PDFiumEngine::RotateClockwise() { 1840 void PDFiumEngine::RotateClockwise() {
1834 current_rotation_ = (current_rotation_ + 1) % 4; 1841 current_rotation_ = (current_rotation_ + 1) % 4;
1842 find_result_state_ = FindResultState(current_find_text_, current_find_index_);
1843
1835 InvalidateAllPages(); 1844 InvalidateAllPages();
1845
1846 // Restore find state if needed.
raymes 2014/09/24 03:57:50 // Store the current find index so that we can res
Nikhil 2014/09/29 08:22:11 Done.
1847 if (!find_result_state_.find_text_.empty())
1848 StartFind(find_result_state_.find_text_.c_str(), false);
raymes 2014/09/22 05:16:45 I don't fully understand the find stuff but can we
Nikhil 2014/09/23 12:18:08 The problem that I faced earlier with this code fl
raymes 2014/09/24 03:57:50 Ah I see how StartFind is asynchronous now, thanks
Nikhil 2014/09/29 08:22:11 Acknowledged.
1836 } 1849 }
1837 1850
1838 void PDFiumEngine::RotateCounterclockwise() { 1851 void PDFiumEngine::RotateCounterclockwise() {
1839 current_rotation_ = (current_rotation_ - 1) % 4; 1852 current_rotation_ = (current_rotation_ - 1) % 4;
1853 find_result_state_ = FindResultState(current_find_text_, current_find_index_);
1854
1840 InvalidateAllPages(); 1855 InvalidateAllPages();
1856
1857 // Restore find state if needed.
1858 if (!find_result_state_.find_text_.empty())
1859 StartFind(find_result_state_.find_text_.c_str(), false);
1841 } 1860 }
1842 1861
1843 void PDFiumEngine::InvalidateAllPages() { 1862 void PDFiumEngine::InvalidateAllPages() {
1844 selection_.clear(); 1863 selection_.clear();
1845 find_results_.clear(); 1864 find_results_.clear();
raymes 2014/09/24 03:57:50 These two lines and UpdateTickMarks() are already
Nikhil 2014/09/29 08:22:11 Done.
1846 1865
1866 StopFind();
raymes 2014/09/24 03:57:50 You might want to move this after CancelPaints() t
Nikhil 2014/09/29 08:22:11 Done.
1847 CancelPaints(); 1867 CancelPaints();
1848 LoadPageInfo(true); 1868 LoadPageInfo(true);
1849 UpdateTickMarks(); 1869 UpdateTickMarks();
1850 client_->Invalidate(pp::Rect(plugin_size_)); 1870 client_->Invalidate(pp::Rect(plugin_size_));
1851 } 1871 }
1852 1872
1853 std::string PDFiumEngine::GetSelectedText() { 1873 std::string PDFiumEngine::GetSelectedText() {
1854 base::string16 result; 1874 base::string16 result;
1855 for (size_t i = 0; i < selection_.size(); ++i) { 1875 for (size_t i = 0; i < selection_.size(); ++i) {
1856 if (i > 0 && 1876 if (i > 0 &&
(...skipping 1569 matching lines...) Expand 10 before | Expand all | Expand 10 after
3426 double* height) { 3446 double* height) {
3427 FPDF_DOCUMENT doc = FPDF_LoadMemDocument(pdf_buffer, pdf_buffer_size, NULL); 3447 FPDF_DOCUMENT doc = FPDF_LoadMemDocument(pdf_buffer, pdf_buffer_size, NULL);
3428 if (!doc) 3448 if (!doc)
3429 return false; 3449 return false;
3430 bool success = FPDF_GetPageSizeByIndex(doc, page_number, width, height) != 0; 3450 bool success = FPDF_GetPageSizeByIndex(doc, page_number, width, height) != 0;
3431 FPDF_CloseDocument(doc); 3451 FPDF_CloseDocument(doc);
3432 return success; 3452 return success;
3433 } 3453 }
3434 3454
3435 } // namespace chrome_pdf 3455 } // namespace chrome_pdf
OLDNEW
« no previous file with comments | « pdf/pdfium/pdfium_engine.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698