• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
168 #endif  // PPAPI_C_PRIVATE_PPB_PDF_H_
169