15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_C_PRIVATE_PPB_PDF_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_C_PRIVATE_PPB_PDF_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/dev/ppb_font_dev.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_bool.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_instance.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_resource.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_var.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/private/pp_private_font_charset.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_PDF_INTERFACE "PPB_PDF;1"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// From the public PPB_Font_Dev file.
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PP_FontDescription_Dev;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCESTRING_PDFGETPASSWORD = 0,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCESTRING_PDFLOADING = 1,
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCESTRING_PDFLOAD_FAILED = 2,
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCESTRING_PDFPROGRESSLOADING = 3
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PP_ResourceString;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_FTP = 0,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_FTP_HOVER = 1,
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_FTP_PRESSED = 2,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_FTW = 3,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_FTW_HOVER = 4,
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_FTW_PRESSED = 5,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN = 6,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_HOVER = 7,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_PRESSED = 8,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT = 9,
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT_HOVER = 10,
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT_PRESSED = 11,
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_0 = 12,
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_1 = 13,
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_2 = 14,
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_3 = 15,
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_4 = 16,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_5 = 17,
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_6 = 18,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_7 = 19,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_8 = 20,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_9 = 21,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_NUM_BACKGROUND = 22,
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_0 = 23,
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_1 = 24,
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_2 = 25,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_3 = 26,
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_4 = 27,
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_5 = 28,
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_6 = 29,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_7 = 30,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_8 = 31,
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_BACKGROUND = 32,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_PAGE_DROPSHADOW = 33,
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_SAVE = 34,
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_SAVE_HOVER = 35,
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_SAVE_PRESSED = 36,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_PRINT = 37,
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_PRINT_HOVER = 38,
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_PRINT_PRESSED = 39,
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_END = 40,
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_END_HOVER = 41,
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_END_PRESSED = 42,
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_PAN_SCROLL_ICON = 43,
72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  PP_RESOURCEIMAGE_PDF_PAGE_INDICATOR_BACKGROUND = 44,
73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_PRINT_DISABLED = 45
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PP_ResourceImage;
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  PP_PDFFEATURE_HIDPI = 0,
78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  PP_PDFFEATURE_PRINTING = 1
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PP_PDFFeature;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PP_PrivateFontFileDescription {
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char* face;
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  uint32_t weight;
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool italic;
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PP_PrivateFindResult {
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int start_index;
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int length;
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPB_PDF {
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a localized string.
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_Var (*GetLocalizedString)(PP_Instance instance,
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      PP_ResourceString string_id);
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a resource image.
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Resource (*GetResourceImage)(PP_Instance instance,
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  PP_ResourceImage image_id);
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a resource identifying a font file corresponding to the given font
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // request after applying the browser-specific fallback.
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Currently Linux-only.
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Resource (*GetFontFileWithFallback)(
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_Instance instance,
107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const struct PP_BrowserFont_Trusted_Description* description,
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_PrivateFontCharset charset);
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Given a resource previously returned by GetFontFileWithFallback, returns
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // a pointer to the requested font table. Linux only.
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool (*GetFontTableForPrivateFontFile)(PP_Resource font_file,
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         uint32_t table,
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         void* output,
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         uint32_t* output_length);
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Search the given string using ICU.  Use PPB_Core's MemFree on results when
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // done.
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void (*SearchString)(
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     PP_Instance instance,
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     const unsigned short* string,
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     const unsigned short* term,
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     bool case_sensitive,
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     struct PP_PrivateFindResult** results,
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     int* count);
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Since WebFrame doesn't know about PPAPI requests, it'll think the page has
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // finished loading even if there are outstanding requests by the plugin.
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Take this out once WebFrame knows about requests by PPAPI plugins.
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void (*DidStartLoading)(PP_Instance instance);
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void (*DidStopLoading)(PP_Instance instance);
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sets content restriction for a full-page plugin (i.e. can't copy/print).
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The value is a bitfield of ContentRestriction enums.
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void (*SetContentRestriction)(PP_Instance instance, int restrictions);
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Use UMA so we know average pdf page count.
1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void (*HistogramPDFPageCount)(PP_Instance instance, int count);
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Notifies the browser that the given action has been performed.
1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void (*UserMetricsRecordAction)(PP_Instance instance, struct PP_Var action);
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Notifies the browser that the PDF has an unsupported feature.
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void (*HasUnsupportedFeature)(PP_Instance instance);
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Invoke SaveAs... dialog, similar to the right-click or wrench menu.
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void (*SaveAs)(PP_Instance instance);
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Invoke Print dialog for plugin.
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void (*Print)(PP_Instance instance);
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PP_Bool(*IsFeatureEnabled)(PP_Instance instance, PP_PDFFeature feature);
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a resource image appropriate for a device with |scale| density.
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns 0 (NULL resource) if there is no resource at that scale
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Resource (*GetResourceImageForScale)(PP_Instance instance,
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          PP_ResourceImage image_id,
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          float scale);
159d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
160d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  // Invoke password dialog for plugin.
1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  struct PP_Var (*ModalPromptForPassword)(PP_Instance instance,
1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                          struct PP_Var message);
163f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Returns PP_TRUE if the plugin is out of process.
1651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  PP_Bool (*IsOutOfProcess)(PP_Instance instance);
1665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Sets the selected text of the plugin.
1685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void(*SetSelectedText)(PP_Instance instance, const char* selected_text);
1695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Sets the link currently under the cursor.
1715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void (*SetLinkUnderCursor)(PP_Instance instance, const char* url);
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // PPAPI_C_PRIVATE_PPB_PDF_H_
175