// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENT_PDF_RENDERER_PPB_PDF_IMPL_H_ #define COMPONENT_PDF_RENDERER_PPB_PDF_IMPL_H_ #include "ppapi/c/pp_instance.h" struct PPB_PDF; namespace pdf { class PPB_PDF_Impl { public: class PrintClient { public: virtual ~PrintClient() {} // Returns whether printing is enabled for the plugin instance identified by // |instance_id|. virtual bool IsPrintingEnabled(PP_Instance instance_id) = 0; // Invokes the "Print" command for the plugin instance identified by // |instance_id|. Returns whether the "Print" command was issued or not. virtual bool Print(PP_Instance instance_id) = 0; }; // Returns a pointer to the interface implementing PPB_PDF that is exposed // to the plugin. static const PPB_PDF* GetInterface(); // Invokes the "Print" command for the given instance as if the user right // clicked on it and selected "Print". Returns if the "Print" command was // issued or not. static bool InvokePrintingForInstance(PP_Instance instance); // The caller retains the ownership of |print_client|. The client is // allowed to be set only once, and when set, the client must outlive the // PPB_PDF_Impl instance. static void SetPrintClient(PrintClient* print_client); }; } // namespace pdf #endif // COMPONENT_PDF_RENDERER_PPB_PDF_IMPL_H_