Home | History | Annotate | Download | only in private
      1 // Copyright (c) 2013 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 #include "ppapi/cpp/private/pdf.h"
      6 
      7 #include "ppapi/c/trusted/ppb_browser_font_trusted.h"
      8 #include "ppapi/cpp/image_data.h"
      9 #include "ppapi/cpp/instance_handle.h"
     10 #include "ppapi/cpp/module_impl.h"
     11 #include "ppapi/cpp/var.h"
     12 
     13 namespace pp {
     14 
     15 namespace {
     16 
     17 template <> const char* interface_name<PPB_PDF>() {
     18   return PPB_PDF_INTERFACE;
     19 }
     20 
     21 }  // namespace
     22 
     23 // static
     24 bool PDF::IsAvailable() {
     25   return has_interface<PPB_PDF>();
     26 }
     27 
     28 // static
     29 Var PDF::GetLocalizedString(const InstanceHandle& instance,
     30                             PP_ResourceString string_id) {
     31   if (has_interface<PPB_PDF>()) {
     32     return Var(PASS_REF,
     33                get_interface<PPB_PDF>()->GetLocalizedString(
     34                    instance.pp_instance(), string_id));
     35   }
     36   return Var();
     37 }
     38 
     39 // static
     40 ImageData PDF::GetResourceImage(const InstanceHandle& instance,
     41                                 PP_ResourceImage image_id) {
     42   if (has_interface<PPB_PDF>()) {
     43     return ImageData(PASS_REF,
     44                      get_interface<PPB_PDF>()->GetResourceImage(
     45                          instance.pp_instance(), image_id));
     46   }
     47   return ImageData();
     48 }
     49 
     50 // static
     51 PP_Resource PDF::GetFontFileWithFallback(
     52     const InstanceHandle& instance,
     53     const PP_FontDescription_Dev* description,
     54     PP_PrivateFontCharset charset) {
     55   if (has_interface<PPB_PDF>()) {
     56     PP_BrowserFont_Trusted_Description converted_desc;
     57     converted_desc.face = description->face;
     58     converted_desc.family = static_cast<PP_BrowserFont_Trusted_Family>(
     59         description->family);
     60     converted_desc.size = description->size;
     61     converted_desc.weight = static_cast<PP_BrowserFont_Trusted_Weight>(
     62         description->weight);
     63     converted_desc.italic = description->italic;
     64     converted_desc.small_caps = description->small_caps;
     65     converted_desc.letter_spacing = description->letter_spacing;
     66     converted_desc.word_spacing = description->word_spacing;
     67     return get_interface<PPB_PDF>()->GetFontFileWithFallback(
     68         instance.pp_instance(), &converted_desc, charset);
     69   }
     70   return 0;
     71 }
     72 
     73 // static
     74 PP_Resource PDF::GetFontFileWithFallback(
     75     const InstanceHandle& instance,
     76     const PP_BrowserFont_Trusted_Description* description,
     77     PP_PrivateFontCharset charset) {
     78   if (has_interface<PPB_PDF>()) {
     79     return get_interface<PPB_PDF>()->GetFontFileWithFallback(
     80         instance.pp_instance(), description, charset);
     81   }
     82   return 0;
     83 }
     84 
     85 // static
     86 bool PDF::GetFontTableForPrivateFontFile(PP_Resource font_file,
     87                                          uint32_t table,
     88                                          void* output,
     89                                          uint32_t* output_length) {
     90   if (has_interface<PPB_PDF>()) {
     91     return get_interface<PPB_PDF>()->GetFontTableForPrivateFontFile(font_file,
     92         table, output, output_length);
     93   }
     94   return false;
     95 }
     96 
     97 // static
     98 void PDF::SearchString(const InstanceHandle& instance,
     99                        const unsigned short* string,
    100                        const unsigned short* term,
    101                        bool case_sensitive,
    102                        PP_PrivateFindResult** results,
    103                        int* count) {
    104   if (has_interface<PPB_PDF>()) {
    105     get_interface<PPB_PDF>()->SearchString(instance.pp_instance(), string,
    106         term, case_sensitive, results, count);
    107   }
    108 }
    109 
    110 // static
    111 void PDF::DidStartLoading(const InstanceHandle& instance) {
    112   if (has_interface<PPB_PDF>())
    113     get_interface<PPB_PDF>()->DidStartLoading(instance.pp_instance());
    114 }
    115 
    116 // static
    117 void PDF::DidStopLoading(const InstanceHandle& instance) {
    118   if (has_interface<PPB_PDF>())
    119     get_interface<PPB_PDF>()->DidStopLoading(instance.pp_instance());
    120 }
    121 
    122 // static
    123 void PDF::SetContentRestriction(const InstanceHandle& instance,
    124                                 int restrictions) {
    125   if (has_interface<PPB_PDF>()) {
    126     get_interface<PPB_PDF>()->SetContentRestriction(instance.pp_instance(),
    127                                                     restrictions);
    128   }
    129 }
    130 
    131 // static
    132 void PDF::HistogramPDFPageCount(const InstanceHandle& instance,
    133                                 int count) {
    134   if (has_interface<PPB_PDF>())
    135     get_interface<PPB_PDF>()->HistogramPDFPageCount(instance.pp_instance(),
    136                                                     count);
    137 }
    138 
    139 // static
    140 void PDF::UserMetricsRecordAction(const InstanceHandle& instance,
    141                                   const Var& action) {
    142   if (has_interface<PPB_PDF>()) {
    143     get_interface<PPB_PDF>()->UserMetricsRecordAction(instance.pp_instance(),
    144                                                       action.pp_var());
    145   }
    146 }
    147 
    148 // static
    149 void PDF::HasUnsupportedFeature(const InstanceHandle& instance) {
    150   if (has_interface<PPB_PDF>())
    151     get_interface<PPB_PDF>()->HasUnsupportedFeature(instance.pp_instance());
    152 }
    153 
    154 // static
    155 void PDF::SaveAs(const InstanceHandle& instance) {
    156   if (has_interface<PPB_PDF>())
    157     get_interface<PPB_PDF>()->SaveAs(instance.pp_instance());
    158 }
    159 
    160 // static
    161 void PDF::Print(const InstanceHandle& instance) {
    162   if (has_interface<PPB_PDF>())
    163     get_interface<PPB_PDF>()->Print(instance.pp_instance());
    164 }
    165 
    166 // static
    167 bool PDF::IsFeatureEnabled(const InstanceHandle& instance,
    168                            PP_PDFFeature feature) {
    169   if (has_interface<PPB_PDF>())
    170     return PP_ToBool(get_interface<PPB_PDF>()->IsFeatureEnabled(
    171         instance.pp_instance(), feature));
    172   return false;
    173 }
    174 
    175 // static
    176 ImageData PDF::GetResourceImageForScale(const InstanceHandle& instance,
    177                                         PP_ResourceImage image_id,
    178                                         float scale) {
    179   if (has_interface<PPB_PDF>()) {
    180     return ImageData(PASS_REF,
    181                      get_interface<PPB_PDF>()->GetResourceImageForScale(
    182                          instance.pp_instance(), image_id, scale));
    183   }
    184   return ImageData();
    185 }
    186 
    187 }  // namespace pp
    188