| Index: pdf/pdfium/pdfium_engine.cc
|
| diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc
|
| index 87f8d65dc90e3a09695495146564febe52b6ce6c..6407c712701da965d7e5a03e1c03ad7a67ae8b16 100644
|
| --- a/pdf/pdfium/pdfium_engine.cc
|
| +++ b/pdf/pdfium/pdfium_engine.cc
|
| @@ -31,6 +31,7 @@
|
| #include "ppapi/cpp/trusted/browser_font_trusted.h"
|
| #include "ppapi/cpp/url_response_info.h"
|
| #include "ppapi/cpp/var.h"
|
| +#include "ppapi/cpp/var_dictionary.h"
|
| #include "third_party/pdfium/fpdfsdk/include/fpdf_ext.h"
|
| #include "third_party/pdfium/fpdfsdk/include/fpdf_flatten.h"
|
| #include "third_party/pdfium/fpdfsdk/include/fpdf_searchex.h"
|
| @@ -2333,6 +2334,33 @@ int PDFiumEngine::GetNamedDestinationPage(const std::string& destination) {
|
| return dest ? FPDFDest_GetPageIndex(doc_, dest) : -1;
|
| }
|
|
|
| +pp::VarDictionary PDFiumEngine::GetNamedDestinations() {
|
| + pp::VarDictionary named_destinations;
|
| + for (unsigned long i = 0; i < FPDF_CountNamedDests(doc_); i++) {
|
| + base::string16 name;
|
| + unsigned long buffer_bytes;
|
| + FPDF_GetNamedDest(doc_, i, NULL, buffer_bytes);
|
| + unsigned long name_length =
|
| + buffer_bytes / sizeof(base::string16::value_type);
|
| + if (name_length > 0) {
|
| + PDFiumAPIStringBufferAdapter<base::string16> api_string_adapter(
|
| + &name, name_length, true);
|
| + FPDF_DEST dest = FPDF_GetNamedDest(doc_, i, api_string_adapter.GetData(),
|
| + buffer_bytes);
|
| + api_string_adapter.Close(name_length);
|
| + if (dest) {
|
| + std::string named_dest = base::UTF16ToUTF8(name);
|
| + int page_number = GetNamedDestinationPage(named_dest);
|
| + if (page_number >= 0) {
|
| + named_destinations.Set(pp::Var(named_dest.c_str()),
|
| + pp::Var(page_number));
|
| + }
|
| + }
|
| + }
|
| + }
|
| + return named_destinations;
|
| +}
|
| +
|
| int PDFiumEngine::GetFirstVisiblePage() {
|
| CalculateVisiblePages();
|
| return first_visible_page_;
|
|
|