• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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 COMPONENT_PDF_RENDERER_PPB_PDF_IMPL_H_
6 #define COMPONENT_PDF_RENDERER_PPB_PDF_IMPL_H_
7 
8 #include "ppapi/c/pp_instance.h"
9 
10 struct PPB_PDF;
11 
12 namespace pdf {
13 
14 class PPB_PDF_Impl {
15  public:
16   class PrintClient {
17    public:
~PrintClient()18     virtual ~PrintClient() {}
19 
20     // Returns whether printing is enabled for the plugin instance identified by
21     // |instance_id|.
22     virtual bool IsPrintingEnabled(PP_Instance instance_id) = 0;
23 
24     // Invokes the "Print" command for the plugin instance identified by
25     // |instance_id|. Returns whether the "Print" command was issued or not.
26     virtual bool Print(PP_Instance instance_id) = 0;
27   };
28 
29   // Returns a pointer to the interface implementing PPB_PDF that is exposed
30   // to the plugin.
31   static const PPB_PDF* GetInterface();
32 
33   // Invokes the "Print" command for the given instance as if the user right
34   // clicked on it and selected "Print". Returns if the "Print" command was
35   // issued or not.
36   static bool InvokePrintingForInstance(PP_Instance instance);
37 
38   // The caller retains the ownership of |print_client|. The client is
39   // allowed to be set only once, and when set, the client must outlive the
40   // PPB_PDF_Impl instance.
41   static void SetPrintClient(PrintClient* print_client);
42 };
43 
44 }  // namespace pdf
45 
46 #endif  // COMPONENT_PDF_RENDERER_PPB_PDF_IMPL_H_
47