Index: pdf/pdfium/pdfium_engine.h |
diff --git a/pdf/pdfium/pdfium_engine.h b/pdf/pdfium/pdfium_engine.h |
index 7f7d1136cc2375b8a947920b9dea770824a90118..c7bf28e204d09f6694848e433c2ef5512e39d008 100644 |
--- a/pdf/pdfium/pdfium_engine.h |
+++ b/pdf/pdfium/pdfium_engine.h |
@@ -15,6 +15,7 @@ |
#include <vector> |
#include "base/macros.h" |
+#include "base/optional.h" |
#include "base/time/time.h" |
#include "pdf/document_loader.h" |
#include "pdf/pdf_engine.h" |
@@ -249,6 +250,11 @@ class PDFiumEngine : public PDFEngine, |
// must have been called first. |
bool IsPageVisible(int index) const; |
+ // Internal interface that caches the page index requested by PDFium to get |
+ // scrolled to. The cache is to be be used during the interval the PDF |
+ // plugin has not finished handling the scroll request. |
+ void ScrollToPage(int page); |
+ |
// Checks if a page is now available, and if so marks it as such and returns |
// true. Otherwise, it will return false and will add the index to the given |
// array if it's not already there. |
@@ -678,6 +684,10 @@ class PDFiumEngine : public PDFEngine, |
// calling CalculateVisiblePages() |
int most_visible_page_; |
+ // Holds the page index requested by PDFium while the scroll operation |
+ // is being handled (asynchronously). |
+ base::Optional<int> in_flight_visible_page_; |
+ |
// Set to true after FORM_DoDocumentJSAction/FORM_DoDocumentOpenAction have |
// been called. Only after that can we call FORM_DoPageAAction. |
bool called_do_document_action_; |