15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Copyright (c) 2012 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)
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* This file contains PPB_PDF interface. */
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum PP_ResourceString{
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCESTRING_PDFGETPASSWORD = 0,
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCESTRING_PDFLOADING     = 1,
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCESTRING_PDFLOAD_FAILED = 2
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum PP_ResourceImage{
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_FTH                      = 0,
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_FTH_HOVER                = 1,
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_FTH_PRESSED              = 2,
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_FTW                      = 3,
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_FTW_HOVER                = 4,
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_FTW_PRESSED              = 5,
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN                   = 6,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_HOVER             = 7,
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_PRESSED           = 8,
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT                  = 9,
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT_HOVER            = 10,
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT_PRESSED          = 11,
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_0              = 12,
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_1              = 13,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_2              = 14,
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_3              = 15,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_4              = 16,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_5              = 17,
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_6              = 18,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_7              = 19,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_8              = 20,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_9              = 21,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_NUM_BACKGROUND = 22
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum PP_PrivateFontCharset {
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_ANSI        = 0,
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_DEFAULT     = 1,
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_SYMBOL      = 2,
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_MAC         = 77,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_SHIFTJIS    = 128,
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_HANGUL      = 129,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_JOHAB       = 130,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_GB2312      = 134,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_CHINESEBIG5 = 136,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_GREEK       = 161,
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_TURKISH     = 162,
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_VIETNAMESE  = 163,
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_HEBREW      = 177,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_ARABIC      = 178,
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_BALTIC      = 186,
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_RUSSIAN     = 204,
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_THAI        = 222,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_EASTEUROPE  = 238,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_PRIVATEFONTCHARSET_OEM         = 255
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PP_PrivateFontFileDescription {
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  str_t face;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  uint32_t weight;
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Bool italic;
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PP_PrivateFindResult {
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32_t start_index;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32_t length;
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)interface PPB_PDF_0_1 {
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Returns a localized string. */
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   PP_Var GetLocalizedString(
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       [in] PP_Instance instance,
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       [in] PP_ResourceString string_id);
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Returns a resource image. */
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Resource GetResourceImage(
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_Instance instance,
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_ResourceImage image_id);
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Returns a resource identifying a font file corresponding to the given font
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * request after applying the browser-specific fallback.
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Currently Linux-only.
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Resource GetFontFileWithFallback(
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_Instance instance,
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_FontDescription_Dev description,
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_PrivateFontCharset charset);
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Given a resource previously returned by GetFontFileWithFallback, returns
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * a pointer to the requested font table. Linux only.
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Bool GetFontTableForPrivateFontFile(
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_Resource font_file,
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] uint32_t table,
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [out] mem_t output,
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [out] uint32_t output_length);
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Search the given string using ICU.  Use PPB_Core's MemFree on results when
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * done.
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SearchString(
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_Instance instance,
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] mem_t string,
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] mem_t term,
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_Bool case_sensitive,
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [out, size_is(count)] PP_PrivateFindResult[] results,
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [out] int32_t count);
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Since WebFrame doesn't know about PPAPI requests, it'll think the page has
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * finished loading even if there are outstanding requests by the plugin.
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Take this out once WebFrame knows about requests by PPAPI plugins.
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void DidStartLoading(
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_Instance instance);
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void DidStopLoading(
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_Instance instance);
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Sets content restriction for a full-page plugin (i.e. can't copy/print).
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * The value is a bitfield of ContentRestriction enums.
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetContentRestriction(
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_Instance instance,
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] int32_t restrictions);
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Use UMA so we know average pdf page count. */
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void HistogramPDFPageCount(
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] int32_t count);
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Notifies the browser that the given action has been performed. */
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UserMetricsRecordAction(
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_Var action);
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Notifies the browser that the PDF has an unsupported feature. */
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void HasUnsupportedFeature(
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [in] PP_Instance instance);
141d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
142d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  /* Tells the browser to open a dialog box to receive a password from the
143d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)   * user, masking input characters. Returns the value entered by the user, or
144d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)   * an empty string if the user cancels instead.
145d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)   */
146d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  PP_Var ModalPromptForPassword(
147d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      [in] PP_Instance instance,
148d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      [in] PP_Var message);
149f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
150f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /* Returns PP_TRUE if the plugin is out of process. */
151f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  PP_Bool IsOutOfProcess(
152f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      [in] PP_Instance instance);
1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  /* Sets the selected text of the plugin. If |selected_text| is empty, then no
1555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)   * text is selected. */
1565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void SetSelectedText(
1575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      [in] PP_Instance instance,
1585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      [in] str_t selected_text);
1595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  /* Sets the link under the cursor. If |url| is empty, then no link is under
1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)   * the cursor. */
1625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void SetLinkUnderCursor(
1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      [in] PP_Instance instance,
1645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      [in] str_t url);
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
166