Home | History | Annotate | Download | only in private
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef PPAPI_C_PRIVATE_PPB_PDF_H_
      6 #define PPAPI_C_PRIVATE_PPB_PDF_H_
      7 
      8 #include "ppapi/c/dev/ppb_font_dev.h"
      9 #include "ppapi/c/pp_bool.h"
     10 #include "ppapi/c/pp_instance.h"
     11 #include "ppapi/c/pp_resource.h"
     12 #include "ppapi/c/pp_var.h"
     13 #include "ppapi/c/private/pp_private_font_charset.h"
     14 
     15 #define PPB_PDF_INTERFACE "PPB_PDF;1"
     16 
     17 // From the public PPB_Font_Dev file.
     18 struct PP_FontDescription_Dev;
     19 
     20 typedef enum {
     21   PP_RESOURCESTRING_PDFGETPASSWORD = 0,
     22   PP_RESOURCESTRING_PDFLOADING = 1,
     23   PP_RESOURCESTRING_PDFLOAD_FAILED = 2,
     24   PP_RESOURCESTRING_PDFPROGRESSLOADING = 3
     25 } PP_ResourceString;
     26 
     27 typedef enum {
     28   PP_RESOURCEIMAGE_PDF_BUTTON_FTP = 0,
     29   PP_RESOURCEIMAGE_PDF_BUTTON_FTP_HOVER = 1,
     30   PP_RESOURCEIMAGE_PDF_BUTTON_FTP_PRESSED = 2,
     31   PP_RESOURCEIMAGE_PDF_BUTTON_FTW = 3,
     32   PP_RESOURCEIMAGE_PDF_BUTTON_FTW_HOVER = 4,
     33   PP_RESOURCEIMAGE_PDF_BUTTON_FTW_PRESSED = 5,
     34   PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN = 6,
     35   PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_HOVER = 7,
     36   PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_PRESSED = 8,
     37   PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT = 9,
     38   PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT_HOVER = 10,
     39   PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT_PRESSED = 11,
     40   PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_0 = 12,
     41   PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_1 = 13,
     42   PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_2 = 14,
     43   PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_3 = 15,
     44   PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_4 = 16,
     45   PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_5 = 17,
     46   PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_6 = 18,
     47   PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_7 = 19,
     48   PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_8 = 20,
     49   PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_9 = 21,
     50   PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_NUM_BACKGROUND = 22,
     51   PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_0 = 23,
     52   PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_1 = 24,
     53   PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_2 = 25,
     54   PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_3 = 26,
     55   PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_4 = 27,
     56   PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_5 = 28,
     57   PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_6 = 29,
     58   PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_7 = 30,
     59   PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_8 = 31,
     60   PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_BACKGROUND = 32,
     61   PP_RESOURCEIMAGE_PDF_PAGE_DROPSHADOW = 33,
     62   PP_RESOURCEIMAGE_PDF_BUTTON_SAVE = 34,
     63   PP_RESOURCEIMAGE_PDF_BUTTON_SAVE_HOVER = 35,
     64   PP_RESOURCEIMAGE_PDF_BUTTON_SAVE_PRESSED = 36,
     65   PP_RESOURCEIMAGE_PDF_BUTTON_PRINT = 37,
     66   PP_RESOURCEIMAGE_PDF_BUTTON_PRINT_HOVER = 38,
     67   PP_RESOURCEIMAGE_PDF_BUTTON_PRINT_PRESSED = 39,
     68   PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_END = 40,
     69   PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_END_HOVER = 41,
     70   PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_END_PRESSED = 42,
     71   PP_RESOURCEIMAGE_PDF_PAN_SCROLL_ICON = 43,
     72   PP_RESOURCEIMAGE_PDF_PAGE_INDICATOR_BACKGROUND = 44,
     73   PP_RESOURCEIMAGE_PDF_BUTTON_PRINT_DISABLED = 45
     74 } PP_ResourceImage;
     75 
     76 typedef enum {
     77   PP_PDFFEATURE_HIDPI = 0,
     78   PP_PDFFEATURE_PRINTING = 1
     79 } PP_PDFFeature;
     80 
     81 struct PP_PrivateFontFileDescription {
     82   const char* face;
     83   uint32_t weight;
     84   bool italic;
     85 };
     86 
     87 struct PP_PrivateFindResult {
     88   int start_index;
     89   int length;
     90 };
     91 
     92 struct PPB_PDF {
     93   // Returns a localized string.
     94   struct PP_Var (*GetLocalizedString)(PP_Instance instance,
     95                                       PP_ResourceString string_id);
     96 
     97   // Returns a resource image.
     98   PP_Resource (*GetResourceImage)(PP_Instance instance,
     99                                   PP_ResourceImage image_id);
    100 
    101   // Returns a resource identifying a font file corresponding to the given font
    102   // request after applying the browser-specific fallback.
    103   //
    104   // Currently Linux-only.
    105   PP_Resource (*GetFontFileWithFallback)(
    106       PP_Instance instance,
    107       const struct PP_BrowserFont_Trusted_Description* description,
    108       PP_PrivateFontCharset charset);
    109 
    110   // Given a resource previously returned by GetFontFileWithFallback, returns
    111   // a pointer to the requested font table. Linux only.
    112   bool (*GetFontTableForPrivateFontFile)(PP_Resource font_file,
    113                                          uint32_t table,
    114                                          void* output,
    115                                          uint32_t* output_length);
    116 
    117   // Search the given string using ICU.  Use PPB_Core's MemFree on results when
    118   // done.
    119   void (*SearchString)(
    120      PP_Instance instance,
    121      const unsigned short* string,
    122      const unsigned short* term,
    123      bool case_sensitive,
    124      struct PP_PrivateFindResult** results,
    125      int* count);
    126 
    127   // Since WebFrame doesn't know about PPAPI requests, it'll think the page has
    128   // finished loading even if there are outstanding requests by the plugin.
    129   // Take this out once WebFrame knows about requests by PPAPI plugins.
    130   void (*DidStartLoading)(PP_Instance instance);
    131   void (*DidStopLoading)(PP_Instance instance);
    132 
    133   // Sets content restriction for a full-page plugin (i.e. can't copy/print).
    134   // The value is a bitfield of ContentRestriction enums.
    135   void (*SetContentRestriction)(PP_Instance instance, int restrictions);
    136 
    137   // Use UMA so we know average pdf page count.
    138   void (*HistogramPDFPageCount)(PP_Instance instance, int count);
    139 
    140   // Notifies the browser that the given action has been performed.
    141   void (*UserMetricsRecordAction)(PP_Instance instance, struct PP_Var action);
    142 
    143   // Notifies the browser that the PDF has an unsupported feature.
    144   void (*HasUnsupportedFeature)(PP_Instance instance);
    145 
    146   // Invoke SaveAs... dialog, similar to the right-click or wrench menu.
    147   void (*SaveAs)(PP_Instance instance);
    148 
    149   // Invoke Print dialog for plugin.
    150   void (*Print)(PP_Instance instance);
    151 
    152   PP_Bool(*IsFeatureEnabled)(PP_Instance instance, PP_PDFFeature feature);
    153 
    154   // Returns a resource image appropriate for a device with |scale| density.
    155   // Returns 0 (NULL resource) if there is no resource at that scale
    156   PP_Resource (*GetResourceImageForScale)(PP_Instance instance,
    157                                           PP_ResourceImage image_id,
    158                                           float scale);
    159 
    160   // Invoke password dialog for plugin.
    161   struct PP_Var (*ModalPromptForPassword)(PP_Instance instance,
    162                                           struct PP_Var message);
    163 
    164   // Returns PP_TRUE if the plugin is out of process.
    165   PP_Bool (*IsOutOfProcess)(PP_Instance instance);
    166 
    167   // Sets the selected text of the plugin.
    168   void(*SetSelectedText)(PP_Instance instance, const char* selected_text);
    169 
    170   // Sets the link currently under the cursor.
    171   void (*SetLinkUnderCursor)(PP_Instance instance, const char* url);
    172 };
    173 
    174 #endif  // PPAPI_C_PRIVATE_PPB_PDF_H_
    175