summaryrefslogtreecommitdiffstats
path: root/toolkit/components/browser/nsIWebBrowserPrint.idl
blob: 2b5d7669bcb76e804735e30d1ec9fbef146fb0a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

%{C++
#include <functional>

namespace mozilla {
namespace dom {
class PrintPreviewResultInfo;
} // namespace dom
namespace layout {
class RemotePrintJobChild;
} // namespace layout
} // namespace mozilla
%}

interface mozIDOMWindowProxy;
interface nsIPrintSettings;
interface nsIWebProgressListener;

native PrintPreviewResolver(std::function<void(const mozilla::dom::PrintPreviewResultInfo&)>&&);
[ptr] native RemotePrintJobChildPtr(mozilla::layout::RemotePrintJobChild);

/**
 * nsIWebBrowserPrint corresponds to the main interface
 * for printing an embedded Gecko web browser window/document
 */
[scriptable, builtinclass, uuid(c9a934ed-fff1-4971-bfba-6c25ad70e1e6)]
interface nsIWebBrowserPrint : nsISupports
{
  /**
   * PrintPreview Navigation Constants
   *
   * XXXdholbert Consider renaming these? Strictly speaking, these deal with
   * *sheets* (which are roughly the same as pages in the default configuration
   * of one page per sheet). Fix in bug 1669762.
   */
  const short PRINTPREVIEW_GOTO_PAGENUM = 0;
  const short PRINTPREVIEW_PREV_PAGE    = 1;
  const short PRINTPREVIEW_NEXT_PAGE    = 2;
  const short PRINTPREVIEW_HOME         = 3;
  const short PRINTPREVIEW_END          = 4;

  /**
   * Returns whether it is in Print mode
   */
  readonly attribute boolean doingPrint;

  /**
   * Returns whether it is in Print Preview mode
   */
  readonly attribute boolean doingPrintPreview;

  /**
   * This represents the "raw" total number of pages, where "raw" means that
   * this value is *not amended* to account for reductions from pages-per-sheet
   * or page ranges (unlike other APIs on this interface).
   *
   * So e.g. for a 20-page document, this attribute will be 20, regardless of
   * whether the user has chosen a smaller page range, and regardless of
   * whether the user is using pages-per-sheet to reduce the number of sheets.
   */
  readonly attribute long rawNumPages;

  /**
   * This returns the total number of pages for the Print Preview
   *
   * XXXdholbert Consider renaming this? Strictly speaking, this is the number
   * of *sheets* (which is the same as the number of pages in the default
   * configuration of one page per sheet). Fix in bug 1669762.
   */
  readonly attribute long printPreviewNumPages;

  /**
   * This returns the number of the page which is currently in the Print Preview viewport
   *
   * XXXdholbert Consider renaming this? (similar to printPreviewNumPages above)
   * Strictly speaking, this is the number of the *sheet* which is currently in
   * the print preview viewport. Fix in bug 1669762.
   */
  readonly attribute long printPreviewCurrentPageNumber;

  /*
   * Whether the document to print needs to have its window closed after printing
   * is done - see OPEN_PRINT_BROWSER and specifically handleStaticCloneCreatedForPrint().
   * This is set if the document is not a static clone.
   */
  [infallible] attribute boolean closeWindowAfterPrint;

  /**
   * Print the specified DOM window
   *
   * @param aThePrintSettings - Printer Settings for the print job, if aThePrintSettings is null
   *                            then the global PS will be used.
   * @param aWPListener - is updated during the print
   * @return void
   *
   * @note To cancel, close the window of the document that is being printed.
   */
  [noscript] void print(in nsIPrintSettings aThePrintSettings,
                        in RemotePrintJobChildPtr aRemotePrintJob,
                        in nsIWebProgressListener aWPListener);

  /**
   * Print Preview the specified DOM window
   *
   * @param aThePrintSettings - Printer Settings for the print preview, if aThePrintSettings is null
   *                            then the global PS will be used.
   * @param aWPListener - is updated during the printpreview
   * @return void
   *
   * @note To cancel, close the print preview document's window.
   */
  [noscript] void printPreview(in nsIPrintSettings aThePrintSettings,
                               in nsIWebProgressListener aWPListener,
                               in PrintPreviewResolver aCallback);

  /**
   * @param aNavType - navigation enum
   * @param aPageNum - page num to navigate to when aNavType = ePrintPreviewGoToPageNum
   * @return void
   */
  void printPreviewScrollToPage(in short aNavType, in long aPageNum);

  /**
   * This exists PrintPreview mode and returns browser window to galley mode
   * @return void
   */
  void exitPrintPreview();

};