12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/cpp/private/pdf.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ppapi/c/trusted/ppb_browser_font_trusted.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/cpp/image_data.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/cpp/instance_handle.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/cpp/module_impl.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/cpp/var.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace pp { 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template <> const char* interface_name<PPB_PDF>() { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return PPB_PDF_INTERFACE; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool PDF::IsAvailable() { 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return has_interface<PPB_PDF>(); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)Var PDF::GetLocalizedString(const InstanceHandle& instance, 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_ResourceString string_id) { 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (has_interface<PPB_PDF>()) { 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return Var(PASS_REF, 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) get_interface<PPB_PDF>()->GetLocalizedString( 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) instance.pp_instance(), string_id)); 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return Var(); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ImageData PDF::GetResourceImage(const InstanceHandle& instance, 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_ResourceImage image_id) { 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (has_interface<PPB_PDF>()) { 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return ImageData(PASS_REF, 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) get_interface<PPB_PDF>()->GetResourceImage( 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) instance.pp_instance(), image_id)); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return ImageData(); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PP_Resource PDF::GetFontFileWithFallback( 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const InstanceHandle& instance, 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const PP_FontDescription_Dev* description, 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_PrivateFontCharset charset) { 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (has_interface<PPB_PDF>()) { 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PP_BrowserFont_Trusted_Description converted_desc; 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) converted_desc.face = description->face; 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) converted_desc.family = static_cast<PP_BrowserFont_Trusted_Family>( 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) description->family); 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) converted_desc.size = description->size; 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) converted_desc.weight = static_cast<PP_BrowserFont_Trusted_Weight>( 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) description->weight); 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) converted_desc.italic = description->italic; 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) converted_desc.small_caps = description->small_caps; 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) converted_desc.letter_spacing = description->letter_spacing; 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) converted_desc.word_spacing = description->word_spacing; 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return get_interface<PPB_PDF>()->GetFontFileWithFallback( 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) instance.pp_instance(), &converted_desc, charset); 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return 0; 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// static 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PP_Resource PDF::GetFontFileWithFallback( 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const InstanceHandle& instance, 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const PP_BrowserFont_Trusted_Description* description, 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PP_PrivateFontCharset charset) { 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_PDF>()) { 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return get_interface<PPB_PDF>()->GetFontFileWithFallback( 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) instance.pp_instance(), description, charset); 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return 0; 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool PDF::GetFontTableForPrivateFontFile(PP_Resource font_file, 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) uint32_t table, 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void* output, 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) uint32_t* output_length) { 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (has_interface<PPB_PDF>()) { 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return get_interface<PPB_PDF>()->GetFontTableForPrivateFontFile(font_file, 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) table, output, output_length); 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PDF::SearchString(const InstanceHandle& instance, 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const unsigned short* string, 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const unsigned short* term, 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool case_sensitive, 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_PrivateFindResult** results, 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* count) { 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (has_interface<PPB_PDF>()) { 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) get_interface<PPB_PDF>()->SearchString(instance.pp_instance(), string, 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) term, case_sensitive, results, count); 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PDF::DidStartLoading(const InstanceHandle& instance) { 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (has_interface<PPB_PDF>()) 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) get_interface<PPB_PDF>()->DidStartLoading(instance.pp_instance()); 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PDF::DidStopLoading(const InstanceHandle& instance) { 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (has_interface<PPB_PDF>()) 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) get_interface<PPB_PDF>()->DidStopLoading(instance.pp_instance()); 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PDF::SetContentRestriction(const InstanceHandle& instance, 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int restrictions) { 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (has_interface<PPB_PDF>()) { 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) get_interface<PPB_PDF>()->SetContentRestriction(instance.pp_instance(), 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) restrictions); 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PDF::HistogramPDFPageCount(const InstanceHandle& instance, 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int count) { 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (has_interface<PPB_PDF>()) 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) get_interface<PPB_PDF>()->HistogramPDFPageCount(instance.pp_instance(), 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) count); 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PDF::UserMetricsRecordAction(const InstanceHandle& instance, 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const Var& action) { 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (has_interface<PPB_PDF>()) { 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) get_interface<PPB_PDF>()->UserMetricsRecordAction(instance.pp_instance(), 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) action.pp_var()); 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PDF::HasUnsupportedFeature(const InstanceHandle& instance) { 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (has_interface<PPB_PDF>()) 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) get_interface<PPB_PDF>()->HasUnsupportedFeature(instance.pp_instance()); 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PDF::SaveAs(const InstanceHandle& instance) { 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (has_interface<PPB_PDF>()) 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) get_interface<PPB_PDF>()->SaveAs(instance.pp_instance()); 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PDF::Print(const InstanceHandle& instance) { 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (has_interface<PPB_PDF>()) 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) get_interface<PPB_PDF>()->Print(instance.pp_instance()); 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool PDF::IsFeatureEnabled(const InstanceHandle& instance, 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_PDFFeature feature) { 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (has_interface<PPB_PDF>()) 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return PP_ToBool(get_interface<PPB_PDF>()->IsFeatureEnabled( 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) instance.pp_instance(), feature)); 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ImageData PDF::GetResourceImageForScale(const InstanceHandle& instance, 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_ResourceImage image_id, 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float scale) { 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (has_interface<PPB_PDF>()) { 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return ImageData(PASS_REF, 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) get_interface<PPB_PDF>()->GetResourceImageForScale( 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) instance.pp_instance(), image_id, scale)); 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return ImageData(); 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 187f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// static 188d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)Var PDF::ModalPromptForPassword(const InstanceHandle& instance, 189d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) Var message) { 190d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) if (has_interface<PPB_PDF>()) { 191d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) return Var(PASS_REF, 192d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) get_interface<PPB_PDF>()->ModalPromptForPassword( 193d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) instance.pp_instance(), 194d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) message.pp_var())); 195d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) } 196d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) return Var(); 197d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)} 198f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 199f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// static 200f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)bool PDF::IsOutOfProcess(const InstanceHandle& instance) { 201f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (has_interface<PPB_PDF>()) { 202f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return PP_ToBool(get_interface<PPB_PDF>()->IsOutOfProcess( 203f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) instance.pp_instance())); 204f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 205f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return false; 206f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 207f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace pp 209